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 fs from 'fs';
6
- // import path from 'path';
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 copies.push(entry);
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 ts = lazyTS();
37
- // const options = {
38
- // ...(tsconfig.compilerOptions || {}),
39
- // allowJs: true,
40
- // declaration: true,
41
- // emitDeclarationOnly: true,
42
- // };
43
- // const generated = {};
44
- // const host = ts.createCompilerHost(options);
45
- // host.writeFile = (filePath: string, contents: string, writeByteOrderMark: boolean, onError?: (message: string) => void, sourceFiles?: readonly SourceFile[], data?: WriteFileCallbackData) => {
46
- // // const destPath = path.resolve(dest, path.relative(src, filePath));
47
- // // mkdirp.sync(path.dirname(destPath))
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 _array_like_to_array(arr, len) {
127
- if (len == null || len > arr.length) len = arr.length;
128
- for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
129
- return arr2;
130
- }
131
- function _array_without_holes(arr) {
132
- if (Array.isArray(arr)) return _array_like_to_array(arr);
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 _iterable_to_array(iter) {
181
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
182
- }
183
- function _non_iterable_spread() {
184
- throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
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 _to_consumable_array(arr) {
187
- return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
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 _unsupported_iterable_to_array(o, minLen) {
190
- if (!o) return;
191
- if (typeof o === "string") return _array_like_to_array(o, minLen);
192
- var n = Object.prototype.toString.call(o).slice(8, -1);
193
- if (n === "Object" && o.constructor) n = o.constructor.name;
194
- if (n === "Map" || n === "Set") return Array.from(n);
195
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
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 tsArgs = [];
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
- if (entries.length === 0) return callback();
220
- var results = entries.map(function(entry) {
221
- var result = {
222
- from: _path.default.relative(src, entry.fullPath),
223
- to: ''
224
- };
225
- var dirname = _path.default.dirname(result.from);
226
- var basename = _path.default.basename(result.from);
227
- var ext = _path.default.extname(basename);
228
- ext = ext.replace('sx', 's');
229
- ext = ext.replace('js', 'ts');
230
- result.to = _path.default.join(dirname === '.' ? '' : dirname, "".concat(basename.replace(/\.[^/.]+$/, ''), ".d").concat(ext));
231
- return result;
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 args = [
234
- 'tsc'
235
- ].concat(_to_consumable_array(results.map(function(x) {
236
- return _path.default.resolve(src, x.from);
237
- })), [
238
- '--declaration',
239
- '--emitDeclarationOnly',
240
- '--outDir',
241
- dest
242
- ], _to_consumable_array(tsArgs));
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 tsArgs = [];
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
- if (entries.length === 0) return callback();
31
- const results = entries.map((entry)=>{
32
- const result = {
33
- from: path.relative(src, entry.fullPath),
34
- to: ''
35
- };
36
- const dirname = path.dirname(result.from);
37
- const basename = path.basename(result.from);
38
- let ext = path.extname(basename);
39
- ext = ext.replace('sx', 's');
40
- ext = ext.replace('js', 'ts');
41
- result.to = path.join(dirname === '.' ? '' : dirname, `${basename.replace(/\.[^/.]+$/, '')}.d${ext}`);
42
- return result;
43
- });
44
- const args = [
45
- 'tsc',
46
- ...results.map((x)=>path.resolve(src, x.from)),
47
- '--declaration',
48
- '--emitDeclarationOnly',
49
- '--outDir',
50
- dest,
51
- ...tsArgs
52
- ];
53
- spawn(args[0], args.slice(1), {
54
- stdio: 'inherit'
55
- }, (err)=>err ? callback(err) : callback(null, results));
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 fs from 'fs';
59
- // import path from 'path';
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 copies.push(entry);
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 ts = lazyTS();
90
- // const options = {
91
- // ...(tsconfig.compilerOptions || {}),
92
- // allowJs: true,
93
- // declaration: true,
94
- // emitDeclarationOnly: true,
95
- // };
96
- // const generated = {};
97
- // const host = ts.createCompilerHost(options);
98
- // host.writeFile = (filePath: string, contents: string, writeByteOrderMark: boolean, onError?: (message: string) => void, sourceFiles?: readonly SourceFile[], data?: WriteFileCallbackData) => {
99
- // // const destPath = path.resolve(dest, path.relative(src, filePath));
100
- // // mkdirp.sync(path.dirname(destPath))
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",
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": "*",