Skip to content

Commit 10376ab

Browse files
security: vendor modifiers-napi locally (PR paoloanzn#3 core fix)
The npm package 'modifiers-napi' was squatting (published by disposable email). Replace runtime npm dependency with a local vendored stub. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent eaabd2a commit 10376ab

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

src/utils/modifiers.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@ function loadNativeModifiersModule(): NativeModifiersModule | null {
1818
}
1919

2020
try {
21+
// Use local vendored stub instead of npm package (original was squatting target)
2122
nativeModifiersModule =
2223
// eslint-disable-next-line @typescript-eslint/no-require-imports
23-
(require('modifiers-napi') as NativeModifiersModule) ?? null
24+
(require('../vendor/modifiers-napi') as NativeModifiersModule) ?? null
2425
} catch {
2526
nativeModifiersModule = null
2627
}

src/vendor/modifiers-napi.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// Vendored stub for modifiers-napi (malicious package squatted on npm)
2+
// Original was a native macOS module for keyboard modifier detection.
3+
// This stub provides no-op implementations for safety.
4+
5+
export function prewarm(): void {
6+
// no-op
7+
}
8+
9+
export function isModifierPressed(_modifier: string): boolean {
10+
return false
11+
}

0 commit comments

Comments
 (0)