refactor: rename scripts/*.mjs to *.mts for native TypeScript#1204
refactor: rename scripts/*.mjs to *.mts for native TypeScript#1204John-David Dalton (jdalton) wants to merge 3 commits intomainfrom
Conversation
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
Bugbot Autofix prepared fixes for both issues found in the latest run.
- ✅ Fixed: CLI package.json references non-existent
.mtsscript files- Reverted all local script references in packages/cli/package.json (19 entries) and packages/package-builder/package.json (5 entries) from .mts back to .mjs to match the actual filenames on disk.
- ✅ Fixed: Cross-package imports reference non-existent
.mtsfiles- Fixed 7 cross-package import specifiers in 6 root scripts (build.mts, clean-cache.mts, validate-checksums.mts, download-iocraft-binaries.mts, get-platform-matrix.mts, get-platform-targets.mts) to use .mjs extensions matching the actual files in packages/build-infra/lib/ and packages/cli/scripts/constants/.
Or push these changes by commenting:
@cursor push 4e9bb17aa7
Preview (4e9bb17aa7)
diff --git a/packages/cli/package.json b/packages/cli/package.json
--- a/packages/cli/package.json
+++ b/packages/cli/package.json
@@ -18,12 +18,12 @@
"logo-light.png"
],
"scripts": {
- "build": "node --max-old-space-size=8192 --import=./scripts/load.mjs scripts/build.mts",
- "build:force": "node --max-old-space-size=8192 --import=./scripts/load.mjs scripts/build.mts --force",
- "build:watch": "node --max-old-space-size=8192 --import=./scripts/load.mjs scripts/build.mts --watch",
- "restore-cache": "node --import=./scripts/load.mjs scripts/restore-cache.mts",
- "build:sea": "node --max-old-space-size=8192 --import=./scripts/load.mjs scripts/build-sea.mts",
- "build:js": "node scripts/build-js.mts",
+ "build": "node --max-old-space-size=8192 --import=./scripts/load.mjs scripts/build.mjs",
+ "build:force": "node --max-old-space-size=8192 --import=./scripts/load.mjs scripts/build.mjs --force",
+ "build:watch": "node --max-old-space-size=8192 --import=./scripts/load.mjs scripts/build.mjs --watch",
+ "restore-cache": "node --import=./scripts/load.mjs scripts/restore-cache.mjs",
+ "build:sea": "node --max-old-space-size=8192 --import=./scripts/load.mjs scripts/build-sea.mjs",
+ "build:js": "node scripts/build-js.mjs",
"dev:watch": "pnpm run build:watch",
"check": "node ../../scripts/check.mts",
"check-ci": "pnpm run check",
@@ -31,8 +31,8 @@
"lint-ci": "pnpm run lint",
"type": "tsc --noEmit",
"type-ci": "pnpm run type",
- "sync-checksums": "node scripts/sync-checksums.mts",
- "cover": "node --import=./scripts/load.mjs scripts/cover.mts",
+ "sync-checksums": "node scripts/sync-checksums.mjs",
+ "cover": "node --import=./scripts/load.mjs scripts/cover.mjs",
"clean": "run-p -c --aggregate-output clean:*",
"clean:binject": "del-cli 'build/binject'",
"clean:cache": "del-cli '**/.cache'",
@@ -49,22 +49,22 @@
"dev:npm": "cross-env SOCKET_CLI_MODE=npm node --experimental-strip-types src/cli-dispatch.mts",
"dev:npx": "cross-env SOCKET_CLI_MODE=npx node --experimental-strip-types src/cli-dispatch.mts",
"e2e-tests": "dotenvx -q run -f .env.test -- vitest run --config vitest.e2e.config.mts",
- "e2e:js": "node scripts/e2e.mts --js",
- "e2e:sea": "node scripts/e2e.mts --sea",
- "e2e:all": "node scripts/e2e.mts --all",
+ "e2e:js": "node scripts/e2e.mjs --js",
+ "e2e:sea": "node scripts/e2e.mjs --sea",
+ "e2e:all": "node scripts/e2e.mjs --all",
"test": "run-s check test:*",
"test:prepare": "dotenvx -q run -f .env.test -- pnpm build && del-cli 'test/**/node_modules'",
- "test:unit": "node --import=./scripts/load.mjs scripts/test-wrapper.mts",
- "test:unit:update": "node --import=./scripts/load.mjs scripts/test-wrapper.mts --update",
- "test:unit:coverage": "node --import=./scripts/load.mjs scripts/test-wrapper.mts --coverage",
- "test:validate": "node --import=./scripts/load.mjs scripts/validate-tests.mts",
+ "test:unit": "node --import=./scripts/load.mjs scripts/test-wrapper.mjs",
+ "test:unit:update": "node --import=./scripts/load.mjs scripts/test-wrapper.mjs --update",
+ "test:unit:coverage": "node --import=./scripts/load.mjs scripts/test-wrapper.mjs --coverage",
+ "test:validate": "node --import=./scripts/load.mjs scripts/validate-tests.mjs",
"test-ci": "run-s test:*",
"test-pre-commit": "cross-env PRE_COMMIT=1 pnpm test",
"update": "node ../../scripts/update.mts",
- "verify": "node scripts/verify-package.mts",
- "wasm": "node scripts/wasm.mts",
- "wasm:build": "node scripts/wasm.mts --build",
- "wasm:download": "node scripts/wasm.mts --download"
+ "verify": "node scripts/verify-package.mjs",
+ "wasm": "node scripts/wasm.mjs",
+ "wasm:build": "node scripts/wasm.mjs --build",
+ "wasm:download": "node scripts/wasm.mjs --download"
},
"devDependencies": {
"@babel/generator": "catalog:",
diff --git a/packages/package-builder/package.json b/packages/package-builder/package.json
--- a/packages/package-builder/package.json
+++ b/packages/package-builder/package.json
@@ -8,11 +8,11 @@
"./scripts/*": "./scripts/*"
},
"scripts": {
- "generate:all": "node scripts/generate-all.mts",
- "generate:cli": "node scripts/generate-cli-packages.mts",
- "generate:cli-sentry": "node scripts/generate-cli-sentry-package.mts",
- "generate:socketaddon": "node scripts/generate-socketaddon-packages.mts",
- "generate:socketbin": "node scripts/generate-socketbin-packages.mts"
+ "generate:all": "node scripts/generate-all.mjs",
+ "generate:cli": "node scripts/generate-cli-packages.mjs",
+ "generate:cli-sentry": "node scripts/generate-cli-sentry-package.mjs",
+ "generate:socketaddon": "node scripts/generate-socketaddon-packages.mjs",
+ "generate:socketbin": "node scripts/generate-socketbin-packages.mjs"
},
"dependencies": {
"@socketsecurity/lib": "catalog:",
diff --git a/scripts/build.mts b/scripts/build.mts
--- a/scripts/build.mts
+++ b/scripts/build.mts
@@ -33,7 +33,7 @@
PLATFORM_TARGETS,
formatPlatformTarget,
parsePlatformTarget,
-} from '../packages/build-infra/lib/platform-targets.mts'
+} from '../packages/build-infra/lib/platform-targets.mjs'
const logger = getDefaultLogger()
const __filename = fileURLToPath(import.meta.url)
diff --git a/scripts/clean-cache.mts b/scripts/clean-cache.mts
--- a/scripts/clean-cache.mts
+++ b/scripts/clean-cache.mts
@@ -15,7 +15,7 @@
import { safeDelete } from '@socketsecurity/lib/fs'
import { getDefaultLogger } from '@socketsecurity/lib/logger'
-import { getGlobalCacheDirs } from '../packages/cli/scripts/constants/paths.mts'
+import { getGlobalCacheDirs } from '../packages/cli/scripts/constants/paths.mjs'
const logger = getDefaultLogger()
diff --git a/scripts/download-iocraft-binaries.mts b/scripts/download-iocraft-binaries.mts
--- a/scripts/download-iocraft-binaries.mts
+++ b/scripts/download-iocraft-binaries.mts
@@ -19,8 +19,8 @@
import {
PLATFORM_CONFIGS,
parsePlatformArgs,
-} from '../packages/build-infra/lib/platform-targets.mts'
-import { logTransientErrorHelp } from '../packages/build-infra/lib/github-error-utils.mts'
+} from '../packages/build-infra/lib/platform-targets.mjs'
+import { logTransientErrorHelp } from '../packages/build-infra/lib/github-error-utils.mjs'
import { getDefaultLogger } from '@socketsecurity/lib/logger'
import { downloadSocketBtmRelease } from '@socketsecurity/lib/releases/socket-btm'
diff --git a/scripts/get-platform-matrix.mts b/scripts/get-platform-matrix.mts
--- a/scripts/get-platform-matrix.mts
+++ b/scripts/get-platform-matrix.mts
@@ -8,7 +8,7 @@
* # Outputs: {"include":[...]}
*/
-import { PLATFORM_CONFIGS } from '../packages/build-infra/lib/platform-targets.mts'
+import { PLATFORM_CONFIGS } from '../packages/build-infra/lib/platform-targets.mjs'
const matrix = {
include: PLATFORM_CONFIGS.map(c => ({
diff --git a/scripts/get-platform-targets.mts b/scripts/get-platform-targets.mts
--- a/scripts/get-platform-targets.mts
+++ b/scripts/get-platform-targets.mts
@@ -8,6 +8,6 @@
* # Outputs space-separated: linux-x64 linux-arm64 ...
*/
-import { PLATFORM_TARGETS } from '../packages/build-infra/lib/platform-targets.mts'
+import { PLATFORM_TARGETS } from '../packages/build-infra/lib/platform-targets.mjs'
console.log(PLATFORM_TARGETS.join(' '))
diff --git a/scripts/validate-checksums.mts b/scripts/validate-checksums.mts
--- a/scripts/validate-checksums.mts
+++ b/scripts/validate-checksums.mts
@@ -19,7 +19,7 @@
import { getDefaultLogger } from '@socketsecurity/lib/logger'
-import { PLATFORM_MAP_TOOLS } from '../packages/cli/scripts/constants/external-tools-platforms.mts'
+import { PLATFORM_MAP_TOOLS } from '../packages/cli/scripts/constants/external-tools-platforms.mjs'
const logger = getDefaultLogger()
const __dirname = path.dirname(fileURLToPath(import.meta.url))You can send follow-ups to the cloud agent here.
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 400717d. Configure here.
| "verify": "node scripts/verify-package.mts", | ||
| "wasm": "node scripts/wasm.mts", | ||
| "wasm:build": "node scripts/wasm.mts --build", | ||
| "wasm:download": "node scripts/wasm.mts --download" |
There was a problem hiding this comment.
CLI package.json references non-existent .mts script files
High Severity
All script entries in packages/cli/package.json were updated to reference .mts files (e.g., scripts/build.mts, scripts/test-wrapper.mts), but the actual files in packages/cli/scripts/ are still .mjs. The same applies to packages/package-builder/package.json. Node.js will fail with "file not found" when running any of these scripts (e.g., pnpm build, pnpm test:unit), breaking the entire CLI build and test pipeline.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 400717d. Configure here.
| formatPlatformTarget, | ||
| parsePlatformTarget, | ||
| } from '../packages/build-infra/lib/platform-targets.mjs' | ||
| } from '../packages/build-infra/lib/platform-targets.mts' |
There was a problem hiding this comment.
Cross-package imports reference non-existent .mts files
High Severity
Several root scripts updated their import specifiers to .mts for files in other packages that were not renamed. For example, scripts/build.mts imports from ../packages/build-infra/lib/platform-targets.mts, but that file is still platform-targets.mjs. The same issue affects imports from packages/cli/scripts/constants/ and packages/build-infra/lib/github-error-utils. Node.js ESM requires exact file extensions and does not resolve .mts to .mjs.
Additional Locations (2)
Reviewed by Cursor Bugbot for commit 400717d. Configure here.
400717d to
e985d35
Compare
e985d35 to
049107c
Compare
- scripts/check.mts: update 4 validate-* spawn paths from .mjs to .mts - scripts/validate-no-cdn-refs.mts: fix self-skip check extension - scripts/lib/build-exec.mts: fix dynamic import of build-helpers - .github/workflows/provenance.yml: update 11 root script references - packages/cli/package.json: revert local script refs back to .mjs (only root scripts/ were renamed, not packages/cli/scripts/)



Node 25.9.0 supports .mts natively. Rename all scripts from .mjs to .mts for explicit ESM TypeScript.
Note
Medium Risk
Broad rename of build/test/lint/setup script entrypoints and internal imports to
.mtscould break local dev/CI if any callers or workflows still reference.mjsor if Node/TS loader assumptions differ. Commit-hook hardening is low risk but affects developer commit flow if paths/permissions are misconfigured.Overview
Updates the repo’s Node script toolchain to run TypeScript ESM directly by switching root and package-level
package.jsonscripts fromscripts/*.mjstoscripts/*.mts, and updating cross-script imports accordingly.Hardens commit message hooks by improving error handling/cleanup in
.git-hooks/commit-msgand making.husky/commit-msgfail fast with a clear error when the underlying hook is missing or non-executable.Minor docs/metadata tweaks: points security tooling docs at
external-tools.jsonand marks thesecurity-scanskill as user-invocable while removing outdated hook documentation.Reviewed by Cursor Bugbot for commit 400717d. Configure here.