mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-21 05:50:55 +08:00
- compileLibrary runs the --npm-static eligibility bar automatically over every bare specifier the graph exposes (opted-in packages' own import and top-level require edges included, iterated to a fixpoint) — an eligible package compiles statically into the library graph, and every fallback the shared frontend records refuses as SC4013 naming the package, the specific failed bar, and the vendor-or-drop remedy (with the profile's SC4013 teaching riding the hint), never SC1010/SC2013's executable-lane teachings. - requireInitStmt now emits the guarded %init call for a bare require naming another opted-in package: the dep's module body never ran before (NULL-closure crash at first use), a latent npm-static gap on both lanes that the library fixpoint hits immediately; the executable lane never exercised an inter-package require. - Contract facts exclude statically-compiled npm files (their .d.ts is dropped by construction, so no npm declaration can name a wire-contract type) while their bytes keep joining source_hash/build_id through moduleOrder; the sidecar stays byte-deterministic and a package-file edit flips both identity hashes. - Builtins keep their story under the npm posture: async_free builtin imports compile alongside npm code, event-loop surfaces still refuse SC4005, no new fence. - New fixtures npm-static, npm-refuse, and contract-npm vendor fake packages per the tests/fixtures/npm precedent; the K12 suites assert the compile and refusal sides on both emissions and the contract suite covers the identity-hash implications.
20 lines
735 B
TypeScript
20 lines
735 B
TypeScript
// Library-mode npm posture fixture (static-or-refuse): a bare specifier
|
|
// naming an ELIGIBLE package (own .d.ts, unminified shipped JS, no
|
|
// build-transform markers) compiles statically as part of the library
|
|
// graph — no flag, no island — and the package's own top-level require
|
|
// ("mathdep") joins through the same bar. The node:path import alongside
|
|
// pins the builtin story: an async_free builtin keeps working under the
|
|
// npm posture, governed by SC4005 alone.
|
|
import { OFFSET, scale } from "mathkit";
|
|
import { basename } from "node:path";
|
|
|
|
export function scaled(x: number): number {
|
|
return scale(x, 3) + OFFSET;
|
|
}
|
|
|
|
export function tail(p: string): string {
|
|
return basename(p);
|
|
}
|
|
|
|
console.log("npm-static ready");
|