ts-swc-transform 2.11.14 → 2.12.0

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.
@@ -184,11 +184,15 @@ function transformTypesWorker(src, dest, options, callback) {
184
184
  }, {
185
185
  concurrency: concurrency
186
186
  }, function(err1) {
187
- var _tsconfig_config_compilerOptions;
187
+ var _tsconfig_config_compilerOptions, _tsconfig_config_compilerOptions1;
188
188
  if (err1) return callback(err1);
189
189
  if (rootFiles.length === 0) return callback(null, []);
190
+ // An explicit rootDir in the tsconfig wins: a package whose sources import siblings above
191
+ // it (a skills tree) names the common ancestor; otherwise the emit is rooted at src.
192
+ var configured = (_tsconfig_config_compilerOptions = tsconfig.config.compilerOptions) === null || _tsconfig_config_compilerOptions === void 0 ? void 0 : _tsconfig_config_compilerOptions.rootDir;
193
+ var rootDir = configured === undefined ? src : _path.default.resolve(_path.default.dirname(tsconfig.path), configured);
190
194
  var compilerOptions = sanitizeForCompiler(_object_spread_props(_object_spread({}, tsconfig.config.compilerOptions), {
191
- rootDir: src,
195
+ rootDir: rootDir,
192
196
  outDir: dest,
193
197
  noEmit: false,
194
198
  allowJs: true,
@@ -197,7 +201,7 @@ function transformTypesWorker(src, dest, options, callback) {
197
201
  // Suppress TS6 deprecation warnings (TS5101/TS5107) for consumers still on legacy Node-targeted options.
198
202
  ignoreDeprecations: '6.0'
199
203
  }));
200
- var rewrite = ((_tsconfig_config_compilerOptions = tsconfig.config.compilerOptions) === null || _tsconfig_config_compilerOptions === void 0 ? void 0 : _tsconfig_config_compilerOptions.rewriteRelativeImportExtensions) === true;
204
+ var rewrite = ((_tsconfig_config_compilerOptions1 = tsconfig.config.compilerOptions) === null || _tsconfig_config_compilerOptions1 === void 0 ? void 0 : _tsconfig_config_compilerOptions1.rewriteRelativeImportExtensions) === true;
201
205
  // Avoid collisions across concurrent runs.
202
206
  var tempDir = _path.default.join(dest, '.ts-swc-transform-temp', String(process.pid), String(Date.now()));
203
207
  var tempConfigPath = _path.default.join(tempDir, 'tsconfig.json');
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/workers/transformTypes.ts"],"sourcesContent":["import spawn, { type SpawnCallback, type SpawnResult } from 'cross-spawn-cb';\nimport fs from 'fs';\nimport Iterator, { type Entry } from 'fs-iterator';\nimport { safeRm } from 'fs-remove-compat';\nimport os from 'os';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport resolveBin from 'resolve-bin-sync';\n\nconst concurrency = Math.min(64, Math.max(8, (os.cpus()?.length ?? 4) * 8));\n\nconst tscPath = resolveBin('typescript', 'tsc');\n\nfunction compilerMajor(): number {\n try {\n const pkg = JSON.parse(fs.readFileSync(path.join(path.dirname(tscPath), '..', 'package.json'), 'utf8'));\n return +String(pkg.version).split('.')[0] || 0;\n } catch {\n return 0;\n }\n}\n\n// TypeScript 7 removed options that only ever affected JS emit, which swc handles.\n// Older compilers still accept them, so only rewrite when the installed tsc would reject them.\nfunction sanitizeForCompiler(options: Record<string, unknown>): Record<string, unknown> {\n if (compilerMajor() < 7) return options;\n const sanitized = { ...options };\n delete sanitized.downlevelIteration;\n if (sanitized.moduleResolution === 'node' || sanitized.moduleResolution === 'node10') sanitized.moduleResolution = 'bundler';\n if (typeof sanitized.target === 'string' && /^es[35]$/i.test(sanitized.target)) sanitized.target = 'es2015';\n return sanitized;\n}\n\nimport createMatcher from '../createMatcher.ts';\nimport { rewriteExtensions } from '../lib/rewriteExtensions.ts';\n\nimport type { InternalConfigOptions, TransformTypesCallback } from '../types.ts';\n\n/* ---------------- root file filtering ---------------- */\n\nfunction isAllowedRootFile(basename: string): boolean {\n return (\n basename.endsWith('.d.ts') ||\n basename.endsWith('.d.mts') ||\n basename.endsWith('.d.cts') ||\n basename.endsWith('.ts') ||\n basename.endsWith('.tsx') ||\n basename.endsWith('.mts') ||\n basename.endsWith('.cts') ||\n basename.endsWith('.js') ||\n basename.endsWith('.jsx') ||\n basename.endsWith('.mjs') ||\n basename.endsWith('.cjs')\n );\n}\n\n/* ---------------- compiler execution ---------------- */\n\nfunction runCompiler(cmdPath: string, args: string[], cb: SpawnCallback): void {\n spawn(process.execPath, [cmdPath, ...args], { encoding: 'utf8' }, cb);\n}\n\n/* ---------------- emitted file parsing ---------------- */\n\nfunction parseEmittedFiles(res: SpawnResult, dest: string): string[] {\n const out: string[] = [];\n const seen = new Set<string>();\n const lines = `${res.stdout}\\n${res.stderr}`.split(/\\r?\\n/);\n\n for (let line of lines) {\n line = line.trim();\n if (!line) continue;\n\n if (/^TSFILE:\\s+/i.test(line)) line = line.replace(/^TSFILE:\\s+/i, '').trim();\n\n if (!path.isAbsolute(line)) continue;\n if (!(line.endsWith('.d.ts') || line.endsWith('.d.mts') || line.endsWith('.d.cts'))) continue;\n\n // Optional safety: only accept outputs under dest\n const rel = path.relative(dest, line);\n if (rel.startsWith('..') || path.isAbsolute(rel)) continue;\n\n if (!seen.has(line)) {\n seen.add(line);\n out.push(line);\n }\n }\n\n return out;\n}\n\nexport default function transformTypesWorker(src: string, dest: string, options: InternalConfigOptions, callback: TransformTypesCallback) {\n const tsconfig = options.tsconfig;\n const matcher = createMatcher(tsconfig);\n\n const rootFiles: string[] = [];\n const iterator = new Iterator(src);\n\n iterator.forEach(\n (entry: Entry): void => {\n const stats = entry.stats as fs.Stats | undefined;\n if (!stats || !stats.isFile()) return;\n const basename = entry.basename as string;\n if (basename[0] === '.') return;\n if (!isAllowedRootFile(basename)) return;\n if (!matcher(entry.fullPath)) return;\n\n rootFiles.push(entry.fullPath);\n },\n { concurrency },\n (err) => {\n if (err) return callback(err);\n if (rootFiles.length === 0) return callback(null, []);\n\n const compilerOptions = sanitizeForCompiler({\n ...tsconfig.config.compilerOptions,\n rootDir: src,\n outDir: dest,\n noEmit: false,\n allowJs: true,\n declaration: true,\n emitDeclarationOnly: true,\n // Suppress TS6 deprecation warnings (TS5101/TS5107) for consumers still on legacy Node-targeted options.\n ignoreDeprecations: '6.0',\n });\n\n const rewrite = (tsconfig.config.compilerOptions as { rewriteRelativeImportExtensions?: boolean } | undefined)?.rewriteRelativeImportExtensions === true;\n\n // Avoid collisions across concurrent runs.\n const tempDir = path.join(dest, '.ts-swc-transform-temp', String(process.pid), String(Date.now()));\n const tempConfigPath = path.join(tempDir, 'tsconfig.json');\n\n const tempConfig = {\n compilerOptions,\n files: rootFiles,\n include: [],\n exclude: [],\n ...(tsconfig.config.references && { references: tsconfig.config.references }),\n };\n\n fs.mkdir(tempDir, { recursive: true }, (mkdirErr) => {\n if (mkdirErr) return callback(mkdirErr);\n\n fs.writeFile(tempConfigPath, JSON.stringify(tempConfig, null, 2), 'utf8', (writeErr) => {\n if (writeErr) {\n safeRm(tempDir, { recursive: true, force: true }, () => callback(writeErr));\n return;\n }\n\n const args = ['--project', tempConfigPath, '--listEmittedFiles', '--pretty', 'false'];\n\n runCompiler(tscPath, args, (runErr, res) => {\n if (runErr || !res || res.status !== 0) {\n // cross-spawn-cb sets runErr (with stdout/stderr/status copied onto it) on non-zero exit\n // and does NOT pass res — read from runErr first, then fall back to res.\n const source = (runErr as unknown as SpawnResult | undefined) ?? res;\n const status = source?.status;\n const stdout = String(source?.stdout ?? '');\n const stderr = String(source?.stderr ?? '');\n const detail = `TypeScript compiler failed (status=${status}).\\nstdout:\\n${stdout.slice(0, 100_000)}\\nstderr:\\n${stderr.slice(0, 20_000)}`;\n safeRm(tempDir, { recursive: true, force: true }, () => callback(new Error(detail)));\n return;\n }\n\n const emittedFiles = parseEmittedFiles(res, dest);\n if (emittedFiles.length === 0) {\n safeRm(tempDir, { recursive: true, force: true }, () => callback(new Error('TypeScript compiler produced no emitted declaration files')));\n return;\n }\n\n const postQueue = new Queue();\n\n if (rewrite) {\n for (const file of emittedFiles) {\n postQueue.defer((cb) => {\n fs.readFile(file, 'utf8', (readErr, content) => {\n if (readErr) return cb();\n const updated = rewriteExtensions(content);\n if (updated === content) cb();\n else fs.writeFile(file, updated, 'utf8', (err) => cb(err));\n });\n });\n }\n }\n\n postQueue.await(() => {\n safeRm(tempDir, { recursive: true, force: true }, (rmErr) => callback(rmErr || null, emittedFiles));\n });\n });\n });\n });\n }\n );\n}\n"],"names":["transformTypesWorker","os","concurrency","Math","min","max","cpus","length","tscPath","resolveBin","compilerMajor","pkg","JSON","parse","fs","readFileSync","path","join","dirname","String","version","split","sanitizeForCompiler","options","sanitized","downlevelIteration","moduleResolution","target","test","isAllowedRootFile","basename","endsWith","runCompiler","cmdPath","args","cb","spawn","process","execPath","encoding","parseEmittedFiles","res","dest","out","seen","Set","lines","stdout","stderr","line","trim","replace","isAbsolute","rel","relative","startsWith","has","add","push","src","callback","tsconfig","matcher","createMatcher","rootFiles","iterator","Iterator","forEach","entry","stats","isFile","fullPath","err","compilerOptions","config","rootDir","outDir","noEmit","allowJs","declaration","emitDeclarationOnly","ignoreDeprecations","rewrite","rewriteRelativeImportExtensions","tempDir","pid","Date","now","tempConfigPath","tempConfig","files","include","exclude","references","mkdir","recursive","mkdirErr","writeFile","stringify","writeErr","safeRm","force","runErr","status","source","detail","slice","Error","emittedFiles","postQueue","Queue","file","defer","readFile","readErr","content","updated","rewriteExtensions","await","rmErr"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/workers/transformTypes.ts"],"sourcesContent":["import spawn, { type SpawnCallback, type SpawnResult } from 'cross-spawn-cb';\nimport fs from 'fs';\nimport Iterator, { type Entry } from 'fs-iterator';\nimport { safeRm } from 'fs-remove-compat';\nimport os from 'os';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport resolveBin from 'resolve-bin-sync';\n\nconst concurrency = Math.min(64, Math.max(8, (os.cpus()?.length ?? 4) * 8));\n\nconst tscPath = resolveBin('typescript', 'tsc');\n\nfunction compilerMajor(): number {\n try {\n const pkg = JSON.parse(fs.readFileSync(path.join(path.dirname(tscPath), '..', 'package.json'), 'utf8'));\n return +String(pkg.version).split('.')[0] || 0;\n } catch {\n return 0;\n }\n}\n\n// TypeScript 7 removed options that only ever affected JS emit, which swc handles.\n// Older compilers still accept them, so only rewrite when the installed tsc would reject them.\nfunction sanitizeForCompiler(options: Record<string, unknown>): Record<string, unknown> {\n if (compilerMajor() < 7) return options;\n const sanitized = { ...options };\n delete sanitized.downlevelIteration;\n if (sanitized.moduleResolution === 'node' || sanitized.moduleResolution === 'node10') sanitized.moduleResolution = 'bundler';\n if (typeof sanitized.target === 'string' && /^es[35]$/i.test(sanitized.target)) sanitized.target = 'es2015';\n return sanitized;\n}\n\nimport createMatcher from '../createMatcher.ts';\nimport { rewriteExtensions } from '../lib/rewriteExtensions.ts';\n\nimport type { InternalConfigOptions, TransformTypesCallback } from '../types.ts';\n\n/* ---------------- root file filtering ---------------- */\n\nfunction isAllowedRootFile(basename: string): boolean {\n return (\n basename.endsWith('.d.ts') ||\n basename.endsWith('.d.mts') ||\n basename.endsWith('.d.cts') ||\n basename.endsWith('.ts') ||\n basename.endsWith('.tsx') ||\n basename.endsWith('.mts') ||\n basename.endsWith('.cts') ||\n basename.endsWith('.js') ||\n basename.endsWith('.jsx') ||\n basename.endsWith('.mjs') ||\n basename.endsWith('.cjs')\n );\n}\n\n/* ---------------- compiler execution ---------------- */\n\nfunction runCompiler(cmdPath: string, args: string[], cb: SpawnCallback): void {\n spawn(process.execPath, [cmdPath, ...args], { encoding: 'utf8' }, cb);\n}\n\n/* ---------------- emitted file parsing ---------------- */\n\nfunction parseEmittedFiles(res: SpawnResult, dest: string): string[] {\n const out: string[] = [];\n const seen = new Set<string>();\n const lines = `${res.stdout}\\n${res.stderr}`.split(/\\r?\\n/);\n\n for (let line of lines) {\n line = line.trim();\n if (!line) continue;\n\n if (/^TSFILE:\\s+/i.test(line)) line = line.replace(/^TSFILE:\\s+/i, '').trim();\n\n if (!path.isAbsolute(line)) continue;\n if (!(line.endsWith('.d.ts') || line.endsWith('.d.mts') || line.endsWith('.d.cts'))) continue;\n\n // Optional safety: only accept outputs under dest\n const rel = path.relative(dest, line);\n if (rel.startsWith('..') || path.isAbsolute(rel)) continue;\n\n if (!seen.has(line)) {\n seen.add(line);\n out.push(line);\n }\n }\n\n return out;\n}\n\nexport default function transformTypesWorker(src: string, dest: string, options: InternalConfigOptions, callback: TransformTypesCallback) {\n const tsconfig = options.tsconfig;\n const matcher = createMatcher(tsconfig);\n\n const rootFiles: string[] = [];\n const iterator = new Iterator(src);\n\n iterator.forEach(\n (entry: Entry): void => {\n const stats = entry.stats as fs.Stats | undefined;\n if (!stats || !stats.isFile()) return;\n const basename = entry.basename as string;\n if (basename[0] === '.') return;\n if (!isAllowedRootFile(basename)) return;\n if (!matcher(entry.fullPath)) return;\n\n rootFiles.push(entry.fullPath);\n },\n { concurrency },\n (err) => {\n if (err) return callback(err);\n if (rootFiles.length === 0) return callback(null, []);\n\n // An explicit rootDir in the tsconfig wins: a package whose sources import siblings above\n // it (a skills tree) names the common ancestor; otherwise the emit is rooted at src.\n const configured = (tsconfig.config.compilerOptions as { rootDir?: string } | undefined)?.rootDir;\n const rootDir = configured === undefined ? src : path.resolve(path.dirname(tsconfig.path), configured);\n const compilerOptions = sanitizeForCompiler({\n ...tsconfig.config.compilerOptions,\n rootDir,\n outDir: dest,\n noEmit: false,\n allowJs: true,\n declaration: true,\n emitDeclarationOnly: true,\n // Suppress TS6 deprecation warnings (TS5101/TS5107) for consumers still on legacy Node-targeted options.\n ignoreDeprecations: '6.0',\n });\n\n const rewrite = (tsconfig.config.compilerOptions as { rewriteRelativeImportExtensions?: boolean } | undefined)?.rewriteRelativeImportExtensions === true;\n\n // Avoid collisions across concurrent runs.\n const tempDir = path.join(dest, '.ts-swc-transform-temp', String(process.pid), String(Date.now()));\n const tempConfigPath = path.join(tempDir, 'tsconfig.json');\n\n const tempConfig = {\n compilerOptions,\n files: rootFiles,\n include: [],\n exclude: [],\n ...(tsconfig.config.references && { references: tsconfig.config.references }),\n };\n\n fs.mkdir(tempDir, { recursive: true }, (mkdirErr) => {\n if (mkdirErr) return callback(mkdirErr);\n\n fs.writeFile(tempConfigPath, JSON.stringify(tempConfig, null, 2), 'utf8', (writeErr) => {\n if (writeErr) {\n safeRm(tempDir, { recursive: true, force: true }, () => callback(writeErr));\n return;\n }\n\n const args = ['--project', tempConfigPath, '--listEmittedFiles', '--pretty', 'false'];\n\n runCompiler(tscPath, args, (runErr, res) => {\n if (runErr || !res || res.status !== 0) {\n // cross-spawn-cb sets runErr (with stdout/stderr/status copied onto it) on non-zero exit\n // and does NOT pass res — read from runErr first, then fall back to res.\n const source = (runErr as unknown as SpawnResult | undefined) ?? res;\n const status = source?.status;\n const stdout = String(source?.stdout ?? '');\n const stderr = String(source?.stderr ?? '');\n const detail = `TypeScript compiler failed (status=${status}).\\nstdout:\\n${stdout.slice(0, 100_000)}\\nstderr:\\n${stderr.slice(0, 20_000)}`;\n safeRm(tempDir, { recursive: true, force: true }, () => callback(new Error(detail)));\n return;\n }\n\n const emittedFiles = parseEmittedFiles(res, dest);\n if (emittedFiles.length === 0) {\n safeRm(tempDir, { recursive: true, force: true }, () => callback(new Error('TypeScript compiler produced no emitted declaration files')));\n return;\n }\n\n const postQueue = new Queue();\n\n if (rewrite) {\n for (const file of emittedFiles) {\n postQueue.defer((cb) => {\n fs.readFile(file, 'utf8', (readErr, content) => {\n if (readErr) return cb();\n const updated = rewriteExtensions(content);\n if (updated === content) cb();\n else fs.writeFile(file, updated, 'utf8', (err) => cb(err));\n });\n });\n }\n }\n\n postQueue.await(() => {\n safeRm(tempDir, { recursive: true, force: true }, (rmErr) => callback(rmErr || null, emittedFiles));\n });\n });\n });\n });\n }\n );\n}\n"],"names":["transformTypesWorker","os","concurrency","Math","min","max","cpus","length","tscPath","resolveBin","compilerMajor","pkg","JSON","parse","fs","readFileSync","path","join","dirname","String","version","split","sanitizeForCompiler","options","sanitized","downlevelIteration","moduleResolution","target","test","isAllowedRootFile","basename","endsWith","runCompiler","cmdPath","args","cb","spawn","process","execPath","encoding","parseEmittedFiles","res","dest","out","seen","Set","lines","stdout","stderr","line","trim","replace","isAbsolute","rel","relative","startsWith","has","add","push","src","callback","tsconfig","matcher","createMatcher","rootFiles","iterator","Iterator","forEach","entry","stats","isFile","fullPath","err","configured","config","compilerOptions","rootDir","undefined","resolve","outDir","noEmit","allowJs","declaration","emitDeclarationOnly","ignoreDeprecations","rewrite","rewriteRelativeImportExtensions","tempDir","pid","Date","now","tempConfigPath","tempConfig","files","include","exclude","references","mkdir","recursive","mkdirErr","writeFile","stringify","writeErr","safeRm","force","runErr","status","source","detail","slice","Error","emittedFiles","postQueue","Queue","file","defer","readFile","readErr","content","updated","rewriteExtensions","await","rmErr"],"mappings":"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"}
@@ -79,12 +79,16 @@ export default function transformTypesWorker(src, dest, options, callback) {
79
79
  }, {
80
80
  concurrency
81
81
  }, (err)=>{
82
- var _tsconfig_config_compilerOptions;
82
+ var _tsconfig_config_compilerOptions, _tsconfig_config_compilerOptions1;
83
83
  if (err) return callback(err);
84
84
  if (rootFiles.length === 0) return callback(null, []);
85
+ // An explicit rootDir in the tsconfig wins: a package whose sources import siblings above
86
+ // it (a skills tree) names the common ancestor; otherwise the emit is rooted at src.
87
+ const configured = (_tsconfig_config_compilerOptions = tsconfig.config.compilerOptions) === null || _tsconfig_config_compilerOptions === void 0 ? void 0 : _tsconfig_config_compilerOptions.rootDir;
88
+ const rootDir = configured === undefined ? src : path.resolve(path.dirname(tsconfig.path), configured);
85
89
  const compilerOptions = sanitizeForCompiler({
86
90
  ...tsconfig.config.compilerOptions,
87
- rootDir: src,
91
+ rootDir,
88
92
  outDir: dest,
89
93
  noEmit: false,
90
94
  allowJs: true,
@@ -93,7 +97,7 @@ export default function transformTypesWorker(src, dest, options, callback) {
93
97
  // Suppress TS6 deprecation warnings (TS5101/TS5107) for consumers still on legacy Node-targeted options.
94
98
  ignoreDeprecations: '6.0'
95
99
  });
96
- const rewrite = ((_tsconfig_config_compilerOptions = tsconfig.config.compilerOptions) === null || _tsconfig_config_compilerOptions === void 0 ? void 0 : _tsconfig_config_compilerOptions.rewriteRelativeImportExtensions) === true;
100
+ const rewrite = ((_tsconfig_config_compilerOptions1 = tsconfig.config.compilerOptions) === null || _tsconfig_config_compilerOptions1 === void 0 ? void 0 : _tsconfig_config_compilerOptions1.rewriteRelativeImportExtensions) === true;
97
101
  // Avoid collisions across concurrent runs.
98
102
  const tempDir = path.join(dest, '.ts-swc-transform-temp', String(process.pid), String(Date.now()));
99
103
  const tempConfigPath = path.join(tempDir, 'tsconfig.json');
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/workers/transformTypes.ts"],"sourcesContent":["import spawn, { type SpawnCallback, type SpawnResult } from 'cross-spawn-cb';\nimport fs from 'fs';\nimport Iterator, { type Entry } from 'fs-iterator';\nimport { safeRm } from 'fs-remove-compat';\nimport os from 'os';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport resolveBin from 'resolve-bin-sync';\n\nconst concurrency = Math.min(64, Math.max(8, (os.cpus()?.length ?? 4) * 8));\n\nconst tscPath = resolveBin('typescript', 'tsc');\n\nfunction compilerMajor(): number {\n try {\n const pkg = JSON.parse(fs.readFileSync(path.join(path.dirname(tscPath), '..', 'package.json'), 'utf8'));\n return +String(pkg.version).split('.')[0] || 0;\n } catch {\n return 0;\n }\n}\n\n// TypeScript 7 removed options that only ever affected JS emit, which swc handles.\n// Older compilers still accept them, so only rewrite when the installed tsc would reject them.\nfunction sanitizeForCompiler(options: Record<string, unknown>): Record<string, unknown> {\n if (compilerMajor() < 7) return options;\n const sanitized = { ...options };\n delete sanitized.downlevelIteration;\n if (sanitized.moduleResolution === 'node' || sanitized.moduleResolution === 'node10') sanitized.moduleResolution = 'bundler';\n if (typeof sanitized.target === 'string' && /^es[35]$/i.test(sanitized.target)) sanitized.target = 'es2015';\n return sanitized;\n}\n\nimport createMatcher from '../createMatcher.ts';\nimport { rewriteExtensions } from '../lib/rewriteExtensions.ts';\n\nimport type { InternalConfigOptions, TransformTypesCallback } from '../types.ts';\n\n/* ---------------- root file filtering ---------------- */\n\nfunction isAllowedRootFile(basename: string): boolean {\n return (\n basename.endsWith('.d.ts') ||\n basename.endsWith('.d.mts') ||\n basename.endsWith('.d.cts') ||\n basename.endsWith('.ts') ||\n basename.endsWith('.tsx') ||\n basename.endsWith('.mts') ||\n basename.endsWith('.cts') ||\n basename.endsWith('.js') ||\n basename.endsWith('.jsx') ||\n basename.endsWith('.mjs') ||\n basename.endsWith('.cjs')\n );\n}\n\n/* ---------------- compiler execution ---------------- */\n\nfunction runCompiler(cmdPath: string, args: string[], cb: SpawnCallback): void {\n spawn(process.execPath, [cmdPath, ...args], { encoding: 'utf8' }, cb);\n}\n\n/* ---------------- emitted file parsing ---------------- */\n\nfunction parseEmittedFiles(res: SpawnResult, dest: string): string[] {\n const out: string[] = [];\n const seen = new Set<string>();\n const lines = `${res.stdout}\\n${res.stderr}`.split(/\\r?\\n/);\n\n for (let line of lines) {\n line = line.trim();\n if (!line) continue;\n\n if (/^TSFILE:\\s+/i.test(line)) line = line.replace(/^TSFILE:\\s+/i, '').trim();\n\n if (!path.isAbsolute(line)) continue;\n if (!(line.endsWith('.d.ts') || line.endsWith('.d.mts') || line.endsWith('.d.cts'))) continue;\n\n // Optional safety: only accept outputs under dest\n const rel = path.relative(dest, line);\n if (rel.startsWith('..') || path.isAbsolute(rel)) continue;\n\n if (!seen.has(line)) {\n seen.add(line);\n out.push(line);\n }\n }\n\n return out;\n}\n\nexport default function transformTypesWorker(src: string, dest: string, options: InternalConfigOptions, callback: TransformTypesCallback) {\n const tsconfig = options.tsconfig;\n const matcher = createMatcher(tsconfig);\n\n const rootFiles: string[] = [];\n const iterator = new Iterator(src);\n\n iterator.forEach(\n (entry: Entry): void => {\n const stats = entry.stats as fs.Stats | undefined;\n if (!stats || !stats.isFile()) return;\n const basename = entry.basename as string;\n if (basename[0] === '.') return;\n if (!isAllowedRootFile(basename)) return;\n if (!matcher(entry.fullPath)) return;\n\n rootFiles.push(entry.fullPath);\n },\n { concurrency },\n (err) => {\n if (err) return callback(err);\n if (rootFiles.length === 0) return callback(null, []);\n\n const compilerOptions = sanitizeForCompiler({\n ...tsconfig.config.compilerOptions,\n rootDir: src,\n outDir: dest,\n noEmit: false,\n allowJs: true,\n declaration: true,\n emitDeclarationOnly: true,\n // Suppress TS6 deprecation warnings (TS5101/TS5107) for consumers still on legacy Node-targeted options.\n ignoreDeprecations: '6.0',\n });\n\n const rewrite = (tsconfig.config.compilerOptions as { rewriteRelativeImportExtensions?: boolean } | undefined)?.rewriteRelativeImportExtensions === true;\n\n // Avoid collisions across concurrent runs.\n const tempDir = path.join(dest, '.ts-swc-transform-temp', String(process.pid), String(Date.now()));\n const tempConfigPath = path.join(tempDir, 'tsconfig.json');\n\n const tempConfig = {\n compilerOptions,\n files: rootFiles,\n include: [],\n exclude: [],\n ...(tsconfig.config.references && { references: tsconfig.config.references }),\n };\n\n fs.mkdir(tempDir, { recursive: true }, (mkdirErr) => {\n if (mkdirErr) return callback(mkdirErr);\n\n fs.writeFile(tempConfigPath, JSON.stringify(tempConfig, null, 2), 'utf8', (writeErr) => {\n if (writeErr) {\n safeRm(tempDir, { recursive: true, force: true }, () => callback(writeErr));\n return;\n }\n\n const args = ['--project', tempConfigPath, '--listEmittedFiles', '--pretty', 'false'];\n\n runCompiler(tscPath, args, (runErr, res) => {\n if (runErr || !res || res.status !== 0) {\n // cross-spawn-cb sets runErr (with stdout/stderr/status copied onto it) on non-zero exit\n // and does NOT pass res — read from runErr first, then fall back to res.\n const source = (runErr as unknown as SpawnResult | undefined) ?? res;\n const status = source?.status;\n const stdout = String(source?.stdout ?? '');\n const stderr = String(source?.stderr ?? '');\n const detail = `TypeScript compiler failed (status=${status}).\\nstdout:\\n${stdout.slice(0, 100_000)}\\nstderr:\\n${stderr.slice(0, 20_000)}`;\n safeRm(tempDir, { recursive: true, force: true }, () => callback(new Error(detail)));\n return;\n }\n\n const emittedFiles = parseEmittedFiles(res, dest);\n if (emittedFiles.length === 0) {\n safeRm(tempDir, { recursive: true, force: true }, () => callback(new Error('TypeScript compiler produced no emitted declaration files')));\n return;\n }\n\n const postQueue = new Queue();\n\n if (rewrite) {\n for (const file of emittedFiles) {\n postQueue.defer((cb) => {\n fs.readFile(file, 'utf8', (readErr, content) => {\n if (readErr) return cb();\n const updated = rewriteExtensions(content);\n if (updated === content) cb();\n else fs.writeFile(file, updated, 'utf8', (err) => cb(err));\n });\n });\n }\n }\n\n postQueue.await(() => {\n safeRm(tempDir, { recursive: true, force: true }, (rmErr) => callback(rmErr || null, emittedFiles));\n });\n });\n });\n });\n }\n );\n}\n"],"names":["os","spawn","fs","Iterator","safeRm","path","Queue","resolveBin","concurrency","Math","min","max","cpus","length","tscPath","compilerMajor","pkg","JSON","parse","readFileSync","join","dirname","String","version","split","sanitizeForCompiler","options","sanitized","downlevelIteration","moduleResolution","target","test","createMatcher","rewriteExtensions","isAllowedRootFile","basename","endsWith","runCompiler","cmdPath","args","cb","process","execPath","encoding","parseEmittedFiles","res","dest","out","seen","Set","lines","stdout","stderr","line","trim","replace","isAbsolute","rel","relative","startsWith","has","add","push","transformTypesWorker","src","callback","tsconfig","matcher","rootFiles","iterator","forEach","entry","stats","isFile","fullPath","err","compilerOptions","config","rootDir","outDir","noEmit","allowJs","declaration","emitDeclarationOnly","ignoreDeprecations","rewrite","rewriteRelativeImportExtensions","tempDir","pid","Date","now","tempConfigPath","tempConfig","files","include","exclude","references","mkdir","recursive","mkdirErr","writeFile","stringify","writeErr","force","runErr","status","source","detail","slice","Error","emittedFiles","postQueue","file","defer","readFile","readErr","content","updated","await","rmErr"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/workers/transformTypes.ts"],"sourcesContent":["import spawn, { type SpawnCallback, type SpawnResult } from 'cross-spawn-cb';\nimport fs from 'fs';\nimport Iterator, { type Entry } from 'fs-iterator';\nimport { safeRm } from 'fs-remove-compat';\nimport os from 'os';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport resolveBin from 'resolve-bin-sync';\n\nconst concurrency = Math.min(64, Math.max(8, (os.cpus()?.length ?? 4) * 8));\n\nconst tscPath = resolveBin('typescript', 'tsc');\n\nfunction compilerMajor(): number {\n try {\n const pkg = JSON.parse(fs.readFileSync(path.join(path.dirname(tscPath), '..', 'package.json'), 'utf8'));\n return +String(pkg.version).split('.')[0] || 0;\n } catch {\n return 0;\n }\n}\n\n// TypeScript 7 removed options that only ever affected JS emit, which swc handles.\n// Older compilers still accept them, so only rewrite when the installed tsc would reject them.\nfunction sanitizeForCompiler(options: Record<string, unknown>): Record<string, unknown> {\n if (compilerMajor() < 7) return options;\n const sanitized = { ...options };\n delete sanitized.downlevelIteration;\n if (sanitized.moduleResolution === 'node' || sanitized.moduleResolution === 'node10') sanitized.moduleResolution = 'bundler';\n if (typeof sanitized.target === 'string' && /^es[35]$/i.test(sanitized.target)) sanitized.target = 'es2015';\n return sanitized;\n}\n\nimport createMatcher from '../createMatcher.ts';\nimport { rewriteExtensions } from '../lib/rewriteExtensions.ts';\n\nimport type { InternalConfigOptions, TransformTypesCallback } from '../types.ts';\n\n/* ---------------- root file filtering ---------------- */\n\nfunction isAllowedRootFile(basename: string): boolean {\n return (\n basename.endsWith('.d.ts') ||\n basename.endsWith('.d.mts') ||\n basename.endsWith('.d.cts') ||\n basename.endsWith('.ts') ||\n basename.endsWith('.tsx') ||\n basename.endsWith('.mts') ||\n basename.endsWith('.cts') ||\n basename.endsWith('.js') ||\n basename.endsWith('.jsx') ||\n basename.endsWith('.mjs') ||\n basename.endsWith('.cjs')\n );\n}\n\n/* ---------------- compiler execution ---------------- */\n\nfunction runCompiler(cmdPath: string, args: string[], cb: SpawnCallback): void {\n spawn(process.execPath, [cmdPath, ...args], { encoding: 'utf8' }, cb);\n}\n\n/* ---------------- emitted file parsing ---------------- */\n\nfunction parseEmittedFiles(res: SpawnResult, dest: string): string[] {\n const out: string[] = [];\n const seen = new Set<string>();\n const lines = `${res.stdout}\\n${res.stderr}`.split(/\\r?\\n/);\n\n for (let line of lines) {\n line = line.trim();\n if (!line) continue;\n\n if (/^TSFILE:\\s+/i.test(line)) line = line.replace(/^TSFILE:\\s+/i, '').trim();\n\n if (!path.isAbsolute(line)) continue;\n if (!(line.endsWith('.d.ts') || line.endsWith('.d.mts') || line.endsWith('.d.cts'))) continue;\n\n // Optional safety: only accept outputs under dest\n const rel = path.relative(dest, line);\n if (rel.startsWith('..') || path.isAbsolute(rel)) continue;\n\n if (!seen.has(line)) {\n seen.add(line);\n out.push(line);\n }\n }\n\n return out;\n}\n\nexport default function transformTypesWorker(src: string, dest: string, options: InternalConfigOptions, callback: TransformTypesCallback) {\n const tsconfig = options.tsconfig;\n const matcher = createMatcher(tsconfig);\n\n const rootFiles: string[] = [];\n const iterator = new Iterator(src);\n\n iterator.forEach(\n (entry: Entry): void => {\n const stats = entry.stats as fs.Stats | undefined;\n if (!stats || !stats.isFile()) return;\n const basename = entry.basename as string;\n if (basename[0] === '.') return;\n if (!isAllowedRootFile(basename)) return;\n if (!matcher(entry.fullPath)) return;\n\n rootFiles.push(entry.fullPath);\n },\n { concurrency },\n (err) => {\n if (err) return callback(err);\n if (rootFiles.length === 0) return callback(null, []);\n\n // An explicit rootDir in the tsconfig wins: a package whose sources import siblings above\n // it (a skills tree) names the common ancestor; otherwise the emit is rooted at src.\n const configured = (tsconfig.config.compilerOptions as { rootDir?: string } | undefined)?.rootDir;\n const rootDir = configured === undefined ? src : path.resolve(path.dirname(tsconfig.path), configured);\n const compilerOptions = sanitizeForCompiler({\n ...tsconfig.config.compilerOptions,\n rootDir,\n outDir: dest,\n noEmit: false,\n allowJs: true,\n declaration: true,\n emitDeclarationOnly: true,\n // Suppress TS6 deprecation warnings (TS5101/TS5107) for consumers still on legacy Node-targeted options.\n ignoreDeprecations: '6.0',\n });\n\n const rewrite = (tsconfig.config.compilerOptions as { rewriteRelativeImportExtensions?: boolean } | undefined)?.rewriteRelativeImportExtensions === true;\n\n // Avoid collisions across concurrent runs.\n const tempDir = path.join(dest, '.ts-swc-transform-temp', String(process.pid), String(Date.now()));\n const tempConfigPath = path.join(tempDir, 'tsconfig.json');\n\n const tempConfig = {\n compilerOptions,\n files: rootFiles,\n include: [],\n exclude: [],\n ...(tsconfig.config.references && { references: tsconfig.config.references }),\n };\n\n fs.mkdir(tempDir, { recursive: true }, (mkdirErr) => {\n if (mkdirErr) return callback(mkdirErr);\n\n fs.writeFile(tempConfigPath, JSON.stringify(tempConfig, null, 2), 'utf8', (writeErr) => {\n if (writeErr) {\n safeRm(tempDir, { recursive: true, force: true }, () => callback(writeErr));\n return;\n }\n\n const args = ['--project', tempConfigPath, '--listEmittedFiles', '--pretty', 'false'];\n\n runCompiler(tscPath, args, (runErr, res) => {\n if (runErr || !res || res.status !== 0) {\n // cross-spawn-cb sets runErr (with stdout/stderr/status copied onto it) on non-zero exit\n // and does NOT pass res — read from runErr first, then fall back to res.\n const source = (runErr as unknown as SpawnResult | undefined) ?? res;\n const status = source?.status;\n const stdout = String(source?.stdout ?? '');\n const stderr = String(source?.stderr ?? '');\n const detail = `TypeScript compiler failed (status=${status}).\\nstdout:\\n${stdout.slice(0, 100_000)}\\nstderr:\\n${stderr.slice(0, 20_000)}`;\n safeRm(tempDir, { recursive: true, force: true }, () => callback(new Error(detail)));\n return;\n }\n\n const emittedFiles = parseEmittedFiles(res, dest);\n if (emittedFiles.length === 0) {\n safeRm(tempDir, { recursive: true, force: true }, () => callback(new Error('TypeScript compiler produced no emitted declaration files')));\n return;\n }\n\n const postQueue = new Queue();\n\n if (rewrite) {\n for (const file of emittedFiles) {\n postQueue.defer((cb) => {\n fs.readFile(file, 'utf8', (readErr, content) => {\n if (readErr) return cb();\n const updated = rewriteExtensions(content);\n if (updated === content) cb();\n else fs.writeFile(file, updated, 'utf8', (err) => cb(err));\n });\n });\n }\n }\n\n postQueue.await(() => {\n safeRm(tempDir, { recursive: true, force: true }, (rmErr) => callback(rmErr || null, emittedFiles));\n });\n });\n });\n });\n }\n );\n}\n"],"names":["os","spawn","fs","Iterator","safeRm","path","Queue","resolveBin","concurrency","Math","min","max","cpus","length","tscPath","compilerMajor","pkg","JSON","parse","readFileSync","join","dirname","String","version","split","sanitizeForCompiler","options","sanitized","downlevelIteration","moduleResolution","target","test","createMatcher","rewriteExtensions","isAllowedRootFile","basename","endsWith","runCompiler","cmdPath","args","cb","process","execPath","encoding","parseEmittedFiles","res","dest","out","seen","Set","lines","stdout","stderr","line","trim","replace","isAbsolute","rel","relative","startsWith","has","add","push","transformTypesWorker","src","callback","tsconfig","matcher","rootFiles","iterator","forEach","entry","stats","isFile","fullPath","err","configured","config","compilerOptions","rootDir","undefined","resolve","outDir","noEmit","allowJs","declaration","emitDeclarationOnly","ignoreDeprecations","rewrite","rewriteRelativeImportExtensions","tempDir","pid","Date","now","tempConfigPath","tempConfig","files","include","exclude","references","mkdir","recursive","mkdirErr","writeFile","stringify","writeErr","force","runErr","status","source","detail","slice","Error","emittedFiles","postQueue","file","defer","readFile","readErr","content","updated","await","rmErr"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-swc-transform",
3
- "version": "2.11.14",
3
+ "version": "2.12.0",
4
4
  "description": "Typescript transformers for swc. Supports Node >= 0.8",
5
5
  "keywords": [
6
6
  "matcher",