ts-swc-transform 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -42,4 +42,4 @@ function createMatcher(config) {
42
42
  return !includes.length;
43
43
  };
44
44
  }
45
- /* CJS INTEROP */ if (exports.__esModule && exports.default) { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) exports.default[key] = exports[key]; module.exports = exports.default; }
45
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; }; module.exports = exports.default; } catch (_) {} }
package/dist/cjs/index.js CHANGED
@@ -31,4 +31,4 @@ function _interop_require_default(obj) {
31
31
  default: obj
32
32
  };
33
33
  }
34
- /* CJS INTEROP */ if (exports.__esModule && exports.default) { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) exports.default[key] = exports[key]; module.exports = exports.default; }
34
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; }; module.exports = exports.default; } catch (_) {} }
@@ -18,4 +18,4 @@ function regexDependencies(esm) {
18
18
  }
19
19
  return new RegExp(regex, 'g');
20
20
  }
21
- /* CJS INTEROP */ if (exports.__esModule && exports.default) { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) exports.default[key] = exports[key]; module.exports = exports.default; }
21
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; }; module.exports = exports.default; } catch (_) {} }
@@ -82,11 +82,11 @@ function transformDirectoryCallback(src, dest, type, options, callback) {
82
82
  callback = options;
83
83
  options = {};
84
84
  }
85
+ options = options || {};
85
86
  if (typeof src !== 'string') throw new Error('transformDirectory: unexpected source');
86
87
  if (typeof dest !== 'string') throw new Error('transformDirectory: unexpected destination directory');
87
88
  if (typeof type !== 'string') throw new Error('transformDirectory: unexpected type');
88
- var cwd = options.cwd || process.cwd();
89
- var config = options.confg ? options.confg : _gettsconfigcompat.default.getTsconfig(_path.default.resolve(cwd, 'tsconfig.json'));
89
+ var config = options.confg ? options.confg : _gettsconfigcompat.default.getTsconfig(src);
90
90
  var matcher = (0, _createMatcher.default)(config);
91
91
  options = _object_spread_props(_object_spread({}, options), {
92
92
  config: config
@@ -114,4 +114,4 @@ function transformDirectory(src, dest, type, options, callback) {
114
114
  });
115
115
  });
116
116
  }
