mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-11-01 07:33:12 +08:00
Scope-B milestone NI-1, API side: the explicit call API that replaces the build container's hand-written node subprocess (api patch 09). - The new package @scriptc/node exports callSync(specifier, name, ...args) and call(...). The module loads with require() from the calling module; arguments and results cross as JSON copies; a thrown Error crosses as its nearest intrinsic class with its message and string code, other thrown values as JSON copies; callSync refuses a function that returns a promise. Its Node implementation runs the calls in-process with the same copies, so a program prints the same under Node and compiled. - The compiler lowers calls to the named or namespace imports (node-api-import.ts, lower-node-island.ts) to the nodeIsland.callSync and nodeIsland.call libCalls: the calling module's real path, the specifier, the export name and the boxed argument array, with the result checked against the declared type like `JSON.parse(s) as T`. Arguments and results whose types are not JSON data are refused at build time, and the functions and the namespace refuse as values. - Corpus programs 6800-6803 (sync and async results, errors, process.exit from Node with the program's exit listeners, Node's pending timers keeping the program alive) run under Node and as binaries that load libnode; `// @requires-libnode` skips them where SCRIPTC_LIBNODE names no pack (until the pack CI matrix publishes packs). The node-island harness covers loading Node only on the first call, the beside packaging, a missing pack, a pack of another Node version or bridge ABI, and the executable's symbols. - Release tooling publishes @scriptc/node with the other packages. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
54 lines
2.5 KiB
JSON
54 lines
2.5 KiB
JSON
{
|
|
"name": "scriptc-monorepo",
|
|
"private": true,
|
|
"engines": {
|
|
"node": ">=24.0.0"
|
|
},
|
|
"scripts": {
|
|
"build": "pnpm -r --filter \"./packages/*\" run build",
|
|
"build:fresh": "rm -rf packages/compiler/dist packages/cli/dist node_modules/.cache/scriptc-tsc && pnpm build",
|
|
"build:native-compiler": "node --max-old-space-size=8192 --import tsx scripts/build-native-cli.mts",
|
|
"bench:builds": "node scripts/bench-builds.mjs",
|
|
"bench:runtime": "node scripts/bench-runtime.mjs",
|
|
"bench:ast-access": "node scripts/bench-ast-access.mjs",
|
|
"bench:backend-analysis": "node scripts/bench-backend-analysis.mjs",
|
|
"test": "vitest run",
|
|
"test:ts7": "node scripts/test-ts7.mjs",
|
|
"test:checker-identity": "node scripts/checker-identity.mjs",
|
|
"generate:ts7-ast": "node scripts/generate-ts7-ast-schema.mjs",
|
|
"test:fetch-conformance": "vitest run tests/harness/fetch-conformance.test.ts",
|
|
"test:test262": "tsx tests/test262/run.ts",
|
|
"test:test262:fetch": "node tests/test262/fetch.mjs",
|
|
"test:cache-identity": "node tests/harness/cache-identity.mjs",
|
|
"test:sandbox": "node scripts/sandbox-test.mjs",
|
|
"test:sandbox:image": "node scripts/sandbox-image.mjs",
|
|
"test:watch": "vitest",
|
|
"lint": "node docs/scripts/limitations-partials.mjs check && oxlint --deny-warnings packages scripts internal/compatibility/src tests/harness vitest.config.ts",
|
|
"lint:fix": "pnpm lint --fix",
|
|
"format": "oxfmt --write \"{packages,scripts,internal/compatibility/src,tests/harness}/**/*.{js,mjs,cjs,ts,mts,cts,tsx}\" vitest.config.ts .oxlintrc.jsonc .oxfmtrc.jsonc",
|
|
"format:check": "oxfmt --check \"{packages,scripts,internal/compatibility/src,tests/harness}/**/*.{js,mjs,cjs,ts,mts,cts,tsx}\" vitest.config.ts .oxlintrc.jsonc .oxfmtrc.jsonc",
|
|
"manifest": "tsx scripts/surface-manifest.mjs",
|
|
"node-compat": "pnpm --filter @internal/compatibility run update",
|
|
"node-compat:backlog": "pnpm --filter @internal/compatibility run backlog --",
|
|
"node-compat:check": "pnpm --filter @internal/compatibility run check",
|
|
"scriptc": "tsx packages/cli/src/main.ts"
|
|
},
|
|
"devDependencies": {
|
|
"@scriptc/experimental": "workspace:*",
|
|
"@scriptc/node": "workspace:*",
|
|
"@scriptc/threads": "workspace:*",
|
|
"@scriptc/types": "workspace:*",
|
|
"@types/node": "^24.0.0",
|
|
"effect": "3.22.2",
|
|
"js-yaml": "4.3.0",
|
|
"oxfmt": "0.71.0",
|
|
"oxlint": "1.86.0",
|
|
"rollup": "4.62.2",
|
|
"three": "0.186.1",
|
|
"tsx": "^4.19.0",
|
|
"typescript": "5.9.3",
|
|
"vercel": "58.1.0",
|
|
"vitest": "^3.0.0"
|
|
}
|
|
}
|