@wcstack/typescript 4.6.0 → 4.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +2 -2
- package/README.md +2 -2
- package/dist/index.d.ts +5 -1
- package/dist/index.esm.js +32 -5
- package/dist/index.esm.js.map +1 -1
- package/dist/tsc-core.cjs +5841 -110
- package/dist/wcs-schema.mjs +32 -5
- package/dist/wcs-schema.mjs.map +1 -1
- package/dist/wcs-tsc.mjs +52 -9
- package/dist/wcs-tsc.mjs.map +1 -1
- package/package.json +2 -2
package/dist/wcs-tsc.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wcs-tsc.mjs","sources":["../../src/version.ts","../../src/cli/wcsTsc.ts"],"sourcesContent":["import pkg from \"../package.json\";\n\nexport const VERSION: string = pkg.version;\n","/**\n * wcsTsc.ts — the `wcs-tsc` command: `tsc` over `.html` files.\n *\n * wcs-tsc [--url-imports=any|error] [--wcs-defaults] [tsc arguments...]\n *\n * Every `<wcs-state>` inline `<script type=\"module\">` is mapped through the same\n * Volar language plugin the VS Code extension uses (dist/tsc-core.cjs, built from\n * vscode-wcs), so `this.coutn++` fails CI with a `file.html(line,col): error TS2339`\n * exactly where the editor underlines it. The mechanism is vue-tsc's:\n * `@volar/typescript`'s `runTsc` patches the `typescript/lib/tsc.js` the project\n * already has to accept `.html` and to build the program through the plugin.\n *\n * Options\n * --url-imports=any (default) treat every `https://` / `http://` module import\n * as `any` — buildless pages import from a CDN, and tsc has\n * nothing to resolve those against. `@wcstack/state` URL\n * imports are stripped by the plugin and typed by its preamble.\n * --url-imports=error leave URL imports alone (TS2307 for each).\n * --wcs-defaults when the project tsconfig lacks what the check needs\n * (`include` covering `**\\/*.html`, `noImplicitThis`, `allowJs`,\n * `checkJs`), run with a temporary config that extends it and\n * adds them, instead of only warning.\n *\n * Peers: `typescript` (required), `@volar/typescript` + `@volar/language-core`\n * (optional — only this command needs them). Resolved from the project first,\n * then from this package's own location.\n *\n * Exit codes: tsc's own (0 clean / 1 type errors / 2 usage) — plus 2 when the peers\n * are missing or the arguments are invalid.\n */\n\nimport { existsSync, mkdtempSync, unlinkSync, writeFileSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { tmpdir } from \"node:os\";\nimport { basename, dirname, isAbsolute, join, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { VERSION } from \"../version.js\";\n\nexport interface TscIo {\n readonly stdout: (text: string) => void;\n readonly stderr: (text: string) => void;\n readonly cwd: () => string;\n}\n\nexport interface TscArgs {\n readonly urlImports: \"any\" | \"error\";\n readonly wcsDefaults: boolean;\n readonly help: boolean;\n readonly version: boolean;\n /** Everything else, handed to tsc verbatim. */\n readonly tscArgs: readonly string[];\n readonly invalid: readonly string[];\n}\n\nconst USAGE =\n \"usage: wcs-tsc [--url-imports=any|error] [--wcs-defaults] [tsc arguments...]\\n\" +\n \" e.g. wcs-tsc --noEmit wcs-tsc -p tsconfig.json --noEmit\\n\";\n\nexport function parseTscArgs(argv: readonly string[]): TscArgs {\n let urlImports: TscArgs[\"urlImports\"] = \"any\";\n let wcsDefaults = false;\n let help = false;\n let version = false;\n const tscArgs: string[] = [];\n const invalid: string[] = [];\n for (const arg of argv) {\n if (arg.startsWith(\"--url-imports=\")) {\n const value = arg.slice(\"--url-imports=\".length);\n if (value === \"any\" || value === \"error\") urlImports = value;\n else invalid.push(arg);\n } else if (arg === \"--wcs-defaults\") wcsDefaults = true;\n else if (arg === \"--wcs-help\") help = true;\n else if (arg === \"--wcs-version\") version = true;\n else tscArgs.push(arg);\n }\n return { urlImports, wcsDefaults, help, version, tscArgs, invalid };\n}\n\n/** Resolve a module from the project (cwd) first, then from this package. */\nexport function resolveFromProject(id: string, cwd: string, fromUrl: string = import.meta.url): string | undefined {\n for (const base of [join(cwd, \"__wcs_tsc_resolve__.js\"), fromUrl]) {\n try {\n return createRequire(base).resolve(id);\n } catch {\n /* try the next base */\n }\n }\n return undefined;\n}\n\n/** The tsconfig tsc will read: `-p/--project` (a file or a directory), else ./tsconfig.json. */\nexport function findProjectConfig(tscArgs: readonly string[], cwd: string): { path: string; index: number } | undefined {\n for (let i = 0; i < tscArgs.length; i++) {\n const arg = tscArgs[i];\n let value: string | undefined;\n let index = i;\n if (arg === \"-p\" || arg === \"--project\") {\n value = tscArgs[i + 1];\n index = i + 1;\n } else if (arg.startsWith(\"--project=\") || arg.startsWith(\"-p=\")) {\n value = arg.slice(arg.indexOf(\"=\") + 1);\n }\n if (value === undefined) continue;\n let path = isAbsolute(value) ? value : resolve(cwd, value);\n if (existsSync(path) && !path.endsWith(\".json\")) path = join(path, \"tsconfig.json\");\n return { path, index };\n }\n const fallback = join(cwd, \"tsconfig.json\");\n return existsSync(fallback) ? { path: fallback, index: -1 } : undefined;\n}\n\nexport interface ConfigAudit {\n /** Human-readable names of what is missing (empty = ready). */\n readonly missing: readonly string[];\n readonly include: readonly string[] | undefined;\n readonly compilerOptions: Readonly<Record<string, unknown>>;\n /** No `target` / `lib` at all (tsc defaults to ES5, whose lib lacks the Map / Set / Promise types the `this` preamble uses). */\n readonly needsTarget: boolean;\n}\n\n/**\n * Check the project tsconfig for what the HTML check needs. `include` is only\n * checked when present (tsc's default `**\\/*` already picks `.html` up once the\n * extension is registered); a `files`-only config never sees HTML.\n */\nexport function auditConfig(configPath: string, ts: TypeScriptLike): ConfigAudit {\n const read = ts.readConfigFile(configPath, ts.sys.readFile);\n const raw = (read.config ?? {}) as { include?: unknown; files?: unknown; compilerOptions?: Record<string, unknown> };\n const parsed = ts.parseJsonConfigFileContent(read.config ?? {}, ts.sys, toPosix(dirname(configPath)), undefined, toPosix(configPath));\n const options = parsed.options as Record<string, unknown>;\n const missing: string[] = [];\n const include = Array.isArray(raw.include) ? (raw.include as string[]) : undefined;\n const coversHtml = (patterns: readonly string[]): boolean => patterns.some((p) => /\\.html?$|\\*\\*\\/\\*$|\\*$/.test(p) && !/\\.(ts|js|tsx|jsx|mts|cts|mjs|cjs)$/.test(p));\n if (include !== undefined && !coversHtml(include)) missing.push('include: \"**/*.html\"');\n else if (include === undefined && Array.isArray(raw.files)) missing.push('include: \"**/*.html\" (a files-only config never sees HTML)');\n // `strict: true` implies noImplicitThis unless it is explicitly turned off.\n const noImplicitThis = options.noImplicitThis ?? options.strict === true;\n if (noImplicitThis !== true) missing.push(\"compilerOptions.noImplicitThis: true\");\n if (options.allowJs !== true) missing.push(\"compilerOptions.allowJs: true\");\n if (options.checkJs !== true) missing.push(\"compilerOptions.checkJs: true\");\n // With neither target nor lib, tsc's ES5 default lib has no Map / Set / Promise:\n // the preamble's `_WcsThis<T>` degrades silently and `this.typo` stops being an error.\n const target = options.target as number | undefined;\n const needsTarget = options.lib === undefined && (target === undefined || target < ts.ScriptTarget.ES2015);\n if (needsTarget) missing.push('compilerOptions.target: \"ES2015\" or later (the this-typing preamble uses Map / Set / Promise)');\n return { missing, include, compilerOptions: raw.compilerOptions ?? {}, needsTarget };\n}\n\n/** Write a temporary config next to the project one that extends it with the missing pieces. */\nexport function writeDefaultsConfig(configPath: string, audit: ConfigAudit): string {\n const dir = dirname(configPath);\n const tempPath = join(dir, `.wcs-tsc.${process.pid}.tsconfig.json`);\n const include = audit.include !== undefined ? [...audit.include, \"**/*.html\"] : [\"**/*\", \"**/*.html\"];\n const config = {\n extends: `./${basename(configPath)}`,\n compilerOptions: {\n allowJs: true,\n checkJs: true,\n noImplicitThis: true,\n // only when the project set neither target nor lib — never override an explicit choice\n ...(audit.needsTarget ? { target: \"ESNext\" } : {}),\n },\n include,\n };\n writeFileSync(tempPath, JSON.stringify(config, null, 2), \"utf8\");\n return tempPath;\n}\n\n/** Ambient shorthand modules: every `http(s)://` import types as `any`. */\nexport function writeUrlImportsDeclaration(): string {\n const dir = mkdtempSync(join(tmpdir(), \"wcs-tsc-\"));\n const path = join(dir, \"url-imports.d.ts\");\n writeFileSync(path, `// wcs-tsc --url-imports=any: CDN module imports resolve to any.\\ndeclare module \"https://*\";\\ndeclare module \"http://*\";\\n`, \"utf8\");\n return path;\n}\n\nexport interface TypeScriptLike {\n readConfigFile(path: string, readFile: (path: string) => string | undefined): { config?: unknown; error?: unknown };\n parseJsonConfigFileContent(json: unknown, host: unknown, basePath: string, existing?: unknown, configFileName?: string): { options: unknown };\n sys: { readFile(path: string): string | undefined };\n ScriptTarget: { ES2015: number };\n}\n\nfunction toPosix(path: string): string {\n return path.replace(/\\\\/g, \"/\");\n}\n\nfunction tscCoreCandidates(fromUrl: string): string[] {\n const here = dirname(fileURLToPath(fromUrl));\n return [join(here, \"tsc-core.cjs\"), join(here, \"..\", \"dist\", \"tsc-core.cjs\"), join(here, \"..\", \"..\", \"dist\", \"tsc-core.cjs\")];\n}\n\n/** Module resolution / loading, injectable so the whole flow can be tested in-process. */\nexport interface MainDeps {\n readonly resolve: (id: string, cwd: string) => string | undefined;\n readonly load: (path: string) => unknown;\n}\n\n/* v8 ignore start -- the real resolver / loader; tests inject fakes to keep tsc from exiting the process */\nconst defaultDeps: MainDeps = {\n resolve: (id, cwd) => resolveFromProject(id, cwd),\n load: (path) => createRequire(import.meta.url)(path),\n};\n/* v8 ignore stop */\n\n/**\n * Prepare and run. Returns an exit code only on the paths that do not reach tsc;\n * tsc itself calls `process.exit` with its own code.\n */\nexport function main(argv: readonly string[], io: TscIo = defaultIo(), deps: MainDeps = defaultDeps): number {\n const args = parseTscArgs(argv);\n if (args.version) {\n io.stdout(`${VERSION}\\n`);\n return 0;\n }\n if (args.help) {\n io.stdout(USAGE);\n return 0;\n }\n if (args.invalid.length > 0) {\n io.stderr(`invalid option(s): ${args.invalid.join(\" \")}\\n${USAGE}`);\n return 2;\n }\n const cwd = io.cwd();\n\n const runTscPath = deps.resolve(\"@volar/typescript/lib/quickstart/runTsc.js\", cwd);\n if (runTscPath === undefined) {\n io.stderr(\"wcs-tsc needs @volar/typescript (an optional peer): npm i -D @volar/typescript@~2.4.0 @volar/language-core@~2.4.0\\n\");\n return 2;\n }\n const tscPath = deps.resolve(\"typescript/lib/tsc.js\", cwd);\n const tsApiPath = deps.resolve(\"typescript\", cwd);\n if (tscPath === undefined || tsApiPath === undefined) {\n io.stderr(\"wcs-tsc needs typescript (a peer): npm i -D typescript\\n\");\n return 2;\n }\n const corePath = tscCoreCandidates(import.meta.url).find((p) => existsSync(p));\n /* v8 ignore next 4 -- tests run after `npm run build`, so the bundle is always present */\n if (corePath === undefined) {\n io.stderr(\"wcs-tsc: dist/tsc-core.cjs not found — run `npm run build` in packages/typescript\\n\");\n return 2;\n }\n\n const ts = deps.load(tsApiPath) as TypeScriptLike;\n const tscArgs = [...args.tscArgs];\n const temporaries: string[] = [];\n\n const project = findProjectConfig(tscArgs, cwd);\n if (project !== undefined && existsSync(project.path)) {\n const audit = auditConfig(project.path, ts);\n if (audit.missing.length > 0) {\n if (args.wcsDefaults) {\n const tempConfig = writeDefaultsConfig(project.path, audit);\n temporaries.push(tempConfig);\n if (project.index === -1) tscArgs.push(\"-p\", tempConfig);\n else tscArgs[project.index] = tempConfig;\n io.stderr(`wcs-tsc: running with a temporary config that adds ${audit.missing.join(\", \")} (--wcs-defaults)\\n`);\n } else {\n io.stderr(`wcs-tsc: ${project.path} is missing ${audit.missing.join(\", \")} — HTML may not be checked; pass --wcs-defaults or add them\\n`);\n }\n }\n }\n\n const declaration = args.urlImports === \"any\" ? writeUrlImportsDeclaration() : undefined;\n if (declaration !== undefined) temporaries.push(declaration);\n\n const { createWcsLanguagePlugin } = deps.load(corePath) as {\n createWcsLanguagePlugin: (stateTagName?: string, options?: { mode: \"tsc\" }) => unknown;\n };\n const { runTsc } = deps.load(runTscPath) as {\n runTsc: (\n tscPath: string,\n options: { extraSupportedExtensions: string[]; extraExtensionsToRemove: string[] },\n getLanguagePlugins: (ts: unknown, options: { rootNames: readonly string[] }) => unknown[],\n ) => unknown;\n };\n\n const cleanup = (): void => {\n for (const file of temporaries.splice(0)) {\n /* v8 ignore next -- a temp file that vanished before cleanup is not an error */\n try { unlinkSync(file); } catch { /* best effort */ }\n }\n };\n process.once(\"exit\", cleanup);\n\n // tsc reads its arguments from process.argv when typescript/lib/tsc.js loads.\n process.argv = [process.argv[0], tscPath, ...tscArgs];\n runTsc(\n tscPath,\n { extraSupportedExtensions: [\".html\"], extraExtensionsToRemove: [] },\n (_ts, options) => {\n if (declaration !== undefined) (options.rootNames as string[]).push(declaration);\n // tsc mode: proxyCreateProgram supports one service script per file, so every\n // <wcs-state> block of a page is combined into one virtual TS module.\n return [createWcsLanguagePlugin(\"wcs-state\", { mode: \"tsc\" })];\n },\n );\n // Reached only when runTsc returns (tsc normally exits the process itself).\n cleanup();\n return 0;\n}\n\n/* v8 ignore start -- process plumbing; exercised by running the built bin */\nfunction defaultIo(): TscIo {\n return {\n stdout: (text) => process.stdout.write(text),\n stderr: (text) => process.stderr.write(text),\n cwd: () => process.cwd(),\n };\n}\n\nconst invokedAsBin = typeof process !== \"undefined\"\n && Array.isArray(process.argv)\n && /wcs-tsc(\\.mjs)?$/.test(process.argv[1] ?? \"\");\nif (invokedAsBin) {\n const code = main(process.argv.slice(2));\n if (code !== 0) process.exit(code);\n}\n/* v8 ignore stop */\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wcs-tsc.mjs","sources":["../../src/typescriptSupport.ts","../../src/version.ts","../../src/cli/wcsTsc.ts"],"sourcesContent":["/**\n * typescriptSupport.ts — which `typescript` this package can run on.\n *\n * Both commands drive the JavaScript compiler API of TypeScript 5 and 6:\n * `wcs-schema` through `import ts from \"typescript\"`, `wcs-tsc` by running the\n * project's `typescript/lib/tsc.js` through Volar's `runTsc`. TypeScript 7 (the\n * native compiler) publishes neither — its `typescript` export is\n * `{ version, versionMajorMinor }` and its `exports` has no `./lib/tsc` — so both\n * refuse it by name instead of failing on what is missing. TypeScript 7 reads other\n * file types through content mappers (7.1); this package does not provide one yet.\n */\n\n/** The version, when it is one neither command can run on (7 and later); otherwise `undefined`. */\nexport function unsupportedTypeScript(version: string | undefined): string | undefined {\n return Number.parseInt(version ?? \"\", 10) >= 7 ? version : undefined;\n}\n\n/** The refusal both commands report (exit code 2), without a trailing newline. */\nexport function unsupportedTypeScriptMessage(version: string): string {\n return `@wcstack/typescript runs on TypeScript 5 or 6, and the project has TypeScript ${version}, which has no JavaScript compiler API: npm i -D typescript@6`;\n}\n","import pkg from \"../package.json\";\n\nexport const VERSION: string = pkg.version;\n","/**\n * wcsTsc.ts — the `wcs-tsc` command: `tsc` over `.html` files.\n *\n * wcs-tsc [--url-imports=any|error] [--wcs-defaults] [tsc arguments...]\n *\n * Every `<wcs-state>` inline `<script type=\"module\">` is mapped through the same\n * Volar language plugin the VS Code extension uses (dist/tsc-core.cjs, built from\n * vscode-wcs), so `this.coutn++` fails CI with a `file.html(line,col): error TS2339`\n * exactly where the editor underlines it. The mechanism is vue-tsc's:\n * `@volar/typescript`'s `runTsc` patches the `typescript/lib/tsc.js` the project\n * already has to accept `.html` and to build the program through the plugin.\n *\n * Options\n * --url-imports=any (default) treat every `https://` / `http://` module import\n * as `any` — buildless pages import from a CDN, and tsc has\n * nothing to resolve those against. `@wcstack/state` URL\n * imports are stripped by the plugin and typed by its preamble.\n * --url-imports=error leave URL imports alone (TS2307 for each).\n * --wcs-defaults when the project tsconfig lacks what the check needs\n * (`include` covering `**\\/*.html`, `noImplicitThis`, `allowJs`,\n * `checkJs`), run with a temporary config that extends it and\n * adds them, instead of only warning.\n *\n * Peers: `typescript` (required, 5 or 6 — TypeScript 7 has no lib/tsc.js, see\n * typescriptSupport.ts), `@volar/typescript` + `@volar/language-core` (optional —\n * only this command needs them). Resolved from the project first, then from this\n * package's own location.\n *\n * Exit codes: tsc's own (0 clean / 1 type errors / 2 usage) — plus 2 when the peers\n * are missing or unsupported, or the arguments are invalid.\n */\n\nimport { existsSync, mkdtempSync, unlinkSync, writeFileSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { tmpdir } from \"node:os\";\nimport { basename, dirname, isAbsolute, join, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { unsupportedTypeScript, unsupportedTypeScriptMessage } from \"../typescriptSupport.js\";\nimport { VERSION } from \"../version.js\";\n\nexport interface TscIo {\n readonly stdout: (text: string) => void;\n readonly stderr: (text: string) => void;\n readonly cwd: () => string;\n}\n\nexport interface TscArgs {\n readonly urlImports: \"any\" | \"error\";\n readonly wcsDefaults: boolean;\n readonly help: boolean;\n readonly version: boolean;\n /** Everything else, handed to tsc verbatim. */\n readonly tscArgs: readonly string[];\n readonly invalid: readonly string[];\n}\n\nconst USAGE =\n \"usage: wcs-tsc [--url-imports=any|error] [--wcs-defaults] [tsc arguments...]\\n\" +\n \" e.g. wcs-tsc --noEmit wcs-tsc -p tsconfig.json --noEmit\\n\";\n\nexport function parseTscArgs(argv: readonly string[]): TscArgs {\n let urlImports: TscArgs[\"urlImports\"] = \"any\";\n let wcsDefaults = false;\n let help = false;\n let version = false;\n const tscArgs: string[] = [];\n const invalid: string[] = [];\n for (const arg of argv) {\n if (arg.startsWith(\"--url-imports=\")) {\n const value = arg.slice(\"--url-imports=\".length);\n if (value === \"any\" || value === \"error\") urlImports = value;\n else invalid.push(arg);\n } else if (arg === \"--wcs-defaults\") wcsDefaults = true;\n else if (arg === \"--wcs-help\") help = true;\n else if (arg === \"--wcs-version\") version = true;\n else tscArgs.push(arg);\n }\n return { urlImports, wcsDefaults, help, version, tscArgs, invalid };\n}\n\n/** Resolve a module from the project (cwd) first, then from this package. */\nexport function resolveFromProject(id: string, cwd: string, fromUrl: string = import.meta.url): string | undefined {\n for (const base of [join(cwd, \"__wcs_tsc_resolve__.js\"), fromUrl]) {\n try {\n return createRequire(base).resolve(id);\n } catch {\n /* try the next base */\n }\n }\n return undefined;\n}\n\n/** The tsconfig tsc will read: `-p/--project` (a file or a directory), else ./tsconfig.json. */\nexport function findProjectConfig(tscArgs: readonly string[], cwd: string): { path: string; index: number } | undefined {\n for (let i = 0; i < tscArgs.length; i++) {\n const arg = tscArgs[i];\n let value: string | undefined;\n let index = i;\n if (arg === \"-p\" || arg === \"--project\") {\n value = tscArgs[i + 1];\n index = i + 1;\n } else if (arg.startsWith(\"--project=\") || arg.startsWith(\"-p=\")) {\n value = arg.slice(arg.indexOf(\"=\") + 1);\n }\n if (value === undefined) continue;\n let path = isAbsolute(value) ? value : resolve(cwd, value);\n if (existsSync(path) && !path.endsWith(\".json\")) path = join(path, \"tsconfig.json\");\n return { path, index };\n }\n const fallback = join(cwd, \"tsconfig.json\");\n return existsSync(fallback) ? { path: fallback, index: -1 } : undefined;\n}\n\nexport interface ConfigAudit {\n /** Human-readable names of what is missing (empty = ready). */\n readonly missing: readonly string[];\n readonly include: readonly string[] | undefined;\n readonly compilerOptions: Readonly<Record<string, unknown>>;\n /** No `target` / `lib` at all (tsc defaults to ES5, whose lib lacks the Map / Set / Promise types the `this` preamble uses). */\n readonly needsTarget: boolean;\n}\n\n/**\n * Check the project tsconfig for what the HTML check needs. `include` is only\n * checked when present (tsc's default `**\\/*` already picks `.html` up once the\n * extension is registered); a `files`-only config never sees HTML.\n */\n/**\n * Whether an `include` pattern reaches `.html`, read as tsc reads it: a last segment with\n * neither an extension nor a wildcard names a directory (`src` is `src/**\\/*`), a trailing\n * wildcard (`**\\/*`, `src/*`) takes every supported extension — `.html` among them under\n * wcs-tsc — and any other pattern names its own extension.\n */\nexport function includeCoversHtml(pattern: string): boolean {\n const last = pattern.replace(/\\\\/g, \"/\").replace(/\\/+$/, \"\").split(\"/\").pop() ?? \"\";\n if (/\\.html?$/.test(last)) return true;\n if (/[*?]/.test(last)) return last.endsWith(\"*\");\n return last === \".\" || last === \"..\" || !last.includes(\".\");\n}\n\nexport function auditConfig(configPath: string, ts: TypeScriptLike): ConfigAudit {\n const read = ts.readConfigFile(configPath, ts.sys.readFile);\n const raw = (read.config ?? {}) as { include?: unknown; files?: unknown; compilerOptions?: Record<string, unknown> };\n const parsed = ts.parseJsonConfigFileContent(read.config ?? {}, ts.sys, toPosix(dirname(configPath)), undefined, toPosix(configPath));\n const options = parsed.options as Record<string, unknown>;\n const missing: string[] = [];\n const include = Array.isArray(raw.include) ? (raw.include as string[]) : undefined;\n if (include !== undefined && !include.some(includeCoversHtml)) missing.push('include: \"**/*.html\"');\n else if (include === undefined && Array.isArray(raw.files)) missing.push('include: \"**/*.html\" (a files-only config never sees HTML)');\n // `strict: true` implies noImplicitThis unless it is explicitly turned off.\n const noImplicitThis = options.noImplicitThis ?? options.strict === true;\n if (noImplicitThis !== true) missing.push(\"compilerOptions.noImplicitThis: true\");\n if (options.allowJs !== true) missing.push(\"compilerOptions.allowJs: true\");\n if (options.checkJs !== true) missing.push(\"compilerOptions.checkJs: true\");\n // With neither target nor lib, tsc's ES5 default lib has no Map / Set / Promise:\n // the preamble's `_WcsThis<T>` degrades silently and `this.typo` stops being an error.\n const target = options.target as number | undefined;\n const needsTarget = options.lib === undefined && (target === undefined || target < ts.ScriptTarget.ES2015);\n if (needsTarget) missing.push('compilerOptions.target: \"ES2015\" or later (the this-typing preamble uses Map / Set / Promise)');\n return { missing, include, compilerOptions: raw.compilerOptions ?? {}, needsTarget };\n}\n\n/** Write a temporary config next to the project one that extends it with the missing pieces. */\nexport function writeDefaultsConfig(configPath: string, audit: ConfigAudit): string {\n const dir = dirname(configPath);\n const tempPath = join(dir, `.wcs-tsc.${process.pid}.tsconfig.json`);\n const include = audit.include !== undefined ? [...audit.include, \"**/*.html\"] : [\"**/*\", \"**/*.html\"];\n const config = {\n extends: `./${basename(configPath)}`,\n compilerOptions: {\n allowJs: true,\n checkJs: true,\n noImplicitThis: true,\n // only when the project set neither target nor lib — never override an explicit choice\n ...(audit.needsTarget ? { target: \"ESNext\" } : {}),\n },\n include,\n };\n writeFileSync(tempPath, JSON.stringify(config, null, 2), \"utf8\");\n return tempPath;\n}\n\n/** Ambient shorthand modules: every `http(s)://` import types as `any`. */\nexport function writeUrlImportsDeclaration(): string {\n const dir = mkdtempSync(join(tmpdir(), \"wcs-tsc-\"));\n const path = join(dir, \"url-imports.d.ts\");\n writeFileSync(path, `// wcs-tsc --url-imports=any: CDN module imports resolve to any.\\ndeclare module \"https://*\";\\ndeclare module \"http://*\";\\n`, \"utf8\");\n return path;\n}\n\nexport interface TypeScriptLike {\n readConfigFile(path: string, readFile: (path: string) => string | undefined): { config?: unknown; error?: unknown };\n parseJsonConfigFileContent(json: unknown, host: unknown, basePath: string, existing?: unknown, configFileName?: string): { options: unknown };\n sys: { readFile(path: string): string | undefined };\n ScriptTarget: { ES2015: number };\n}\n\nfunction toPosix(path: string): string {\n return path.replace(/\\\\/g, \"/\");\n}\n\nfunction tscCoreCandidates(fromUrl: string): string[] {\n const here = dirname(fileURLToPath(fromUrl));\n return [join(here, \"tsc-core.cjs\"), join(here, \"..\", \"dist\", \"tsc-core.cjs\"), join(here, \"..\", \"..\", \"dist\", \"tsc-core.cjs\")];\n}\n\n/** Module resolution / loading, injectable so the whole flow can be tested in-process. */\nexport interface MainDeps {\n readonly resolve: (id: string, cwd: string) => string | undefined;\n readonly load: (path: string) => unknown;\n}\n\n/* v8 ignore start -- the real resolver / loader; tests inject fakes to keep tsc from exiting the process */\nconst defaultDeps: MainDeps = {\n resolve: (id, cwd) => resolveFromProject(id, cwd),\n load: (path) => createRequire(import.meta.url)(path),\n};\n/* v8 ignore stop */\n\n/**\n * Prepare and run. Returns an exit code only on the paths that do not reach tsc;\n * tsc itself calls `process.exit` with its own code.\n */\nexport function main(argv: readonly string[], io: TscIo = defaultIo(), deps: MainDeps = defaultDeps): number {\n const args = parseTscArgs(argv);\n if (args.version) {\n io.stdout(`${VERSION}\\n`);\n return 0;\n }\n if (args.help) {\n io.stdout(USAGE);\n return 0;\n }\n if (args.invalid.length > 0) {\n io.stderr(`invalid option(s): ${args.invalid.join(\" \")}\\n${USAGE}`);\n return 2;\n }\n const cwd = io.cwd();\n\n // TypeScript 7 resolves as `typescript` but has no lib/tsc.js: name it rather than say typescript is missing.\n const tsPackagePath = deps.resolve(\"typescript/package.json\", cwd);\n const unsupported = tsPackagePath === undefined\n ? undefined\n : unsupportedTypeScript((deps.load(tsPackagePath) as { version?: string }).version);\n if (unsupported !== undefined) {\n io.stderr(`wcs-tsc: ${unsupportedTypeScriptMessage(unsupported)}\\n`);\n return 2;\n }\n\n const runTscPath = deps.resolve(\"@volar/typescript/lib/quickstart/runTsc.js\", cwd);\n if (runTscPath === undefined) {\n io.stderr(\"wcs-tsc needs @volar/typescript (an optional peer): npm i -D @volar/typescript@~2.4.0 @volar/language-core@~2.4.0\\n\");\n return 2;\n }\n const tscPath = deps.resolve(\"typescript/lib/tsc.js\", cwd);\n const tsApiPath = deps.resolve(\"typescript\", cwd);\n if (tscPath === undefined || tsApiPath === undefined) {\n io.stderr(\"wcs-tsc needs typescript (a peer): npm i -D typescript@6\\n\");\n return 2;\n }\n const corePath = tscCoreCandidates(import.meta.url).find((p) => existsSync(p));\n /* v8 ignore next 4 -- tests run after `npm run build`, so the bundle is always present */\n if (corePath === undefined) {\n io.stderr(\"wcs-tsc: dist/tsc-core.cjs not found — run `npm run build` in packages/typescript\\n\");\n return 2;\n }\n\n const ts = deps.load(tsApiPath) as TypeScriptLike;\n const tscArgs = [...args.tscArgs];\n const temporaries: string[] = [];\n\n const project = findProjectConfig(tscArgs, cwd);\n if (project !== undefined && existsSync(project.path)) {\n const audit = auditConfig(project.path, ts);\n if (audit.missing.length > 0) {\n if (args.wcsDefaults) {\n const tempConfig = writeDefaultsConfig(project.path, audit);\n temporaries.push(tempConfig);\n if (project.index === -1) tscArgs.push(\"-p\", tempConfig);\n else tscArgs[project.index] = tempConfig;\n io.stderr(`wcs-tsc: running with a temporary config that adds ${audit.missing.join(\", \")} (--wcs-defaults)\\n`);\n } else {\n io.stderr(`wcs-tsc: ${project.path} is missing ${audit.missing.join(\", \")} — HTML may not be checked; pass --wcs-defaults or add them\\n`);\n }\n }\n }\n\n const declaration = args.urlImports === \"any\" ? writeUrlImportsDeclaration() : undefined;\n if (declaration !== undefined) temporaries.push(declaration);\n\n const { createWcsLanguagePlugin } = deps.load(corePath) as {\n createWcsLanguagePlugin: (stateTagName?: string, options?: { mode: \"tsc\" }) => unknown;\n };\n const { runTsc } = deps.load(runTscPath) as {\n runTsc: (\n tscPath: string,\n options: { extraSupportedExtensions: string[]; extraExtensionsToRemove: string[] },\n getLanguagePlugins: (ts: unknown, options: { rootNames: readonly string[] }) => unknown[],\n ) => unknown;\n };\n\n const cleanup = (): void => {\n for (const file of temporaries.splice(0)) {\n /* v8 ignore next -- a temp file that vanished before cleanup is not an error */\n try { unlinkSync(file); } catch { /* best effort */ }\n }\n };\n process.once(\"exit\", cleanup);\n\n // tsc reads its arguments from process.argv when typescript/lib/tsc.js loads.\n process.argv = [process.argv[0], tscPath, ...tscArgs];\n runTsc(\n tscPath,\n { extraSupportedExtensions: [\".html\"], extraExtensionsToRemove: [] },\n (_ts, options) => {\n if (declaration !== undefined) (options.rootNames as string[]).push(declaration);\n // tsc mode: proxyCreateProgram supports one service script per file, so every\n // <wcs-state> block of a page is combined into one virtual TS module.\n return [createWcsLanguagePlugin(\"wcs-state\", { mode: \"tsc\" })];\n },\n );\n // Reached only when runTsc returns (tsc normally exits the process itself).\n cleanup();\n return 0;\n}\n\n/* v8 ignore start -- process plumbing; exercised by running the built bin */\nfunction defaultIo(): TscIo {\n return {\n stdout: (text) => process.stdout.write(text),\n stderr: (text) => process.stderr.write(text),\n cwd: () => process.cwd(),\n };\n}\n\nconst invokedAsBin = typeof process !== \"undefined\"\n && Array.isArray(process.argv)\n && /wcs-tsc(\\.mjs)?$/.test(process.argv[1] ?? \"\");\nif (invokedAsBin) {\n const code = main(process.argv.slice(2));\n if (code !== 0) process.exit(code);\n}\n/* v8 ignore stop */\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wcstack/typescript",
|
|
3
|
-
"version": "4.6.
|
|
3
|
+
"version": "4.6.2",
|
|
4
4
|
"description": "TypeScript tooling for wcstack apps: wcs-schema generates the sidecar stateSchema from a typed state file, so wcs-validate checks data-wcs paths against real types in CI and every editor.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.esm.js",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"peerDependencies": {
|
|
52
52
|
"@volar/language-core": "~2.4.0",
|
|
53
53
|
"@volar/typescript": "~2.4.0",
|
|
54
|
-
"typescript": ">=5.0"
|
|
54
|
+
"typescript": ">=5.0 <7"
|
|
55
55
|
},
|
|
56
56
|
"peerDependenciesMeta": {
|
|
57
57
|
"@volar/language-core": {
|