117
- /* CJS INTEROP */ if (exports.__esModule && exports.default) { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) exports.default[key] = exports[key]; module.exports = exports.default; }
117
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; }; module.exports = exports.default; } catch (_) {} }
@@ -1 +1 @@
1
- {"version":3,"sources":["transformDirectory.mjs"],"sourcesContent":["import path from 'path';\nimport Iterator from 'fs-iterator';\nimport getTS from 'get-tsconfig-compat';\n\nimport createMatcher from './createMatcher.mjs';\nimport transformFile from './transformFile.mjs';\n\nfunction transformDirectoryCallback(src, dest, type, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (typeof src !== 'string') throw new Error('transformDirectory: unexpected source');\n if (typeof dest !== 'string') throw new Error('transformDirectory: unexpected destination directory');\n if (typeof type !== 'string') throw new Error('transformDirectory: unexpected type');\n\n const cwd = options.cwd || process.cwd();\n const config = options.confg ? options.confg : getTS.getTsconfig(path.resolve(cwd, 'tsconfig.json'));\n const matcher = createMatcher(config);\n\n options = { ...options, config };\n const iterator = new Iterator(src);\n iterator.forEach(\n (entry, cb) => {\n if (!entry.stats.isFile()) return cb();\n if (!matcher(entry.fullPath)) return cb();\n transformFile(entry.fullPath, path.dirname(path.join(dest, entry.path)), type, options, cb);\n },\n { callbacks: true, concurrency: options.concurrency || 1024 },\n callback\n );\n}\n\n/**\n * @param {string} src The source directory to traverse.\n * @param {string} dest The output directory to write files to.\n * @param {string} type The type of transform ('esm' or 'cjs').\n * @param {{sourceMaps: boolean}} options Options to pass to swc.\n * @param {(err?: Error) =>} [callback] Optional callback. Uses promise if callback not provided.\n * @returns {void | Promise<any>} Optional promise if callback not provided.\n */\nexport default function transformDirectory(src, dest, type, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = null;\n }\n options = options || {};\n\n if (typeof callback === 'function') return transformDirectoryCallback(src, dest, type, options, callback);\n return new Promise((resolve, reject) => {\n transformDirectoryCallback(src, dest, type, options, function compileCallback(err, result) {\n err ? reject(err) : resolve(result);\n });\n });\n}\n"],"names":["transformDirectory","transformDirectoryCallback","src","dest","type","options","callback","Error","cwd","process","config","confg","getTS","getTsconfig","path","resolve","matcher","createMatcher","iterator","Iterator","forEach","entry","cb","stats","isFile","fullPath","transformFile","dirname","join","callbacks","concurrency","Promise","reject","compileCallback","err","result"],"mappings":";;;;+BAiCA;;;;;;;CAOC,GACD;;;eAAwBA;;;2DAzCP;iEACI;wEACH;oEAEQ;oEACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE1B,SAASC,2BAA2BC,GAAG,EAAEC,IAAI,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IACpE,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU,CAAC;IACb;IACA,IAAI,OAAOH,QAAQ,UAAU,MAAM,IAAIK,MAAM;IAC7C,IAAI,OAAOJ,SAAS,UAAU,MAAM,IAAII,MAAM;IAC9C,IAAI,OAAOH,SAAS,UAAU,MAAM,IAAIG,MAAM;IAE9C,IAAMC,MAAMH,QAAQG,GAAG,IAAIC,QAAQD,GAAG;IACtC,IAAME,SAASL,QAAQM,KAAK,GAAGN,QAAQM,KAAK,GAAGC,0BAAK,CAACC,WAAW,CAACC,aAAI,CAACC,OAAO,CAACP,KAAK;IACnF,IAAMQ,UAAUC,IAAAA,sBAAa,EAACP;IAE9BL,UAAU,wCAAKA;QAASK,QAAAA;;IACxB,IAAMQ,WAAW,IAAIC,mBAAQ,CAACjB;IAC9BgB,SAASE,OAAO,CACd,SAACC,OAAOC;QACN,IAAI,CAACD,MAAME,KAAK,CAACC,MAAM,IAAI,OAAOF;QAClC,IAAI,CAACN,QAAQK,MAAMI,QAAQ,GAAG,OAAOH;QACrCI,IAAAA,sBAAa,EAACL,MAAMI,QAAQ,EAAEX,aAAI,CAACa,OAAO,CAACb,aAAI,CAACc,IAAI,CAACzB,MAAMkB,MAAMP,IAAI,IAAIV,MAAMC,SAASiB;IAC1F,GACA;QAAEO,WAAW;QAAMC,aAAazB,QAAQyB,WAAW,IAAI;IAAK,GAC5DxB;AAEJ;AAUe,SAASN,mBAAmBE,GAAG,EAAEC,IAAI,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IAC3E,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU;IACZ;IACAA,UAAUA,WAAW,CAAC;IAEtB,IAAI,OAAOC,aAAa,YAAY,OAAOL,2BAA2BC,KAAKC,MAAMC,MAAMC,SAASC;IAChG,OAAO,IAAIyB,QAAQ,SAAChB,SAASiB;QAC3B/B,2BAA2BC,KAAKC,MAAMC,MAAMC,SAAS,SAAS4B,gBAAgBC,GAAG,EAAEC,MAAM;YACvFD,MAAMF,OAAOE,OAAOnB,QAAQoB;QAC9B;IACF;AACF"}
1
+ {"version":3,"sources":["transformDirectory.mjs"],"sourcesContent":["import path from 'path';\nimport Iterator from 'fs-iterator';\nimport getTS from 'get-tsconfig-compat';\n\nimport createMatcher from './createMatcher.mjs';\nimport transformFile from './transformFile.mjs';\n\nfunction transformDirectoryCallback(src, dest, type, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n if (typeof src !== 'string') throw new Error('transformDirectory: unexpected source');\n if (typeof dest !== 'string') throw new Error('transformDirectory: unexpected destination directory');\n if (typeof type !== 'string') throw new Error('transformDirectory: unexpected type');\n\n const config = options.confg ? options.confg : getTS.getTsconfig(src);\n const matcher = createMatcher(config);\n\n options = { ...options, config };\n const iterator = new Iterator(src);\n iterator.forEach(\n (entry, cb) => {\n if (!entry.stats.isFile()) return cb();\n if (!matcher(entry.fullPath)) return cb();\n transformFile(entry.fullPath, path.dirname(path.join(dest, entry.path)), type, options, cb);\n },\n { callbacks: true, concurrency: options.concurrency || 1024 },\n callback\n );\n}\n\n/**\n * @param {string} src The source directory to traverse.\n * @param {string} dest The output directory to write files to.\n * @param {string} type The type of transform ('esm' or 'cjs').\n * @param {{sourceMaps: boolean}} options Options to pass to swc.\n * @param {(err?: Error) =>} [callback] Optional callback. Uses promise if callback not provided.\n * @returns {void | Promise<any>} Optional promise if callback not provided.\n */\nexport default function transformDirectory(src, dest, type, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = null;\n }\n options = options || {};\n\n if (typeof callback === 'function') return transformDirectoryCallback(src, dest, type, options, callback);\n return new Promise((resolve, reject) => {\n transformDirectoryCallback(src, dest, type, options, function compileCallback(err, result) {\n err ? reject(err) : resolve(result);\n });\n });\n}\n"],"names":["transformDirectory","transformDirectoryCallback","src","dest","type","options","callback","Error","config","confg","getTS","getTsconfig","matcher","createMatcher","iterator","Iterator","forEach","entry","cb","stats","isFile","fullPath","transformFile","path","dirname","join","callbacks","concurrency","Promise","resolve","reject","compileCallback","err","result"],"mappings":";;;;+BAkCA;;;;;;;CAOC,GACD;;;eAAwBA;;;2DA1CP;iEACI;wEACH;oEAEQ;oEACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE1B,SAASC,2BAA2BC,GAAG,EAAEC,IAAI,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IACpE,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU,CAAC;IACb;IACAA,UAAUA,WAAW,CAAC;IAEtB,IAAI,OAAOH,QAAQ,UAAU,MAAM,IAAIK,MAAM;IAC7C,IAAI,OAAOJ,SAAS,UAAU,MAAM,IAAII,MAAM;IAC9C,IAAI,OAAOH,SAAS,UAAU,MAAM,IAAIG,MAAM;IAE9C,IAAMC,SAASH,QAAQI,KAAK,GAAGJ,QAAQI,KAAK,GAAGC,0BAAK,CAACC,WAAW,CAACT;IACjE,IAAMU,UAAUC,IAAAA,sBAAa,EAACL;IAE9BH,UAAU,wCAAKA;QAASG,QAAAA;;IACxB,IAAMM,WAAW,IAAIC,mBAAQ,CAACb;IAC9BY,SAASE,OAAO,CACd,SAACC,OAAOC;QACN,IAAI,CAACD,MAAME,KAAK,CAACC,MAAM,IAAI,OAAOF;QAClC,IAAI,CAACN,QAAQK,MAAMI,QAAQ,GAAG,OAAOH;QACrCI,IAAAA,sBAAa,EAACL,MAAMI,QAAQ,EAAEE,aAAI,CAACC,OAAO,CAACD,aAAI,CAACE,IAAI,CAACtB,MAAMc,MAAMM,IAAI,IAAInB,MAAMC,SAASa;IAC1F,GACA;QAAEQ,WAAW;QAAMC,aAAatB,QAAQsB,WAAW,IAAI;IAAK,GAC5DrB;AAEJ;AAUe,SAASN,mBAAmBE,GAAG,EAAEC,IAAI,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IAC3E,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU;IACZ;IACAA,UAAUA,WAAW,CAAC;IAEtB,IAAI,OAAOC,aAAa,YAAY,OAAOL,2BAA2BC,KAAKC,MAAMC,MAAMC,SAASC;IAChG,OAAO,IAAIsB,QAAQ,SAACC,SAASC;QAC3B7B,2BAA2BC,KAAKC,MAAMC,MAAMC,SAAS,SAAS0B,gBAAgBC,GAAG,EAAEC,MAAM;YACvFD,MAAMF,OAAOE,OAAOH,QAAQI;QAC9B;IACF;AACF"}
@@ -7,7 +7,7 @@ Object.defineProperty(exports, /**
7
7
  * @param {string} dest The output directory to write the file to.
8
8
  * @param {string} type The type of transform ('esm' or 'cjs').
9
9
  * @param {{sourceMaps: boolean}} options Options to pass to swc.
10
- * @param {(err?: Error, destFilePath: string) =>} [callback] Optional callback returing the path to the transformed file. Uses promise if callback not provided.
10
+ * @param {(err: Error | null, destFilePath: string) =>} [callback] Optional callback returing the path to the transformed file. Uses promise if callback not provided.
11
11
  * @returns {void | Promise<string>} Optional promise returing the path to the transformed file if callback not provided.
12
12
  */ "default", {
13
13
  enumerable: true,
@@ -101,12 +101,13 @@ function makeReplacements(code, regex, extensions, extension) {
101
101
  return code;
102
102
  }
103
103
  // https://github.com/vercel/next.js/blob/20b63e13ab2631d6043277895d373aa31a1b327c/packages/next/taskfile-swc.js#L118-L125
104
- var interopClientDefaultExport = "/* CJS INTEROP */ if (exports.__esModule && exports.default) { if(typeof exports.default === 'object') Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { if (key !== 'default') exports.default[key] = exports[key]; }; module.exports = exports.default; }";
104
+ var interopClientDefaultExport = "/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; }; module.exports = exports.default; } catch (_) {} }";
105
105
  function transformFileCallback(src, dest, type, options, callback) {
106
106
  if (typeof options === 'function') {
107
107
  callback = options;
108
108
  options = {};
109
109
  }
110
+ options = options || {};
110
111
  if (typeof src !== 'string') throw new Error('transformFile: unexpected source');
111
112
  if (typeof dest !== 'string') throw new Error('transformFile: unexpected destination directory');
112
113
  if (typeof type !== 'string') throw new Error('transformFile: unexpected type');
@@ -114,8 +115,7 @@ function transformFileCallback(src, dest, type, options, callback) {
114
115
  if (err) return callback(err);
115
116
  callback = (0, _calloncefn.default)(callback);
116
117
  try {
117
- var cwd = options.cwd || process.cwd();
118
- var config = options.confg ? options.confg : _gettsconfigcompat.default.getTsconfig(_path.default.resolve(cwd, 'tsconfig.json'));
118
+ var config = options.confg ? options.confg : _gettsconfigcompat.default.getTsconfig(src);
119
119
  // overrides for cjs
120
120
  if (type === 'cjs') {
121
121
  config = _object_spread({}, config);
@@ -165,4 +165,4 @@ function transformFile(src, dest, type, options, callback) {
165
165
  });
166
166
  });
167
167
  }
168
- /* CJS INTEROP */ if (exports.__esModule && exports.default) { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) exports.default[key] = exports[key]; module.exports = exports.default; }
168
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; }; module.exports = exports.default; } catch (_) {} }
@@ -1 +1 @@
1
- {"version":3,"sources":["transformFile.mjs"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport once from 'call-once-fn';\nimport getTS from 'get-tsconfig-compat';\nimport mkdirp from 'mkdirp';\nimport Queue from 'queue-cb';\n\nimport regexDependencies from './lib/regexDependencies.mjs';\nimport transformSync from './transformSync.cjs';\n\nconst regexESM = regexDependencies(true);\nconst regexCJS = regexDependencies();\n\nconst importReplaceMJS = ['.js', '.ts', '.tsx', '.mts', '.mjs'];\nconst importReplaceCJS = ['.cts'];\nconst requireReplaceJS = ['.mjs', '.cjs', '.ts', '.tsx', '.mts', '.cts'];\n\nfunction makeReplacements(code, regex, extensions, extension) {\n let matches = [];\n let match = regex.exec(code);\n while (match) {\n const dependency = match[1] || match[2] || match[3] || match[4];\n const ext = extensions.find((x) => dependency.slice(-x.length) === x);\n if (ext) matches.push({ ext, match, dependency });\n match = regex.exec(code);\n }\n\n matches = matches.reverse();\n for (const index in matches) {\n const match = matches[index];\n const start = match.match.index + match.match[0].indexOf(match.dependency) + match.dependency.indexOf(match.ext);\n code = code.substring(0, start) + extension + code.substring(start + match.ext.length);\n }\n return code;\n}\n\n// https://github.com/vercel/next.js/blob/20b63e13ab2631d6043277895d373aa31a1b327c/packages/next/taskfile-swc.js#L118-L125\nconst interopClientDefaultExport =\n \"/* CJS INTEROP */ if (exports.__esModule && exports.default) { if(typeof exports.default === 'object') Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { if (key !== 'default') exports.default[key] = exports[key]; }; module.exports = exports.default; }\";\n\nfunction transformFileCallback(src, dest, type, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (typeof src !== 'string') throw new Error('transformFile: unexpected source');\n if (typeof dest !== 'string') throw new Error('transformFile: unexpected destination directory');\n if (typeof type !== 'string') throw new Error('transformFile: unexpected type');\n\n fs.readFile(src, 'utf8', (err, contents) => {\n if (err) return callback(err);\n callback = once(callback);\n\n try {\n const cwd = options.cwd || process.cwd();\n let config = options.confg ? options.confg : getTS.getTsconfig(path.resolve(cwd, 'tsconfig.json'));\n\n // overrides for cjs\n if (type === 'cjs') {\n config = { ...config };\n config.config = { ...(config.config || {}) };\n config.config.compilerOptions = { ...(config.config.compilerOptions || {}) };\n config.config.compilerOptions.module = 'CommonJS';\n config.config.compilerOptions.target = 'ES5';\n }\n\n const basename = path.basename(src);\n const output = transformSync(contents, basename, config);\n\n // infer extension and patch .mjs imports\n let ext = path.extname(basename);\n if (type === 'esm') {\n ext = importReplaceMJS.indexOf(ext) >= 0 ? '.mjs' : ext;\n output.code = makeReplacements(output.code, regexESM, importReplaceMJS, '.mjs');\n ext = importReplaceCJS.indexOf(ext) >= 0 ? '.cjs' : ext;\n output.code = makeReplacements(output.code, regexESM, importReplaceCJS, '.cjs');\n } else {\n ext = requireReplaceJS.indexOf(ext) >= 0 ? '.js' : ext;\n output.code = makeReplacements(output.code, regexCJS, requireReplaceJS, '.js');\n output.code += interopClientDefaultExport;\n }\n const destFilePath = path.join(dest, basename.replace(/\\.[^/.]+$/, '') + ext);\n\n mkdirp(path.dirname(destFilePath), () => {\n const queue = new Queue();\n queue.defer(fs.writeFile.bind(null, destFilePath, output.code, 'utf8'));\n !options.sourceMaps || queue.defer(fs.writeFile.bind(null, `${destFilePath}.map`, output.map, 'utf8'));\n queue.await(() => (err ? callback(err) : callback(null, destFilePath)));\n });\n } catch (err) {\n callback(err);\n }\n });\n}\n\n/**\n * @param {string} src The source directory to traverse.\n * @param {string} dest The output directory to write the file to.\n * @param {string} type The type of transform ('esm' or 'cjs').\n * @param {{sourceMaps: boolean}} options Options to pass to swc.\n * @param {(err?: Error, destFilePath: string) =>} [callback] Optional callback returing the path to the transformed file. Uses promise if callback not provided.\n * @returns {void | Promise<string>} Optional promise returing the path to the transformed file if callback not provided.\n */\nexport default function transformFile(src, dest, type, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = null;\n }\n options = options || {};\n\n if (typeof callback === 'function') return transformFileCallback(src, dest, type, options, callback);\n return new Promise((resolve, reject) => {\n transformFileCallback(src, dest, type, options, function compileCallback(err, result) {\n err ? reject(err) : resolve(result);\n });\n });\n}\n"],"names":["transformFile","regexESM","regexDependencies","regexCJS","importReplaceMJS","importReplaceCJS","requireReplaceJS","makeReplacements","code","regex","extensions","extension","dependency","match","ext","find","x","slice","length","matches","push","exec","reverse","index","start","indexOf","substring","interopClientDefaultExport","transformFileCallback","src","dest","type","options","callback","Error","fs","readFile","err","contents","once","cwd","process","config","confg","getTS","getTsconfig","path","resolve","compilerOptions","module","target","basename","output","transformSync","extname","destFilePath","join","replace","mkdirp","dirname","queue","Queue","defer","writeFile","bind","sourceMaps","map","await","Promise","reject","compileCallback","result"],"mappings":"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"}
1
+ {"version":3,"sources":["transformFile.mjs"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport once from 'call-once-fn';\nimport getTS from 'get-tsconfig-compat';\nimport mkdirp from 'mkdirp';\nimport Queue from 'queue-cb';\n\nimport regexDependencies from './lib/regexDependencies.mjs';\nimport transformSync from './transformSync.cjs';\n\nconst regexESM = regexDependencies(true);\nconst regexCJS = regexDependencies();\n\nconst importReplaceMJS = ['.js', '.ts', '.tsx', '.mts', '.mjs'];\nconst importReplaceCJS = ['.cts'];\nconst requireReplaceJS = ['.mjs', '.cjs', '.ts', '.tsx', '.mts', '.cts'];\n\nfunction makeReplacements(code, regex, extensions, extension) {\n let matches = [];\n let match = regex.exec(code);\n while (match) {\n const dependency = match[1] || match[2] || match[3] || match[4];\n const ext = extensions.find((x) => dependency.slice(-x.length) === x);\n if (ext) matches.push({ ext, match, dependency });\n match = regex.exec(code);\n }\n\n matches = matches.reverse();\n for (const index in matches) {\n const match = matches[index];\n const start = match.match.index + match.match[0].indexOf(match.dependency) + match.dependency.indexOf(match.ext);\n code = code.substring(0, start) + extension + code.substring(start + match.ext.length);\n }\n return code;\n}\n\n// https://github.com/vercel/next.js/blob/20b63e13ab2631d6043277895d373aa31a1b327c/packages/next/taskfile-swc.js#L118-L125\nconst interopClientDefaultExport = \"/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; }; module.exports = exports.default; } catch (_) {} }\";\n\nfunction transformFileCallback(src, dest, type, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n if (typeof src !== 'string') throw new Error('transformFile: unexpected source');\n if (typeof dest !== 'string') throw new Error('transformFile: unexpected destination directory');\n if (typeof type !== 'string') throw new Error('transformFile: unexpected type');\n\n fs.readFile(src, 'utf8', (err, contents) => {\n if (err) return callback(err);\n callback = once(callback);\n\n try {\n let config = options.confg ? options.confg : getTS.getTsconfig(src);\n\n // overrides for cjs\n if (type === 'cjs') {\n config = { ...config };\n config.config = { ...(config.config || {}) };\n config.config.compilerOptions = { ...(config.config.compilerOptions || {}) };\n config.config.compilerOptions.module = 'CommonJS';\n config.config.compilerOptions.target = 'ES5';\n }\n\n const basename = path.basename(src);\n const output = transformSync(contents, basename, config);\n\n // infer extension and patch .mjs imports\n let ext = path.extname(basename);\n if (type === 'esm') {\n ext = importReplaceMJS.indexOf(ext) >= 0 ? '.mjs' : ext;\n output.code = makeReplacements(output.code, regexESM, importReplaceMJS, '.mjs');\n ext = importReplaceCJS.indexOf(ext) >= 0 ? '.cjs' : ext;\n output.code = makeReplacements(output.code, regexESM, importReplaceCJS, '.cjs');\n } else {\n ext = requireReplaceJS.indexOf(ext) >= 0 ? '.js' : ext;\n output.code = makeReplacements(output.code, regexCJS, requireReplaceJS, '.js');\n output.code += interopClientDefaultExport;\n }\n const destFilePath = path.join(dest, basename.replace(/\\.[^/.]+$/, '') + ext);\n\n mkdirp(path.dirname(destFilePath), () => {\n const queue = new Queue();\n queue.defer(fs.writeFile.bind(null, destFilePath, output.code, 'utf8'));\n !options.sourceMaps || queue.defer(fs.writeFile.bind(null, `${destFilePath}.map`, output.map, 'utf8'));\n queue.await(() => (err ? callback(err) : callback(null, destFilePath)));\n });\n } catch (err) {\n callback(err);\n }\n });\n}\n\n/**\n * @param {string} src The source directory to traverse.\n * @param {string} dest The output directory to write the file to.\n * @param {string} type The type of transform ('esm' or 'cjs').\n * @param {{sourceMaps: boolean}} options Options to pass to swc.\n * @param {(err: Error | null, destFilePath: string) =>} [callback] Optional callback returing the path to the transformed file. Uses promise if callback not provided.\n * @returns {void | Promise<string>} Optional promise returing the path to the transformed file if callback not provided.\n */\nexport default function transformFile(src, dest, type, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = null;\n }\n options = options || {};\n\n if (typeof callback === 'function') return transformFileCallback(src, dest, type, options, callback);\n return new Promise((resolve, reject) => {\n transformFileCallback(src, dest, type, options, function compileCallback(err, result) {\n err ? reject(err) : resolve(result);\n });\n });\n}\n"],"names":["transformFile","regexESM","regexDependencies","regexCJS","importReplaceMJS","importReplaceCJS","requireReplaceJS","makeReplacements","code","regex","extensions","extension","dependency","match","ext","find","x","slice","length","matches","push","exec","reverse","index","start","indexOf","substring","interopClientDefaultExport","transformFileCallback","src","dest","type","options","callback","Error","fs","readFile","err","contents","once","config","confg","getTS","getTsconfig","compilerOptions","module","target","basename","path","output","transformSync","extname","destFilePath","join","replace","mkdirp","dirname","queue","Queue","defer","writeFile","bind","sourceMaps","map","await","Promise","resolve","reject","compileCallback","result"],"mappings":"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"}
@@ -12,4 +12,4 @@ var call = null; // break dependencies
12
12
  if (!call) call = require('node-version-call'); // break dependencies
13
13
  return call(version, worker, contents, fileName, config);
14
14
  };
15
- /* CJS INTEROP */ if (exports.__esModule && exports.default) { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) exports.default[key] = exports[key]; module.exports = exports.default; }
15
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; }; module.exports = exports.default; } catch (_) {} }
@@ -21,4 +21,4 @@ module.exports = function transformSync(contents, fileName, config) {
21
21
  map: res.sourceMapText
22
22
  };
