ts-swc-transform 2.11.3 → 2.11.4
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.
|
@@ -8,15 +8,25 @@ Object.defineProperty(exports, "default", {
|
|
|
8
8
|
return transformTypesWorker;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
+
var _crossspawncb = /*#__PURE__*/ _interop_require_default(require("cross-spawn-cb"));
|
|
11
12
|
var _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
|
12
13
|
var _fsiterator = /*#__PURE__*/ _interop_require_default(require("fs-iterator"));
|
|
13
|
-
var
|
|
14
|
+
var _fsremovecompat = require("fs-remove-compat");
|
|
14
15
|
var _os = /*#__PURE__*/ _interop_require_default(require("os"));
|
|
16
|
+
var _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
15
17
|
var _queuecb = /*#__PURE__*/ _interop_require_default(require("queue-cb"));
|
|
16
|
-
var
|
|
18
|
+
var _resolvebinsync = /*#__PURE__*/ _interop_require_default(require("resolve-bin-sync"));
|
|
17
19
|
var _constantsts = require("../constants.js");
|
|
18
20
|
var _createMatcherts = /*#__PURE__*/ _interop_require_default(require("../createMatcher.js"));
|
|
19
21
|
var _rewriteExtensionsts = require("../lib/rewriteExtensions.js");
|
|
22
|
+
function _array_like_to_array(arr, len) {
|
|
23
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
24
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
25
|
+
return arr2;
|
|
26
|
+
}
|
|
27
|
+
function _array_without_holes(arr) {
|
|
28
|
+
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
29
|
+
}
|
|
20
30
|
function _define_property(obj, key, value) {
|
|
21
31
|
if (key in obj) {
|
|
22
32
|
Object.defineProperty(obj, key, {
|
|
@@ -35,6 +45,12 @@ function _interop_require_default(obj) {
|
|
|
35
45
|
default: obj
|
|
36
46
|
};
|
|
37
47
|
}
|
|
48
|
+
function _iterable_to_array(iter) {
|
|
49
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
50
|
+
}
|
|
51
|
+
function _non_iterable_spread() {
|
|
52
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
53
|
+
}
|
|
38
54
|
function _object_spread(target) {
|
|
39
55
|
for(var i = 1; i < arguments.length; i++){
|
|
40
56
|
var source = arguments[i] != null ? arguments[i] : {};
|
|
@@ -74,81 +90,205 @@ function _object_spread_props(target, source) {
|
|
|
74
90
|
}
|
|
75
91
|
return target;
|
|
76
92
|
}
|
|
93
|
+
function _to_consumable_array(arr) {
|
|
94
|
+
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
95
|
+
}
|
|
96
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
97
|
+
if (!o) return;
|
|
98
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
99
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
100
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
101
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
102
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
103
|
+
}
|
|
77
104
|
var _ref;
|
|
78
105
|
var _os_cpus;
|
|
79
106
|
var concurrency = Math.min(64, Math.max(8, ((_ref = (_os_cpus = _os.default.cpus()) === null || _os_cpus === void 0 ? void 0 : _os_cpus.length) !== null && _ref !== void 0 ? _ref : 4) * 8));
|
|
80
|
-
var
|
|
107
|
+
var tscPath = (0, _resolvebinsync.default)('typescript', 'tsc');
|
|
108
|
+
var tsgoPath = null;
|
|
109
|
+
try {
|
|
110
|
+
tsgoPath = (0, _resolvebinsync.default)('@typescript/native-preview', 'tsgo');
|
|
111
|
+
} catch (unused) {
|
|
112
|
+
tsgoPath = null;
|
|
113
|
+
}
|
|
114
|
+
/* ---------------- root file filtering ---------------- */ function isAllowedRootFile(basename) {
|
|
115
|
+
return basename.endsWith('.d.ts') || basename.endsWith('.d.mts') || basename.endsWith('.d.cts') || basename.endsWith('.ts') || basename.endsWith('.tsx') || basename.endsWith('.mts') || basename.endsWith('.cts') || basename.endsWith('.js') || basename.endsWith('.jsx') || basename.endsWith('.mjs') || basename.endsWith('.cjs');
|
|
116
|
+
}
|
|
117
|
+
/* ---------------- compiler execution ---------------- */ function runCompiler(cmdPath, args, cb) {
|
|
118
|
+
(0, _crossspawncb.default)(process.execPath, [
|
|
119
|
+
cmdPath
|
|
120
|
+
].concat(_to_consumable_array(args)), {
|
|
121
|
+
encoding: 'utf8'
|
|
122
|
+
}, cb);
|
|
123
|
+
}
|
|
124
|
+
function runTsgoThenTsc(args, cb) {
|
|
125
|
+
if (tsgoPath) {
|
|
126
|
+
runCompiler(tsgoPath, args, function(err, res) {
|
|
127
|
+
// Prefer status code over "err" for deciding success/fallback
|
|
128
|
+
if (!err && res.status === 0) return cb(null, res);
|
|
129
|
+
runCompiler(tscPath, args, cb);
|
|
130
|
+
});
|
|
131
|
+
} else {
|
|
132
|
+
runCompiler(tscPath, args, cb);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/* ---------------- emitted file parsing ---------------- */ function parseEmittedFiles(res, dest) {
|
|
136
|
+
var out = [];
|
|
137
|
+
var seen = new Set();
|
|
138
|
+
var lines = "".concat(res.stdout, "\n").concat(res.stderr).split(/\r?\n/);
|
|
139
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
140
|
+
try {
|
|
141
|
+
for(var _iterator = lines[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
142
|
+
var line = _step.value;
|
|
143
|
+
line = line.trim();
|
|
144
|
+
if (!line) continue;
|
|
145
|
+
if (/^TSFILE:\s+/i.test(line)) line = line.replace(/^TSFILE:\s+/i, '').trim();
|
|
146
|
+
if (!_path.default.isAbsolute(line)) continue;
|
|
147
|
+
if (!(line.endsWith('.d.ts') || line.endsWith('.d.mts') || line.endsWith('.d.cts'))) continue;
|
|
148
|
+
// Optional safety: only accept outputs under dest
|
|
149
|
+
var rel = _path.default.relative(dest, line);
|
|
150
|
+
if (rel.startsWith('..') || _path.default.isAbsolute(rel)) continue;
|
|
151
|
+
if (!seen.has(line)) {
|
|
152
|
+
seen.add(line);
|
|
153
|
+
out.push(line);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
} catch (err) {
|
|
157
|
+
_didIteratorError = true;
|
|
158
|
+
_iteratorError = err;
|
|
159
|
+
} finally{
|
|
160
|
+
try {
|
|
161
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
162
|
+
_iterator.return();
|
|
163
|
+
}
|
|
164
|
+
} finally{
|
|
165
|
+
if (_didIteratorError) {
|
|
166
|
+
throw _iteratorError;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return out;
|
|
171
|
+
}
|
|
81
172
|
function transformTypesWorker(src, dest, options, callback) {
|
|
82
173
|
var tsconfig = options.tsconfig;
|
|
83
174
|
var matcher = (0, _createMatcherts.default)(tsconfig);
|
|
84
|
-
var
|
|
85
|
-
var entries = [];
|
|
175
|
+
var rootFiles = [];
|
|
86
176
|
var iterator = new _fsiterator.default(src);
|
|
87
177
|
iterator.forEach(function(entry) {
|
|
88
178
|
if (!entry.stats.isFile()) return;
|
|
89
179
|
if (entry.basename[0] === '.') return;
|
|
90
180
|
if (_constantsts.typeFileRegEx.test(entry.basename)) return;
|
|
181
|
+
if (!isAllowedRootFile(entry.basename)) return;
|
|
91
182
|
if (!matcher(entry.fullPath)) return;
|
|
92
|
-
|
|
183
|
+
rootFiles.push(entry.fullPath);
|
|
93
184
|
}, {
|
|
94
185
|
concurrency: concurrency
|
|
95
|
-
}, function(
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
var
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
186
|
+
}, function(err1) {
|
|
187
|
+
var _tsconfig_config_compilerOptions;
|
|
188
|
+
if (err1) return callback(err1);
|
|
189
|
+
if (rootFiles.length === 0) return callback(null, []);
|
|
190
|
+
var compilerOptions = _object_spread_props(_object_spread({}, tsconfig.config.compilerOptions), {
|
|
191
|
+
outDir: dest,
|
|
192
|
+
noEmit: false,
|
|
193
|
+
allowJs: true,
|
|
194
|
+
declaration: true,
|
|
195
|
+
emitDeclarationOnly: true
|
|
196
|
+
});
|
|
197
|
+
var rewrite = ((_tsconfig_config_compilerOptions = tsconfig.config.compilerOptions) === null || _tsconfig_config_compilerOptions === void 0 ? void 0 : _tsconfig_config_compilerOptions.rewriteRelativeImportExtensions) === true;
|
|
198
|
+
// Avoid collisions across concurrent runs.
|
|
199
|
+
var tempDir = _path.default.join(dest, '.ts-swc-transform-temp', String(process.pid), String(Date.now()));
|
|
200
|
+
var tempConfigPath = _path.default.join(tempDir, 'tsconfig.json');
|
|
201
|
+
var tempConfig = _object_spread({
|
|
202
|
+
compilerOptions: compilerOptions,
|
|
203
|
+
files: rootFiles,
|
|
204
|
+
include: [],
|
|
205
|
+
exclude: []
|
|
206
|
+
}, tsconfig.config.references && {
|
|
207
|
+
references: tsconfig.config.references
|
|
208
|
+
});
|
|
209
|
+
_fs.default.mkdir(tempDir, {
|
|
210
|
+
recursive: true
|
|
211
|
+
}, function(mkdirErr) {
|
|
212
|
+
if (mkdirErr) return callback(mkdirErr);
|
|
213
|
+
_fs.default.writeFile(tempConfigPath, JSON.stringify(tempConfig, null, 2), 'utf8', function(writeErr) {
|
|
214
|
+
if (writeErr) {
|
|
215
|
+
(0, _fsremovecompat.safeRm)(tempDir, {
|
|
216
|
+
recursive: true,
|
|
217
|
+
force: true
|
|
218
|
+
}, function() {
|
|
219
|
+
return callback(writeErr);
|
|
220
|
+
});
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
var args = [
|
|
224
|
+
'--project',
|
|
225
|
+
tempConfigPath,
|
|
226
|
+
'--listEmittedFiles',
|
|
227
|
+
'--pretty',
|
|
228
|
+
'false'
|
|
229
|
+
];
|
|
230
|
+
runTsgoThenTsc(args, function(runErr, res) {
|
|
231
|
+
if (runErr || res.status !== 0) {
|
|
232
|
+
var _ref;
|
|
233
|
+
var msg = "TypeScript compiler failed (status=".concat(res === null || res === void 0 ? void 0 : res.status, ").\n").concat("stderr:\n".concat(String((_ref = res === null || res === void 0 ? void 0 : res.stderr) !== null && _ref !== void 0 ? _ref : '')).slice(0, 20000));
|
|
234
|
+
(0, _fsremovecompat.safeRm)(tempDir, {
|
|
235
|
+
recursive: true,
|
|
236
|
+
force: true
|
|
237
|
+
}, function() {
|
|
238
|
+
return callback(runErr !== null && runErr !== void 0 ? runErr : new Error(msg));
|
|
239
|
+
});
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
var emittedFiles = parseEmittedFiles(res, dest);
|
|
243
|
+
if (emittedFiles.length === 0) {
|
|
244
|
+
(0, _fsremovecompat.safeRm)(tempDir, {
|
|
245
|
+
recursive: true,
|
|
246
|
+
force: true
|
|
247
|
+
}, function() {
|
|
248
|
+
return callback(new Error('TypeScript compiler produced no emitted declaration files'));
|
|
249
|
+
});
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
var postQueue = new _queuecb.default();
|
|
253
|
+
if (rewrite) {
|
|
254
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
255
|
+
try {
|
|
256
|
+
var _loop = function() {
|
|
257
|
+
var file = _step.value;
|
|
258
|
+
postQueue.defer(function(cb) {
|
|
259
|
+
_fs.default.readFile(file, 'utf8', function(readErr, content) {
|
|
260
|
+
if (readErr) return cb();
|
|
261
|
+
var updated = (0, _rewriteExtensionsts.rewriteExtensions)(content);
|
|
262
|
+
updated === content ? cb() : _fs.default.writeFile(file, updated, 'utf8', cb);
|
|
140
263
|
});
|
|
141
|
-
}
|
|
142
|
-
|
|
264
|
+
});
|
|
265
|
+
};
|
|
266
|
+
for(var _iterator = emittedFiles[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();
|
|
267
|
+
} catch (err) {
|
|
268
|
+
_didIteratorError = true;
|
|
269
|
+
_iteratorError = err;
|
|
270
|
+
} finally{
|
|
271
|
+
try {
|
|
272
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
273
|
+
_iterator.return();
|
|
143
274
|
}
|
|
144
|
-
}
|
|
145
|
-
|
|
275
|
+
} finally{
|
|
276
|
+
if (_didIteratorError) {
|
|
277
|
+
throw _iteratorError;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
146
281
|
}
|
|
147
|
-
|
|
282
|
+
postQueue.await(function() {
|
|
283
|
+
(0, _fsremovecompat.safeRm)(tempDir, {
|
|
284
|
+
recursive: true,
|
|
285
|
+
force: true
|
|
286
|
+
}, function(rmErr) {
|
|
287
|
+
return callback(rmErr || null, emittedFiles);
|
|
288
|
+
});
|
|
289
|
+
});
|
|
290
|
+
});
|
|
148
291
|
});
|
|
149
|
-
}
|
|
150
|
-
postQueue.await(function() {
|
|
151
|
-
return callback(null, res.emittedFiles);
|
|
152
292
|
});
|
|
153
293
|
});
|
|
154
294
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/workers/transformTypes.ts"],"sourcesContent":["import fs from 'fs';\nimport Iterator, { type Entry } from 'fs-iterator';\nimport Module from 'module';\nimport os from 'os';\nimport Queue from 'queue-cb';\n\nconst concurrency = Math.min(64, Math.max(8, (os.cpus()?.length ?? 4) * 8));\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\nimport { stringEndsWith } from '../compat.ts';\nimport { typeFileRegEx } from '../constants.ts';\nimport createMatcher from '../createMatcher.ts';\nimport { rewriteExtensions } from '../lib/rewriteExtensions.ts';\n\nimport type { ConfigOptions, TransformTypesCallback } from '../types.ts';\n\nexport default function transformTypesWorker(src: string, dest: string, options: ConfigOptions, callback: TransformTypesCallback) {\n const tsconfig = options.tsconfig;\n const matcher = createMatcher(tsconfig);\n const ts = _require('typescript');\n\n const entries = [];\n const iterator = new Iterator(src);\n iterator.forEach(\n (entry: Entry): void => {\n if (!entry.stats.isFile()) return;\n if (entry.basename[0] === '.') return;\n if (typeFileRegEx.test(entry.basename)) return;\n if (!matcher(entry.fullPath)) return;\n entries.push(entry);\n },\n { concurrency },\n (err) => {\n if (err) return callback(err);\n\n // Step 2: TypeScript emit (inherently sync - cannot change)\n const compilerOptions = ts.convertCompilerOptionsFromJson(tsconfig.config.compilerOptions, '');\n const config = {\n fileNames: entries.map((entry) => entry.fullPath),\n options: {\n ...compilerOptions.options,\n outDir: dest,\n noEmit: false,\n allowJs: true,\n declaration: true,\n emitDeclarationOnly: true,\n listEmittedFiles: true,\n },\n projectReferences: tsconfig.config.references,\n };\n const { fileNames, options, projectReferences } = config;\n const host = ts.createCompilerHostWorker(options, /*setParentNodes*/ undefined, ts.sys);\n const programOptions = {\n rootNames: fileNames,\n options,\n projectReferences,\n host,\n configFileParsingDiagnostics: ts.getConfigFileParsingDiagnostics({ fileNames, options }),\n };\n const program = ts.createProgram(programOptions);\n const res = program.emit();\n\n // Step 3: Post-process emitted files (async)\n const postQueue = new Queue();\n\n if (res.emittedFiles) {\n res.emittedFiles.forEach((file) => {\n if (compilerOptions.options.rewriteRelativeImportExtensions) {\n if (stringEndsWith(file, '.d.ts') || stringEndsWith(file, '.d.cts') || stringEndsWith(file, '.d.mts')) {\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) {\n fs.writeFile(file, updated, 'utf8', () => cb());\n } else {\n cb();\n }\n });\n });\n }\n }\n });\n }\n\n postQueue.await(() => callback(null, res.emittedFiles));\n }\n );\n}\n"],"names":["transformTypesWorker","os","concurrency","Math","min","max","cpus","length","_require","require","Module","createRequire","src","dest","options","callback","tsconfig","matcher","createMatcher","ts","entries","iterator","Iterator","forEach","entry","stats","isFile","basename","typeFileRegEx","test","fullPath","push","err","compilerOptions","convertCompilerOptionsFromJson","config","fileNames","map","outDir","noEmit","allowJs","declaration","emitDeclarationOnly","listEmittedFiles","projectReferences","references","host","createCompilerHostWorker","undefined","sys","programOptions","rootNames","configFileParsingDiagnostics","getConfigFileParsingDiagnostics","program","createProgram","res","emit","postQueue","Queue","emittedFiles","file","rewriteRelativeImportExtensions","stringEndsWith","defer","cb","fs","readFile","readErr","content","updated","rewriteExtensions","writeFile","await"],"mappings":";;;;+BAiBA;;;eAAwBA;;;yDAjBT;iEACsB;6DAClB;yDACJ;8DACG;wBAMa;2BACD;sEACJ;mCACQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAPYC;AAA9C,IAAMC,cAAcC,KAAKC,GAAG,CAAC,IAAID,KAAKE,GAAG,CAAC,GAAG,UAACJ,WAAAA,WAAE,CAACK,IAAI,gBAAPL,+BAAAA,SAAWM,MAAM,uCAAI,KAAK;AAExE,IAAMC,WAAW,OAAOC,YAAY,cAAcC,eAAM,CAACC,aAAa,CAAC,uDAAmBF;AAS3E,SAAST,qBAAqBY,GAAW,EAAEC,IAAY,EAAEC,OAAsB,EAAEC,QAAgC;IAC9H,IAAMC,WAAWF,QAAQE,QAAQ;IACjC,IAAMC,UAAUC,IAAAA,wBAAa,EAACF;IAC9B,IAAMG,KAAKX,SAAS;IAEpB,IAAMY,UAAU,EAAE;IAClB,IAAMC,WAAW,IAAIC,mBAAQ,CAACV;IAC9BS,SAASE,OAAO,CACd,SAACC;QACC,IAAI,CAACA,MAAMC,KAAK,CAACC,MAAM,IAAI;QAC3B,IAAIF,MAAMG,QAAQ,CAAC,EAAE,KAAK,KAAK;QAC/B,IAAIC,0BAAa,CAACC,IAAI,CAACL,MAAMG,QAAQ,GAAG;QACxC,IAAI,CAACV,QAAQO,MAAMM,QAAQ,GAAG;QAC9BV,QAAQW,IAAI,CAACP;IACf,GACA;QAAEtB,aAAAA;IAAY,GACd,SAAC8B;QACC,IAAIA,KAAK,OAAOjB,SAASiB;QAEzB,4DAA4D;QAC5D,IAAMC,kBAAkBd,GAAGe,8BAA8B,CAAClB,SAASmB,MAAM,CAACF,eAAe,EAAE;QAC3F,IAAME,SAAS;YACbC,WAAWhB,QAAQiB,GAAG,CAAC,SAACb;uBAAUA,MAAMM,QAAQ;;YAChDhB,SAAS,wCACJmB,gBAAgBnB,OAAO;gBAC1BwB,QAAQzB;gBACR0B,QAAQ;gBACRC,SAAS;gBACTC,aAAa;gBACbC,qBAAqB;gBACrBC,kBAAkB;;YAEpBC,mBAAmB5B,SAASmB,MAAM,CAACU,UAAU;QAC/C;QACA,IAAQT,YAA0CD,OAA1CC,WAAWtB,YAA+BqB,OAA/BrB,SAAS8B,oBAAsBT,OAAtBS;QAC5B,IAAME,OAAO3B,GAAG4B,wBAAwB,CAACjC,WAAS,gBAAgB,GAAGkC,WAAW7B,GAAG8B,GAAG;QACtF,IAAMC,iBAAiB;YACrBC,WAAWf;YACXtB,SAAAA;YACA8B,mBAAAA;YACAE,MAAAA;YACAM,8BAA8BjC,GAAGkC,+BAA+B,CAAC;gBAAEjB,WAAAA;gBAAWtB,SAAAA;YAAQ;QACxF;QACA,IAAMwC,UAAUnC,GAAGoC,aAAa,CAACL;QACjC,IAAMM,MAAMF,QAAQG,IAAI;QAExB,6CAA6C;QAC7C,IAAMC,YAAY,IAAIC,gBAAK;QAE3B,IAAIH,IAAII,YAAY,EAAE;YACpBJ,IAAII,YAAY,CAACrC,OAAO,CAAC,SAACsC;gBACxB,IAAI5B,gBAAgBnB,OAAO,CAACgD,+BAA+B,EAAE;oBAC3D,IAAIC,IAAAA,wBAAc,EAACF,MAAM,YAAYE,IAAAA,wBAAc,EAACF,MAAM,aAAaE,IAAAA,wBAAc,EAACF,MAAM,WAAW;wBACrGH,UAAUM,KAAK,CAAC,SAACC;4BACfC,WAAE,CAACC,QAAQ,CAACN,MAAM,QAAQ,SAACO,SAASC;gCAClC,IAAID,SAAS,OAAOH;gCACpB,IAAMK,UAAUC,IAAAA,sCAAiB,EAACF;gCAClC,IAAIC,YAAYD,SAAS;oCACvBH,WAAE,CAACM,SAAS,CAACX,MAAMS,SAAS,QAAQ;+CAAML;;gCAC5C,OAAO;oCACLA;gCACF;4BACF;wBACF;oBACF;gBACF;YACF;QACF;QAEAP,UAAUe,KAAK,CAAC;mBAAM1D,SAAS,MAAMyC,IAAII,YAAY;;IACvD;AAEJ"}
|
|
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');\nlet tsgoPath: string | null = null;\ntry {\n tsgoPath = resolveBin('@typescript/native-preview', 'tsgo');\n} catch {\n tsgoPath = null;\n}\n\nimport { typeFileRegEx } from '../constants.ts';\nimport createMatcher from '../createMatcher.ts';\nimport { rewriteExtensions } from '../lib/rewriteExtensions.ts';\n\nimport type { ConfigOptions, 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\nfunction runTsgoThenTsc(args: string[], cb: SpawnCallback): void {\n if (tsgoPath) {\n runCompiler(tsgoPath, args, (err, res) => {\n // Prefer status code over \"err\" for deciding success/fallback\n if (!err && res.status === 0) return cb(null, res);\n runCompiler(tscPath, args, cb);\n });\n } else {\n runCompiler(tscPath, args, cb);\n }\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: ConfigOptions, 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 if (!entry.stats.isFile()) return;\n if (entry.basename[0] === '.') return;\n if (typeFileRegEx.test(entry.basename)) return;\n if (!isAllowedRootFile(entry.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 = {\n ...tsconfig.config.compilerOptions,\n outDir: dest,\n noEmit: false,\n allowJs: true,\n declaration: true,\n emitDeclarationOnly: true,\n };\n\n const rewrite = tsconfig.config.compilerOptions?.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 runTsgoThenTsc(args, (runErr, res) => {\n if (runErr || res.status !== 0) {\n const msg = `TypeScript compiler failed (status=${res?.status}).\\n${`stderr:\\n${String(res?.stderr ?? '')}`.slice(0, 20_000)}`;\n safeRm(tempDir, { recursive: true, force: true }, () => callback(runErr ?? new Error(msg)));\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 updated === content ? cb() : fs.writeFile(file, updated, 'utf8', cb);\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","tsgoPath","isAllowedRootFile","basename","endsWith","runCompiler","cmdPath","args","cb","spawn","process","execPath","encoding","runTsgoThenTsc","err","res","status","parseEmittedFiles","dest","out","seen","Set","lines","stdout","stderr","split","line","trim","test","replace","path","isAbsolute","rel","relative","startsWith","has","add","push","src","options","callback","tsconfig","matcher","createMatcher","rootFiles","iterator","Iterator","forEach","entry","stats","isFile","typeFileRegEx","fullPath","compilerOptions","config","outDir","noEmit","allowJs","declaration","emitDeclarationOnly","rewrite","rewriteRelativeImportExtensions","tempDir","join","String","pid","Date","now","tempConfigPath","tempConfig","files","include","exclude","references","fs","mkdir","recursive","mkdirErr","writeFile","JSON","stringify","writeErr","safeRm","force","runErr","msg","slice","Error","emittedFiles","postQueue","Queue","file","defer","readFile","readErr","content","updated","rewriteExtensions","await","rmErr"],"mappings":"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"}
|
|
@@ -1,82 +1,162 @@
|
|
|
1
1
|
var _ref;
|
|
2
2
|
var _os_cpus;
|
|
3
|
+
import spawn from 'cross-spawn-cb';
|
|
3
4
|
import fs from 'fs';
|
|
4
5
|
import Iterator from 'fs-iterator';
|
|
5
|
-
import
|
|
6
|
+
import { safeRm } from 'fs-remove-compat';
|
|
6
7
|
import os from 'os';
|
|
8
|
+
import path from 'path';
|
|
7
9
|
import Queue from 'queue-cb';
|
|
10
|
+
import resolveBin from 'resolve-bin-sync';
|
|
8
11
|
const concurrency = Math.min(64, Math.max(8, ((_ref = (_os_cpus = os.cpus()) === null || _os_cpus === void 0 ? void 0 : _os_cpus.length) !== null && _ref !== void 0 ? _ref : 4) * 8));
|
|
9
|
-
const
|
|
10
|
-
|
|
12
|
+
const tscPath = resolveBin('typescript', 'tsc');
|
|
13
|
+
let tsgoPath = null;
|
|
14
|
+
try {
|
|
15
|
+
tsgoPath = resolveBin('@typescript/native-preview', 'tsgo');
|
|
16
|
+
} catch {
|
|
17
|
+
tsgoPath = null;
|
|
18
|
+
}
|
|
11
19
|
import { typeFileRegEx } from '../constants.js';
|
|
12
20
|
import createMatcher from '../createMatcher.js';
|
|
13
21
|
import { rewriteExtensions } from '../lib/rewriteExtensions.js';
|
|
22
|
+
/* ---------------- root file filtering ---------------- */ function isAllowedRootFile(basename) {
|
|
23
|
+
return basename.endsWith('.d.ts') || basename.endsWith('.d.mts') || basename.endsWith('.d.cts') || basename.endsWith('.ts') || basename.endsWith('.tsx') || basename.endsWith('.mts') || basename.endsWith('.cts') || basename.endsWith('.js') || basename.endsWith('.jsx') || basename.endsWith('.mjs') || basename.endsWith('.cjs');
|
|
24
|
+
}
|
|
25
|
+
/* ---------------- compiler execution ---------------- */ function runCompiler(cmdPath, args, cb) {
|
|
26
|
+
spawn(process.execPath, [
|
|
27
|
+
cmdPath,
|
|
28
|
+
...args
|
|
29
|
+
], {
|
|
30
|
+
encoding: 'utf8'
|
|
31
|
+
}, cb);
|
|
32
|
+
}
|
|
33
|
+
function runTsgoThenTsc(args, cb) {
|
|
34
|
+
if (tsgoPath) {
|
|
35
|
+
runCompiler(tsgoPath, args, (err, res)=>{
|
|
36
|
+
// Prefer status code over "err" for deciding success/fallback
|
|
37
|
+
if (!err && res.status === 0) return cb(null, res);
|
|
38
|
+
runCompiler(tscPath, args, cb);
|
|
39
|
+
});
|
|
40
|
+
} else {
|
|
41
|
+
runCompiler(tscPath, args, cb);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/* ---------------- emitted file parsing ---------------- */ function parseEmittedFiles(res, dest) {
|
|
45
|
+
const out = [];
|
|
46
|
+
const seen = new Set();
|
|
47
|
+
const lines = `${res.stdout}\n${res.stderr}`.split(/\r?\n/);
|
|
48
|
+
for (let line of lines){
|
|
49
|
+
line = line.trim();
|
|
50
|
+
if (!line) continue;
|
|
51
|
+
if (/^TSFILE:\s+/i.test(line)) line = line.replace(/^TSFILE:\s+/i, '').trim();
|
|
52
|
+
if (!path.isAbsolute(line)) continue;
|
|
53
|
+
if (!(line.endsWith('.d.ts') || line.endsWith('.d.mts') || line.endsWith('.d.cts'))) continue;
|
|
54
|
+
// Optional safety: only accept outputs under dest
|
|
55
|
+
const rel = path.relative(dest, line);
|
|
56
|
+
if (rel.startsWith('..') || path.isAbsolute(rel)) continue;
|
|
57
|
+
if (!seen.has(line)) {
|
|
58
|
+
seen.add(line);
|
|
59
|
+
out.push(line);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return out;
|
|
63
|
+
}
|
|
14
64
|
export default function transformTypesWorker(src, dest, options, callback) {
|
|
15
65
|
const tsconfig = options.tsconfig;
|
|
16
66
|
const matcher = createMatcher(tsconfig);
|
|
17
|
-
const
|
|
18
|
-
const entries = [];
|
|
67
|
+
const rootFiles = [];
|
|
19
68
|
const iterator = new Iterator(src);
|
|
20
69
|
iterator.forEach((entry)=>{
|
|
21
70
|
if (!entry.stats.isFile()) return;
|
|
22
71
|
if (entry.basename[0] === '.') return;
|
|
23
72
|
if (typeFileRegEx.test(entry.basename)) return;
|
|
73
|
+
if (!isAllowedRootFile(entry.basename)) return;
|
|
24
74
|
if (!matcher(entry.fullPath)) return;
|
|
25
|
-
|
|
75
|
+
rootFiles.push(entry.fullPath);
|
|
26
76
|
}, {
|
|
27
77
|
concurrency
|
|
28
78
|
}, (err)=>{
|
|
79
|
+
var _tsconfig_config_compilerOptions;
|
|
29
80
|
if (err) return callback(err);
|
|
30
|
-
|
|
31
|
-
const compilerOptions =
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
allowJs: true,
|
|
39
|
-
declaration: true,
|
|
40
|
-
emitDeclarationOnly: true,
|
|
41
|
-
listEmittedFiles: true
|
|
42
|
-
},
|
|
43
|
-
projectReferences: tsconfig.config.references
|
|
81
|
+
if (rootFiles.length === 0) return callback(null, []);
|
|
82
|
+
const compilerOptions = {
|
|
83
|
+
...tsconfig.config.compilerOptions,
|
|
84
|
+
outDir: dest,
|
|
85
|
+
noEmit: false,
|
|
86
|
+
allowJs: true,
|
|
87
|
+
declaration: true,
|
|
88
|
+
emitDeclarationOnly: true
|
|
44
89
|
};
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
90
|
+
const rewrite = ((_tsconfig_config_compilerOptions = tsconfig.config.compilerOptions) === null || _tsconfig_config_compilerOptions === void 0 ? void 0 : _tsconfig_config_compilerOptions.rewriteRelativeImportExtensions) === true;
|
|
91
|
+
// Avoid collisions across concurrent runs.
|
|
92
|
+
const tempDir = path.join(dest, '.ts-swc-transform-temp', String(process.pid), String(Date.now()));
|
|
93
|
+
const tempConfigPath = path.join(tempDir, 'tsconfig.json');
|
|
94
|
+
const tempConfig = {
|
|
95
|
+
compilerOptions,
|
|
96
|
+
files: rootFiles,
|
|
97
|
+
include: [],
|
|
98
|
+
exclude: [],
|
|
99
|
+
...tsconfig.config.references && {
|
|
100
|
+
references: tsconfig.config.references
|
|
101
|
+
}
|
|
56
102
|
};
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
103
|
+
fs.mkdir(tempDir, {
|
|
104
|
+
recursive: true
|
|
105
|
+
}, (mkdirErr)=>{
|
|
106
|
+
if (mkdirErr) return callback(mkdirErr);
|
|
107
|
+
fs.writeFile(tempConfigPath, JSON.stringify(tempConfig, null, 2), 'utf8', (writeErr)=>{
|
|
108
|
+
if (writeErr) {
|
|
109
|
+
safeRm(tempDir, {
|
|
110
|
+
recursive: true,
|
|
111
|
+
force: true
|
|
112
|
+
}, ()=>callback(writeErr));
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const args = [
|
|
116
|
+
'--project',
|
|
117
|
+
tempConfigPath,
|
|
118
|
+
'--listEmittedFiles',
|
|
119
|
+
'--pretty',
|
|
120
|
+
'false'
|
|
121
|
+
];
|
|
122
|
+
runTsgoThenTsc(args, (runErr, res)=>{
|
|
123
|
+
if (runErr || res.status !== 0) {
|
|
124
|
+
var _ref;
|
|
125
|
+
const msg = `TypeScript compiler failed (status=${res === null || res === void 0 ? void 0 : res.status}).\n${`stderr:\n${String((_ref = res === null || res === void 0 ? void 0 : res.stderr) !== null && _ref !== void 0 ? _ref : '')}`.slice(0, 20000)}`;
|
|
126
|
+
safeRm(tempDir, {
|
|
127
|
+
recursive: true,
|
|
128
|
+
force: true
|
|
129
|
+
}, ()=>callback(runErr !== null && runErr !== void 0 ? runErr : new Error(msg)));
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
const emittedFiles = parseEmittedFiles(res, dest);
|
|
133
|
+
if (emittedFiles.length === 0) {
|
|
134
|
+
safeRm(tempDir, {
|
|
135
|
+
recursive: true,
|
|
136
|
+
force: true
|
|
137
|
+
}, ()=>callback(new Error('TypeScript compiler produced no emitted declaration files')));
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
const postQueue = new Queue();
|
|
141
|
+
if (rewrite) {
|
|
142
|
+
for (const file of emittedFiles){
|
|
143
|
+
postQueue.defer((cb)=>{
|
|
144
|
+
fs.readFile(file, 'utf8', (readErr, content)=>{
|
|
145
|
+
if (readErr) return cb();
|
|
146
|
+
const updated = rewriteExtensions(content);
|
|
147
|
+
updated === content ? cb() : fs.writeFile(file, updated, 'utf8', cb);
|
|
148
|
+
});
|
|
74
149
|
});
|
|
75
|
-
}
|
|
150
|
+
}
|
|
76
151
|
}
|
|
77
|
-
|
|
152
|
+
postQueue.await(()=>{
|
|
153
|
+
safeRm(tempDir, {
|
|
154
|
+
recursive: true,
|
|
155
|
+
force: true
|
|
156
|
+
}, (rmErr)=>callback(rmErr || null, emittedFiles));
|
|
157
|
+
});
|
|
158
|
+
});
|
|
78
159
|
});
|
|
79
|
-
}
|
|
80
|
-
postQueue.await(()=>callback(null, res.emittedFiles));
|
|
160
|
+
});
|
|
81
161
|
});
|
|
82
162
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/workers/transformTypes.ts"],"sourcesContent":["import fs from 'fs';\nimport Iterator, { type Entry } from 'fs-iterator';\nimport Module from 'module';\nimport os from 'os';\nimport Queue from 'queue-cb';\n\nconst concurrency = Math.min(64, Math.max(8, (os.cpus()?.length ?? 4) * 8));\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\nimport { stringEndsWith } from '../compat.ts';\nimport { typeFileRegEx } from '../constants.ts';\nimport createMatcher from '../createMatcher.ts';\nimport { rewriteExtensions } from '../lib/rewriteExtensions.ts';\n\nimport type { ConfigOptions, TransformTypesCallback } from '../types.ts';\n\nexport default function transformTypesWorker(src: string, dest: string, options: ConfigOptions, callback: TransformTypesCallback) {\n const tsconfig = options.tsconfig;\n const matcher = createMatcher(tsconfig);\n const ts = _require('typescript');\n\n const entries = [];\n const iterator = new Iterator(src);\n iterator.forEach(\n (entry: Entry): void => {\n if (!entry.stats.isFile()) return;\n if (entry.basename[0] === '.') return;\n if (typeFileRegEx.test(entry.basename)) return;\n if (!matcher(entry.fullPath)) return;\n entries.push(entry);\n },\n { concurrency },\n (err) => {\n if (err) return callback(err);\n\n // Step 2: TypeScript emit (inherently sync - cannot change)\n const compilerOptions = ts.convertCompilerOptionsFromJson(tsconfig.config.compilerOptions, '');\n const config = {\n fileNames: entries.map((entry) => entry.fullPath),\n options: {\n ...compilerOptions.options,\n outDir: dest,\n noEmit: false,\n allowJs: true,\n declaration: true,\n emitDeclarationOnly: true,\n listEmittedFiles: true,\n },\n projectReferences: tsconfig.config.references,\n };\n const { fileNames, options, projectReferences } = config;\n const host = ts.createCompilerHostWorker(options, /*setParentNodes*/ undefined, ts.sys);\n const programOptions = {\n rootNames: fileNames,\n options,\n projectReferences,\n host,\n configFileParsingDiagnostics: ts.getConfigFileParsingDiagnostics({ fileNames, options }),\n };\n const program = ts.createProgram(programOptions);\n const res = program.emit();\n\n // Step 3: Post-process emitted files (async)\n const postQueue = new Queue();\n\n if (res.emittedFiles) {\n res.emittedFiles.forEach((file) => {\n if (compilerOptions.options.rewriteRelativeImportExtensions) {\n if (stringEndsWith(file, '.d.ts') || stringEndsWith(file, '.d.cts') || stringEndsWith(file, '.d.mts')) {\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) {\n fs.writeFile(file, updated, 'utf8', () => cb());\n } else {\n cb();\n }\n });\n });\n }\n }\n });\n }\n\n postQueue.await(() => callback(null, res.emittedFiles));\n }\n );\n}\n"],"names":["os","fs","Iterator","Module","Queue","concurrency","Math","min","max","cpus","length","_require","require","createRequire","url","stringEndsWith","typeFileRegEx","createMatcher","rewriteExtensions","transformTypesWorker","src","dest","options","callback","tsconfig","matcher","ts","entries","iterator","forEach","entry","stats","isFile","basename","test","fullPath","push","err","compilerOptions","convertCompilerOptionsFromJson","config","fileNames","map","outDir","noEmit","allowJs","declaration","emitDeclarationOnly","listEmittedFiles","projectReferences","references","host","createCompilerHostWorker","undefined","sys","programOptions","rootNames","configFileParsingDiagnostics","getConfigFileParsingDiagnostics","program","createProgram","res","emit","postQueue","emittedFiles","file","rewriteRelativeImportExtensions","defer","cb","readFile","readErr","content","updated","writeFile","await"],"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');\nlet tsgoPath: string | null = null;\ntry {\n tsgoPath = resolveBin('@typescript/native-preview', 'tsgo');\n} catch {\n tsgoPath = null;\n}\n\nimport { typeFileRegEx } from '../constants.ts';\nimport createMatcher from '../createMatcher.ts';\nimport { rewriteExtensions } from '../lib/rewriteExtensions.ts';\n\nimport type { ConfigOptions, 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\nfunction runTsgoThenTsc(args: string[], cb: SpawnCallback): void {\n if (tsgoPath) {\n runCompiler(tsgoPath, args, (err, res) => {\n // Prefer status code over \"err\" for deciding success/fallback\n if (!err && res.status === 0) return cb(null, res);\n runCompiler(tscPath, args, cb);\n });\n } else {\n runCompiler(tscPath, args, cb);\n }\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: ConfigOptions, 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 if (!entry.stats.isFile()) return;\n if (entry.basename[0] === '.') return;\n if (typeFileRegEx.test(entry.basename)) return;\n if (!isAllowedRootFile(entry.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 = {\n ...tsconfig.config.compilerOptions,\n outDir: dest,\n noEmit: false,\n allowJs: true,\n declaration: true,\n emitDeclarationOnly: true,\n };\n\n const rewrite = tsconfig.config.compilerOptions?.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 runTsgoThenTsc(args, (runErr, res) => {\n if (runErr || res.status !== 0) {\n const msg = `TypeScript compiler failed (status=${res?.status}).\\n${`stderr:\\n${String(res?.stderr ?? '')}`.slice(0, 20_000)}`;\n safeRm(tempDir, { recursive: true, force: true }, () => callback(runErr ?? new Error(msg)));\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 updated === content ? cb() : fs.writeFile(file, updated, 'utf8', cb);\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","tsgoPath","typeFileRegEx","createMatcher","rewriteExtensions","isAllowedRootFile","basename","endsWith","runCompiler","cmdPath","args","cb","process","execPath","encoding","runTsgoThenTsc","err","res","status","parseEmittedFiles","dest","out","seen","Set","lines","stdout","stderr","split","line","trim","test","replace","isAbsolute","rel","relative","startsWith","has","add","push","transformTypesWorker","src","options","callback","tsconfig","matcher","rootFiles","iterator","forEach","entry","stats","isFile","fullPath","compilerOptions","config","outDir","noEmit","allowJs","declaration","emitDeclarationOnly","rewrite","rewriteRelativeImportExtensions","tempDir","join","String","pid","Date","now","tempConfigPath","tempConfig","files","include","exclude","references","mkdir","recursive","mkdirErr","writeFile","JSON","stringify","writeErr","force","runErr","msg","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.
|
|
3
|
+
"version": "2.11.4",
|
|
4
4
|
"description": "Typescript transformers for swc. Supports Node >= 0.8",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"matcher",
|
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@swc/core": "^1.15.5",
|
|
48
|
+
"@typescript/native-preview": "^7.0.0-dev.20260108.1",
|
|
48
49
|
"core-js-pure": "^3.20.0",
|
|
49
50
|
"exit-compat": "^1.0.0",
|
|
50
51
|
"fs-iterator": "^7.0.0",
|
|
@@ -57,6 +58,7 @@
|
|
|
57
58
|
"queue-cb": "^1.0.0",
|
|
58
59
|
"read-tsconfig-sync": "^1.1.0",
|
|
59
60
|
"resolve": "^1.3.1",
|
|
61
|
+
"resolve-bin-sync": "^1.0.13",
|
|
60
62
|
"resolve.exports": "^2.0.3",
|
|
61
63
|
"test-match": "^1.0.0",
|
|
62
64
|
"ts-node": "^10.9.0",
|