ts-swc-transform 1.4.2 → 1.5.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.
Files changed (92) hide show
  1. package/dist/cjs/cjs/transformDirectory.js +59 -0
  2. package/dist/cjs/cjs/transformDirectory.js.map +1 -0
  3. package/dist/cjs/cjs/transformFile.js +59 -0
  4. package/dist/cjs/cjs/transformFile.js.map +1 -0
  5. package/dist/cjs/{transformSync.js → cjs/transformSync.js} +6 -7
  6. package/dist/cjs/cjs/transformSync.js.map +1 -0
  7. package/dist/cjs/esm/transformDirectory.js +49 -0
  8. package/dist/cjs/esm/transformDirectory.js.map +1 -0
  9. package/dist/cjs/esm/transformFile.js +49 -0
  10. package/dist/cjs/esm/transformFile.js.map +1 -0
  11. package/dist/cjs/esm/transformSync.js +17 -0
  12. package/dist/cjs/esm/transformSync.js.map +1 -0
  13. package/dist/cjs/index.cjs.js +46 -0
  14. package/dist/cjs/index.cjs.js.map +1 -0
  15. package/dist/cjs/index.js +3 -3
  16. package/dist/cjs/index.js.map +1 -1
  17. package/dist/cjs/lib/existsSync.js +5 -4
  18. package/dist/cjs/lib/existsSync.js.map +1 -1
  19. package/dist/cjs/lib/install-module/index.js +40 -0
  20. package/dist/cjs/lib/install-module/index.js.map +1 -0
  21. package/dist/cjs/lib/install-module/lib/ensureCached.js +114 -0
  22. package/dist/cjs/lib/install-module/lib/ensureCached.js.map +1 -0
  23. package/dist/cjs/lib/install-module/lib/parseInstallString.js +48 -0
  24. package/dist/cjs/lib/install-module/lib/parseInstallString.js.map +1 -0
  25. package/dist/cjs/lib/installBindings.js +3 -80
  26. package/dist/cjs/lib/installBindings.js.map +1 -1
  27. package/dist/cjs/lib/loadSWC.js +9 -2
  28. package/dist/cjs/lib/loadSWC.js.map +1 -1
  29. package/dist/cjs/{transformDirectory.js → workers/transformDirectory.js} +21 -41
  30. package/dist/cjs/workers/transformDirectory.js.map +1 -0
  31. package/dist/cjs/{transformFile.js → workers/transformFile.js} +25 -51
  32. package/dist/cjs/workers/transformFile.js.map +1 -0
  33. package/dist/cjs/workers/transformSync.js +6 -4
  34. package/dist/cjs/workers/transformSync.js.map +1 -1
  35. package/dist/esm/{transformDirectory.mjs → cjs/transformDirectory.mjs} +20 -26
  36. package/dist/esm/cjs/transformDirectory.mjs.map +1 -0
  37. package/dist/esm/cjs/transformFile.mjs +44 -0
  38. package/dist/esm/cjs/transformFile.mjs.map +1 -0
  39. package/dist/esm/{transformSync.mjs → cjs/transformSync.mjs} +6 -8
  40. package/dist/esm/cjs/transformSync.mjs.map +1 -0
  41. package/dist/esm/esm/transformDirectory.mjs +34 -0
  42. package/dist/esm/esm/transformDirectory.mjs.map +1 -0
  43. package/dist/esm/esm/transformFile.mjs +34 -0
  44. package/dist/esm/esm/transformFile.mjs.map +1 -0
  45. package/dist/esm/esm/transformSync.mjs +1 -0
  46. package/dist/esm/esm/transformSync.mjs.map +1 -0
  47. package/dist/esm/index.cjs.mjs +7 -0
  48. package/dist/esm/index.cjs.mjs.map +1 -0
  49. package/dist/esm/index.mjs +3 -3
  50. package/dist/esm/index.mjs.map +1 -1
  51. package/dist/esm/lib/existsSync.mjs +4 -3
  52. package/dist/esm/lib/existsSync.mjs.map +1 -1
  53. package/dist/esm/lib/install-module/index.mjs +24 -0
  54. package/dist/esm/lib/install-module/index.mjs.map +1 -0
  55. package/dist/esm/lib/install-module/lib/ensureCached.mjs +37 -0
  56. package/dist/esm/lib/install-module/lib/ensureCached.mjs.map +1 -0
  57. package/dist/esm/lib/install-module/lib/parseInstallString.mjs +13 -0
  58. package/dist/esm/lib/install-module/lib/parseInstallString.mjs.map +1 -0
  59. package/dist/esm/lib/installBindings.mjs +4 -44
  60. package/dist/esm/lib/installBindings.mjs.map +1 -1
  61. package/dist/esm/lib/loadSWC.mjs +9 -2
  62. package/dist/esm/lib/loadSWC.mjs.map +1 -1
  63. package/dist/esm/workers/transformDirectory.mjs +28 -0
  64. package/dist/esm/workers/transformDirectory.mjs.map +1 -0
  65. package/dist/esm/{transformFile.mjs → workers/transformFile.mjs} +22 -48
  66. package/dist/esm/workers/transformFile.mjs.map +1 -0
  67. package/dist/esm/workers/transformSync.mjs +6 -3
  68. package/dist/esm/workers/transformSync.mjs.map +1 -1
  69. package/dist/types/cjs/transformDirectory.d.ts +9 -0
  70. package/dist/types/cjs/transformFile.d.ts +9 -0
  71. package/dist/types/{transformSync.d.ts → cjs/transformSync.d.ts} +3 -1
  72. package/dist/types/esm/transformFile.d.ts +9 -0
  73. package/dist/types/esm/transformSync.d.ts +1 -0
  74. package/dist/types/index.cjs.d.ts +8 -0
  75. package/dist/types/index.d.ts +3 -3
  76. package/dist/types/lib/existsSync.d.ts +3 -1
  77. package/dist/types/lib/install-module/index.d.ts +1 -0
  78. package/dist/types/lib/install-module/lib/ensureCached.d.ts +2 -0
  79. package/dist/types/lib/install-module/lib/parseInstallString.d.ts +4 -0
  80. package/dist/types/lib/loadSWC.d.ts +2 -1
  81. package/dist/types/workers/transformDirectory.d.ts +1 -0
  82. package/dist/types/workers/transformFile.d.ts +1 -0
  83. package/dist/types/workers/transformSync.d.ts +1 -1
  84. package/package.json +7 -6
  85. package/dist/cjs/transformDirectory.js.map +0 -1
  86. package/dist/cjs/transformFile.js.map +0 -1
  87. package/dist/cjs/transformSync.js.map +0 -1
  88. package/dist/esm/transformDirectory.mjs.map +0 -1
  89. package/dist/esm/transformFile.mjs.map +0 -1
  90. package/dist/esm/transformSync.mjs.map +0 -1
  91. package/dist/types/transformFile.d.ts +0 -9
  92. /package/dist/types/{transformDirectory.d.ts → esm/transformDirectory.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["transformFile.ts"],"sourcesContent":["import path from 'path';\nimport url from 'url';\n\n// @ts-ignore\nimport lazy from '../lib/lazy.cjs';\nimport packageRoot from '../lib/packageRoot.js';\n\nconst __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));\nconst root = packageRoot(__dirname);\nconst worker = path.resolve(root, 'dist', 'cjs', 'workers', 'transformFile.js');\nconst version = 'lts';\nconst call = lazy('node-version-call');\n\nfunction transformFileCallback(src, dest, type, options, callback) {\n try {\n const res = call()({ version, callbacks: true }, worker, src, dest, type, options);\n return callback(null, res);\n } catch (err) {\n return callback(err);\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 transformFile(src, dest, type, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = null;\n }\n options = options || {};\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 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":["path","url","lazy","packageRoot","__dirname","dirname","__filename","fileURLToPath","root","worker","resolve","version","call","transformFileCallback","src","dest","type","options","callback","res","callbacks","err","transformFile","Error","Promise","reject","compileCallback","result"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,SAAS,MAAM;AAEtB,aAAa;AACb,OAAOC,UAAU,kBAAkB;AACnC,OAAOC,iBAAiB,wBAAwB;AAEhD,MAAMC,YAAYJ,KAAKK,OAAO,CAAC,OAAOC,eAAe,cAAcA,aAAaL,IAAIM,aAAa,CAAC,YAAYN,GAAG;AACjH,MAAMO,OAAOL,YAAYC;AACzB,MAAMK,SAAST,KAAKU,OAAO,CAACF,MAAM,QAAQ,OAAO,WAAW;AAC5D,MAAMG,UAAU;AAChB,MAAMC,OAAOV,KAAK;AAElB,SAASW,sBAAsBC,GAAG,EAAEC,IAAI,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IAC/D,IAAI;QACF,MAAMC,MAAMP,OAAO;YAAED;YAASS,WAAW;QAAK,GAAGX,QAAQK,KAAKC,MAAMC,MAAMC;QAC1E,OAAOC,SAAS,MAAMC;IACxB,EAAE,OAAOE,KAAK;QACZ,OAAOH,SAASG;IAClB;AACF;AAEA;;;;;;;CAOC,GACD,eAAe,SAASC,cAAcR,GAAG,EAAEC,IAAI,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IACtE,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU;IACZ;IACAA,UAAUA,WAAW,CAAC;IACtB,IAAI,OAAOH,QAAQ,UAAU,MAAM,IAAIS,MAAM;IAC7C,IAAI,OAAOR,SAAS,UAAU,MAAM,IAAIQ,MAAM;IAC9C,IAAI,OAAOP,SAAS,UAAU,MAAM,IAAIO,MAAM;IAE9C,IAAI,OAAOL,aAAa,YAAY,OAAOL,sBAAsBC,KAAKC,MAAMC,MAAMC,SAASC;IAC3F,OAAO,IAAIM,QAAQ,CAACd,SAASe;QAC3BZ,sBAAsBC,KAAKC,MAAMC,MAAMC,SAAS,SAASS,gBAAgBL,GAAG,EAAEM,MAAM;YAClFN,MAAMI,OAAOJ,OAAOX,QAAQiB;QAC9B;IACF;AACF"}
@@ -1,23 +1,21 @@
1
1
  import path from 'path';
2
2
  import url from 'url';
3
3
  // @ts-ignore
4
- import lazy from './lib/lazy.cjs';
5
- import packageRoot from './lib/packageRoot.mjs';
6
- // @ts-ignore
7
- import process from './lib/process.cjs';
4
+ import lazy from '../lib/lazy.cjs';
5
+ import packageRoot from '../lib/packageRoot.mjs';
8
6
  const __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));
9
- const major = +process.versions.node.split('.')[0];
10
- const version = major < 14 ? '14' : 'local';
11
7
  const root = packageRoot(__dirname);
12
8
  const worker = path.resolve(root, 'dist', 'cjs', 'workers', 'transformSync.js');
9
+ const version = 'lts';
13
10
  const call = lazy('node-version-call');
14
11
  /**
15
12
  * @param {string} contents The file contents.
16
13
  * @param {string} fileName The filename.
14
+ * @param {TsConfigResult} tsconfig The configuration.
17
15
  * @returns {{ code: string, map?: string }} Returns object with the transformed code and source map if option sourceMaps was provided.
18
- */ export default function transformSync(contents, fileName, config) {
16
+ */ export default function transformSync(contents, fileName, tsconfig) {
19
17
  return call()({
20
18
  version,
21
19
  callbacks: true
22
- }, worker, contents, fileName, config);
20
+ }, worker, contents, fileName, tsconfig);
23
21
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["transformSync.ts"],"sourcesContent":["import path from 'path';\nimport url from 'url';\nimport type { TsConfigResult } from 'get-tsconfig-compat';\n\n// @ts-ignore\nimport lazy from '../lib/lazy.cjs';\nimport packageRoot from '../lib/packageRoot.js';\n\nconst __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));\nconst root = packageRoot(__dirname);\nconst worker = path.resolve(root, 'dist', 'cjs', 'workers', 'transformSync.js');\nconst version = 'lts';\nconst call = lazy('node-version-call');\n\n/**\n * @param {string} contents The file contents.\n * @param {string} fileName The filename.\n * @param {TsConfigResult} tsconfig The configuration.\n * @returns {{ code: string, map?: string }} Returns object with the transformed code and source map if option sourceMaps was provided.\n */\nexport default function transformSync(contents: string, fileName: string, tsconfig: TsConfigResult) {\n return call()({ version, callbacks: true }, worker, contents, fileName, tsconfig);\n}\n"],"names":["path","url","lazy","packageRoot","__dirname","dirname","__filename","fileURLToPath","root","worker","resolve","version","call","transformSync","contents","fileName","tsconfig","callbacks"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,SAAS,MAAM;AAGtB,aAAa;AACb,OAAOC,UAAU,kBAAkB;AACnC,OAAOC,iBAAiB,wBAAwB;AAEhD,MAAMC,YAAYJ,KAAKK,OAAO,CAAC,OAAOC,eAAe,cAAcA,aAAaL,IAAIM,aAAa,CAAC,YAAYN,GAAG;AACjH,MAAMO,OAAOL,YAAYC;AACzB,MAAMK,SAAST,KAAKU,OAAO,CAACF,MAAM,QAAQ,OAAO,WAAW;AAC5D,MAAMG,UAAU;AAChB,MAAMC,OAAOV,KAAK;AAElB;;;;;CAKC,GACD,eAAe,SAASW,cAAcC,QAAgB,EAAEC,QAAgB,EAAEC,QAAwB;IAChG,OAAOJ,OAAO;QAAED;QAASM,WAAW;IAAK,GAAGR,QAAQK,UAAUC,UAAUC;AAC1E"}
@@ -0,0 +1,34 @@
1
+ import transformDirectoryCallbackCJS from '../cjs/transformDirectory.mjs';
2
+ import transformDirectoryCallbackWorker from '../workers/transformDirectory.mjs';
3
+ // @ts-ignore
4
+ import lazy from '../lib/lazy.cjs';
5
+ let transformDirectoryCallback = transformDirectoryCallbackWorker;
6
+ try {
7
+ // typescript cannot be loaded so run in lts
8
+ lazy('typescript')();
9
+ } catch {
10
+ transformDirectoryCallback = transformDirectoryCallbackCJS;
11
+ }
12
+ /**
13
+ * @param {string} src The source directory to traverse.
14
+ * @param {string} dest The output directory to write files to.
15
+ * @param {string} type The type of transform ('esm' or 'cjs').
16
+ * @param {{sourceMaps: boolean}} options Options to pass to swc.
17
+ * @param {(err?: Error) =>} [callback] Optional callback. Uses promise if callback not provided.
18
+ * @returns {void | Promise<any>} Optional promise if callback not provided.
19
+ */ export default function transformDirectory(src, dest, type, options, callback) {
20
+ if (typeof options === 'function') {
21
+ callback = options;
22
+ options = null;
23
+ }
24
+ options = options || {};
25
+ if (typeof src !== 'string') throw new Error('transformDirectory: unexpected source');
26
+ if (typeof dest !== 'string') throw new Error('transformDirectory: unexpected destination directory');
27
+ if (typeof type !== 'string') throw new Error('transformDirectory: unexpected type');
28
+ if (typeof callback === 'function') return transformDirectoryCallback(src, dest, type, options, callback);
29
+ return new Promise((resolve, reject)=>{
30
+ transformDirectoryCallback(src, dest, type, options, function compileCallback(err, result) {
31
+ err ? reject(err) : resolve(result);
32
+ });
33
+ });
34
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["transformDirectory.ts"],"sourcesContent":["import transformDirectoryCallbackCJS from '../cjs/transformDirectory.js';\nimport transformDirectoryCallbackWorker from '../workers/transformDirectory.js';\n\n// @ts-ignore\nimport lazy from '../lib/lazy.cjs';\nlet transformDirectoryCallback = transformDirectoryCallbackWorker;\ntry {\n // typescript cannot be loaded so run in lts\n lazy('typescript')();\n} catch {\n transformDirectoryCallback = transformDirectoryCallbackCJS;\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 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 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":["transformDirectoryCallbackCJS","transformDirectoryCallbackWorker","lazy","transformDirectoryCallback","transformDirectory","src","dest","type","options","callback","Error","Promise","resolve","reject","compileCallback","err","result"],"mappings":"AAAA,OAAOA,mCAAmC,+BAA+B;AACzE,OAAOC,sCAAsC,mCAAmC;AAEhF,aAAa;AACb,OAAOC,UAAU,kBAAkB;AACnC,IAAIC,6BAA6BF;AACjC,IAAI;IACF,4CAA4C;IAC5CC,KAAK;AACP,EAAE,OAAM;IACNC,6BAA6BH;AAC/B;AAEA;;;;;;;CAOC,GACD,eAAe,SAASI,mBAAmBC,GAAG,EAAEC,IAAI,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IAC3E,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU;IACZ;IACAA,UAAUA,WAAW,CAAC;IACtB,IAAI,OAAOH,QAAQ,UAAU,MAAM,IAAIK,MAAM;IAC7C,IAAI,OAAOJ,SAAS,UAAU,MAAM,IAAII,MAAM;IAC9C,IAAI,OAAOH,SAAS,UAAU,MAAM,IAAIG,MAAM;IAE9C,IAAI,OAAOD,aAAa,YAAY,OAAON,2BAA2BE,KAAKC,MAAMC,MAAMC,SAASC;IAChG,OAAO,IAAIE,QAAQ,CAACC,SAASC;QAC3BV,2BAA2BE,KAAKC,MAAMC,MAAMC,SAAS,SAASM,gBAAgBC,GAAG,EAAEC,MAAM;YACvFD,MAAMF,OAAOE,OAAOH,QAAQI;QAC9B;IACF;AACF"}
@@ -0,0 +1,34 @@
1
+ import transformFileCallbackCJS from '../cjs/transformFile.mjs';
2
+ import transformFileCallbackWorker from '../workers/transformFile.mjs';
3
+ // @ts-ignore
4
+ import lazy from '../lib/lazy.cjs';
5
+ let transformFileCallback = transformFileCallbackWorker;
6
+ try {
7
+ // typescript cannot be loaded so run in lts
8
+ lazy('typescript')();
9
+ } catch {
10
+ transformFileCallback = transformFileCallbackCJS;
11
+ }
12
+ /**
13
+ * @param {string} src The source directory to traverse.
14
+ * @param {string} dest The output directory to write files to.
15
+ * @param {string} type The type of transform ('esm' or 'cjs').
16
+ * @param {{sourceMaps: boolean}} options Options to pass to swc.
17
+ * @param {(err?: Error) =>} [callback] Optional callback. Uses promise if callback not provided.
18
+ * @returns {void | Promise<any>} Optional promise if callback not provided.
19
+ */ export default function transformFile(src, dest, type, options, callback) {
20
+ if (typeof options === 'function') {
21
+ callback = options;
22
+ options = null;
23
+ }
24
+ options = options || {};
25
+ if (typeof src !== 'string') throw new Error('transformFile: unexpected source');
26
+ if (typeof dest !== 'string') throw new Error('transformFile: unexpected destination directory');
27
+ if (typeof type !== 'string') throw new Error('transformFile: unexpected type');
28
+ if (typeof callback === 'function') return transformFileCallback(src, dest, type, options, callback);
29
+ return new Promise((resolve, reject)=>{
30
+ transformFileCallback(src, dest, type, options, function compileCallback(err, result) {
31
+ err ? reject(err) : resolve(result);
32
+ });
33
+ });
34
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["transformFile.ts"],"sourcesContent":["import transformFileCallbackCJS from '../cjs/transformFile.js';\nimport transformFileCallbackWorker from '../workers/transformFile.js';\n\n// @ts-ignore\nimport lazy from '../lib/lazy.cjs';\nlet transformFileCallback = transformFileCallbackWorker;\ntry {\n // typescript cannot be loaded so run in lts\n lazy('typescript')();\n} catch {\n transformFileCallback = transformFileCallbackCJS;\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 transformFile(src, dest, type, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = null;\n }\n options = options || {};\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 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":["transformFileCallbackCJS","transformFileCallbackWorker","lazy","transformFileCallback","transformFile","src","dest","type","options","callback","Error","Promise","resolve","reject","compileCallback","err","result"],"mappings":"AAAA,OAAOA,8BAA8B,0BAA0B;AAC/D,OAAOC,iCAAiC,8BAA8B;AAEtE,aAAa;AACb,OAAOC,UAAU,kBAAkB;AACnC,IAAIC,wBAAwBF;AAC5B,IAAI;IACF,4CAA4C;IAC5CC,KAAK;AACP,EAAE,OAAM;IACNC,wBAAwBH;AAC1B;AAEA;;;;;;;CAOC,GACD,eAAe,SAASI,cAAcC,GAAG,EAAEC,IAAI,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IACtE,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU;IACZ;IACAA,UAAUA,WAAW,CAAC;IACtB,IAAI,OAAOH,QAAQ,UAAU,MAAM,IAAIK,MAAM;IAC7C,IAAI,OAAOJ,SAAS,UAAU,MAAM,IAAII,MAAM;IAC9C,IAAI,OAAOH,SAAS,UAAU,MAAM,IAAIG,MAAM;IAE9C,IAAI,OAAOD,aAAa,YAAY,OAAON,sBAAsBE,KAAKC,MAAMC,MAAMC,SAASC;IAC3F,OAAO,IAAIE,QAAQ,CAACC,SAASC;QAC3BV,sBAAsBE,KAAKC,MAAMC,MAAMC,SAAS,SAASM,gBAAgBC,GAAG,EAAEC,MAAM;YAClFD,MAAMF,OAAOE,OAAOH,QAAQI;QAC9B;IACF;AACF"}
@@ -0,0 +1 @@
1
+ export { default } from '../cjs/transformSync.mjs';
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["transformSync.ts"],"sourcesContent":["export { default } from '../cjs/transformSync.js';\n"],"names":["default"],"mappings":"AAAA,SAASA,OAAO,QAAQ,0BAA0B"}
@@ -0,0 +1,7 @@
1
+ export { default as createMatcher } from './createMatcher.mjs';
2
+ export { default as extensions } from './extensions.mjs';
3
+ export { default as resolveFileSync } from './resolveFileSync.mjs';
4
+ export { default as toPath } from './toPath.mjs';
5
+ export { default as transformFile } from './cjs/transformFile.mjs';
6
+ export { default as transformDirectory } from './cjs/transformDirectory.mjs';
7
+ export { default as transformSync } from './cjs/transformSync.mjs';
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.cjs.ts"],"sourcesContent":["export type * from './types.js';\nexport { default as createMatcher } from './createMatcher.js';\nexport { default as extensions } from './extensions.js';\nexport { default as resolveFileSync } from './resolveFileSync.js';\nexport { default as toPath } from './toPath.js';\nexport { default as transformFile } from './cjs/transformFile.js';\nexport { default as transformDirectory } from './cjs/transformDirectory.js';\nexport { default as transformSync } from './cjs/transformSync.js';\n"],"names":["default","createMatcher","extensions","resolveFileSync","toPath","transformFile","transformDirectory","transformSync"],"mappings":"AACA,SAASA,WAAWC,aAAa,QAAQ,qBAAqB;AAC9D,SAASD,WAAWE,UAAU,QAAQ,kBAAkB;AACxD,SAASF,WAAWG,eAAe,QAAQ,uBAAuB;AAClE,SAASH,WAAWI,MAAM,QAAQ,cAAc;AAChD,SAASJ,WAAWK,aAAa,QAAQ,yBAAyB;AAClE,SAASL,WAAWM,kBAAkB,QAAQ,8BAA8B;AAC5E,SAASN,WAAWO,aAAa,QAAQ,yBAAyB"}
@@ -2,6 +2,6 @@ export { default as createMatcher } from './createMatcher.mjs';
2
2
  export { default as extensions } from './extensions.mjs';
3
3
  export { default as resolveFileSync } from './resolveFileSync.mjs';
4
4
  export { default as toPath } from './toPath.mjs';
5
- export { default as transformFile } from './transformFile.mjs';
6
- export { default as transformDirectory } from './transformDirectory.mjs';
7
- export { default as transformSync } from './transformSync.mjs';
5
+ export { default as transformFile } from './esm/transformFile.mjs';
6
+ export { default as transformDirectory } from './esm/transformDirectory.mjs';
7
+ export { default as transformSync } from './esm/transformSync.mjs';
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"sourcesContent":["export type * from './types.js';\nexport { default as createMatcher } from './createMatcher.js';\nexport { default as extensions } from './extensions.js';\nexport { default as resolveFileSync } from './resolveFileSync.js';\nexport { default as toPath } from './toPath.js';\nexport { default as transformFile } from './transformFile.js';\nexport { default as transformDirectory } from './transformDirectory.js';\nexport { default as transformSync } from './transformSync.js';\n"],"names":["default","createMatcher","extensions","resolveFileSync","toPath","transformFile","transformDirectory","transformSync"],"mappings":"AACA,SAASA,WAAWC,aAAa,QAAQ,qBAAqB;AAC9D,SAASD,WAAWE,UAAU,QAAQ,kBAAkB;AACxD,SAASF,WAAWG,eAAe,QAAQ,uBAAuB;AAClE,SAASH,WAAWI,MAAM,QAAQ,cAAc;AAChD,SAASJ,WAAWK,aAAa,QAAQ,qBAAqB;AAC9D,SAASL,WAAWM,kBAAkB,QAAQ,0BAA0B;AACxE,SAASN,WAAWO,aAAa,QAAQ,qBAAqB"}
1
+ {"version":3,"sources":["index.ts"],"sourcesContent":["export type * from './types.js';\nexport { default as createMatcher } from './createMatcher.js';\nexport { default as extensions } from './extensions.js';\nexport { default as resolveFileSync } from './resolveFileSync.js';\nexport { default as toPath } from './toPath.js';\nexport { default as transformFile } from './esm/transformFile.js';\nexport { default as transformDirectory } from './esm/transformDirectory.js';\nexport { default as transformSync } from './esm/transformSync.js';\n"],"names":["default","createMatcher","extensions","resolveFileSync","toPath","transformFile","transformDirectory","transformSync"],"mappings":"AACA,SAASA,WAAWC,aAAa,QAAQ,qBAAqB;AAC9D,SAASD,WAAWE,UAAU,QAAQ,kBAAkB;AACxD,SAASF,WAAWG,eAAe,QAAQ,uBAAuB;AAClE,SAASH,WAAWI,MAAM,QAAQ,cAAc;AAChD,SAASJ,WAAWK,aAAa,QAAQ,yBAAyB;AAClE,SAASL,WAAWM,kBAAkB,QAAQ,8BAA8B;AAC5E,SAASN,WAAWO,aAAa,QAAQ,yBAAyB"}
@@ -1,9 +1,10 @@
1
- import accessSync from 'fs-access-sync-compat';
2
- export default function existsSync(path) {
1
+ import fs from 'fs';
2
+ function existsSyncPolyfill(path) {
3
3
  try {
4
- accessSync(path);
4
+ fs.accessSync(path);
5
5
  return true;
6
6
  } catch (_) {
7
7
  return false;
8
8
  }
9
9
  }
10
+ export default fs.accessSync ? existsSyncPolyfill : fs.existsSync;
@@ -1 +1 @@
1
- {"version":3,"sources":["existsSync.ts"],"sourcesContent":["import accessSync from 'fs-access-sync-compat';\n\nexport default function existsSync(path) {\n try {\n accessSync(path);\n return true;\n } catch (_) {\n return false;\n }\n}\n"],"names":["accessSync","existsSync","path","_"],"mappings":"AAAA,OAAOA,gBAAgB,wBAAwB;AAE/C,eAAe,SAASC,WAAWC,IAAI;IACrC,IAAI;QACFF,WAAWE;QACX,OAAO;IACT,EAAE,OAAOC,GAAG;QACV,OAAO;IACT;AACF"}
1
+ {"version":3,"sources":["existsSync.ts"],"sourcesContent":["import fs from 'fs';\n\nfunction existsSyncPolyfill(path) {\n try {\n fs.accessSync(path);\n return true;\n } catch (_) {\n return false;\n }\n}\n\nexport default fs.accessSync ? existsSyncPolyfill : fs.existsSync;\n"],"names":["fs","existsSyncPolyfill","path","accessSync","_","existsSync"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AAEpB,SAASC,mBAAmBC,IAAI;IAC9B,IAAI;QACFF,GAAGG,UAAU,CAACD;QACd,OAAO;IACT,EAAE,OAAOE,GAAG;QACV,OAAO;IACT;AACF;AAEA,eAAeJ,GAAGG,UAAU,GAAGF,qBAAqBD,GAAGK,UAAU,CAAC"}
@@ -0,0 +1,24 @@
1
+ import fs from 'fs';
2
+ import os from 'os';
3
+ import path from 'path';
4
+ import access from 'fs-access-compat';
5
+ import ensureCached from './lib/ensureCached.mjs';
6
+ const isWindows = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);
7
+ const symlinkType = isWindows ? 'junction' : 'dir';
8
+ const cache = path.join(os.tmpdir(), 'ts-swc-transform', 'cache');
9
+ export default function installModule(installString, installedAt, callback) {
10
+ access(installedAt, (err)=>{
11
+ if (!err) return callback(); // already installed
12
+ const cachedAt = path.join(cache, installString);
13
+ ensureCached(installString, cachedAt, (err)=>{
14
+ if (err) {
15
+ console.log(`Unsupported version: ${installString}`);
16
+ return callback();
17
+ }
18
+ fs.symlink(cachedAt, installedAt, symlinkType, (err)=>{
19
+ if (err) return callback(err);
20
+ access(installedAt, callback);
21
+ });
22
+ });
23
+ });
24
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"sourcesContent":["import fs from 'fs';\nimport os from 'os';\nimport path from 'path';\nimport access from 'fs-access-compat';\nimport ensureCached from './lib/ensureCached.js';\n\nconst isWindows = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);\nconst symlinkType = isWindows ? 'junction' : 'dir';\nconst cache = path.join(os.tmpdir(), 'ts-swc-transform', 'cache');\n\nexport default function installModule(installString, installedAt, callback) {\n access(installedAt, (err) => {\n if (!err) return callback(); // already installed\n const cachedAt = path.join(cache, installString);\n\n ensureCached(installString, cachedAt, (err) => {\n if (err) {\n console.log(`Unsupported version: ${installString}`);\n return callback();\n }\n\n fs.symlink(cachedAt, installedAt, symlinkType, (err) => {\n if (err) return callback(err);\n access(installedAt, callback);\n });\n });\n });\n}\n"],"names":["fs","os","path","access","ensureCached","isWindows","process","platform","test","env","OSTYPE","symlinkType","cache","join","tmpdir","installModule","installString","installedAt","callback","err","cachedAt","console","log","symlink"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,OAAOC,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,OAAOC,YAAY,mBAAmB;AACtC,OAAOC,kBAAkB,wBAAwB;AAEjD,MAAMC,YAAYC,QAAQC,QAAQ,KAAK,WAAW,kBAAkBC,IAAI,CAACF,QAAQG,GAAG,CAACC,MAAM;AAC3F,MAAMC,cAAcN,YAAY,aAAa;AAC7C,MAAMO,QAAQV,KAAKW,IAAI,CAACZ,GAAGa,MAAM,IAAI,oBAAoB;AAEzD,eAAe,SAASC,cAAcC,aAAa,EAAEC,WAAW,EAAEC,QAAQ;IACxEf,OAAOc,aAAa,CAACE;QACnB,IAAI,CAACA,KAAK,OAAOD,YAAY,oBAAoB;QACjD,MAAME,WAAWlB,KAAKW,IAAI,CAACD,OAAOI;QAElCZ,aAAaY,eAAeI,UAAU,CAACD;YACrC,IAAIA,KAAK;gBACPE,QAAQC,GAAG,CAAC,CAAC,qBAAqB,EAAEN,eAAe;gBACnD,OAAOE;YACT;YAEAlB,GAAGuB,OAAO,CAACH,UAAUH,aAAaN,aAAa,CAACQ;gBAC9C,IAAIA,KAAK,OAAOD,SAASC;gBACzBhB,OAAOc,aAAaC;YACtB;QACF;IACF;AACF"}
@@ -0,0 +1,37 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import spawn from 'cross-spawn-cb';
4
+ import access from 'fs-access-compat';
5
+ import mkdirp from 'mkdirp-classic';
6
+ import Queue from 'queue-cb';
7
+ import rimraf2 from 'rimraf2';
8
+ import tempSuffix from 'temp-suffix';
9
+ // @ts-ignore
10
+ import process from '../../process.cjs';
11
+ import parseInstallString from './parseInstallString.mjs';
12
+ export default function ensureCached(installString, cachedAt, callback) {
13
+ access(cachedAt, (err)=>{
14
+ if (!err) return callback(); // already cached
15
+ const { name } = parseInstallString(installString);
16
+ const tmp = `${cachedAt}-${tempSuffix()}`;
17
+ const installedAt = path.join(tmp, 'node_modules', ...name.split('/'));
18
+ const { NODE_OPTIONS, ...env } = process.env;
19
+ const queue = new Queue(1);
20
+ queue.defer(mkdirp.bind(null, tmp));
21
+ queue.defer(fs.writeFile.bind(null, path.join(tmp, 'package.json'), '{}', 'utf8'));
22
+ queue.defer(spawn.bind(null, 'npm', [
23
+ 'install',
24
+ installString
25
+ ], {
26
+ cwd: tmp,
27
+ env
28
+ }));
29
+ queue.defer((cb)=>fs.rename(installedAt, cachedAt, cb.bind(null, null)));
30
+ queue.await((err)=>{
31
+ // clean up whether installed or not
32
+ rimraf2(tmp, {
33
+ disableGlob: true
34
+ }, ()=>callback(err));
35
+ });
36
+ });
37
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ensureCached.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport spawn from 'cross-spawn-cb';\nimport access from 'fs-access-compat';\nimport mkdirp from 'mkdirp-classic';\nimport Queue from 'queue-cb';\nimport rimraf2 from 'rimraf2';\nimport tempSuffix from 'temp-suffix';\n// @ts-ignore\nimport process from '../../process.cjs';\nimport parseInstallString from './parseInstallString.js';\n\nexport type EnsureCachedCallback = (err?: Error) => void;\n\nexport default function ensureCached(installString: string, cachedAt: string, callback: EnsureCachedCallback) {\n access(cachedAt, (err?: Error) => {\n if (!err) return callback(); // already cached\n\n const { name } = parseInstallString(installString);\n const tmp = `${cachedAt}-${tempSuffix()}`;\n const installedAt = path.join(tmp, 'node_modules', ...name.split('/'));\n const { NODE_OPTIONS, ...env } = process.env;\n\n const queue = new Queue(1);\n queue.defer(mkdirp.bind(null, tmp));\n queue.defer(fs.writeFile.bind(null, path.join(tmp, 'package.json'), '{}', 'utf8'));\n queue.defer(spawn.bind(null, 'npm', ['install', installString], { cwd: tmp, env }));\n queue.defer((cb) => fs.rename(installedAt, cachedAt, cb.bind(null, null)));\n queue.await((err) => {\n // clean up whether installed or not\n rimraf2(tmp, { disableGlob: true }, () => callback(err));\n });\n });\n}\n"],"names":["fs","path","spawn","access","mkdirp","Queue","rimraf2","tempSuffix","process","parseInstallString","ensureCached","installString","cachedAt","callback","err","name","tmp","installedAt","join","split","NODE_OPTIONS","env","queue","defer","bind","writeFile","cwd","cb","rename","await","disableGlob"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,iBAAiB;AACnC,OAAOC,YAAY,mBAAmB;AACtC,OAAOC,YAAY,iBAAiB;AACpC,OAAOC,WAAW,WAAW;AAC7B,OAAOC,aAAa,UAAU;AAC9B,OAAOC,gBAAgB,cAAc;AACrC,aAAa;AACb,OAAOC,aAAa,oBAAoB;AACxC,OAAOC,wBAAwB,0BAA0B;AAIzD,eAAe,SAASC,aAAaC,aAAqB,EAAEC,QAAgB,EAAEC,QAA8B;IAC1GV,OAAOS,UAAU,CAACE;QAChB,IAAI,CAACA,KAAK,OAAOD,YAAY,iBAAiB;QAE9C,MAAM,EAAEE,IAAI,EAAE,GAAGN,mBAAmBE;QACpC,MAAMK,MAAM,GAAGJ,SAAS,CAAC,EAAEL,cAAc;QACzC,MAAMU,cAAchB,KAAKiB,IAAI,CAACF,KAAK,mBAAmBD,KAAKI,KAAK,CAAC;QACjE,MAAM,EAAEC,YAAY,EAAE,GAAGC,KAAK,GAAGb,QAAQa,GAAG;QAE5C,MAAMC,QAAQ,IAAIjB,MAAM;QACxBiB,MAAMC,KAAK,CAACnB,OAAOoB,IAAI,CAAC,MAAMR;QAC9BM,MAAMC,KAAK,CAACvB,GAAGyB,SAAS,CAACD,IAAI,CAAC,MAAMvB,KAAKiB,IAAI,CAACF,KAAK,iBAAiB,MAAM;QAC1EM,MAAMC,KAAK,CAACrB,MAAMsB,IAAI,CAAC,MAAM,OAAO;YAAC;YAAWb;SAAc,EAAE;YAAEe,KAAKV;YAAKK;QAAI;QAChFC,MAAMC,KAAK,CAAC,CAACI,KAAO3B,GAAG4B,MAAM,CAACX,aAAaL,UAAUe,GAAGH,IAAI,CAAC,MAAM;QACnEF,MAAMO,KAAK,CAAC,CAACf;YACX,oCAAoC;YACpCR,QAAQU,KAAK;gBAAEc,aAAa;YAAK,GAAG,IAAMjB,SAASC;QACrD;IACF;AACF"}
@@ -0,0 +1,13 @@
1
+ export default function parseInstallString(installString) {
2
+ const installParts = installString.split('/');
3
+ const nameVersionParts = installParts.pop().split('@');
4
+ const version = nameVersionParts.length > 1 ? nameVersionParts.pop() : undefined;
5
+ const name = [
6
+ ...installParts,
7
+ nameVersionParts.join('@')
8
+ ].join('/');
9
+ return {
10
+ name,
11
+ version
12
+ };
13
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["parseInstallString.ts"],"sourcesContent":["export default function parseInstallString(installString: string) {\n const installParts = installString.split('/');\n const nameVersionParts = installParts.pop().split('@');\n const version = nameVersionParts.length > 1 ? nameVersionParts.pop() : undefined;\n const name = [...installParts, nameVersionParts.join('@')].join('/');\n return {\n name,\n version,\n };\n}\n"],"names":["parseInstallString","installString","installParts","split","nameVersionParts","pop","version","length","undefined","name","join"],"mappings":"AAAA,eAAe,SAASA,mBAAmBC,aAAqB;IAC9D,MAAMC,eAAeD,cAAcE,KAAK,CAAC;IACzC,MAAMC,mBAAmBF,aAAaG,GAAG,GAAGF,KAAK,CAAC;IAClD,MAAMG,UAAUF,iBAAiBG,MAAM,GAAG,IAAIH,iBAAiBC,GAAG,KAAKG;IACvE,MAAMC,OAAO;WAAIP;QAAcE,iBAAiBM,IAAI,CAAC;KAAK,CAACA,IAAI,CAAC;IAChE,OAAO;QACLD;QACAH;IACF;AACF"}
@@ -1,63 +1,23 @@
1
1
  import fs from 'fs';
2
- import os from 'os';
3
2
  import path from 'path';
4
- import spawn from 'cross-spawn-cb';
5
- import mkdirp from 'mkdirp-classic';
6
3
  import Queue from 'queue-cb';
7
4
  import resolve from 'resolve';
8
- import rimraf2 from 'rimraf2';
9
- import tempSuffix from 'temp-suffix';
10
- import existsSync from './existsSync.mjs';
5
+ import installModule from './install-module/index.mjs';
11
6
  // @ts-ignore
12
7
  import process from './process.cjs';
13
- const isWindows = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);
14
- const symlinkType = isWindows ? 'junction' : 'dir';
15
- const cache = path.join(os.tmpdir(), 'ts-swc-transform', 'cache');
16
- function ensureCached(name, installString, cachedAt, callback) {
17
- if (existsSync(cachedAt)) return callback();
18
- const tmp = `${cachedAt}.${tempSuffix()}`;
19
- const installedAt = path.join(tmp, 'node_modules', ...name.split('/'));
20
- const { NODE_OPTIONS, ...env } = process.env;
21
- const queue = new Queue(1);
22
- queue.defer(mkdirp.bind(null, tmp));
23
- queue.defer(fs.writeFile.bind(null, path.join(tmp, 'package.json'), '{}', 'utf8'));
24
- queue.defer(spawn.bind(null, 'npm', [
25
- 'install',
26
- installString
27
- ], {
28
- cwd: tmp,
29
- env
30
- }));
31
- queue.defer((cb)=>fs.rename(installedAt, cachedAt, cb.bind(null, null)));
32
- queue.await(()=>{
33
- // clean up whether installed or not
34
- rimraf2(tmp, {
35
- disableGlob: true
36
- }, callback);
37
- });
38
- }
39
8
  export default function installBindings(callback) {
40
9
  const swcPackagePath = resolve.sync('@swc/core/package.json');
41
10
  const swcDir = path.dirname(path.dirname(swcPackagePath));
42
11
  const { optionalDependencies } = JSON.parse(fs.readFileSync(swcPackagePath, 'utf8'));
43
- const installDir = path.dirname(swcDir);
12
+ const _installDir = path.dirname(swcDir);
44
13
  const depKey = `${process.platform}-${process.arch}`;
45
14
  const queue = new Queue();
46
- Object.keys(optionalDependencies).filter((name)=>name.indexOf(depKey) >= 0).filter((name)=>!existsSync(path.join(installDir, name))).map((name)=>{
15
+ Object.keys(optionalDependencies).filter((name)=>name.indexOf(depKey) >= 0).map((name)=>{
47
16
  queue.defer((callback)=>{
48
17
  const version = optionalDependencies[name];
49
18
  const installString = `${name}${version ? `@${version}` : ''}`;
50
19
  const installedAt = path.join(path.dirname(swcDir), ...name.split('/'));
51
- const cachedAt = path.join(cache, installString);
52
- ensureCached(name, installString, cachedAt, ()=>{
53
- if (!existsSync(cachedAt)) {
54
- console.log(`Unsupported version: ${installString}`);
55
- return callback();
56
- }
57
- fs.symlink(cachedAt, installedAt, symlinkType, (err)=>{
58
- err && !existsSync(installedAt) ? callback(err) : callback();
59
- });
60
- });
20
+ installModule(installString, installedAt, callback);
61
21
  });
62
22
  });
63
23
  queue.await(callback);
@@ -1 +1 @@
1
- {"version":3,"sources":["installBindings.ts"],"sourcesContent":["import fs from 'fs';\nimport os from 'os';\nimport path from 'path';\nimport spawn from 'cross-spawn-cb';\nimport mkdirp from 'mkdirp-classic';\nimport Queue from 'queue-cb';\nimport resolve from 'resolve';\nimport rimraf2 from 'rimraf2';\nimport tempSuffix from 'temp-suffix';\nimport existsSync from './existsSync.js';\n// @ts-ignore\nimport process from './process.cjs';\n\nconst isWindows = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);\nconst symlinkType = isWindows ? 'junction' : 'dir';\nconst cache = path.join(os.tmpdir(), 'ts-swc-transform', 'cache');\n\nfunction ensureCached(name, installString, cachedAt, callback) {\n if (existsSync(cachedAt)) return callback();\n\n const tmp = `${cachedAt}.${tempSuffix()}`;\n const installedAt = path.join(tmp, 'node_modules', ...name.split('/'));\n const { NODE_OPTIONS, ...env } = process.env;\n\n const queue = new Queue(1);\n queue.defer(mkdirp.bind(null, tmp));\n queue.defer(fs.writeFile.bind(null, path.join(tmp, 'package.json'), '{}', 'utf8'));\n queue.defer(spawn.bind(null, 'npm', ['install', installString], { cwd: tmp, env }));\n queue.defer((cb) => fs.rename(installedAt, cachedAt, cb.bind(null, null)));\n queue.await(() => {\n // clean up whether installed or not\n rimraf2(tmp, { disableGlob: true }, callback);\n });\n}\n\nexport default function installBindings(callback) {\n const swcPackagePath = resolve.sync('@swc/core/package.json');\n const swcDir = path.dirname(path.dirname(swcPackagePath));\n const { optionalDependencies } = JSON.parse(fs.readFileSync(swcPackagePath, 'utf8'));\n const installDir = path.dirname(swcDir);\n const depKey = `${process.platform}-${process.arch}`;\n\n const queue = new Queue();\n Object.keys(optionalDependencies)\n .filter((name) => name.indexOf(depKey) >= 0)\n .filter((name) => !existsSync(path.join(installDir, name)))\n .map((name) => {\n queue.defer((callback) => {\n const version = optionalDependencies[name];\n const installString = `${name}${version ? `@${version}` : ''}`;\n const installedAt = path.join(path.dirname(swcDir), ...name.split('/'));\n const cachedAt = path.join(cache, installString);\n\n ensureCached(name, installString, cachedAt, () => {\n if (!existsSync(cachedAt)) {\n console.log(`Unsupported version: ${installString}`);\n return callback();\n }\n\n fs.symlink(cachedAt, installedAt, symlinkType, (err) => {\n err && !existsSync(installedAt) ? callback(err) : callback();\n });\n });\n });\n });\n queue.await(callback);\n}\n"],"names":["fs","os","path","spawn","mkdirp","Queue","resolve","rimraf2","tempSuffix","existsSync","process","isWindows","platform","test","env","OSTYPE","symlinkType","cache","join","tmpdir","ensureCached","name","installString","cachedAt","callback","tmp","installedAt","split","NODE_OPTIONS","queue","defer","bind","writeFile","cwd","cb","rename","await","disableGlob","installBindings","swcPackagePath","sync","swcDir","dirname","optionalDependencies","JSON","parse","readFileSync","installDir","depKey","arch","Object","keys","filter","indexOf","map","version","console","log","symlink","err"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,OAAOC,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,iBAAiB;AACnC,OAAOC,YAAY,iBAAiB;AACpC,OAAOC,WAAW,WAAW;AAC7B,OAAOC,aAAa,UAAU;AAC9B,OAAOC,aAAa,UAAU;AAC9B,OAAOC,gBAAgB,cAAc;AACrC,OAAOC,gBAAgB,kBAAkB;AACzC,aAAa;AACb,OAAOC,aAAa,gBAAgB;AAEpC,MAAMC,YAAYD,QAAQE,QAAQ,KAAK,WAAW,kBAAkBC,IAAI,CAACH,QAAQI,GAAG,CAACC,MAAM;AAC3F,MAAMC,cAAcL,YAAY,aAAa;AAC7C,MAAMM,QAAQf,KAAKgB,IAAI,CAACjB,GAAGkB,MAAM,IAAI,oBAAoB;AAEzD,SAASC,aAAaC,IAAI,EAAEC,aAAa,EAAEC,QAAQ,EAAEC,QAAQ;IAC3D,IAAIf,WAAWc,WAAW,OAAOC;IAEjC,MAAMC,MAAM,GAAGF,SAAS,CAAC,EAAEf,cAAc;IACzC,MAAMkB,cAAcxB,KAAKgB,IAAI,CAACO,KAAK,mBAAmBJ,KAAKM,KAAK,CAAC;IACjE,MAAM,EAAEC,YAAY,EAAE,GAAGd,KAAK,GAAGJ,QAAQI,GAAG;IAE5C,MAAMe,QAAQ,IAAIxB,MAAM;IACxBwB,MAAMC,KAAK,CAAC1B,OAAO2B,IAAI,CAAC,MAAMN;IAC9BI,MAAMC,KAAK,CAAC9B,GAAGgC,SAAS,CAACD,IAAI,CAAC,MAAM7B,KAAKgB,IAAI,CAACO,KAAK,iBAAiB,MAAM;IAC1EI,MAAMC,KAAK,CAAC3B,MAAM4B,IAAI,CAAC,MAAM,OAAO;QAAC;QAAWT;KAAc,EAAE;QAAEW,KAAKR;QAAKX;IAAI;IAChFe,MAAMC,KAAK,CAAC,CAACI,KAAOlC,GAAGmC,MAAM,CAACT,aAAaH,UAAUW,GAAGH,IAAI,CAAC,MAAM;IACnEF,MAAMO,KAAK,CAAC;QACV,oCAAoC;QACpC7B,QAAQkB,KAAK;YAAEY,aAAa;QAAK,GAAGb;IACtC;AACF;AAEA,eAAe,SAASc,gBAAgBd,QAAQ;IAC9C,MAAMe,iBAAiBjC,QAAQkC,IAAI,CAAC;IACpC,MAAMC,SAASvC,KAAKwC,OAAO,CAACxC,KAAKwC,OAAO,CAACH;IACzC,MAAM,EAAEI,oBAAoB,EAAE,GAAGC,KAAKC,KAAK,CAAC7C,GAAG8C,YAAY,CAACP,gBAAgB;IAC5E,MAAMQ,aAAa7C,KAAKwC,OAAO,CAACD;IAChC,MAAMO,SAAS,GAAGtC,QAAQE,QAAQ,CAAC,CAAC,EAAEF,QAAQuC,IAAI,EAAE;IAEpD,MAAMpB,QAAQ,IAAIxB;IAClB6C,OAAOC,IAAI,CAACR,sBACTS,MAAM,CAAC,CAAC/B,OAASA,KAAKgC,OAAO,CAACL,WAAW,GACzCI,MAAM,CAAC,CAAC/B,OAAS,CAACZ,WAAWP,KAAKgB,IAAI,CAAC6B,YAAY1B,QACnDiC,GAAG,CAAC,CAACjC;QACJQ,MAAMC,KAAK,CAAC,CAACN;YACX,MAAM+B,UAAUZ,oBAAoB,CAACtB,KAAK;YAC1C,MAAMC,gBAAgB,GAAGD,OAAOkC,UAAU,CAAC,CAAC,EAAEA,SAAS,GAAG,IAAI;YAC9D,MAAM7B,cAAcxB,KAAKgB,IAAI,CAAChB,KAAKwC,OAAO,CAACD,YAAYpB,KAAKM,KAAK,CAAC;YAClE,MAAMJ,WAAWrB,KAAKgB,IAAI,CAACD,OAAOK;YAElCF,aAAaC,MAAMC,eAAeC,UAAU;gBAC1C,IAAI,CAACd,WAAWc,WAAW;oBACzBiC,QAAQC,GAAG,CAAC,CAAC,qBAAqB,EAAEnC,eAAe;oBACnD,OAAOE;gBACT;gBAEAxB,GAAG0D,OAAO,CAACnC,UAAUG,aAAaV,aAAa,CAAC2C;oBAC9CA,OAAO,CAAClD,WAAWiB,eAAeF,SAASmC,OAAOnC;gBACpD;YACF;QACF;IACF;IACFK,MAAMO,KAAK,CAACZ;AACd"}
1
+ {"version":3,"sources":["installBindings.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport resolve from 'resolve';\nimport installModule from './install-module/index.js';\n// @ts-ignore\nimport process from './process.cjs';\n\nexport default function installBindings(callback) {\n const swcPackagePath = resolve.sync('@swc/core/package.json');\n const swcDir = path.dirname(path.dirname(swcPackagePath));\n const { optionalDependencies } = JSON.parse(fs.readFileSync(swcPackagePath, 'utf8'));\n const _installDir = path.dirname(swcDir);\n const depKey = `${process.platform}-${process.arch}`;\n\n const queue = new Queue();\n Object.keys(optionalDependencies)\n .filter((name) => name.indexOf(depKey) >= 0)\n .map((name) => {\n queue.defer((callback) => {\n const version = optionalDependencies[name];\n const installString = `${name}${version ? `@${version}` : ''}`;\n const installedAt = path.join(path.dirname(swcDir), ...name.split('/'));\n installModule(installString, installedAt, callback);\n });\n });\n queue.await(callback);\n}\n"],"names":["fs","path","Queue","resolve","installModule","process","installBindings","callback","swcPackagePath","sync","swcDir","dirname","optionalDependencies","JSON","parse","readFileSync","_installDir","depKey","platform","arch","queue","Object","keys","filter","name","indexOf","map","defer","version","installString","installedAt","join","split","await"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAC7B,OAAOC,aAAa,UAAU;AAC9B,OAAOC,mBAAmB,4BAA4B;AACtD,aAAa;AACb,OAAOC,aAAa,gBAAgB;AAEpC,eAAe,SAASC,gBAAgBC,QAAQ;IAC9C,MAAMC,iBAAiBL,QAAQM,IAAI,CAAC;IACpC,MAAMC,SAAST,KAAKU,OAAO,CAACV,KAAKU,OAAO,CAACH;IACzC,MAAM,EAAEI,oBAAoB,EAAE,GAAGC,KAAKC,KAAK,CAACd,GAAGe,YAAY,CAACP,gBAAgB;IAC5E,MAAMQ,cAAcf,KAAKU,OAAO,CAACD;IACjC,MAAMO,SAAS,GAAGZ,QAAQa,QAAQ,CAAC,CAAC,EAAEb,QAAQc,IAAI,EAAE;IAEpD,MAAMC,QAAQ,IAAIlB;IAClBmB,OAAOC,IAAI,CAACV,sBACTW,MAAM,CAAC,CAACC,OAASA,KAAKC,OAAO,CAACR,WAAW,GACzCS,GAAG,CAAC,CAACF;QACJJ,MAAMO,KAAK,CAAC,CAACpB;YACX,MAAMqB,UAAUhB,oBAAoB,CAACY,KAAK;YAC1C,MAAMK,gBAAgB,GAAGL,OAAOI,UAAU,CAAC,CAAC,EAAEA,SAAS,GAAG,IAAI;YAC9D,MAAME,cAAc7B,KAAK8B,IAAI,CAAC9B,KAAKU,OAAO,CAACD,YAAYc,KAAKQ,KAAK,CAAC;YAClE5B,cAAcyB,eAAeC,aAAavB;QAC5C;IACF;IACFa,MAAMa,KAAK,CAAC1B;AACd"}
@@ -1,9 +1,16 @@
1
+ import resolveOnce from 'resolve-once-cb';
1
2
  import installBindings from './installBindings.mjs';
2
3
  // @ts-ignore
3
4
  import lazy from './lazy.cjs';
4
5
  const swc = lazy('@swc/core');
5
- export default function loadSWC(callback) {
6
+ function loadSWC(callback) {
6
7
  installBindings((err)=>{
7
- err ? callback(err) : callback(null, swc());
8
+ if (err) return callback(err);
9
+ try {
10
+ return callback(null, swc());
11
+ } catch (err) {
12
+ return callback(err);
13
+ }
8
14
  });
9
15
  }
16
+ export default resolveOnce(loadSWC);
@@ -1 +1 @@
1
- {"version":3,"sources":["loadSWC.ts"],"sourcesContent":["import installBindings from './installBindings.js';\n// @ts-ignore\nimport lazy from './lazy.cjs';\nconst swc = lazy('@swc/core');\n\nexport default function loadSWC(callback) {\n installBindings((err) => {\n err ? callback(err) : callback(null, swc());\n });\n}\n"],"names":["installBindings","lazy","swc","loadSWC","callback","err"],"mappings":"AAAA,OAAOA,qBAAqB,uBAAuB;AACnD,aAAa;AACb,OAAOC,UAAU,aAAa;AAC9B,MAAMC,MAAMD,KAAK;AAEjB,eAAe,SAASE,QAAQC,QAAQ;IACtCJ,gBAAgB,CAACK;QACfA,MAAMD,SAASC,OAAOD,SAAS,MAAMF;IACvC;AACF"}
1
+ {"version":3,"sources":["loadSWC.ts"],"sourcesContent":["import resolveOnce from 'resolve-once-cb';\nimport installBindings from './installBindings.js';\n// @ts-ignore\nimport lazy from './lazy.cjs';\nconst swc = lazy('@swc/core');\n\nfunction loadSWC(callback) {\n installBindings((err) => {\n if (err) return callback(err);\n try {\n return callback(null, swc());\n } catch (err) {\n return callback(err);\n }\n });\n}\n\nexport default resolveOnce(loadSWC);\n"],"names":["resolveOnce","installBindings","lazy","swc","loadSWC","callback","err"],"mappings":"AAAA,OAAOA,iBAAiB,kBAAkB;AAC1C,OAAOC,qBAAqB,uBAAuB;AACnD,aAAa;AACb,OAAOC,UAAU,aAAa;AAC9B,MAAMC,MAAMD,KAAK;AAEjB,SAASE,QAAQC,QAAQ;IACvBJ,gBAAgB,CAACK;QACf,IAAIA,KAAK,OAAOD,SAASC;QACzB,IAAI;YACF,OAAOD,SAAS,MAAMF;QACxB,EAAE,OAAOG,KAAK;YACZ,OAAOD,SAASC;QAClB;IACF;AACF;AAEA,eAAeN,YAAYI,SAAS"}
@@ -0,0 +1,28 @@
1
+ import path from 'path';
2
+ import Iterator from 'fs-iterator';
3
+ import getTS from 'get-tsconfig-compat';
4
+ import Queue from 'queue-cb';
5
+ import { typeFileRegEx } from '../constants.mjs';
6
+ import createMatcher from '../createMatcher.mjs';
7
+ import transformFile from './transformFile.mjs';
8
+ export default function transformDirectoryWorker(src, dest, type, options, callback) {
9
+ const tsconfig = options.tsconfig ? options.tsconfig : getTS.getTsconfig(src);
10
+ const matcher = createMatcher(tsconfig);
11
+ const entries = [];
12
+ const iterator = new Iterator(src);
13
+ iterator.forEach((entry)=>{
14
+ if (!entry.stats.isFile()) return;
15
+ if (!matcher(entry.fullPath)) return;
16
+ if (typeFileRegEx.test(entry.basename)) return;
17
+ entries.push(entry);
18
+ }, (err)=>{
19
+ if (err) return callback(err);
20
+ options = {
21
+ ...options,
22
+ tsconfig
23
+ };
24
+ const queue = new Queue();
25
+ entries.forEach((entry)=>queue.defer(transformFile.bind(null, entry.fullPath, path.dirname(path.join(dest, entry.path)), type, options)));
26
+ queue.await(callback);
27
+ });
28
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["transformDirectory.ts"],"sourcesContent":["import path from 'path';\nimport Iterator from 'fs-iterator';\nimport getTS from 'get-tsconfig-compat';\nimport Queue from 'queue-cb';\n\nimport { typeFileRegEx } from '../constants.js';\nimport createMatcher from '../createMatcher.js';\nimport transformFile from './transformFile.js';\n\nexport default function transformDirectoryWorker(src, dest, type, options, callback) {\n const tsconfig = options.tsconfig ? options.tsconfig : getTS.getTsconfig(src);\n const matcher = createMatcher(tsconfig);\n\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 entries.push(entry);\n },\n (err) => {\n if (err) return callback(err);\n\n options = { ...options, tsconfig };\n const queue = new Queue();\n entries.forEach((entry) => queue.defer(transformFile.bind(null, entry.fullPath, path.dirname(path.join(dest, entry.path)), type, options)));\n queue.await(callback);\n }\n );\n}\n"],"names":["path","Iterator","getTS","Queue","typeFileRegEx","createMatcher","transformFile","transformDirectoryWorker","src","dest","type","options","callback","tsconfig","getTsconfig","matcher","entries","iterator","forEach","entry","stats","isFile","fullPath","test","basename","push","err","queue","defer","bind","dirname","join","await"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,cAAc,cAAc;AACnC,OAAOC,WAAW,sBAAsB;AACxC,OAAOC,WAAW,WAAW;AAE7B,SAASC,aAAa,QAAQ,kBAAkB;AAChD,OAAOC,mBAAmB,sBAAsB;AAChD,OAAOC,mBAAmB,qBAAqB;AAE/C,eAAe,SAASC,yBAAyBC,GAAG,EAAEC,IAAI,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IACjF,MAAMC,WAAWF,QAAQE,QAAQ,GAAGF,QAAQE,QAAQ,GAAGX,MAAMY,WAAW,CAACN;IACzE,MAAMO,UAAUV,cAAcQ;IAE9B,MAAMG,UAAU,EAAE;IAClB,MAAMC,WAAW,IAAIhB,SAASO;IAC9BS,SAASC,OAAO,CACd,CAACC;QACC,IAAI,CAACA,MAAMC,KAAK,CAACC,MAAM,IAAI;QAC3B,IAAI,CAACN,QAAQI,MAAMG,QAAQ,GAAG;QAC9B,IAAIlB,cAAcmB,IAAI,CAACJ,MAAMK,QAAQ,GAAG;QACxCR,QAAQS,IAAI,CAACN;IACf,GACA,CAACO;QACC,IAAIA,KAAK,OAAOd,SAASc;QAEzBf,UAAU;YAAE,GAAGA,OAAO;YAAEE;QAAS;QACjC,MAAMc,QAAQ,IAAIxB;QAClBa,QAAQE,OAAO,CAAC,CAACC,QAAUQ,MAAMC,KAAK,CAACtB,cAAcuB,IAAI,CAAC,MAAMV,MAAMG,QAAQ,EAAEtB,KAAK8B,OAAO,CAAC9B,KAAK+B,IAAI,CAACtB,MAAMU,MAAMnB,IAAI,IAAIU,MAAMC;QACjIgB,MAAMK,KAAK,CAACpB;IACd;AAEJ"}
@@ -50,15 +50,7 @@ function makeReplacements(code, regex, extensions, extension) {
50
50
  }
51
51
  // https://github.com/vercel/next.js/blob/20b63e13ab2631d6043277895d373aa31a1b327c/packages/next/taskfile-swc.js#L118-L125
52
52
  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]; } } catch (_) {}; module.exports = exports.default; }";
53
- function transformFileCallback(src, dest, type, options, callback) {
54
- if (typeof options === 'function') {
55
- callback = options;
56
- options = {};
57
- }
58
- options = options || {};
59
- if (typeof src !== 'string') throw new Error('transformFile: unexpected source');
60
- if (typeof dest !== 'string') throw new Error('transformFile: unexpected destination directory');
61
- if (typeof type !== 'string') throw new Error('transformFile: unexpected type');
53
+ export default function transformFileWorker(src, dest, type, options, callback) {
62
54
  fs.readFile(src, 'utf8', (err, contents)=>{
63
55
  if (err) return callback(err);
64
56
  callback = once(callback);
@@ -79,48 +71,30 @@ function transformFileCallback(src, dest, type, options, callback) {
79
71
  tsconfig.config.compilerOptions.target = 'ES5';
80
72
  }
81
73
  const basename = path.basename(src);
82
- const output = transformSync(contents, basename, tsconfig);
83
- // infer extension and patch .mjs imports
84
- let ext = path.extname(basename);
85
- if (type === 'esm') {
86
- ext = importReplaceMJS.indexOf(ext) >= 0 ? '.mjs' : ext;
87
- output.code = makeReplacements(output.code, regexESM, importReplaceMJS, '.mjs');
88
- ext = importReplaceCJS.indexOf(ext) >= 0 ? '.cjs' : ext;
89
- output.code = makeReplacements(output.code, regexESM, importReplaceCJS, '.cjs');
90
- } else {
91
- ext = requireReplaceJS.indexOf(ext) >= 0 ? '.js' : ext;
92
- output.code = makeReplacements(output.code, regexCJS, requireReplaceJS, '.js');
93
- output.code += interopClientDefaultExport;
94
- }
95
- const destFilePath = path.join(dest, basename.replace(/\.[^/.]+$/, '') + ext);
96
- mkdirp(path.dirname(destFilePath), ()=>{
97
- const queue = new Queue();
98
- queue.defer(fs.writeFile.bind(null, destFilePath, output.code, 'utf8'));
99
- !options.sourceMaps || queue.defer(fs.writeFile.bind(null, `${destFilePath}.map`, output.map, 'utf8'));
100
- queue.await(()=>err ? callback(err) : callback(null, destFilePath));
74
+ transformSync(contents, basename, tsconfig, (err, output)=>{
75
+ if (err) return callback(err);
76
+ // infer extension and patch .mjs imports
77
+ let ext = path.extname(basename);
78
+ if (type === 'esm') {
79
+ ext = importReplaceMJS.indexOf(ext) >= 0 ? '.mjs' : ext;
80
+ output.code = makeReplacements(output.code, regexESM, importReplaceMJS, '.mjs');
81
+ ext = importReplaceCJS.indexOf(ext) >= 0 ? '.cjs' : ext;
82
+ output.code = makeReplacements(output.code, regexESM, importReplaceCJS, '.cjs');
83
+ } else {
84
+ ext = requireReplaceJS.indexOf(ext) >= 0 ? '.js' : ext;
85
+ output.code = makeReplacements(output.code, regexCJS, requireReplaceJS, '.js');
86
+ output.code += interopClientDefaultExport;
87
+ }
88
+ const destFilePath = path.join(dest, basename.replace(/\.[^/.]+$/, '') + ext);
89
+ mkdirp(path.dirname(destFilePath), ()=>{
90
+ const queue = new Queue();
91
+ queue.defer(fs.writeFile.bind(null, destFilePath, output.code, 'utf8'));
92
+ !options.sourceMaps || queue.defer(fs.writeFile.bind(null, `${destFilePath}.map`, output.map, 'utf8'));
93
+ queue.await(()=>err ? callback(err) : callback(null, destFilePath));
94
+ });
101
95
  });
102
96
  } catch (err) {
103
97
  callback(err);
104
98
  }
105
99
  });
106
100
  }
107
- /**
108
- * @param {string} src The source directory to traverse.
109
- * @param {string} dest The output directory to write the file to.
110
- * @param {string} type The type of transform ('esm' or 'cjs').
111
- * @param {{sourceMaps: boolean}} options Options to pass to swc.
112
- * @param {(err: Error | null, destFilePath: string) =>} [callback] Optional callback returing the path to the transformed file. Uses promise if callback not provided.
113
- * @returns {void | Promise<string>} Optional promise returing the path to the transformed file if callback not provided.
114
- */ export default function transformFile(src, dest, type, options, callback) {
115
- if (typeof options === 'function') {
116
- callback = options;
117
- options = null;
118
- }
119
- options = options || {};
120
- if (typeof callback === 'function') return transformFileCallback(src, dest, type, options, callback);
121
- return new Promise((resolve, reject)=>{
122
- transformFileCallback(src, dest, type, options, function compileCallback(err, result) {
123
- err ? reject(err) : resolve(result);
124
- });
125
- });
126
- }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["transformFile.ts"],"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-classic';\nimport Queue from 'queue-cb';\n\nimport transformSync from './transformSync.js';\n\nconst matchingDeps = '\\\\s*[\\'\"`]([^\\'\"`]+)[\\'\"`]\\\\s*';\nconst matchingName = '\\\\s*(?:[\\\\w${},\\\\s*]+)\\\\s*';\nconst regexCJS = new RegExp(`(?:(?:var|const|let)${matchingName}=\\\\s*)?require\\\\(${matchingDeps}\\\\);?`, 'g');\nconst regexESM = new RegExp(`${regexCJS}|import(?:${matchingName}from\\\\s*)?${matchingDeps};?|export(?:${matchingName}from\\\\s*)?${matchingDeps};?`, 'g');\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]; } } catch (_) {}; module.exports = exports.default; }\";\n\nexport default function transformFileWorker(src, dest, type, options, callback) {\n fs.readFile(src, 'utf8', (err, contents) => {\n if (err) return callback(err);\n callback = once(callback);\n\n try {\n let tsconfig = options.tsconfig ? options.tsconfig : getTS.getTsconfig(src);\n\n // overrides for cjs\n if (type === 'cjs') {\n tsconfig = { ...tsconfig };\n tsconfig.tsconfig = { ...(tsconfig.config || {}) };\n tsconfig.config.compilerOptions = { ...(tsconfig.config.compilerOptions || {}) };\n tsconfig.config.compilerOptions.module = 'CommonJS';\n tsconfig.config.compilerOptions.target = 'ES5';\n }\n\n const basename = path.basename(src);\n transformSync(contents, basename, tsconfig, (err, output) => {\n if (err) return callback(err);\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 });\n } catch (err) {\n callback(err);\n }\n });\n}\n"],"names":["fs","path","once","getTS","mkdirp","Queue","transformSync","matchingDeps","matchingName","regexCJS","RegExp","regexESM","importReplaceMJS","importReplaceCJS","requireReplaceJS","makeReplacements","code","regex","extensions","extension","matches","match","exec","dependency","ext","find","x","slice","length","push","reverse","index","start","indexOf","substring","interopClientDefaultExport","transformFileWorker","src","dest","type","options","callback","readFile","err","contents","tsconfig","getTsconfig","config","compilerOptions","module","target","basename","output","extname","destFilePath","join","replace","dirname","queue","defer","writeFile","bind","sourceMaps","map","await"],"mappings":"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"}
@@ -1,12 +1,15 @@
1
1
  import path from 'path';
2
2
  import * as transpiler from 'ts-node/transpilers/swc';
3
- import * as ts from 'typescript';
3
+ // @ts-ignore
4
+ import lazy from '../lib/lazy.cjs';
4
5
  // @ts-ignore
5
6
  import loadSWC from '../lib/loadSWC.mjs';
6
- export default function transformSync(contents, fileName, config, callback) {
7
+ const lazyTS = lazy('typescript');
8
+ export default function transformSyncWorker(contents, fileName, tsconfig, callback) {
7
9
  loadSWC((err, swc)=>{
8
10
  if (err) return callback(err);
9
- const parsed = ts.parseJsonConfigFileContent(config.config, ts.sys, path.dirname(config.path));
11
+ const ts = lazyTS();
12
+ const parsed = ts.parseJsonConfigFileContent(tsconfig.config, ts.sys, path.dirname(tsconfig.path));
10
13
  const transpile = transpiler.create({
11
14
  swc: swc,
12
15
  service: {