23
23
  };
24
- /* CJS INTEROP */ if (exports.__esModule && exports.default) { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) exports.default[key] = exports[key]; module.exports = exports.default; }
24
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; }; module.exports = exports.default; } catch (_) {} }
@@ -8,11 +8,11 @@ function transformDirectoryCallback(src, dest, type, options, callback) {
8
8
  callback = options;
9
9
  options = {};
10
10
  }
11
+ options = options || {};
11
12
  if (typeof src !== 'string') throw new Error('transformDirectory: unexpected source');
12
13
  if (typeof dest !== 'string') throw new Error('transformDirectory: unexpected destination directory');
13
14
  if (typeof type !== 'string') throw new Error('transformDirectory: unexpected type');
14
- const cwd = options.cwd || process.cwd();
15
- const config = options.confg ? options.confg : getTS.getTsconfig(path.resolve(cwd, 'tsconfig.json'));
15
+ const config = options.confg ? options.confg : getTS.getTsconfig(src);
16
16
  const matcher = createMatcher(config);
17
17
  options = {
18
18
  ...options,
@@ -1 +1 @@
1
- {"version":3,"sources":["transformDirectory.mjs"],"sourcesContent":["import path from 'path';\nimport Iterator from 'fs-iterator';\nimport getTS from 'get-tsconfig-compat';\n\nimport createMatcher from './createMatcher.mjs';\nimport transformFile from './transformFile.mjs';\n\nfunction transformDirectoryCallback(src, dest, type, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (typeof src !== 'string') throw new Error('transformDirectory: unexpected source');\n if (typeof dest !== 'string') throw new Error('transformDirectory: unexpected destination directory');\n if (typeof type !== 'string') throw new Error('transformDirectory: unexpected type');\n\n const cwd = options.cwd || process.cwd();\n const config = options.confg ? options.confg : getTS.getTsconfig(path.resolve(cwd, 'tsconfig.json'));\n const matcher = createMatcher(config);\n\n options = { ...options, config };\n const iterator = new Iterator(src);\n iterator.forEach(\n (entry, cb) => {\n if (!entry.stats.isFile()) return cb();\n if (!matcher(entry.fullPath)) return cb();\n transformFile(entry.fullPath, path.dirname(path.join(dest, entry.path)), type, options, cb);\n },\n { callbacks: true, concurrency: options.concurrency || 1024 },\n callback\n );\n}\n\n/**\n * @param {string} src The source directory to traverse.\n * @param {string} dest The output directory to write files to.\n * @param {string} type The type of transform ('esm' or 'cjs').\n * @param {{sourceMaps: boolean}} options Options to pass to swc.\n * @param {(err?: Error) =>} [callback] Optional callback. Uses promise if callback not provided.\n * @returns {void | Promise<any>} Optional promise if callback not provided.\n */\nexport default function transformDirectory(src, dest, type, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = null;\n }\n options = options || {};\n\n if (typeof callback === 'function') return transformDirectoryCallback(src, dest, type, options, callback);\n return new Promise((resolve, reject) => {\n transformDirectoryCallback(src, dest, type, options, function compileCallback(err, result) {\n err ? reject(err) : resolve(result);\n });\n });\n}\n"],"names":["path","Iterator","getTS","createMatcher","transformFile","transformDirectoryCallback","src","dest","type","options","callback","Error","cwd","process","config","confg","getTsconfig","resolve","matcher","iterator","forEach","entry","cb","stats","isFile","fullPath","dirname","join","callbacks","concurrency","transformDirectory","Promise","reject","compileCallback","err","result"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,cAAc,cAAc;AACnC,OAAOC,WAAW,sBAAsB;AAExC,OAAOC,mBAAmB,sBAAsB;AAChD,OAAOC,mBAAmB,sBAAsB;AAEhD,SAASC,2BAA2BC,GAAG,EAAEC,IAAI,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IACpE,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU,CAAC;IACb;IACA,IAAI,OAAOH,QAAQ,UAAU,MAAM,IAAIK,MAAM;IAC7C,IAAI,OAAOJ,SAAS,UAAU,MAAM,IAAII,MAAM;IAC9C,IAAI,OAAOH,SAAS,UAAU,MAAM,IAAIG,MAAM;IAE9C,MAAMC,MAAMH,QAAQG,GAAG,IAAIC,QAAQD,GAAG;IACtC,MAAME,SAASL,QAAQM,KAAK,GAAGN,QAAQM,KAAK,GAAGb,MAAMc,WAAW,CAAChB,KAAKiB,OAAO,CAACL,KAAK;IACnF,MAAMM,UAAUf,cAAcW;IAE9BL,UAAU;QAAE,GAAGA,OAAO;QAAEK;IAAO;IAC/B,MAAMK,WAAW,IAAIlB,SAASK;IAC9Ba,SAASC,OAAO,CACd,CAACC,OAAOC;QACN,IAAI,CAACD,MAAME,KAAK,CAACC,MAAM,IAAI,OAAOF;QAClC,IAAI,CAACJ,QAAQG,MAAMI,QAAQ,GAAG,OAAOH;QACrClB,cAAciB,MAAMI,QAAQ,EAAEzB,KAAK0B,OAAO,CAAC1B,KAAK2B,IAAI,CAACpB,MAAMc,MAAMrB,IAAI,IAAIQ,MAAMC,SAASa;IAC1F,GACA;QAAEM,WAAW;QAAMC,aAAapB,QAAQoB,WAAW,IAAI;IAAK,GAC5DnB;AAEJ;AAEA;;;;;;;CAOC,GACD,eAAe,SAASoB,mBAAmBxB,GAAG,EAAEC,IAAI,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IAC3E,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU;IACZ;IACAA,UAAUA,WAAW,CAAC;IAEtB,IAAI,OAAOC,aAAa,YAAY,OAAOL,2BAA2BC,KAAKC,MAAMC,MAAMC,SAASC;IAChG,OAAO,IAAIqB,QAAQ,CAACd,SAASe;QAC3B3B,2BAA2BC,KAAKC,MAAMC,MAAMC,SAAS,SAASwB,gBAAgBC,GAAG,EAAEC,MAAM;YACvFD,MAAMF,OAAOE,OAAOjB,QAAQkB;QAC9B;IACF;AACF"}
1
+ {"version":3,"sources":["transformDirectory.mjs"],"sourcesContent":["import path from 'path';\nimport Iterator from 'fs-iterator';\nimport getTS from 'get-tsconfig-compat';\n\nimport createMatcher from './createMatcher.mjs';\nimport transformFile from './transformFile.mjs';\n\nfunction transformDirectoryCallback(src, dest, type, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n if (typeof src !== 'string') throw new Error('transformDirectory: unexpected source');\n if (typeof dest !== 'string') throw new Error('transformDirectory: unexpected destination directory');\n if (typeof type !== 'string') throw new Error('transformDirectory: unexpected type');\n\n const config = options.confg ? options.confg : getTS.getTsconfig(src);\n const matcher = createMatcher(config);\n\n options = { ...options, config };\n const iterator = new Iterator(src);\n iterator.forEach(\n (entry, cb) => {\n if (!entry.stats.isFile()) return cb();\n if (!matcher(entry.fullPath)) return cb();\n transformFile(entry.fullPath, path.dirname(path.join(dest, entry.path)), type, options, cb);\n },\n { callbacks: true, concurrency: options.concurrency || 1024 },\n callback\n );\n}\n\n/**\n * @param {string} src The source directory to traverse.\n * @param {string} dest The output directory to write files to.\n * @param {string} type The type of transform ('esm' or 'cjs').\n * @param {{sourceMaps: boolean}} options Options to pass to swc.\n * @param {(err?: Error) =>} [callback] Optional callback. Uses promise if callback not provided.\n * @returns {void | Promise<any>} Optional promise if callback not provided.\n */\nexport default function transformDirectory(src, dest, type, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = null;\n }\n options = options || {};\n\n if (typeof callback === 'function') return transformDirectoryCallback(src, dest, type, options, callback);\n return new Promise((resolve, reject) => {\n transformDirectoryCallback(src, dest, type, options, function compileCallback(err, result) {\n err ? reject(err) : resolve(result);\n });\n });\n}\n"],"names":["path","Iterator","getTS","createMatcher","transformFile","transformDirectoryCallback","src","dest","type","options","callback","Error","config","confg","getTsconfig","matcher","iterator","forEach","entry","cb","stats","isFile","fullPath","dirname","join","callbacks","concurrency","transformDirectory","Promise","resolve","reject","compileCallback","err","result"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,cAAc,cAAc;AACnC,OAAOC,WAAW,sBAAsB;AAExC,OAAOC,mBAAmB,sBAAsB;AAChD,OAAOC,mBAAmB,sBAAsB;AAEhD,SAASC,2BAA2BC,GAAG,EAAEC,IAAI,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IACpE,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU,CAAC;IACb;IACAA,UAAUA,WAAW,CAAC;IAEtB,IAAI,OAAOH,QAAQ,UAAU,MAAM,IAAIK,MAAM;IAC7C,IAAI,OAAOJ,SAAS,UAAU,MAAM,IAAII,MAAM;IAC9C,IAAI,OAAOH,SAAS,UAAU,MAAM,IAAIG,MAAM;IAE9C,MAAMC,SAASH,QAAQI,KAAK,GAAGJ,QAAQI,KAAK,GAAGX,MAAMY,WAAW,CAACR;IACjE,MAAMS,UAAUZ,cAAcS;IAE9BH,UAAU;QAAE,GAAGA,OAAO;QAAEG;IAAO;IAC/B,MAAMI,WAAW,IAAIf,SAASK;IAC9BU,SAASC,OAAO,CACd,CAACC,OAAOC;QACN,IAAI,CAACD,MAAME,KAAK,CAACC,MAAM,IAAI,OAAOF;QAClC,IAAI,CAACJ,QAAQG,MAAMI,QAAQ,GAAG,OAAOH;QACrCf,cAAcc,MAAMI,QAAQ,EAAEtB,KAAKuB,OAAO,CAACvB,KAAKwB,IAAI,CAACjB,MAAMW,MAAMlB,IAAI,IAAIQ,MAAMC,SAASU;IAC1F,GACA;QAAEM,WAAW;QAAMC,aAAajB,QAAQiB,WAAW,IAAI;IAAK,GAC5DhB;AAEJ;AAEA;;;;;;;CAOC,GACD,eAAe,SAASiB,mBAAmBrB,GAAG,EAAEC,IAAI,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IAC3E,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU;IACZ;IACAA,UAAUA,WAAW,CAAC;IAEtB,IAAI,OAAOC,aAAa,YAAY,OAAOL,2BAA2BC,KAAKC,MAAMC,MAAMC,SAASC;IAChG,OAAO,IAAIkB,QAAQ,CAACC,SAASC;QAC3BzB,2BAA2BC,KAAKC,MAAMC,MAAMC,SAAS,SAASsB,gBAAgBC,GAAG,EAAEC,MAAM;YACvFD,MAAMF,OAAOE,OAAOH,QAAQI;QAC9B;IACF;AACF"}
@@ -48,12 +48,13 @@ function makeReplacements(code, regex, extensions, extension) {
48
48
  return code;
49
49
  }
50
50
  // https://github.com/vercel/next.js/blob/20b63e13ab2631d6043277895d373aa31a1b327c/packages/next/taskfile-swc.js#L118-L125
51
- const interopClientDefaultExport = "/* CJS INTEROP */ if (exports.__esModule && exports.default) { if(typeof exports.default === 'object') Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { if (key !== 'default') exports.default[key] = exports[key]; }; module.exports = exports.default; }";
51
+ const interopClientDefaultExport = "/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; }; module.exports = exports.default; } catch (_) {} }";
52
52
  function transformFileCallback(src, dest, type, options, callback) {
53
53
  if (typeof options === 'function') {
54
54
  callback = options;
55
55
  options = {};
56
56
  }
57
+ options = options || {};
57
58
  if (typeof src !== 'string') throw new Error('transformFile: unexpected source');
58
59
  if (typeof dest !== 'string') throw new Error('transformFile: unexpected destination directory');
59
60
  if (typeof type !== 'string') throw new Error('transformFile: unexpected type');
@@ -61,8 +62,7 @@ function transformFileCallback(src, dest, type, options, callback) {
61
62
  if (err) return callback(err);
62
63
  callback = once(callback);
63
64
  try {
64
- const cwd = options.cwd || process.cwd();
65
- let config = options.confg ? options.confg : getTS.getTsconfig(path.resolve(cwd, 'tsconfig.json'));
65
+ let config = options.confg ? options.confg : getTS.getTsconfig(src);
66
66
  // overrides for cjs
67
67
  if (type === 'cjs') {
68
68
  config = {
@@ -108,7 +108,7 @@ function transformFileCallback(src, dest, type, options, callback) {
108
108
  * @param {string} dest The output directory to write the file to.
109
109
  * @param {string} type The type of transform ('esm' or 'cjs').
110
110
  * @param {{sourceMaps: boolean}} options Options to pass to swc.
111
- * @param {(err?: Error, destFilePath: string) =>} [callback] Optional callback returing the path to the transformed file. Uses promise if callback not provided.
111
+ * @param {(err: Error | null, destFilePath: string) =>} [callback] Optional callback returing the path to the transformed file. Uses promise if callback not provided.
112
112
  * @returns {void | Promise<string>} Optional promise returing the path to the transformed file if callback not provided.
113
113
  */ export default function transformFile(src, dest, type, options, callback) {
114
114
  if (typeof options === 'function') {
@@ -1 +1 @@
1
- {"version":3,"sources":["transformFile.mjs"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport once from 'call-once-fn';\nimport getTS from 'get-tsconfig-compat';\nimport mkdirp from 'mkdirp';\nimport Queue from 'queue-cb';\n\nimport regexDependencies from './lib/regexDependencies.mjs';\nimport transformSync from './transformSync.cjs';\n\nconst regexESM = regexDependencies(true);\nconst regexCJS = regexDependencies();\n\nconst importReplaceMJS = ['.js', '.ts', '.tsx', '.mts', '.mjs'];\nconst importReplaceCJS = ['.cts'];\nconst requireReplaceJS = ['.mjs', '.cjs', '.ts', '.tsx', '.mts', '.cts'];\n\nfunction makeReplacements(code, regex, extensions, extension) {\n let matches = [];\n let match = regex.exec(code);\n while (match) {\n const dependency = match[1] || match[2] || match[3] || match[4];\n const ext = extensions.find((x) => dependency.slice(-x.length) === x);\n if (ext) matches.push({ ext, match, dependency });\n match = regex.exec(code);\n }\n\n matches = matches.reverse();\n for (const index in matches) {\n const match = matches[index];\n const start = match.match.index + match.match[0].indexOf(match.dependency) + match.dependency.indexOf(match.ext);\n code = code.substring(0, start) + extension + code.substring(start + match.ext.length);\n }\n return code;\n}\n\n// https://github.com/vercel/next.js/blob/20b63e13ab2631d6043277895d373aa31a1b327c/packages/next/taskfile-swc.js#L118-L125\nconst interopClientDefaultExport =\n \"/* CJS INTEROP */ if (exports.__esModule && exports.default) { if(typeof exports.default === 'object') Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { if (key !== 'default') exports.default[key] = exports[key]; }; module.exports = exports.default; }\";\n\nfunction transformFileCallback(src, dest, type, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (typeof src !== 'string') throw new Error('transformFile: unexpected source');\n if (typeof dest !== 'string') throw new Error('transformFile: unexpected destination directory');\n if (typeof type !== 'string') throw new Error('transformFile: unexpected type');\n\n fs.readFile(src, 'utf8', (err, contents) => {\n if (err) return callback(err);\n callback = once(callback);\n\n try {\n const cwd = options.cwd || process.cwd();\n let config = options.confg ? options.confg : getTS.getTsconfig(path.resolve(cwd, 'tsconfig.json'));\n\n // overrides for cjs\n if (type === 'cjs') {\n config = { ...config };\n config.config = { ...(config.config || {}) };\n config.config.compilerOptions = { ...(config.config.compilerOptions || {}) };\n config.config.compilerOptions.module = 'CommonJS';\n config.config.compilerOptions.target = 'ES5';\n }\n\n const basename = path.basename(src);\n const output = transformSync(contents, basename, config);\n\n // infer extension and patch .mjs imports\n let ext = path.extname(basename);\n if (type === 'esm') {\n ext = importReplaceMJS.indexOf(ext) >= 0 ? '.mjs' : ext;\n output.code = makeReplacements(output.code, regexESM, importReplaceMJS, '.mjs');\n ext = importReplaceCJS.indexOf(ext) >= 0 ? '.cjs' : ext;\n output.code = makeReplacements(output.code, regexESM, importReplaceCJS, '.cjs');\n } else {\n ext = requireReplaceJS.indexOf(ext) >= 0 ? '.js' : ext;\n output.code = makeReplacements(output.code, regexCJS, requireReplaceJS, '.js');\n output.code += interopClientDefaultExport;\n }\n const destFilePath = path.join(dest, basename.replace(/\\.[^/.]+$/, '') + ext);\n\n mkdirp(path.dirname(destFilePath), () => {\n const queue = new Queue();\n queue.defer(fs.writeFile.bind(null, destFilePath, output.code, 'utf8'));\n !options.sourceMaps || queue.defer(fs.writeFile.bind(null, `${destFilePath}.map`, output.map, 'utf8'));\n queue.await(() => (err ? callback(err) : callback(null, destFilePath)));\n });\n } catch (err) {\n callback(err);\n }\n });\n}\n\n/**\n * @param {string} src The source directory to traverse.\n * @param {string} dest The output directory to write the file to.\n * @param {string} type The type of transform ('esm' or 'cjs').\n * @param {{sourceMaps: boolean}} options Options to pass to swc.\n * @param {(err?: Error, destFilePath: string) =>} [callback] Optional callback returing the path to the transformed file. Uses promise if callback not provided.\n * @returns {void | Promise<string>} Optional promise returing the path to the transformed file if callback not provided.\n */\nexport default function transformFile(src, dest, type, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = null;\n }\n options = options || {};\n\n if (typeof callback === 'function') return transformFileCallback(src, dest, type, options, callback);\n return new Promise((resolve, reject) => {\n transformFileCallback(src, dest, type, options, function compileCallback(err, result) {\n err ? reject(err) : resolve(result);\n });\n });\n}\n"],"names":["fs","path","once","getTS","mkdirp","Queue","regexDependencies","transformSync","regexESM","regexCJS","importReplaceMJS","importReplaceCJS","requireReplaceJS","makeReplacements","code","regex","extensions","extension","matches","match","exec","dependency","ext","find","x","slice","length","push","reverse","index","start","indexOf","substring","interopClientDefaultExport","transformFileCallback","src","dest","type","options","callback","Error","readFile","err","contents","cwd","process","config","confg","getTsconfig","resolve","compilerOptions","module","target","basename","output","extname","destFilePath","join","replace","dirname","queue","defer","writeFile","bind","sourceMaps","map","await","transformFile","Promise","reject","compileCallback","result"],"mappings":"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"}
1
+ {"version":3,"sources":["transformFile.mjs"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport once from 'call-once-fn';\nimport getTS from 'get-tsconfig-compat';\nimport mkdirp from 'mkdirp';\nimport Queue from 'queue-cb';\n\nimport regexDependencies from './lib/regexDependencies.mjs';\nimport transformSync from './transformSync.cjs';\n\nconst regexESM = regexDependencies(true);\nconst regexCJS = regexDependencies();\n\nconst importReplaceMJS = ['.js', '.ts', '.tsx', '.mts', '.mjs'];\nconst importReplaceCJS = ['.cts'];\nconst requireReplaceJS = ['.mjs', '.cjs', '.ts', '.tsx', '.mts', '.cts'];\n\nfunction makeReplacements(code, regex, extensions, extension) {\n let matches = [];\n let match = regex.exec(code);\n while (match) {\n const dependency = match[1] || match[2] || match[3] || match[4];\n const ext = extensions.find((x) => dependency.slice(-x.length) === x);\n if (ext) matches.push({ ext, match, dependency });\n match = regex.exec(code);\n }\n\n matches = matches.reverse();\n for (const index in matches) {\n const match = matches[index];\n const start = match.match.index + match.match[0].indexOf(match.dependency) + match.dependency.indexOf(match.ext);\n code = code.substring(0, start) + extension + code.substring(start + match.ext.length);\n }\n return code;\n}\n\n// https://github.com/vercel/next.js/blob/20b63e13ab2631d6043277895d373aa31a1b327c/packages/next/taskfile-swc.js#L118-L125\nconst interopClientDefaultExport = \"/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; }; module.exports = exports.default; } catch (_) {} }\";\n\nfunction transformFileCallback(src, dest, type, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n if (typeof src !== 'string') throw new Error('transformFile: unexpected source');\n if (typeof dest !== 'string') throw new Error('transformFile: unexpected destination directory');\n if (typeof type !== 'string') throw new Error('transformFile: unexpected type');\n\n fs.readFile(src, 'utf8', (err, contents) => {\n if (err) return callback(err);\n callback = once(callback);\n\n try {\n let config = options.confg ? options.confg : getTS.getTsconfig(src);\n\n // overrides for cjs\n if (type === 'cjs') {\n config = { ...config };\n config.config = { ...(config.config || {}) };\n config.config.compilerOptions = { ...(config.config.compilerOptions || {}) };\n config.config.compilerOptions.module = 'CommonJS';\n config.config.compilerOptions.target = 'ES5';\n }\n\n const basename = path.basename(src);\n const output = transformSync(contents, basename, config);\n\n // infer extension and patch .mjs imports\n let ext = path.extname(basename);\n if (type === 'esm') {\n ext = importReplaceMJS.indexOf(ext) >= 0 ? '.mjs' : ext;\n output.code = makeReplacements(output.code, regexESM, importReplaceMJS, '.mjs');\n ext = importReplaceCJS.indexOf(ext) >= 0 ? '.cjs' : ext;\n output.code = makeReplacements(output.code, regexESM, importReplaceCJS, '.cjs');\n } else {\n ext = requireReplaceJS.indexOf(ext) >= 0 ? '.js' : ext;\n output.code = makeReplacements(output.code, regexCJS, requireReplaceJS, '.js');\n output.code += interopClientDefaultExport;\n }\n const destFilePath = path.join(dest, basename.replace(/\\.[^/.]+$/, '') + ext);\n\n mkdirp(path.dirname(destFilePath), () => {\n const queue = new Queue();\n queue.defer(fs.writeFile.bind(null, destFilePath, output.code, 'utf8'));\n !options.sourceMaps || queue.defer(fs.writeFile.bind(null, `${destFilePath}.map`, output.map, 'utf8'));\n queue.await(() => (err ? callback(err) : callback(null, destFilePath)));\n });\n } catch (err) {\n callback(err);\n }\n });\n}\n\n/**\n * @param {string} src The source directory to traverse.\n * @param {string} dest The output directory to write the file to.\n * @param {string} type The type of transform ('esm' or 'cjs').\n * @param {{sourceMaps: boolean}} options Options to pass to swc.\n * @param {(err: Error | null, destFilePath: string) =>} [callback] Optional callback returing the path to the transformed file. Uses promise if callback not provided.\n * @returns {void | Promise<string>} Optional promise returing the path to the transformed file if callback not provided.\n */\nexport default function transformFile(src, dest, type, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = null;\n }\n options = options || {};\n\n if (typeof callback === 'function') return transformFileCallback(src, dest, type, options, callback);\n return new Promise((resolve, reject) => {\n transformFileCallback(src, dest, type, options, function compileCallback(err, result) {\n err ? reject(err) : resolve(result);\n });\n });\n}\n"],"names":["fs","path","once","getTS","mkdirp","Queue","regexDependencies","transformSync","regexESM","regexCJS","importReplaceMJS","importReplaceCJS","requireReplaceJS","makeReplacements","code","regex","extensions","extension","matches","match","exec","dependency","ext","find","x","slice","length","push","reverse","index","start","indexOf","substring","interopClientDefaultExport","transformFileCallback","src","dest","type","options","callback","Error","readFile","err","contents","config","confg","getTsconfig","compilerOptions","module","target","basename","output","extname","destFilePath","join","replace","dirname","queue","defer","writeFile","bind","sourceMaps","map","await","transformFile","Promise","resolve","reject","compileCallback","result"],"mappings":"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"}
@@ -3,9 +3,9 @@
3
3
  * @param {string} dest The output directory to write the file to.
4
4
  * @param {string} type The type of transform ('esm' or 'cjs').
5
5
  * @param {{sourceMaps: boolean}} options Options to pass to swc.
6
- * @param {(err?: Error, destFilePath: string) =>} [callback] Optional callback returing the path to the transformed file. Uses promise if callback not provided.
6
+ * @param {(err: Error | null, destFilePath: string) =>} [callback] Optional callback returing the path to the transformed file. Uses promise if callback not provided.
7
7
  * @returns {void | Promise<string>} Optional promise returing the path to the transformed file if callback not provided.
8
8
  */
9
9
  export default function transformFile(src: string, dest: string, type: string, options: {
10
10
  sourceMaps: boolean;
11
- }, callback?: (err?: Error, destFilePath: string) => any): void | Promise<string>;
11
+ }, callback?: (err: Error | null, destFilePath: string) => any): void | Promise<string>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-swc-transform",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Typescript transformers for swc. Supports Node >= 0.8",
5
5
  "keywords": [
6
6
  "matcher",
@@ -72,7 +72,7 @@
72
72
  "queue-cb": "^1.2.1",
73
73
  "react": "^18.3.1",
74
74
  "rimraf2": "^2.8.2",
75
- "ts-dev-stack": "^0.17.1",
75
+ "ts-dev-stack": "^0.19.0",
76
76
  "ts-node": "^10.8.2",
77
77
  "typescript": "^5.7.2"
78
78
  },