ts-swc-transform 1.9.3 → 1.9.5
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.
|
@@ -2,110 +2,48 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
Object.defineProperty(exports, "default" // import
|
|
6
|
-
// import
|
|
5
|
+
Object.defineProperty(exports, "default" // import path from 'path';
|
|
6
|
+
// import spawn from 'cross-spawn-cb';
|
|
7
7
|
// import Iterator from 'fs-iterator';
|
|
8
8
|
// import * as getTS from 'get-tsconfig-compat';
|
|
9
|
-
// import mkdirp from 'mkdirp-classic';
|
|
10
|
-
// import Queue from 'queue-cb';
|
|
11
9
|
// import rimraf2 from 'rimraf2';
|
|
12
|
-
// import { type SourceFile, WriteFileCallbackData } from 'typescript';
|
|
13
|
-
// // @ts-ignore
|
|
14
|
-
// import lazy from '../lib/lazy.cjs';
|
|
15
|
-
// const lazyTS = lazy('typescript');
|
|
16
10
|
// import { SKIPS, typeFileRegEx } from '../constants.js';
|
|
17
11
|
// import createMatcher from '../createMatcher.js';
|
|
18
12
|
// export default function transformTypesWorker(src, dest, options, callback) {
|
|
19
13
|
// const tsconfig = options.tsconfig ? options.tsconfig : getTS.getTsconfig(src);
|
|
20
14
|
// const matcher = createMatcher(tsconfig);
|
|
15
|
+
// const tsArgs = [];
|
|
16
|
+
// for (const key in tsconfig.config.compilerOptions) {
|
|
17
|
+
// const value = tsconfig.config.compilerOptions[key];
|
|
18
|
+
// tsArgs.push(`--${key}`);
|
|
19
|
+
// tsArgs.push(Array.isArray(value) ? value.join(',') : value);
|
|
20
|
+
// }
|
|
21
21
|
// rimraf2(dest, { disableGlob: true }, () => {
|
|
22
22
|
// const entries = [];
|
|
23
|
-
// const copies = [];
|
|
24
23
|
// const iterator = new Iterator(src);
|
|
25
24
|
// iterator.forEach(
|
|
26
25
|
// (entry) => {
|
|
27
26
|
// if (!entry.stats.isFile()) return;
|
|
28
27
|
// if (!matcher(entry.fullPath)) return;
|
|
29
|
-
// if (typeFileRegEx.test(entry.basename)) return
|
|
28
|
+
// if (typeFileRegEx.test(entry.basename)) return;
|
|
30
29
|
// if (SKIPS.indexOf(entry.basename) >= 0) return;
|
|
31
30
|
// entries.push(entry);
|
|
32
31
|
// },
|
|
33
32
|
// (err) => {
|
|
34
33
|
// if (err) return callback(err);
|
|
35
34
|
// if (entries.length === 0) return callback();
|
|
36
|
-
// const
|
|
37
|
-
//
|
|
38
|
-
//
|
|
39
|
-
//
|
|
40
|
-
//
|
|
41
|
-
//
|
|
42
|
-
//
|
|
43
|
-
//
|
|
44
|
-
//
|
|
45
|
-
//
|
|
46
|
-
//
|
|
47
|
-
//
|
|
48
|
-
// // fs.writeFileSync(destPath, contents, 'utf8');
|
|
49
|
-
// generated[sourceFiles[0].fileName] = { filePath, contents };
|
|
50
|
-
// };
|
|
51
|
-
// // Prepare and emit the d.ts files
|
|
52
|
-
// const program = ts.createProgram(
|
|
53
|
-
// entries.map((entry) => entry.fullPath),
|
|
54
|
-
// options,
|
|
55
|
-
// host
|
|
56
|
-
// );
|
|
57
|
-
// program.emit();
|
|
58
|
-
// const results = entries
|
|
59
|
-
// .filter((entry) => generated[entry.fullPath] !== undefined)
|
|
60
|
-
// .map((entry) => {
|
|
61
|
-
// return { from: entry.path, to: path.relative(src, generated[entry.fullPath].filePath) };
|
|
62
|
-
// });
|
|
63
|
-
// copies.forEach((entry) => results.push({ from: entry.path, to: entry.path }));
|
|
64
|
-
// callback(null, results)
|
|
65
|
-
// // function createFolders(cb) {
|
|
66
|
-
// // // return cb();
|
|
67
|
-
// // const queue = new Queue();
|
|
68
|
-
// // entries.concat(copies)
|
|
69
|
-
// // .map((x) => path.resolve(dest, path.dirname(x.path)))
|
|
70
|
-
// // .sort((a, b) => b.localeCompare(a))
|
|
71
|
-
// // .reduce((m, x) => (m.some((y) => y.startsWith(x)) ? m : m.concat(x)), [])
|
|
72
|
-
// // .forEach((x) => {
|
|
73
|
-
// // queue.defer(mkdirp.bind(null, x));
|
|
74
|
-
// // });
|
|
75
|
-
// // queue.await(cb);
|
|
76
|
-
// // }
|
|
77
|
-
// // function writeGenerated(cb) {
|
|
78
|
-
// // const queue = new Queue();
|
|
79
|
-
// // entries
|
|
80
|
-
// // .filter((entry) => generated[entry.fullPath] !== undefined)
|
|
81
|
-
// // .forEach((entry) => {
|
|
82
|
-
// // const record = generated[entry.fullPath];
|
|
83
|
-
// // const destPath = path.resolve(dest, path.relative(src, record.filePath));
|
|
84
|
-
// // queue.defer(fs.writeFile.bind(null, destPath, record.contents, 'utf8'));
|
|
85
|
-
// // });
|
|
86
|
-
// // queue.await(cb);
|
|
87
|
-
// // }
|
|
88
|
-
// // function copyTypes(cb) {
|
|
89
|
-
// // const queue = new Queue();
|
|
90
|
-
// // copies.forEach((entry) => {
|
|
91
|
-
// // const destPath = path.resolve(dest, entry.path);
|
|
92
|
-
// // queue.defer((cb) => {
|
|
93
|
-
// // fs.readFile(entry.fullPath, (err, contents) => {
|
|
94
|
-
// // err ? callback(err) : fs.writeFile(destPath, contents, cb);
|
|
95
|
-
// // });
|
|
96
|
-
// // });
|
|
97
|
-
// // });
|
|
98
|
-
// // queue.await(cb);
|
|
99
|
-
// // }
|
|
100
|
-
// // createFolders((err) => {
|
|
101
|
-
// // if (err) return callback(err);
|
|
102
|
-
// // const queue = new Queue();
|
|
103
|
-
// // queue.defer(writeGenerated.bind(null));
|
|
104
|
-
// // queue.defer(copyTypes.bind(null));
|
|
105
|
-
// // queue.await((err) => {
|
|
106
|
-
// // err ? callback(err) : callback(null, results);
|
|
107
|
-
// // });
|
|
108
|
-
// // });
|
|
35
|
+
// const results = entries.map((entry) => {
|
|
36
|
+
// const result = { from: path.relative(src, entry.fullPath), to: '' };
|
|
37
|
+
// const dirname = path.dirname(result.from);
|
|
38
|
+
// const basename = path.basename(result.from);
|
|
39
|
+
// let ext = path.extname(basename);
|
|
40
|
+
// ext = ext.replace('sx', 's');
|
|
41
|
+
// ext = ext.replace('js', 'ts');
|
|
42
|
+
// result.to = path.join(dirname === '.' ? '' : dirname, `${basename.replace(/\.[^/.]+$/, '')}.d${ext}`);
|
|
43
|
+
// return result;
|
|
44
|
+
// });
|
|
45
|
+
// const args = ['tsc', ...results.map((x) => path.resolve(src, x.from)), '--declaration', '--emitDeclarationOnly', '--outDir', dest, ...tsArgs];
|
|
46
|
+
// spawn(args[0], args.slice(1), { stdio: 'inherit' }, (err) => (err ? callback(err) : callback(null, results)));
|
|
109
47
|
// }
|
|
110
48
|
// );
|
|
111
49
|
// });
|
|
@@ -116,20 +54,29 @@ Object.defineProperty(exports, "default" // import fs from 'fs';
|
|
|
116
54
|
return transformTypesWorker;
|
|
117
55
|
}
|
|
118
56
|
});
|
|
57
|
+
var _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
|
119
58
|
var _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
120
|
-
var _crossspawncb = /*#__PURE__*/ _interop_require_default(require("cross-spawn-cb"));
|
|
121
59
|
var _fsiterator = /*#__PURE__*/ _interop_require_default(require("fs-iterator"));
|
|
122
60
|
var _gettsconfigcompat = /*#__PURE__*/ _interop_require_wildcard(require("get-tsconfig-compat"));
|
|
61
|
+
var _mkdirpclassic = /*#__PURE__*/ _interop_require_default(require("mkdirp-classic"));
|
|
62
|
+
var _queuecb = /*#__PURE__*/ _interop_require_default(require("queue-cb"));
|
|
63
|
+
var _resolveoncemapcb = /*#__PURE__*/ _interop_require_default(require("resolve-once-map-cb"));
|
|
123
64
|
var _rimraf2 = /*#__PURE__*/ _interop_require_default(require("rimraf2"));
|
|
65
|
+
var _lazycjs = /*#__PURE__*/ _interop_require_default(require("../lib/lazy.js"));
|
|
124
66
|
var _constants = require("../constants.js");
|
|
125
67
|
var _createMatcher = /*#__PURE__*/ _interop_require_default(require("../createMatcher.js"));
|
|
126
|
-
function
|
|
127
|
-
if (
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
68
|
+
function _define_property(obj, key, value) {
|
|
69
|
+
if (key in obj) {
|
|
70
|
+
Object.defineProperty(obj, key, {
|
|
71
|
+
value: value,
|
|
72
|
+
enumerable: true,
|
|
73
|
+
configurable: true,
|
|
74
|
+
writable: true
|
|
75
|
+
});
|
|
76
|
+
} else {
|
|
77
|
+
obj[key] = value;
|
|
78
|
+
}
|
|
79
|
+
return obj;
|
|
133
80
|
}
|
|
134
81
|
function _interop_require_default(obj) {
|
|
135
82
|
return obj && obj.__esModule ? obj : {
|
|
@@ -177,32 +124,50 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
177
124
|
}
|
|
178
125
|
return newObj;
|
|
179
126
|
}
|
|
180
|
-
function
|
|
181
|
-
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
|
|
127
|
+
function _object_spread(target) {
|
|
128
|
+
for(var i = 1; i < arguments.length; i++){
|
|
129
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
130
|
+
var ownKeys = Object.keys(source);
|
|
131
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
132
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
133
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
134
|
+
}));
|
|
135
|
+
}
|
|
136
|
+
ownKeys.forEach(function(key) {
|
|
137
|
+
_define_property(target, key, source[key]);
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
return target;
|
|
185
141
|
}
|
|
186
|
-
function
|
|
187
|
-
|
|
142
|
+
function ownKeys(object, enumerableOnly) {
|
|
143
|
+
var keys = Object.keys(object);
|
|
144
|
+
if (Object.getOwnPropertySymbols) {
|
|
145
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
146
|
+
if (enumerableOnly) {
|
|
147
|
+
symbols = symbols.filter(function(sym) {
|
|
148
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
keys.push.apply(keys, symbols);
|
|
152
|
+
}
|
|
153
|
+
return keys;
|
|
188
154
|
}
|
|
189
|
-
function
|
|
190
|
-
|
|
191
|
-
if (
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
155
|
+
function _object_spread_props(target, source) {
|
|
156
|
+
source = source != null ? source : {};
|
|
157
|
+
if (Object.getOwnPropertyDescriptors) {
|
|
158
|
+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
159
|
+
} else {
|
|
160
|
+
ownKeys(Object(source)).forEach(function(key) {
|
|
161
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
return target;
|
|
196
165
|
}
|
|
166
|
+
var lazyTS = (0, _lazycjs.default)('typescript');
|
|
197
167
|
function transformTypesWorker(src, dest, options, callback) {
|
|
198
168
|
var tsconfig = options.tsconfig ? options.tsconfig : _gettsconfigcompat.getTsconfig(src);
|
|
199
169
|
var matcher = (0, _createMatcher.default)(tsconfig);
|
|
200
|
-
var
|
|
201
|
-
for(var key in tsconfig.config.compilerOptions){
|
|
202
|
-
var value = tsconfig.config.compilerOptions[key];
|
|
203
|
-
tsArgs.push("--".concat(key));
|
|
204
|
-
tsArgs.push(Array.isArray(value) ? value.join(',') : value);
|
|
205
|
-
}
|
|
170
|
+
var existingTypes = [];
|
|
206
171
|
(0, _rimraf2.default)(dest, {
|
|
207
172
|
disableGlob: true
|
|
208
173
|
}, function() {
|
|
@@ -211,38 +176,63 @@ function transformTypesWorker(src, dest, options, callback) {
|
|
|
211
176
|
iterator.forEach(function(entry) {
|
|
212
177
|
if (!entry.stats.isFile()) return;
|
|
213
178
|
if (!matcher(entry.fullPath)) return;
|
|
214
|
-
if (_constants.typeFileRegEx.test(entry.basename)) return;
|
|
215
179
|
if (_constants.SKIPS.indexOf(entry.basename) >= 0) return;
|
|
180
|
+
if (_constants.typeFileRegEx.test(entry.basename)) return existingTypes.push(entry.fullPath);
|
|
216
181
|
entries.push(entry);
|
|
182
|
+
}, {
|
|
183
|
+
concurrency: Infinity
|
|
217
184
|
}, function(err) {
|
|
185
|
+
var writeFile = function writeFile(sourceFile, destFile, contents, cb) {
|
|
186
|
+
results.push({
|
|
187
|
+
from: _path.default.relative(src, sourceFile),
|
|
188
|
+
to: _path.default.relative(src, destFile)
|
|
189
|
+
});
|
|
190
|
+
var destPath = _path.default.join(dest, results[results.length - 1].to);
|
|
191
|
+
var q = new _queuecb.default(1);
|
|
192
|
+
q.defer(pathMap.bind(null, _path.default.dirname(destPath)));
|
|
193
|
+
q.defer(_fs.default.writeFile.bind(null, destPath, contents, 'utf8'));
|
|
194
|
+
q.await(cb);
|
|
195
|
+
};
|
|
196
|
+
var writeType = function writeType(filePath, cb) {
|
|
197
|
+
results.push({
|
|
198
|
+
from: _path.default.relative(src, filePath),
|
|
199
|
+
to: _path.default.relative(src, filePath)
|
|
200
|
+
});
|
|
201
|
+
var destPath = _path.default.join(dest, results[results.length - 1].to);
|
|
202
|
+
var q = new _queuecb.default(1);
|
|
203
|
+
q.defer(pathMap.bind(null, _path.default.dirname(destPath)));
|
|
204
|
+
q.defer(function(cb) {
|
|
205
|
+
return _fs.default.readFile(filePath, function(err, contents) {
|
|
206
|
+
err ? callback(err) : _fs.default.writeFile(destPath, contents, cb);
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
q.await(cb);
|
|
210
|
+
};
|
|
218
211
|
if (err) return callback(err);
|
|
219
|
-
|
|
220
|
-
var
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
212
|
+
var results = [];
|
|
213
|
+
var pathMap = (0, _resolveoncemapcb.default)(function(destPath, cb) {
|
|
214
|
+
return (0, _mkdirpclassic.default)(destPath, cb);
|
|
215
|
+
}); // mkdirs only once
|
|
216
|
+
var queue = new _queuecb.default();
|
|
217
|
+
existingTypes.map(function(filePath) {
|
|
218
|
+
return queue.defer(writeType.bind(null, filePath));
|
|
219
|
+
});
|
|
220
|
+
var ts = lazyTS();
|
|
221
|
+
var _$options = _object_spread_props(_object_spread({}, tsconfig.compilerOptions || {}), {
|
|
222
|
+
allowJs: true,
|
|
223
|
+
declaration: true,
|
|
224
|
+
emitDeclarationOnly: true
|
|
232
225
|
});
|
|
233
|
-
var
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
(0, _crossspawncb.default)(args[0], args.slice(1), {
|
|
244
|
-
stdio: 'inherit'
|
|
245
|
-
}, function(err) {
|
|
226
|
+
var host = ts.createCompilerHost(_$options);
|
|
227
|
+
host.writeFile = function(filePath, contents, _writeByteOrderMark, _onError, sourceFiles, _data) {
|
|
228
|
+
queue.defer(writeFile.bind(null, sourceFiles[0].fileName, filePath, contents));
|
|
229
|
+
};
|
|
230
|
+
// Prepare and emit the d.ts files
|
|
231
|
+
var program = ts.createProgram(entries.map(function(entry) {
|
|
232
|
+
return entry.fullPath;
|
|
233
|
+
}), _$options, host);
|
|
234
|
+
program.emit();
|
|
235
|
+
queue.await(function(err) {
|
|
246
236
|
return err ? callback(err) : callback(null, results);
|
|
247
237
|
});
|
|
248
238
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/workers/transformTypes.ts"],"sourcesContent":["import path from 'path';\nimport spawn from 'cross-spawn-cb';\nimport Iterator from 'fs-iterator';\nimport * as getTS from 'get-tsconfig-compat';\nimport rimraf2 from 'rimraf2';\n\nimport { SKIPS, typeFileRegEx } from '../constants.js';\nimport createMatcher from '../createMatcher.js';\n\nexport default function transformTypesWorker(src, dest, options, callback) {\n const tsconfig = options.tsconfig ? options.tsconfig : getTS.getTsconfig(src);\n const matcher = createMatcher(tsconfig);\n\n const tsArgs = [];\n for (const key in tsconfig.config.compilerOptions) {\n const value = tsconfig.config.compilerOptions[key];\n tsArgs.push(`--${key}`);\n tsArgs.push(Array.isArray(value) ? value.join(',') : value);\n }\n\n rimraf2(dest, { disableGlob: true }, () => {\n const entries = [];\n const iterator = new Iterator(src);\n iterator.forEach(\n (entry) => {\n if (!entry.stats.isFile()) return;\n if (!matcher(entry.fullPath)) return;\n if (typeFileRegEx.test(entry.basename)) return;\n if (SKIPS.indexOf(entry.basename) >= 0) return;\n entries.push(entry);\n },\n (err) => {\n if (err) return callback(err);\n if (entries.length === 0) return callback();\n const results = entries.map((entry) => {\n const result = { from: path.relative(src, entry.fullPath), to: '' };\n const dirname = path.dirname(result.from);\n const basename = path.basename(result.from);\n let ext = path.extname(basename);\n ext = ext.replace('sx', 's');\n ext = ext.replace('js', 'ts');\n result.to = path.join(dirname === '.' ? '' : dirname, `${basename.replace(/\\.[^/.]+$/, '')}.d${ext}`);\n return result;\n });\n const args = ['tsc', ...results.map((x) => path.resolve(src, x.from)), '--declaration', '--emitDeclarationOnly', '--outDir', dest, ...tsArgs];\n spawn(args[0], args.slice(1), { stdio: 'inherit' }, (err) => (err ? callback(err) : callback(null, results)));\n }\n );\n });\n}\n\n// import fs from 'fs';\n// import path from 'path';\n// import Iterator from 'fs-iterator';\n// import * as getTS from 'get-tsconfig-compat';\n// import mkdirp from 'mkdirp-classic';\n// import Queue from 'queue-cb';\n// import rimraf2 from 'rimraf2';\n// import { type SourceFile, WriteFileCallbackData } from 'typescript';\n\n// // @ts-ignore\n// import lazy from '../lib/lazy.cjs';\n// const lazyTS = lazy('typescript');\n\n// import { SKIPS, typeFileRegEx } from '../constants.js';\n// import createMatcher from '../createMatcher.js';\n\n// export default function transformTypesWorker(src, dest, options, callback) {\n// const tsconfig = options.tsconfig ? options.tsconfig : getTS.getTsconfig(src);\n// const matcher = createMatcher(tsconfig);\n\n// rimraf2(dest, { disableGlob: true }, () => {\n// const entries = [];\n// const copies = [];\n// const iterator = new Iterator(src);\n// iterator.forEach(\n// (entry) => {\n// if (!entry.stats.isFile()) return;\n// if (!matcher(entry.fullPath)) return;\n// if (typeFileRegEx.test(entry.basename)) return copies.push(entry);\n// if (SKIPS.indexOf(entry.basename) >= 0) return;\n// entries.push(entry);\n// },\n// (err) => {\n// if (err) return callback(err);\n// if (entries.length === 0) return callback();\n\n// const ts = lazyTS();\n// const options = {\n// ...(tsconfig.compilerOptions || {}),\n// allowJs: true,\n// declaration: true,\n// emitDeclarationOnly: true,\n// };\n// const generated = {};\n// const host = ts.createCompilerHost(options);\n// host.writeFile = (filePath: string, contents: string, writeByteOrderMark: boolean, onError?: (message: string) => void, sourceFiles?: readonly SourceFile[], data?: WriteFileCallbackData) => {\n// // const destPath = path.resolve(dest, path.relative(src, filePath));\n// // mkdirp.sync(path.dirname(destPath))\n// // fs.writeFileSync(destPath, contents, 'utf8');\n// generated[sourceFiles[0].fileName] = { filePath, contents };\n// };\n\n// // Prepare and emit the d.ts files\n// const program = ts.createProgram(\n// entries.map((entry) => entry.fullPath),\n// options,\n// host\n// );\n// program.emit();\n\n// const results = entries\n// .filter((entry) => generated[entry.fullPath] !== undefined)\n// .map((entry) => {\n// return { from: entry.path, to: path.relative(src, generated[entry.fullPath].filePath) };\n// });\n// copies.forEach((entry) => results.push({ from: entry.path, to: entry.path }));\n\n// callback(null, results)\n\n// // function createFolders(cb) {\n// // // return cb();\n// // const queue = new Queue();\n// // entries.concat(copies)\n// // .map((x) => path.resolve(dest, path.dirname(x.path)))\n// // .sort((a, b) => b.localeCompare(a))\n// // .reduce((m, x) => (m.some((y) => y.startsWith(x)) ? m : m.concat(x)), [])\n// // .forEach((x) => {\n// // queue.defer(mkdirp.bind(null, x));\n// // });\n// // queue.await(cb);\n// // }\n// // function writeGenerated(cb) {\n// // const queue = new Queue();\n// // entries\n// // .filter((entry) => generated[entry.fullPath] !== undefined)\n// // .forEach((entry) => {\n// // const record = generated[entry.fullPath];\n// // const destPath = path.resolve(dest, path.relative(src, record.filePath));\n// // queue.defer(fs.writeFile.bind(null, destPath, record.contents, 'utf8'));\n// // });\n// // queue.await(cb);\n// // }\n\n// // function copyTypes(cb) {\n// // const queue = new Queue();\n// // copies.forEach((entry) => {\n// // const destPath = path.resolve(dest, entry.path);\n// // queue.defer((cb) => {\n// // fs.readFile(entry.fullPath, (err, contents) => {\n// // err ? callback(err) : fs.writeFile(destPath, contents, cb);\n// // });\n// // });\n// // });\n// // queue.await(cb);\n// // }\n\n// // createFolders((err) => {\n// // if (err) return callback(err);\n// // const queue = new Queue();\n// // queue.defer(writeGenerated.bind(null));\n// // queue.defer(copyTypes.bind(null));\n// // queue.await((err) => {\n// // err ? callback(err) : callback(null, results);\n// // });\n// // });\n// }\n// );\n// });\n// }\n"],"names":["transformTypesWorker","src","dest","options","callback","tsconfig","getTS","getTsconfig","matcher","createMatcher","tsArgs","key","config","compilerOptions","value","push","Array","isArray","join","rimraf2","disableGlob","entries","iterator","Iterator","forEach","entry","stats","isFile","fullPath","typeFileRegEx","test","basename","SKIPS","indexOf","err","length","results","map","result","from","path","relative","to","dirname","ext","extname","replace","args","x","resolve","spawn","slice","stdio"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/workers/transformTypes.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport Iterator from 'fs-iterator';\nimport * as getTS from 'get-tsconfig-compat';\nimport mkdirp from 'mkdirp-classic';\nimport Queue from 'queue-cb';\nimport resolveOnceMap from 'resolve-once-map-cb';\nimport rimraf2 from 'rimraf2';\nimport type { SourceFile, WriteFileCallbackData } from 'typescript';\n\n// @ts-ignore\nimport lazy from '../lib/lazy.cjs';\nconst lazyTS = lazy('typescript');\n\nimport { SKIPS, typeFileRegEx } from '../constants.js';\nimport createMatcher from '../createMatcher.js';\n\nexport default function transformTypesWorker(src, dest, options, callback) {\n const tsconfig = options.tsconfig ? options.tsconfig : getTS.getTsconfig(src);\n const matcher = createMatcher(tsconfig);\n const existingTypes = [];\n\n rimraf2(dest, { disableGlob: true }, () => {\n const entries = [];\n const iterator = new Iterator(src);\n iterator.forEach(\n (entry) => {\n if (!entry.stats.isFile()) return;\n if (!matcher(entry.fullPath)) return;\n if (SKIPS.indexOf(entry.basename) >= 0) return;\n if (typeFileRegEx.test(entry.basename)) return existingTypes.push(entry.fullPath);\n entries.push(entry);\n },\n { concurrency: Infinity },\n (err) => {\n if (err) return callback(err);\n\n const results = [];\n const pathMap = resolveOnceMap((destPath, cb) => mkdirp(destPath, cb)); // mkdirs only once\n\n function writeFile(sourceFile, destFile, contents, cb) {\n results.push({ from: path.relative(src, sourceFile), to: path.relative(src, destFile) });\n const destPath = path.join(dest, results[results.length - 1].to);\n\n const q = new Queue(1);\n q.defer(pathMap.bind(null, path.dirname(destPath)));\n q.defer(fs.writeFile.bind(null, destPath, contents, 'utf8'));\n q.await(cb);\n }\n\n function writeType(filePath, cb) {\n results.push({ from: path.relative(src, filePath), to: path.relative(src, filePath) });\n const destPath = path.join(dest, results[results.length - 1].to);\n\n const q = new Queue(1);\n q.defer(pathMap.bind(null, path.dirname(destPath)));\n q.defer((cb) =>\n fs.readFile(filePath, (err, contents) => {\n err ? callback(err) : fs.writeFile(destPath, contents, cb);\n })\n );\n q.await(cb);\n }\n\n const queue = new Queue();\n existingTypes.map((filePath) => queue.defer(writeType.bind(null, filePath)));\n\n const ts = lazyTS();\n const options = {\n ...(tsconfig.compilerOptions || {}),\n allowJs: true,\n declaration: true,\n emitDeclarationOnly: true,\n };\n const host = ts.createCompilerHost(options);\n host.writeFile = (filePath: string, contents: string, _writeByteOrderMark: boolean, _onError?: (message: string) => void, sourceFiles?: readonly SourceFile[], _data?: WriteFileCallbackData) => {\n queue.defer(writeFile.bind(null, sourceFiles[0].fileName, filePath, contents));\n };\n\n // Prepare and emit the d.ts files\n const program = ts.createProgram(\n entries.map((entry) => entry.fullPath),\n options,\n host\n );\n program.emit();\n queue.await((err) => (err ? callback(err) : callback(null, results)));\n }\n );\n });\n}\n\n// import path from 'path';\n// import spawn from 'cross-spawn-cb';\n// import Iterator from 'fs-iterator';\n// import * as getTS from 'get-tsconfig-compat';\n// import rimraf2 from 'rimraf2';\n\n// import { SKIPS, typeFileRegEx } from '../constants.js';\n// import createMatcher from '../createMatcher.js';\n\n// export default function transformTypesWorker(src, dest, options, callback) {\n// const tsconfig = options.tsconfig ? options.tsconfig : getTS.getTsconfig(src);\n// const matcher = createMatcher(tsconfig);\n\n// const tsArgs = [];\n// for (const key in tsconfig.config.compilerOptions) {\n// const value = tsconfig.config.compilerOptions[key];\n// tsArgs.push(`--${key}`);\n// tsArgs.push(Array.isArray(value) ? value.join(',') : value);\n// }\n\n// rimraf2(dest, { disableGlob: true }, () => {\n// const entries = [];\n// const iterator = new Iterator(src);\n// iterator.forEach(\n// (entry) => {\n// if (!entry.stats.isFile()) return;\n// if (!matcher(entry.fullPath)) return;\n// if (typeFileRegEx.test(entry.basename)) return;\n// if (SKIPS.indexOf(entry.basename) >= 0) return;\n// entries.push(entry);\n// },\n// (err) => {\n// if (err) return callback(err);\n// if (entries.length === 0) return callback();\n// const results = entries.map((entry) => {\n// const result = { from: path.relative(src, entry.fullPath), to: '' };\n// const dirname = path.dirname(result.from);\n// const basename = path.basename(result.from);\n// let ext = path.extname(basename);\n// ext = ext.replace('sx', 's');\n// ext = ext.replace('js', 'ts');\n// result.to = path.join(dirname === '.' ? '' : dirname, `${basename.replace(/\\.[^/.]+$/, '')}.d${ext}`);\n// return result;\n// });\n// const args = ['tsc', ...results.map((x) => path.resolve(src, x.from)), '--declaration', '--emitDeclarationOnly', '--outDir', dest, ...tsArgs];\n// spawn(args[0], args.slice(1), { stdio: 'inherit' }, (err) => (err ? callback(err) : callback(null, results)));\n// }\n// );\n// });\n// }\n"],"names":["transformTypesWorker","lazyTS","lazy","src","dest","options","callback","tsconfig","getTS","getTsconfig","matcher","createMatcher","existingTypes","rimraf2","disableGlob","entries","iterator","Iterator","forEach","entry","stats","isFile","fullPath","SKIPS","indexOf","basename","typeFileRegEx","test","push","concurrency","Infinity","err","writeFile","sourceFile","destFile","contents","cb","results","from","path","relative","to","destPath","join","length","q","Queue","defer","pathMap","bind","dirname","fs","await","writeType","filePath","readFile","resolveOnceMap","mkdirp","queue","map","ts","compilerOptions","allowJs","declaration","emitDeclarationOnly","host","createCompilerHost","_writeByteOrderMark","_onError","sourceFiles","_data","fileName","program","createProgram","emit"],"mappings":"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"}
|
|
@@ -1,19 +1,20 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
1
2
|
import path from 'path';
|
|
2
|
-
import spawn from 'cross-spawn-cb';
|
|
3
3
|
import Iterator from 'fs-iterator';
|
|
4
4
|
import * as getTS from 'get-tsconfig-compat';
|
|
5
|
+
import mkdirp from 'mkdirp-classic';
|
|
6
|
+
import Queue from 'queue-cb';
|
|
7
|
+
import resolveOnceMap from 'resolve-once-map-cb';
|
|
5
8
|
import rimraf2 from 'rimraf2';
|
|
9
|
+
// @ts-ignore
|
|
10
|
+
import lazy from '../lib/lazy.cjs';
|
|
11
|
+
const lazyTS = lazy('typescript');
|
|
6
12
|
import { SKIPS, typeFileRegEx } from '../constants.mjs';
|
|
7
13
|
import createMatcher from '../createMatcher.mjs';
|
|
8
14
|
export default function transformTypesWorker(src, dest, options, callback) {
|
|
9
15
|
const tsconfig = options.tsconfig ? options.tsconfig : getTS.getTsconfig(src);
|
|
10
16
|
const matcher = createMatcher(tsconfig);
|
|
11
|
-
const
|
|
12
|
-
for(const key in tsconfig.config.compilerOptions){
|
|
13
|
-
const value = tsconfig.config.compilerOptions[key];
|
|
14
|
-
tsArgs.push(`--${key}`);
|
|
15
|
-
tsArgs.push(Array.isArray(value) ? value.join(',') : value);
|
|
16
|
-
}
|
|
17
|
+
const existingTypes = [];
|
|
17
18
|
rimraf2(dest, {
|
|
18
19
|
disableGlob: true
|
|
19
20
|
}, ()=>{
|
|
@@ -22,143 +23,100 @@ export default function transformTypesWorker(src, dest, options, callback) {
|
|
|
22
23
|
iterator.forEach((entry)=>{
|
|
23
24
|
if (!entry.stats.isFile()) return;
|
|
24
25
|
if (!matcher(entry.fullPath)) return;
|
|
25
|
-
if (typeFileRegEx.test(entry.basename)) return;
|
|
26
26
|
if (SKIPS.indexOf(entry.basename) >= 0) return;
|
|
27
|
+
if (typeFileRegEx.test(entry.basename)) return existingTypes.push(entry.fullPath);
|
|
27
28
|
entries.push(entry);
|
|
29
|
+
}, {
|
|
30
|
+
concurrency: Infinity
|
|
28
31
|
}, (err)=>{
|
|
29
32
|
if (err) return callback(err);
|
|
30
|
-
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
33
|
+
const results = [];
|
|
34
|
+
const pathMap = resolveOnceMap((destPath, cb)=>mkdirp(destPath, cb)); // mkdirs only once
|
|
35
|
+
function writeFile(sourceFile, destFile, contents, cb) {
|
|
36
|
+
results.push({
|
|
37
|
+
from: path.relative(src, sourceFile),
|
|
38
|
+
to: path.relative(src, destFile)
|
|
39
|
+
});
|
|
40
|
+
const destPath = path.join(dest, results[results.length - 1].to);
|
|
41
|
+
const q = new Queue(1);
|
|
42
|
+
q.defer(pathMap.bind(null, path.dirname(destPath)));
|
|
43
|
+
q.defer(fs.writeFile.bind(null, destPath, contents, 'utf8'));
|
|
44
|
+
q.await(cb);
|
|
45
|
+
}
|
|
46
|
+
function writeType(filePath, cb) {
|
|
47
|
+
results.push({
|
|
48
|
+
from: path.relative(src, filePath),
|
|
49
|
+
to: path.relative(src, filePath)
|
|
50
|
+
});
|
|
51
|
+
const destPath = path.join(dest, results[results.length - 1].to);
|
|
52
|
+
const q = new Queue(1);
|
|
53
|
+
q.defer(pathMap.bind(null, path.dirname(destPath)));
|
|
54
|
+
q.defer((cb)=>fs.readFile(filePath, (err, contents)=>{
|
|
55
|
+
err ? callback(err) : fs.writeFile(destPath, contents, cb);
|
|
56
|
+
}));
|
|
57
|
+
q.await(cb);
|
|
58
|
+
}
|
|
59
|
+
const queue = new Queue();
|
|
60
|
+
existingTypes.map((filePath)=>queue.defer(writeType.bind(null, filePath)));
|
|
61
|
+
const ts = lazyTS();
|
|
62
|
+
const options = {
|
|
63
|
+
...tsconfig.compilerOptions || {},
|
|
64
|
+
allowJs: true,
|
|
65
|
+
declaration: true,
|
|
66
|
+
emitDeclarationOnly: true
|
|
67
|
+
};
|
|
68
|
+
const host = ts.createCompilerHost(options);
|
|
69
|
+
host.writeFile = (filePath, contents, _writeByteOrderMark, _onError, sourceFiles, _data)=>{
|
|
70
|
+
queue.defer(writeFile.bind(null, sourceFiles[0].fileName, filePath, contents));
|
|
71
|
+
};
|
|
72
|
+
// Prepare and emit the d.ts files
|
|
73
|
+
const program = ts.createProgram(entries.map((entry)=>entry.fullPath), options, host);
|
|
74
|
+
program.emit();
|
|
75
|
+
queue.await((err)=>err ? callback(err) : callback(null, results));
|
|
56
76
|
});
|
|
57
77
|
});
|
|
58
|
-
} // import
|
|
59
|
-
// import
|
|
78
|
+
} // import path from 'path';
|
|
79
|
+
// import spawn from 'cross-spawn-cb';
|
|
60
80
|
// import Iterator from 'fs-iterator';
|
|
61
81
|
// import * as getTS from 'get-tsconfig-compat';
|
|
62
|
-
// import mkdirp from 'mkdirp-classic';
|
|
63
|
-
// import Queue from 'queue-cb';
|
|
64
82
|
// import rimraf2 from 'rimraf2';
|
|
65
|
-
// import { type SourceFile, WriteFileCallbackData } from 'typescript';
|
|
66
|
-
// // @ts-ignore
|
|
67
|
-
// import lazy from '../lib/lazy.cjs';
|
|
68
|
-
// const lazyTS = lazy('typescript');
|
|
69
83
|
// import { SKIPS, typeFileRegEx } from '../constants.mjs';
|
|
70
84
|
// import createMatcher from '../createMatcher.mjs';
|
|
71
85
|
// export default function transformTypesWorker(src, dest, options, callback) {
|
|
72
86
|
// const tsconfig = options.tsconfig ? options.tsconfig : getTS.getTsconfig(src);
|
|
73
87
|
// const matcher = createMatcher(tsconfig);
|
|
88
|
+
// const tsArgs = [];
|
|
89
|
+
// for (const key in tsconfig.config.compilerOptions) {
|
|
90
|
+
// const value = tsconfig.config.compilerOptions[key];
|
|
91
|
+
// tsArgs.push(`--${key}`);
|
|
92
|
+
// tsArgs.push(Array.isArray(value) ? value.join(',') : value);
|
|
93
|
+
// }
|
|
74
94
|
// rimraf2(dest, { disableGlob: true }, () => {
|
|
75
95
|
// const entries = [];
|
|
76
|
-
// const copies = [];
|
|
77
96
|
// const iterator = new Iterator(src);
|
|
78
97
|
// iterator.forEach(
|
|
79
98
|
// (entry) => {
|
|
80
99
|
// if (!entry.stats.isFile()) return;
|
|
81
100
|
// if (!matcher(entry.fullPath)) return;
|
|
82
|
-
// if (typeFileRegEx.test(entry.basename)) return
|
|
101
|
+
// if (typeFileRegEx.test(entry.basename)) return;
|
|
83
102
|
// if (SKIPS.indexOf(entry.basename) >= 0) return;
|
|
84
103
|
// entries.push(entry);
|
|
85
104
|
// },
|
|
86
105
|
// (err) => {
|
|
87
106
|
// if (err) return callback(err);
|
|
88
107
|
// if (entries.length === 0) return callback();
|
|
89
|
-
// const
|
|
90
|
-
//
|
|
91
|
-
//
|
|
92
|
-
//
|
|
93
|
-
//
|
|
94
|
-
//
|
|
95
|
-
//
|
|
96
|
-
//
|
|
97
|
-
//
|
|
98
|
-
//
|
|
99
|
-
//
|
|
100
|
-
//
|
|
101
|
-
// // fs.writeFileSync(destPath, contents, 'utf8');
|
|
102
|
-
// generated[sourceFiles[0].fileName] = { filePath, contents };
|
|
103
|
-
// };
|
|
104
|
-
// // Prepare and emit the d.ts files
|
|
105
|
-
// const program = ts.createProgram(
|
|
106
|
-
// entries.map((entry) => entry.fullPath),
|
|
107
|
-
// options,
|
|
108
|
-
// host
|
|
109
|
-
// );
|
|
110
|
-
// program.emit();
|
|
111
|
-
// const results = entries
|
|
112
|
-
// .filter((entry) => generated[entry.fullPath] !== undefined)
|
|
113
|
-
// .map((entry) => {
|
|
114
|
-
// return { from: entry.path, to: path.relative(src, generated[entry.fullPath].filePath) };
|
|
115
|
-
// });
|
|
116
|
-
// copies.forEach((entry) => results.push({ from: entry.path, to: entry.path }));
|
|
117
|
-
// callback(null, results)
|
|
118
|
-
// // function createFolders(cb) {
|
|
119
|
-
// // // return cb();
|
|
120
|
-
// // const queue = new Queue();
|
|
121
|
-
// // entries.concat(copies)
|
|
122
|
-
// // .map((x) => path.resolve(dest, path.dirname(x.path)))
|
|
123
|
-
// // .sort((a, b) => b.localeCompare(a))
|
|
124
|
-
// // .reduce((m, x) => (m.some((y) => y.startsWith(x)) ? m : m.concat(x)), [])
|
|
125
|
-
// // .forEach((x) => {
|
|
126
|
-
// // queue.defer(mkdirp.bind(null, x));
|
|
127
|
-
// // });
|
|
128
|
-
// // queue.await(cb);
|
|
129
|
-
// // }
|
|
130
|
-
// // function writeGenerated(cb) {
|
|
131
|
-
// // const queue = new Queue();
|
|
132
|
-
// // entries
|
|
133
|
-
// // .filter((entry) => generated[entry.fullPath] !== undefined)
|
|
134
|
-
// // .forEach((entry) => {
|
|
135
|
-
// // const record = generated[entry.fullPath];
|
|
136
|
-
// // const destPath = path.resolve(dest, path.relative(src, record.filePath));
|
|
137
|
-
// // queue.defer(fs.writeFile.bind(null, destPath, record.contents, 'utf8'));
|
|
138
|
-
// // });
|
|
139
|
-
// // queue.await(cb);
|
|
140
|
-
// // }
|
|
141
|
-
// // function copyTypes(cb) {
|
|
142
|
-
// // const queue = new Queue();
|
|
143
|
-
// // copies.forEach((entry) => {
|
|
144
|
-
// // const destPath = path.resolve(dest, entry.path);
|
|
145
|
-
// // queue.defer((cb) => {
|
|
146
|
-
// // fs.readFile(entry.fullPath, (err, contents) => {
|
|
147
|
-
// // err ? callback(err) : fs.writeFile(destPath, contents, cb);
|
|
148
|
-
// // });
|
|
149
|
-
// // });
|
|
150
|
-
// // });
|
|
151
|
-
// // queue.await(cb);
|
|
152
|
-
// // }
|
|
153
|
-
// // createFolders((err) => {
|
|
154
|
-
// // if (err) return callback(err);
|
|
155
|
-
// // const queue = new Queue();
|
|
156
|
-
// // queue.defer(writeGenerated.bind(null));
|
|
157
|
-
// // queue.defer(copyTypes.bind(null));
|
|
158
|
-
// // queue.await((err) => {
|
|
159
|
-
// // err ? callback(err) : callback(null, results);
|
|
160
|
-
// // });
|
|
161
|
-
// // });
|
|
108
|
+
// const results = entries.map((entry) => {
|
|
109
|
+
// const result = { from: path.relative(src, entry.fullPath), to: '' };
|
|
110
|
+
// const dirname = path.dirname(result.from);
|
|
111
|
+
// const basename = path.basename(result.from);
|
|
112
|
+
// let ext = path.extname(basename);
|
|
113
|
+
// ext = ext.replace('sx', 's');
|
|
114
|
+
// ext = ext.replace('js', 'ts');
|
|
115
|
+
// result.to = path.join(dirname === '.' ? '' : dirname, `${basename.replace(/\.[^/.]+$/, '')}.d${ext}`);
|
|
116
|
+
// return result;
|
|
117
|
+
// });
|
|
118
|
+
// const args = ['tsc', ...results.map((x) => path.resolve(src, x.from)), '--declaration', '--emitDeclarationOnly', '--outDir', dest, ...tsArgs];
|
|
119
|
+
// spawn(args[0], args.slice(1), { stdio: 'inherit' }, (err) => (err ? callback(err) : callback(null, results)));
|
|
162
120
|
// }
|
|
163
121
|
// );
|
|
164
122
|
// });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/workers/transformTypes.ts"],"sourcesContent":["import path from 'path';\nimport spawn from 'cross-spawn-cb';\nimport Iterator from 'fs-iterator';\nimport * as getTS from 'get-tsconfig-compat';\nimport rimraf2 from 'rimraf2';\n\nimport { SKIPS, typeFileRegEx } from '../constants.js';\nimport createMatcher from '../createMatcher.js';\n\nexport default function transformTypesWorker(src, dest, options, callback) {\n const tsconfig = options.tsconfig ? options.tsconfig : getTS.getTsconfig(src);\n const matcher = createMatcher(tsconfig);\n\n const tsArgs = [];\n for (const key in tsconfig.config.compilerOptions) {\n const value = tsconfig.config.compilerOptions[key];\n tsArgs.push(`--${key}`);\n tsArgs.push(Array.isArray(value) ? value.join(',') : value);\n }\n\n rimraf2(dest, { disableGlob: true }, () => {\n const entries = [];\n const iterator = new Iterator(src);\n iterator.forEach(\n (entry) => {\n if (!entry.stats.isFile()) return;\n if (!matcher(entry.fullPath)) return;\n if (typeFileRegEx.test(entry.basename)) return;\n if (SKIPS.indexOf(entry.basename) >= 0) return;\n entries.push(entry);\n },\n (err) => {\n if (err) return callback(err);\n if (entries.length === 0) return callback();\n const results = entries.map((entry) => {\n const result = { from: path.relative(src, entry.fullPath), to: '' };\n const dirname = path.dirname(result.from);\n const basename = path.basename(result.from);\n let ext = path.extname(basename);\n ext = ext.replace('sx', 's');\n ext = ext.replace('js', 'ts');\n result.to = path.join(dirname === '.' ? '' : dirname, `${basename.replace(/\\.[^/.]+$/, '')}.d${ext}`);\n return result;\n });\n const args = ['tsc', ...results.map((x) => path.resolve(src, x.from)), '--declaration', '--emitDeclarationOnly', '--outDir', dest, ...tsArgs];\n spawn(args[0], args.slice(1), { stdio: 'inherit' }, (err) => (err ? callback(err) : callback(null, results)));\n }\n );\n });\n}\n\n// import fs from 'fs';\n// import path from 'path';\n// import Iterator from 'fs-iterator';\n// import * as getTS from 'get-tsconfig-compat';\n// import mkdirp from 'mkdirp-classic';\n// import Queue from 'queue-cb';\n// import rimraf2 from 'rimraf2';\n// import { type SourceFile, WriteFileCallbackData } from 'typescript';\n\n// // @ts-ignore\n// import lazy from '../lib/lazy.cjs';\n// const lazyTS = lazy('typescript');\n\n// import { SKIPS, typeFileRegEx } from '../constants.js';\n// import createMatcher from '../createMatcher.js';\n\n// export default function transformTypesWorker(src, dest, options, callback) {\n// const tsconfig = options.tsconfig ? options.tsconfig : getTS.getTsconfig(src);\n// const matcher = createMatcher(tsconfig);\n\n// rimraf2(dest, { disableGlob: true }, () => {\n// const entries = [];\n// const copies = [];\n// const iterator = new Iterator(src);\n// iterator.forEach(\n// (entry) => {\n// if (!entry.stats.isFile()) return;\n// if (!matcher(entry.fullPath)) return;\n// if (typeFileRegEx.test(entry.basename)) return copies.push(entry);\n// if (SKIPS.indexOf(entry.basename) >= 0) return;\n// entries.push(entry);\n// },\n// (err) => {\n// if (err) return callback(err);\n// if (entries.length === 0) return callback();\n\n// const ts = lazyTS();\n// const options = {\n// ...(tsconfig.compilerOptions || {}),\n// allowJs: true,\n// declaration: true,\n// emitDeclarationOnly: true,\n// };\n// const generated = {};\n// const host = ts.createCompilerHost(options);\n// host.writeFile = (filePath: string, contents: string, writeByteOrderMark: boolean, onError?: (message: string) => void, sourceFiles?: readonly SourceFile[], data?: WriteFileCallbackData) => {\n// // const destPath = path.resolve(dest, path.relative(src, filePath));\n// // mkdirp.sync(path.dirname(destPath))\n// // fs.writeFileSync(destPath, contents, 'utf8');\n// generated[sourceFiles[0].fileName] = { filePath, contents };\n// };\n\n// // Prepare and emit the d.ts files\n// const program = ts.createProgram(\n// entries.map((entry) => entry.fullPath),\n// options,\n// host\n// );\n// program.emit();\n\n// const results = entries\n// .filter((entry) => generated[entry.fullPath] !== undefined)\n// .map((entry) => {\n// return { from: entry.path, to: path.relative(src, generated[entry.fullPath].filePath) };\n// });\n// copies.forEach((entry) => results.push({ from: entry.path, to: entry.path }));\n\n// callback(null, results)\n\n// // function createFolders(cb) {\n// // // return cb();\n// // const queue = new Queue();\n// // entries.concat(copies)\n// // .map((x) => path.resolve(dest, path.dirname(x.path)))\n// // .sort((a, b) => b.localeCompare(a))\n// // .reduce((m, x) => (m.some((y) => y.startsWith(x)) ? m : m.concat(x)), [])\n// // .forEach((x) => {\n// // queue.defer(mkdirp.bind(null, x));\n// // });\n// // queue.await(cb);\n// // }\n// // function writeGenerated(cb) {\n// // const queue = new Queue();\n// // entries\n// // .filter((entry) => generated[entry.fullPath] !== undefined)\n// // .forEach((entry) => {\n// // const record = generated[entry.fullPath];\n// // const destPath = path.resolve(dest, path.relative(src, record.filePath));\n// // queue.defer(fs.writeFile.bind(null, destPath, record.contents, 'utf8'));\n// // });\n// // queue.await(cb);\n// // }\n\n// // function copyTypes(cb) {\n// // const queue = new Queue();\n// // copies.forEach((entry) => {\n// // const destPath = path.resolve(dest, entry.path);\n// // queue.defer((cb) => {\n// // fs.readFile(entry.fullPath, (err, contents) => {\n// // err ? callback(err) : fs.writeFile(destPath, contents, cb);\n// // });\n// // });\n// // });\n// // queue.await(cb);\n// // }\n\n// // createFolders((err) => {\n// // if (err) return callback(err);\n// // const queue = new Queue();\n// // queue.defer(writeGenerated.bind(null));\n// // queue.defer(copyTypes.bind(null));\n// // queue.await((err) => {\n// // err ? callback(err) : callback(null, results);\n// // });\n// // });\n// }\n// );\n// });\n// }\n"],"names":["path","spawn","Iterator","getTS","rimraf2","SKIPS","typeFileRegEx","createMatcher","transformTypesWorker","src","dest","options","callback","tsconfig","getTsconfig","matcher","tsArgs","key","config","compilerOptions","value","push","Array","isArray","join","disableGlob","entries","iterator","forEach","entry","stats","isFile","fullPath","test","basename","indexOf","err","length","results","map","result","from","relative","to","dirname","ext","extname","replace","args","x","resolve","slice","stdio"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/workers/transformTypes.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport Iterator from 'fs-iterator';\nimport * as getTS from 'get-tsconfig-compat';\nimport mkdirp from 'mkdirp-classic';\nimport Queue from 'queue-cb';\nimport resolveOnceMap from 'resolve-once-map-cb';\nimport rimraf2 from 'rimraf2';\nimport type { SourceFile, WriteFileCallbackData } from 'typescript';\n\n// @ts-ignore\nimport lazy from '../lib/lazy.cjs';\nconst lazyTS = lazy('typescript');\n\nimport { SKIPS, typeFileRegEx } from '../constants.js';\nimport createMatcher from '../createMatcher.js';\n\nexport default function transformTypesWorker(src, dest, options, callback) {\n const tsconfig = options.tsconfig ? options.tsconfig : getTS.getTsconfig(src);\n const matcher = createMatcher(tsconfig);\n const existingTypes = [];\n\n rimraf2(dest, { disableGlob: true }, () => {\n const entries = [];\n const iterator = new Iterator(src);\n iterator.forEach(\n (entry) => {\n if (!entry.stats.isFile()) return;\n if (!matcher(entry.fullPath)) return;\n if (SKIPS.indexOf(entry.basename) >= 0) return;\n if (typeFileRegEx.test(entry.basename)) return existingTypes.push(entry.fullPath);\n entries.push(entry);\n },\n { concurrency: Infinity },\n (err) => {\n if (err) return callback(err);\n\n const results = [];\n const pathMap = resolveOnceMap((destPath, cb) => mkdirp(destPath, cb)); // mkdirs only once\n\n function writeFile(sourceFile, destFile, contents, cb) {\n results.push({ from: path.relative(src, sourceFile), to: path.relative(src, destFile) });\n const destPath = path.join(dest, results[results.length - 1].to);\n\n const q = new Queue(1);\n q.defer(pathMap.bind(null, path.dirname(destPath)));\n q.defer(fs.writeFile.bind(null, destPath, contents, 'utf8'));\n q.await(cb);\n }\n\n function writeType(filePath, cb) {\n results.push({ from: path.relative(src, filePath), to: path.relative(src, filePath) });\n const destPath = path.join(dest, results[results.length - 1].to);\n\n const q = new Queue(1);\n q.defer(pathMap.bind(null, path.dirname(destPath)));\n q.defer((cb) =>\n fs.readFile(filePath, (err, contents) => {\n err ? callback(err) : fs.writeFile(destPath, contents, cb);\n })\n );\n q.await(cb);\n }\n\n const queue = new Queue();\n existingTypes.map((filePath) => queue.defer(writeType.bind(null, filePath)));\n\n const ts = lazyTS();\n const options = {\n ...(tsconfig.compilerOptions || {}),\n allowJs: true,\n declaration: true,\n emitDeclarationOnly: true,\n };\n const host = ts.createCompilerHost(options);\n host.writeFile = (filePath: string, contents: string, _writeByteOrderMark: boolean, _onError?: (message: string) => void, sourceFiles?: readonly SourceFile[], _data?: WriteFileCallbackData) => {\n queue.defer(writeFile.bind(null, sourceFiles[0].fileName, filePath, contents));\n };\n\n // Prepare and emit the d.ts files\n const program = ts.createProgram(\n entries.map((entry) => entry.fullPath),\n options,\n host\n );\n program.emit();\n queue.await((err) => (err ? callback(err) : callback(null, results)));\n }\n );\n });\n}\n\n// import path from 'path';\n// import spawn from 'cross-spawn-cb';\n// import Iterator from 'fs-iterator';\n// import * as getTS from 'get-tsconfig-compat';\n// import rimraf2 from 'rimraf2';\n\n// import { SKIPS, typeFileRegEx } from '../constants.js';\n// import createMatcher from '../createMatcher.js';\n\n// export default function transformTypesWorker(src, dest, options, callback) {\n// const tsconfig = options.tsconfig ? options.tsconfig : getTS.getTsconfig(src);\n// const matcher = createMatcher(tsconfig);\n\n// const tsArgs = [];\n// for (const key in tsconfig.config.compilerOptions) {\n// const value = tsconfig.config.compilerOptions[key];\n// tsArgs.push(`--${key}`);\n// tsArgs.push(Array.isArray(value) ? value.join(',') : value);\n// }\n\n// rimraf2(dest, { disableGlob: true }, () => {\n// const entries = [];\n// const iterator = new Iterator(src);\n// iterator.forEach(\n// (entry) => {\n// if (!entry.stats.isFile()) return;\n// if (!matcher(entry.fullPath)) return;\n// if (typeFileRegEx.test(entry.basename)) return;\n// if (SKIPS.indexOf(entry.basename) >= 0) return;\n// entries.push(entry);\n// },\n// (err) => {\n// if (err) return callback(err);\n// if (entries.length === 0) return callback();\n// const results = entries.map((entry) => {\n// const result = { from: path.relative(src, entry.fullPath), to: '' };\n// const dirname = path.dirname(result.from);\n// const basename = path.basename(result.from);\n// let ext = path.extname(basename);\n// ext = ext.replace('sx', 's');\n// ext = ext.replace('js', 'ts');\n// result.to = path.join(dirname === '.' ? '' : dirname, `${basename.replace(/\\.[^/.]+$/, '')}.d${ext}`);\n// return result;\n// });\n// const args = ['tsc', ...results.map((x) => path.resolve(src, x.from)), '--declaration', '--emitDeclarationOnly', '--outDir', dest, ...tsArgs];\n// spawn(args[0], args.slice(1), { stdio: 'inherit' }, (err) => (err ? callback(err) : callback(null, results)));\n// }\n// );\n// });\n// }\n"],"names":["fs","path","Iterator","getTS","mkdirp","Queue","resolveOnceMap","rimraf2","lazy","lazyTS","SKIPS","typeFileRegEx","createMatcher","transformTypesWorker","src","dest","options","callback","tsconfig","getTsconfig","matcher","existingTypes","disableGlob","entries","iterator","forEach","entry","stats","isFile","fullPath","indexOf","basename","test","push","concurrency","Infinity","err","results","pathMap","destPath","cb","writeFile","sourceFile","destFile","contents","from","relative","to","join","length","q","defer","bind","dirname","await","writeType","filePath","readFile","queue","map","ts","compilerOptions","allowJs","declaration","emitDeclarationOnly","host","createCompilerHost","_writeByteOrderMark","_onError","sourceFiles","_data","fileName","program","createProgram","emit"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-swc-transform",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.5",
|
|
4
4
|
"description": "Typescript transformers for swc. Supports Node >= 0.8",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"matcher",
|
|
@@ -60,12 +60,12 @@
|
|
|
60
60
|
"lazy-cache": "^2.0.2",
|
|
61
61
|
"minimatch": "^3.1.2",
|
|
62
62
|
"mkdirp-classic": "^0.5.3",
|
|
63
|
-
"module-which": "^0.2.0",
|
|
64
63
|
"node-version-call": "^1.3.5",
|
|
65
64
|
"path-posix": "^1.0.0",
|
|
66
65
|
"queue-cb": "^1.4.4",
|
|
67
66
|
"resolve": "^1.22.10",
|
|
68
67
|
"resolve-once-cb": "^0.1.2",
|
|
68
|
+
"resolve-once-map-cb": "^0.1.0",
|
|
69
69
|
"rimraf2": "^2.8.2",
|
|
70
70
|
"ts-node": "*",
|
|
71
71
|
"typescript": "*",
|