ts-swc-transform 2.6.14 → 2.6.15

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 (73) hide show
  1. package/dist/cjs/constants.d.cts +0 -4
  2. package/dist/cjs/constants.d.ts +0 -4
  3. package/dist/cjs/constants.js +0 -16
  4. package/dist/cjs/constants.js.map +1 -1
  5. package/dist/cjs/createMatcher.d.cts +1 -1
  6. package/dist/cjs/createMatcher.d.ts +1 -1
  7. package/dist/cjs/index.d.cts +8 -8
  8. package/dist/cjs/index.d.ts +8 -8
  9. package/dist/cjs/lib/parseSpecifiers.js +2 -1
  10. package/dist/cjs/lib/parseSpecifiers.js.map +1 -1
  11. package/dist/cjs/lib/patchCJS.d.cts +1 -1
  12. package/dist/cjs/lib/patchCJS.d.ts +1 -1
  13. package/dist/cjs/lib/patchCJS.js +1 -4
  14. package/dist/cjs/lib/patchCJS.js.map +1 -1
  15. package/dist/cjs/lib/patchESM.d.cts +1 -1
  16. package/dist/cjs/lib/patchESM.d.ts +1 -1
  17. package/dist/cjs/lib/patchESM.js +1 -4
  18. package/dist/cjs/lib/patchESM.js.map +1 -1
  19. package/dist/cjs/lib/prepareSWCOptions.d.cts +1 -1
  20. package/dist/cjs/lib/prepareSWCOptions.d.ts +1 -1
  21. package/dist/cjs/lib/rewriteExtensions.d.cts +1 -1
  22. package/dist/cjs/lib/rewriteExtensions.d.ts +1 -1
  23. package/dist/cjs/lib/rewriteExtensions.js +11 -23
  24. package/dist/cjs/lib/rewriteExtensions.js.map +1 -1
  25. package/dist/cjs/lib/transformFile.d.cts +1 -1
  26. package/dist/cjs/lib/transformFile.d.ts +1 -1
  27. package/dist/cjs/resolveFileSync.d.cts +1 -1
  28. package/dist/cjs/resolveFileSync.d.ts +1 -1
  29. package/dist/cjs/toPath.d.cts +1 -1
  30. package/dist/cjs/toPath.d.ts +1 -1
  31. package/dist/cjs/transformDirectory.d.cts +1 -1
  32. package/dist/cjs/transformDirectory.d.ts +1 -1
  33. package/dist/cjs/transformSync.d.cts +1 -1
  34. package/dist/cjs/transformSync.d.ts +1 -1
  35. package/dist/cjs/transformTypes.d.cts +1 -1
  36. package/dist/cjs/transformTypes.d.ts +1 -1
  37. package/dist/cjs/workers/transformDirectory.d.cts +1 -1
  38. package/dist/cjs/workers/transformDirectory.d.ts +1 -1
  39. package/dist/cjs/workers/transformSync.d.cts +1 -1
  40. package/dist/cjs/workers/transformSync.d.ts +1 -1
  41. package/dist/cjs/workers/transformTypes.d.cts +1 -1
  42. package/dist/cjs/workers/transformTypes.d.ts +1 -1
  43. package/dist/cjs/workers/transformTypes.js +6 -5
  44. package/dist/cjs/workers/transformTypes.js.map +1 -1
  45. package/dist/esm/constants.d.ts +0 -4
  46. package/dist/esm/constants.js +0 -5
  47. package/dist/esm/constants.js.map +1 -1
  48. package/dist/esm/createMatcher.d.ts +1 -1
  49. package/dist/esm/index.d.ts +8 -8
  50. package/dist/esm/lib/parseSpecifiers.js +2 -1
  51. package/dist/esm/lib/parseSpecifiers.js.map +1 -1
  52. package/dist/esm/lib/patchCJS.d.ts +1 -1
  53. package/dist/esm/lib/patchCJS.js +2 -5
  54. package/dist/esm/lib/patchCJS.js.map +1 -1
  55. package/dist/esm/lib/patchESM.d.ts +1 -1
  56. package/dist/esm/lib/patchESM.js +2 -5
  57. package/dist/esm/lib/patchESM.js.map +1 -1
  58. package/dist/esm/lib/prepareSWCOptions.d.ts +1 -1
  59. package/dist/esm/lib/rewriteExtensions.d.ts +1 -1
  60. package/dist/esm/lib/rewriteExtensions.js +8 -15
  61. package/dist/esm/lib/rewriteExtensions.js.map +1 -1
  62. package/dist/esm/lib/transformFile.d.ts +1 -1
  63. package/dist/esm/resolveFileSync.d.ts +1 -1
  64. package/dist/esm/toPath.d.ts +1 -1
  65. package/dist/esm/transformDirectory.d.ts +1 -1
  66. package/dist/esm/transformSync.d.ts +1 -1
  67. package/dist/esm/transformTypes.d.ts +1 -1
  68. package/dist/esm/workers/transformDirectory.d.ts +1 -1
  69. package/dist/esm/workers/transformSync.d.ts +1 -1
  70. package/dist/esm/workers/transformTypes.d.ts +1 -1
  71. package/dist/esm/workers/transformTypes.js +4 -3
  72. package/dist/esm/workers/transformTypes.js.map +1 -1
  73. package/package.json +1 -1
@@ -1,7 +1,3 @@
1
1
  export declare const moduleRegEx: RegExp;
2
2
  export declare const typeFileRegEx: RegExp;
3
- export declare const moduleDependencyRegEx = "\\s*['\"`]([^'\"`]+)['\"`]\\s*";
4
- export declare const moduleNameRegEx = "\\s*(?:[\\w${},\\s*]+)\\s*";
5
- export declare const requireRegEx: RegExp;
6
- export declare const importRegEx: RegExp;
7
3
  export declare const extensions: string[];
@@ -1,7 +1,3 @@
1
1
  export declare const moduleRegEx: RegExp;
2
2
  export declare const typeFileRegEx: RegExp;
3
- export declare const moduleDependencyRegEx = "\\s*['\"`]([^'\"`]+)['\"`]\\s*";
4
- export declare const moduleNameRegEx = "\\s*(?:[\\w${},\\s*]+)\\s*";
5
- export declare const requireRegEx: RegExp;
6
- export declare const importRegEx: RegExp;
7
3
  export declare const extensions: string[];
@@ -12,31 +12,15 @@ _export(exports, {
12
12
  get extensions () {
13
13
  return extensions;
14
14
  },
15
- get importRegEx () {
16
- return importRegEx;
17
- },
18
- get moduleDependencyRegEx () {
19
- return moduleDependencyRegEx;
20
- },
21
- get moduleNameRegEx () {
22
- return moduleNameRegEx;
23
- },
24
15
  get moduleRegEx () {
25
16
  return moduleRegEx;
26
17
  },
27
- get requireRegEx () {
28
- return requireRegEx;
29
- },
30
18
  get typeFileRegEx () {
31
19
  return typeFileRegEx;
32
20
  }
33
21
  });
34
22
  var moduleRegEx = /^[^./]|^\.[^./]|^\.\.[^/]/;
35
23
  var typeFileRegEx = /^[^.]+\.d\.[cm]?ts$/;
36
- var moduleDependencyRegEx = '\\s*[\'"`]([^\'"`]+)[\'"`]\\s*';
37
- var moduleNameRegEx = '\\s*(?:[\\w${},\\s*]+)\\s*';
38
- var requireRegEx = new RegExp("(?:(?:var|const|let)".concat(moduleNameRegEx, "=\\s*)?require\\(").concat(moduleDependencyRegEx, "\\)?"), 'g');
39
- var importRegEx = new RegExp("".concat(requireRegEx, "|import(?:").concat(moduleNameRegEx, "from\\s*)?").concat(moduleDependencyRegEx, ";?|export(?:").concat(moduleNameRegEx, "from\\s*)?").concat(moduleDependencyRegEx, "?"), 'g');
40
24
  var extensions = [
41
25
  '.js',
42
26
  '.jsx',
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/constants.ts"],"sourcesContent":["export const moduleRegEx = /^[^./]|^\\.[^./]|^\\.\\.[^/]/;\nexport const typeFileRegEx = /^[^.]+\\.d\\.[cm]?ts$/;\n\nexport const moduleDependencyRegEx = '\\\\s*[\\'\"`]([^\\'\"`]+)[\\'\"`]\\\\s*';\n// biome-ignore lint/suspicious/noTemplateCurlyInString: Valid regex\nexport const moduleNameRegEx = '\\\\s*(?:[\\\\w${},\\\\s*]+)\\\\s*';\nexport const requireRegEx = new RegExp(`(?:(?:var|const|let)${moduleNameRegEx}=\\\\s*)?require\\\\(${moduleDependencyRegEx}\\\\)?`, 'g');\nexport const importRegEx = new RegExp(`${requireRegEx}|import(?:${moduleNameRegEx}from\\\\s*)?${moduleDependencyRegEx};?|export(?:${moduleNameRegEx}from\\\\s*)?${moduleDependencyRegEx}?`, 'g');\nexport const extensions = ['.js', '.jsx', '.cjs', '.mjs', '.ts', '.tsx', '.cts', '.mts', '.es6', '.es'];\n"],"names":["extensions","importRegEx","moduleDependencyRegEx","moduleNameRegEx","moduleRegEx","requireRegEx","typeFileRegEx","RegExp"],"mappings":";;;;;;;;;;;QAQaA;eAAAA;;QADAC;eAAAA;;QAJAC;eAAAA;;QAEAC;eAAAA;;QALAC;eAAAA;;QAMAC;eAAAA;;QALAC;eAAAA;;;AADN,IAAMF,cAAc;AACpB,IAAME,gBAAgB;AAEtB,IAAMJ,wBAAwB;AAE9B,IAAMC,kBAAkB;AACxB,IAAME,eAAe,IAAIE,OAAO,AAAC,uBAAyDL,OAAnCC,iBAAgB,qBAAyC,OAAtBD,uBAAsB,SAAO;AACvH,IAAMD,cAAc,IAAIM,OAAO,AAAC,GAA2BJ,OAAzBE,cAAa,cAAwCH,OAA5BC,iBAAgB,cAAgDA,OAApCD,uBAAsB,gBAA0CA,OAA5BC,iBAAgB,cAAkC,OAAtBD,uBAAsB,MAAI;AACjL,IAAMF,aAAa;IAAC;IAAO;IAAQ;IAAQ;IAAQ;IAAO;IAAQ;IAAQ;IAAQ;IAAQ;CAAM"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/constants.ts"],"sourcesContent":["export const moduleRegEx = /^[^./]|^\\.[^./]|^\\.\\.[^/]/;\nexport const typeFileRegEx = /^[^.]+\\.d\\.[cm]?ts$/;\nexport const extensions = ['.js', '.jsx', '.cjs', '.mjs', '.ts', '.tsx', '.cts', '.mts', '.es6', '.es'];\n"],"names":["extensions","moduleRegEx","typeFileRegEx"],"mappings":";;;;;;;;;;;QAEaA;eAAAA;;QAFAC;eAAAA;;QACAC;eAAAA;;;AADN,IAAMD,cAAc;AACpB,IAAMC,gBAAgB;AACtB,IAAMF,aAAa;IAAC;IAAO;IAAQ;IAAQ;IAAQ;IAAO;IAAQ;IAAQ;IAAQ;IAAQ;CAAM"}
@@ -1,2 +1,2 @@
1
- import type { Matcher, TSConfig } from './types.ts';
1
+ import type { Matcher, TSConfig } from './types.js';
2
2
  export default function createMatcher(tsconfig: TSConfig): Matcher;
@@ -1,2 +1,2 @@
1
- import type { Matcher, TSConfig } from './types.ts';
1
+ import type { Matcher, TSConfig } from './types.js';
2
2
  export default function createMatcher(tsconfig: TSConfig): Matcher;
@@ -1,8 +1,8 @@
1
- export * as constants from './constants.ts';
2
- export { default as createMatcher } from './createMatcher.ts';
3
- export { default as resolveFileSync } from './resolveFileSync.ts';
4
- export { default as toPath } from './toPath.ts';
5
- export { default as transformDirectory } from './transformDirectory.ts';
6
- export { default as transformSync } from './transformSync.ts';
7
- export { default as transformTypes } from './transformTypes.ts';
8
- export type * from './types.ts';
1
+ export * as constants from './constants.js';
2
+ export { default as createMatcher } from './createMatcher.js';
3
+ export { default as resolveFileSync } from './resolveFileSync.js';
4
+ export { default as toPath } from './toPath.js';
5
+ export { default as transformDirectory } from './transformDirectory.js';
6
+ export { default as transformSync } from './transformSync.js';
7
+ export { default as transformTypes } from './transformTypes.js';
8
+ export type * from './types.js';
@@ -1,8 +1,8 @@
1
- export * as constants from './constants.ts';
2
- export { default as createMatcher } from './createMatcher.ts';
3
- export { default as resolveFileSync } from './resolveFileSync.ts';
4
- export { default as toPath } from './toPath.ts';
5
- export { default as transformDirectory } from './transformDirectory.ts';
6
- export { default as transformSync } from './transformSync.ts';
7
- export { default as transformTypes } from './transformTypes.ts';
8
- export type * from './types.ts';
1
+ export * as constants from './constants.js';
2
+ export { default as createMatcher } from './createMatcher.js';
3
+ export { default as resolveFileSync } from './resolveFileSync.js';
4
+ export { default as toPath } from './toPath.js';
5
+ export { default as transformDirectory } from './transformDirectory.js';
6
+ export { default as transformSync } from './transformSync.js';
7
+ export { default as transformTypes } from './transformTypes.js';
8
+ export type * from './types.js';
@@ -13,7 +13,8 @@ function parser(code, regex) {
13
13
  var offset = 0;
14
14
  var match = regex.exec(code);
15
15
  while(match){
16
- var dependency = match[1] || match[2] || match[3] || match[4];
16
+ // Support up to 5 capture groups for declaration-specific patterns
17
+ var dependency = match[1] || match[2] || match[3] || match[4] || match[5];
17
18
  parsed.push({
18
19
  content: code.substring(offset, match.index + match[0].lastIndexOf(dependency)),
19
20
  isSpecifier: false
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/parseSpecifiers.ts"],"sourcesContent":["export interface Parsed {\n content: string;\n isSpecifier: boolean;\n}\n\nexport default function parser(code: string, regex: RegExp): Parsed[] {\n const parsed: Parsed[] = [];\n let offset = 0;\n let match = regex.exec(code);\n while (match) {\n const dependency = match[1] || match[2] || match[3] || match[4];\n parsed.push({ content: code.substring(offset, match.index + match[0].lastIndexOf(dependency)), isSpecifier: false });\n offset += parsed[parsed.length - 1].content.length;\n parsed.push({ content: dependency, isSpecifier: true });\n offset += parsed[parsed.length - 1].content.length;\n match = regex.exec(code);\n }\n\n if (offset < code.length) {\n parsed.push({ content: code.substring(offset, code.length), isSpecifier: false });\n }\n return parsed;\n}\n"],"names":["parser","code","regex","parsed","offset","match","exec","dependency","push","content","substring","index","lastIndexOf","isSpecifier","length"],"mappings":";;;;+BAKA;;;eAAwBA;;;AAAT,SAASA,OAAOC,IAAY,EAAEC,KAAa;IACxD,IAAMC,SAAmB,EAAE;IAC3B,IAAIC,SAAS;IACb,IAAIC,QAAQH,MAAMI,IAAI,CAACL;IACvB,MAAOI,MAAO;QACZ,IAAME,aAAaF,KAAK,CAAC,EAAE,IAAIA,KAAK,CAAC,EAAE,IAAIA,KAAK,CAAC,EAAE,IAAIA,KAAK,CAAC,EAAE;QAC/DF,OAAOK,IAAI,CAAC;YAAEC,SAASR,KAAKS,SAAS,CAACN,QAAQC,MAAMM,KAAK,GAAGN,KAAK,CAAC,EAAE,CAACO,WAAW,CAACL;YAAcM,aAAa;QAAM;QAClHT,UAAUD,MAAM,CAACA,OAAOW,MAAM,GAAG,EAAE,CAACL,OAAO,CAACK,MAAM;QAClDX,OAAOK,IAAI,CAAC;YAAEC,SAASF;YAAYM,aAAa;QAAK;QACrDT,UAAUD,MAAM,CAACA,OAAOW,MAAM,GAAG,EAAE,CAACL,OAAO,CAACK,MAAM;QAClDT,QAAQH,MAAMI,IAAI,CAACL;IACrB;IAEA,IAAIG,SAASH,KAAKa,MAAM,EAAE;QACxBX,OAAOK,IAAI,CAAC;YAAEC,SAASR,KAAKS,SAAS,CAACN,QAAQH,KAAKa,MAAM;YAAGD,aAAa;QAAM;IACjF;IACA,OAAOV;AACT"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/parseSpecifiers.ts"],"sourcesContent":["export interface Parsed {\n content: string;\n isSpecifier: boolean;\n}\n\nexport default function parser(code: string, regex: RegExp): Parsed[] {\n const parsed: Parsed[] = [];\n let offset = 0;\n let match = regex.exec(code);\n while (match) {\n // Support up to 5 capture groups for declaration-specific patterns\n const dependency = match[1] || match[2] || match[3] || match[4] || match[5];\n parsed.push({ content: code.substring(offset, match.index + match[0].lastIndexOf(dependency)), isSpecifier: false });\n offset += parsed[parsed.length - 1].content.length;\n parsed.push({ content: dependency, isSpecifier: true });\n offset += parsed[parsed.length - 1].content.length;\n match = regex.exec(code);\n }\n\n if (offset < code.length) {\n parsed.push({ content: code.substring(offset, code.length), isSpecifier: false });\n }\n return parsed;\n}\n"],"names":["parser","code","regex","parsed","offset","match","exec","dependency","push","content","substring","index","lastIndexOf","isSpecifier","length"],"mappings":";;;;+BAKA;;;eAAwBA;;;AAAT,SAASA,OAAOC,IAAY,EAAEC,KAAa;IACxD,IAAMC,SAAmB,EAAE;IAC3B,IAAIC,SAAS;IACb,IAAIC,QAAQH,MAAMI,IAAI,CAACL;IACvB,MAAOI,MAAO;QACZ,mEAAmE;QACnE,IAAME,aAAaF,KAAK,CAAC,EAAE,IAAIA,KAAK,CAAC,EAAE,IAAIA,KAAK,CAAC,EAAE,IAAIA,KAAK,CAAC,EAAE,IAAIA,KAAK,CAAC,EAAE;QAC3EF,OAAOK,IAAI,CAAC;YAAEC,SAASR,KAAKS,SAAS,CAACN,QAAQC,MAAMM,KAAK,GAAGN,KAAK,CAAC,EAAE,CAACO,WAAW,CAACL;YAAcM,aAAa;QAAM;QAClHT,UAAUD,MAAM,CAACA,OAAOW,MAAM,GAAG,EAAE,CAACL,OAAO,CAACK,MAAM;QAClDX,OAAOK,IAAI,CAAC;YAAEC,SAASF;YAAYM,aAAa;QAAK;QACrDT,UAAUD,MAAM,CAACA,OAAOW,MAAM,GAAG,EAAE,CAACL,OAAO,CAACK,MAAM;QAClDT,QAAQH,MAAMI,IAAI,CAACL;IACrB;IAEA,IAAIG,SAASH,KAAKa,MAAM,EAAE;QACxBX,OAAOK,IAAI,CAAC;YAAEC,SAASR,KAAKS,SAAS,CAACN,QAAQH,KAAKa,MAAM;YAAGD,aAAa;QAAM;IACjF;IACA,OAAOV;AACT"}
@@ -1,5 +1,5 @@
1
1
  export declare const interop = "/* 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; }";
2
2
  import type { Output } from '@swc/core';
3
3
  import type { Entry } from 'fs-iterator';
4
- import type { ConfigOptions } from '../types.ts';
4
+ import type { ConfigOptions } from '../types.js';
5
5
  export default function patchCJS(entry: Entry, output: Output, options: ConfigOptions): string;
@@ -1,5 +1,5 @@
1
1
  export declare const interop = "/* 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; }";
2
2
  import type { Output } from '@swc/core';
3
3
  import type { Entry } from 'fs-iterator';
4
- import type { ConfigOptions } from '../types.ts';
4
+ import type { ConfigOptions } from '../types.js';
5
5
  export default function patchCJS(entry: Entry, output: Output, options: ConfigOptions): string;
@@ -17,7 +17,6 @@ _export(exports, {
17
17
  }
18
18
  });
19
19
  var _path = /*#__PURE__*/ _interop_require_default(require("path"));
20
- var _constants = require("../constants");
21
20
  var _rewriteExtensionsts = require("./rewriteExtensions.js");
22
21
  function _interop_require_default(obj) {
23
22
  return obj && obj.__esModule ? obj : {
@@ -27,9 +26,7 @@ function _interop_require_default(obj) {
27
26
  var interop = "/* 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; }";
28
27
  function patchCJS(entry, output, options) {
29
28
  var rewrite = (options.tsconfig.config.compilerOptions || {}).rewriteRelativeImportExtensions;
30
- if (rewrite) {
31
- output.code = (0, _rewriteExtensionsts.makeReplacements)(output.code, _constants.requireRegEx);
32
- }
29
+ if (rewrite) output.code = (0, _rewriteExtensionsts.rewriteExtensions)(output.code);
33
30
  output.code += interop;
34
31
  return (0, _rewriteExtensionsts.replaceExtension)(_path.default.extname(entry.basename));
35
32
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/patchCJS.ts"],"sourcesContent":["import path from 'path';\nimport { requireRegEx } from '../constants';\nimport { makeReplacements, replaceExtension } from './rewriteExtensions.ts';\n\n// https://github.com/vercel/next.js/blob/20b63e13ab2631d6043277895d373aa31a1b327c/packages/next/taskfile-swc.js#L118-L125\nexport const interop = \"/* 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\nimport type { Output } from '@swc/core';\nimport type { Entry } from 'fs-iterator';\nimport type { CompilerOptions } from 'typescript';\nimport type { ConfigOptions } from '../types.ts';\n\ninterface InternalCompilerOptions extends CompilerOptions {\n rewriteRelativeImportExtensions?: boolean;\n}\n\nexport default function patchCJS(entry: Entry, output: Output, options: ConfigOptions): string {\n const rewrite = ((options.tsconfig.config.compilerOptions || {}) as unknown as InternalCompilerOptions).rewriteRelativeImportExtensions;\n if (rewrite) {\n output.code = makeReplacements(output.code, requireRegEx);\n }\n output.code += interop;\n\n return replaceExtension(path.extname(entry.basename));\n}\n"],"names":["patchCJS","interop","entry","output","options","rewrite","tsconfig","config","compilerOptions","rewriteRelativeImportExtensions","code","makeReplacements","requireRegEx","replaceExtension","path","extname","basename"],"mappings":";;;;;;;;;;;QAgBA;eAAwBA;;QAXXC;eAAAA;;;2DALI;yBACY;mCACsB;;;;;;AAG5C,IAAMA,UAAU;AAWR,SAASD,SAASE,KAAY,EAAEC,MAAc,EAAEC,OAAsB;IACnF,IAAMC,UAAU,AAAED,CAAAA,QAAQE,QAAQ,CAACC,MAAM,CAACC,eAAe,IAAI,CAAC,CAAA,EAA0CC,+BAA+B;IACvI,IAAIJ,SAAS;QACXF,OAAOO,IAAI,GAAGC,IAAAA,qCAAgB,EAACR,OAAOO,IAAI,EAAEE,uBAAY;IAC1D;IACAT,OAAOO,IAAI,IAAIT;IAEf,OAAOY,IAAAA,qCAAgB,EAACC,aAAI,CAACC,OAAO,CAACb,MAAMc,QAAQ;AACrD"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/patchCJS.ts"],"sourcesContent":["import path from 'path';\nimport { replaceExtension, rewriteExtensions } from './rewriteExtensions.ts';\n\n// https://github.com/vercel/next.js/blob/20b63e13ab2631d6043277895d373aa31a1b327c/packages/next/taskfile-swc.js#L118-L125\nexport const interop = \"/* 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\nimport type { Output } from '@swc/core';\nimport type { Entry } from 'fs-iterator';\nimport type { CompilerOptions } from 'typescript';\nimport type { ConfigOptions } from '../types.ts';\n\ninterface InternalCompilerOptions extends CompilerOptions {\n rewriteRelativeImportExtensions?: boolean;\n}\n\nexport default function patchCJS(entry: Entry, output: Output, options: ConfigOptions): string {\n const rewrite = ((options.tsconfig.config.compilerOptions || {}) as unknown as InternalCompilerOptions).rewriteRelativeImportExtensions;\n if (rewrite) output.code = rewriteExtensions(output.code);\n output.code += interop;\n\n return replaceExtension(path.extname(entry.basename));\n}\n"],"names":["patchCJS","interop","entry","output","options","rewrite","tsconfig","config","compilerOptions","rewriteRelativeImportExtensions","code","rewriteExtensions","replaceExtension","path","extname","basename"],"mappings":";;;;;;;;;;;QAeA;eAAwBA;;QAXXC;eAAAA;;;2DAJI;mCACmC;;;;;;AAG7C,IAAMA,UAAU;AAWR,SAASD,SAASE,KAAY,EAAEC,MAAc,EAAEC,OAAsB;IACnF,IAAMC,UAAU,AAAED,CAAAA,QAAQE,QAAQ,CAACC,MAAM,CAACC,eAAe,IAAI,CAAC,CAAA,EAA0CC,+BAA+B;IACvI,IAAIJ,SAASF,OAAOO,IAAI,GAAGC,IAAAA,sCAAiB,EAACR,OAAOO,IAAI;IACxDP,OAAOO,IAAI,IAAIT;IAEf,OAAOW,IAAAA,qCAAgB,EAACC,aAAI,CAACC,OAAO,CAACZ,MAAMa,QAAQ;AACrD"}
@@ -1,4 +1,4 @@
1
1
  import type { Output } from '@swc/core';
2
2
  import type { Entry } from 'fs-iterator';
3
- import type { ConfigOptions } from '../types.ts';
3
+ import type { ConfigOptions } from '../types.js';
4
4
  export default function patchESM(entry: Entry, output: Output, options: ConfigOptions): string;
@@ -1,4 +1,4 @@
1
1
  import type { Output } from '@swc/core';
2
2
  import type { Entry } from 'fs-iterator';
3
- import type { ConfigOptions } from '../types.ts';
3
+ import type { ConfigOptions } from '../types.js';
4
4
  export default function patchESM(entry: Entry, output: Output, options: ConfigOptions): string;
@@ -9,7 +9,6 @@ Object.defineProperty(exports, "default", {
9
9
  }
10
10
  });
11
11
  var _path = /*#__PURE__*/ _interop_require_default(require("path"));
12
- var _constants = require("../constants");
13
12
  var _rewriteExtensionsts = require("./rewriteExtensions.js");
14
13
  function _interop_require_default(obj) {
15
14
  return obj && obj.__esModule ? obj : {
@@ -18,9 +17,7 @@ function _interop_require_default(obj) {
18
17
  }
19
18
  function patchESM(entry, output, options) {
20
19
  var rewrite = (options.tsconfig.config.compilerOptions || {}).rewriteRelativeImportExtensions;
21
- if (rewrite) {
22
- output.code = (0, _rewriteExtensionsts.makeReplacements)(output.code, _constants.importRegEx);
23
- }
20
+ if (rewrite) output.code = (0, _rewriteExtensionsts.rewriteExtensions)(output.code);
24
21
  return (0, _rewriteExtensionsts.replaceExtension)(_path.default.extname(entry.basename));
25
22
  }
26
23
  /* 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; }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/patchESM.ts"],"sourcesContent":["import type { Output } from '@swc/core';\nimport type { Entry } from 'fs-iterator';\nimport path from 'path';\nimport type { CompilerOptions } from 'typescript';\nimport { importRegEx } from '../constants';\nimport type { ConfigOptions } from '../types.ts';\nimport { makeReplacements, replaceExtension } from './rewriteExtensions.ts';\n\ninterface InternalCompilerOptions extends CompilerOptions {\n rewriteRelativeImportExtensions?: boolean;\n}\n\nexport default function patchESM(entry: Entry, output: Output, options: ConfigOptions): string {\n const rewrite = ((options.tsconfig.config.compilerOptions || {}) as unknown as InternalCompilerOptions).rewriteRelativeImportExtensions;\n if (rewrite) {\n output.code = makeReplacements(output.code, importRegEx);\n }\n\n return replaceExtension(path.extname(entry.basename));\n}\n"],"names":["patchESM","entry","output","options","rewrite","tsconfig","config","compilerOptions","rewriteRelativeImportExtensions","code","makeReplacements","importRegEx","replaceExtension","path","extname","basename"],"mappings":";;;;+BAYA;;;eAAwBA;;;2DAVP;yBAEW;mCAEuB;;;;;;AAMpC,SAASA,SAASC,KAAY,EAAEC,MAAc,EAAEC,OAAsB;IACnF,IAAMC,UAAU,AAAED,CAAAA,QAAQE,QAAQ,CAACC,MAAM,CAACC,eAAe,IAAI,CAAC,CAAA,EAA0CC,+BAA+B;IACvI,IAAIJ,SAAS;QACXF,OAAOO,IAAI,GAAGC,IAAAA,qCAAgB,EAACR,OAAOO,IAAI,EAAEE,sBAAW;IACzD;IAEA,OAAOC,IAAAA,qCAAgB,EAACC,aAAI,CAACC,OAAO,CAACb,MAAMc,QAAQ;AACrD"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/patchESM.ts"],"sourcesContent":["import type { Output } from '@swc/core';\nimport type { Entry } from 'fs-iterator';\nimport path from 'path';\nimport type { CompilerOptions } from 'typescript';\nimport type { ConfigOptions } from '../types.ts';\nimport { replaceExtension, rewriteExtensions } from './rewriteExtensions.ts';\n\ninterface InternalCompilerOptions extends CompilerOptions {\n rewriteRelativeImportExtensions?: boolean;\n}\n\nexport default function patchESM(entry: Entry, output: Output, options: ConfigOptions): string {\n const rewrite = ((options.tsconfig.config.compilerOptions || {}) as unknown as InternalCompilerOptions).rewriteRelativeImportExtensions;\n if (rewrite) output.code = rewriteExtensions(output.code);\n\n return replaceExtension(path.extname(entry.basename));\n}\n"],"names":["patchESM","entry","output","options","rewrite","tsconfig","config","compilerOptions","rewriteRelativeImportExtensions","code","rewriteExtensions","replaceExtension","path","extname","basename"],"mappings":";;;;+BAWA;;;eAAwBA;;;2DATP;mCAGmC;;;;;;AAMrC,SAASA,SAASC,KAAY,EAAEC,MAAc,EAAEC,OAAsB;IACnF,IAAMC,UAAU,AAAED,CAAAA,QAAQE,QAAQ,CAACC,MAAM,CAACC,eAAe,IAAI,CAAC,CAAA,EAA0CC,+BAA+B;IACvI,IAAIJ,SAASF,OAAOO,IAAI,GAAGC,IAAAA,sCAAiB,EAACR,OAAOO,IAAI;IAExD,OAAOE,IAAAA,qCAAgB,EAACC,aAAI,CAACC,OAAO,CAACZ,MAAMa,QAAQ;AACrD"}
@@ -1,5 +1,5 @@
1
1
  import type { Options } from '@swc/core';
2
- import type { TSConfig } from '../types.ts';
2
+ import type { TSConfig } from '../types.js';
3
3
  export interface TranspilerOptions {
4
4
  tsxOptions: Options;
5
5
  nonTsxOptions: Options;
@@ -1,5 +1,5 @@
1
1
  import type { Options } from '@swc/core';
2
- import type { TSConfig } from '../types.ts';
2
+ import type { TSConfig } from '../types.js';
3
3
  export interface TranspilerOptions {
4
4
  tsxOptions: Options;
5
5
  nonTsxOptions: Options;
@@ -5,4 +5,4 @@ export declare const extensions: {
5
5
  '.cts': string;
6
6
  };
7
7
  export declare function replaceExtension(ext: string): string;
8
- export declare function makeReplacements(code: string, regex: RegExp): string;
8
+ export declare function rewriteExtensions(content: string): string;
@@ -5,4 +5,4 @@ export declare const extensions: {
5
5
  '.cts': string;
6
6
  };
7
7
  export declare function replaceExtension(ext: string): string;
8
- export declare function makeReplacements(code: string, regex: RegExp): string;
8
+ export declare function rewriteExtensions(content: string): string;
@@ -12,21 +12,13 @@ _export(exports, {
12
12
  get extensions () {
13
13
  return extensions;
14
14
  },
15
- get makeReplacements () {
16
- return makeReplacements;
17
- },
18
15
  get replaceExtension () {
19
16
  return replaceExtension;
17
+ },
18
+ get rewriteExtensions () {
19
+ return rewriteExtensions;
20
20
  }
21
21
  });
22
- var _path = /*#__PURE__*/ _interop_require_default(require("path"));
23
- var _constantsts = require("../constants.js");
24
- var _parseSpecifiersts = /*#__PURE__*/ _interop_require_default(require("./parseSpecifiers.js"));
25
- function _interop_require_default(obj) {
26
- return obj && obj.__esModule ? obj : {
27
- default: obj
28
- };
29
- }
30
22
  var extensions = {
31
23
  '.ts': '.js',
32
24
  '.tsx': '.js',
@@ -37,17 +29,13 @@ function replaceExtension(ext) {
37
29
  var replace = extensions[ext];
38
30
  return replace === undefined ? ext : replace;
39
31
  }
40
- function makeReplacements(code, regex) {
41
- var parsed = (0, _parseSpecifiersts.default)(code, regex);
42
- return parsed.map(function(parsed) {
43
- if (!parsed.isSpecifier) return parsed.content;
44
- var specifier = parsed.content;
45
- if (_constantsts.moduleRegEx.test(specifier)) return specifier;
46
- if (specifier[0] !== '.') return specifier;
47
- var ext = _path.default.extname(specifier);
48
- var replace = replaceExtension(ext);
49
- if (ext === replace) return specifier;
50
- return "".concat(specifier.slice(0, -ext.length)).concat(replace);
51
- }).join('');
32
+ // Pure regex solution for rewriting TypeScript extensions to JavaScript
33
+ // Pattern: quote + relative path (starts with .) + TS extension + matching quote
34
+ var extensionPattern = /(['"`])(\.[-\w./]*?)\.(tsx?|mts|cts)\1/g;
35
+ function rewriteExtensions(content) {
36
+ return content.replace(extensionPattern, function(_match, quote, path, ext) {
37
+ var newExt = extensions[".".concat(ext)];
38
+ return "".concat(quote).concat(path).concat(newExt).concat(quote);
39
+ });
52
40
  }
53
41
  /* 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; }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/rewriteExtensions.ts"],"sourcesContent":["import path from 'path';\nimport { moduleRegEx } from '../constants.ts';\nimport parseSpecifiers from './parseSpecifiers.ts';\n\nexport const extensions = {\n '.ts': '.js',\n '.tsx': '.js',\n '.mts': '.mjs',\n '.cts': '.cjs',\n};\n\nexport function replaceExtension(ext: string): string {\n const replace = extensions[ext];\n return replace === undefined ? ext : replace;\n}\n\nexport function makeReplacements(code: string, regex: RegExp): string {\n const parsed = parseSpecifiers(code, regex);\n\n return parsed\n .map((parsed) => {\n if (!parsed.isSpecifier) return parsed.content;\n const specifier = parsed.content;\n if (moduleRegEx.test(specifier)) return specifier;\n if (specifier[0] !== '.') return specifier;\n const ext = path.extname(specifier);\n const replace = replaceExtension(ext);\n if (ext === replace) return specifier;\n return `${specifier.slice(0, -ext.length)}${replace}`;\n })\n .join('');\n}\n"],"names":["extensions","makeReplacements","replaceExtension","ext","replace","undefined","code","regex","parsed","parseSpecifiers","map","isSpecifier","content","specifier","moduleRegEx","test","path","extname","slice","length","join"],"mappings":";;;;;;;;;;;QAIaA;eAAAA;;QAYGC;eAAAA;;QALAC;eAAAA;;;2DAXC;2BACW;wEACA;;;;;;AAErB,IAAMF,aAAa;IACxB,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;AACV;AAEO,SAASE,iBAAiBC,GAAW;IAC1C,IAAMC,UAAUJ,UAAU,CAACG,IAAI;IAC/B,OAAOC,YAAYC,YAAYF,MAAMC;AACvC;AAEO,SAASH,iBAAiBK,IAAY,EAAEC,KAAa;IAC1D,IAAMC,SAASC,IAAAA,0BAAe,EAACH,MAAMC;IAErC,OAAOC,OACJE,GAAG,CAAC,SAACF;QACJ,IAAI,CAACA,OAAOG,WAAW,EAAE,OAAOH,OAAOI,OAAO;QAC9C,IAAMC,YAAYL,OAAOI,OAAO;QAChC,IAAIE,wBAAW,CAACC,IAAI,CAACF,YAAY,OAAOA;QACxC,IAAIA,SAAS,CAAC,EAAE,KAAK,KAAK,OAAOA;QACjC,IAAMV,MAAMa,aAAI,CAACC,OAAO,CAACJ;QACzB,IAAMT,UAAUF,iBAAiBC;QACjC,IAAIA,QAAQC,SAAS,OAAOS;QAC5B,OAAO,AAAC,GAAoCT,OAAlCS,UAAUK,KAAK,CAAC,GAAG,CAACf,IAAIgB,MAAM,GAAY,OAARf;IAC9C,GACCgB,IAAI,CAAC;AACV"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/rewriteExtensions.ts"],"sourcesContent":["export const extensions = {\n '.ts': '.js',\n '.tsx': '.js',\n '.mts': '.mjs',\n '.cts': '.cjs',\n};\n\nexport function replaceExtension(ext: string): string {\n const replace = extensions[ext];\n return replace === undefined ? ext : replace;\n}\n\n// Pure regex solution for rewriting TypeScript extensions to JavaScript\n// Pattern: quote + relative path (starts with .) + TS extension + matching quote\nconst extensionPattern = /(['\"`])(\\.[-\\w./]*?)\\.(tsx?|mts|cts)\\1/g;\n\nexport function rewriteExtensions(content: string): string {\n return content.replace(extensionPattern, (_match, quote, path, ext) => {\n const newExt = extensions[`.${ext}`];\n return `${quote}${path}${newExt}${quote}`;\n });\n}\n"],"names":["extensions","replaceExtension","rewriteExtensions","ext","replace","undefined","extensionPattern","content","_match","quote","path","newExt"],"mappings":";;;;;;;;;;;QAAaA;eAAAA;;QAOGC;eAAAA;;QASAC;eAAAA;;;AAhBT,IAAMF,aAAa;IACxB,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;AACV;AAEO,SAASC,iBAAiBE,GAAW;IAC1C,IAAMC,UAAUJ,UAAU,CAACG,IAAI;IAC/B,OAAOC,YAAYC,YAAYF,MAAMC;AACvC;AAEA,wEAAwE;AACxE,iFAAiF;AACjF,IAAME,mBAAmB;AAElB,SAASJ,kBAAkBK,OAAe;IAC/C,OAAOA,QAAQH,OAAO,CAACE,kBAAkB,SAACE,QAAQC,OAAOC,MAAMP;QAC7D,IAAMQ,SAASX,UAAU,CAAC,AAAC,IAAO,OAAJG,KAAM;QACpC,OAAO,AAAC,GAAUO,OAARD,OAAeE,OAAPD,MAAgBD,OAATE,QAAe,OAANF;IACpC;AACF"}
@@ -1,3 +1,3 @@
1
1
  import type { Entry } from 'fs-iterator';
2
- import type { ConfigOptions, TargetType, TransformFileCallback } from '../types.ts';
2
+ import type { ConfigOptions, TargetType, TransformFileCallback } from '../types.js';
3
3
  export default function transformFile(entry: Entry, dest: string, type: TargetType, options: ConfigOptions, callback: TransformFileCallback): undefined;
@@ -1,3 +1,3 @@
1
1
  import type { Entry } from 'fs-iterator';
2
- import type { ConfigOptions, TargetType, TransformFileCallback } from '../types.ts';
2
+ import type { ConfigOptions, TargetType, TransformFileCallback } from '../types.js';
3
3
  export default function transformFile(entry: Entry, dest: string, type: TargetType, options: ConfigOptions, callback: TransformFileCallback): undefined;
@@ -1,2 +1,2 @@
1
- import type { Context } from './types.ts';
1
+ import type { Context } from './types.js';
2
2
  export default function resolveFileSync(specifier: string, context?: Context): string;
@@ -1,2 +1,2 @@
1
- import type { Context } from './types.ts';
1
+ import type { Context } from './types.js';
2
2
  export default function resolveFileSync(specifier: string, context?: Context): string;
@@ -1,2 +1,2 @@
1
- import type { Context } from './types.ts';
1
+ import type { Context } from './types.js';
2
2
  export default function toPath(specifier: string, context?: Context): string;
@@ -1,2 +1,2 @@
1
- import type { Context } from './types.ts';
1
+ import type { Context } from './types.js';
2
2
  export default function toPath(specifier: string, context?: Context): string;
@@ -1,2 +1,2 @@
1
- import type { ConfigOptions, TargetType, TransformDirectoryCallback } from './types.ts';
1
+ import type { ConfigOptions, TargetType, TransformDirectoryCallback } from './types.js';
2
2
  export default function transformDirectory(src: string, dest: string, type: TargetType, options?: ConfigOptions | TransformDirectoryCallback, callback?: TransformDirectoryCallback): undefined | Promise<string[]>;
@@ -1,2 +1,2 @@
1
- import type { ConfigOptions, TargetType, TransformDirectoryCallback } from './types.ts';
1
+ import type { ConfigOptions, TargetType, TransformDirectoryCallback } from './types.js';
2
2
  export default function transformDirectory(src: string, dest: string, type: TargetType, options?: ConfigOptions | TransformDirectoryCallback, callback?: TransformDirectoryCallback): undefined | Promise<string[]>;
@@ -1,3 +1,3 @@
1
- import type { TSConfig } from './types.ts';
1
+ import type { TSConfig } from './types.js';
2
2
  import type { Output } from '@swc/core';
3
3
  export default function transformSync(contents: string, fileName: string, tsconfig?: TSConfig): Output;
@@ -1,3 +1,3 @@
1
- import type { TSConfig } from './types.ts';
1
+ import type { TSConfig } from './types.js';
2
2
  import type { Output } from '@swc/core';
3
3
  export default function transformSync(contents: string, fileName: string, tsconfig?: TSConfig): Output;
@@ -1,2 +1,2 @@
1
- import type { ConfigOptions, TransformTypesCallback } from './types.ts';
1
+ import type { ConfigOptions, TransformTypesCallback } from './types.js';
2
2
  export default function transformTypes(src: string, dest: string, options?: ConfigOptions | TransformTypesCallback, callback?: TransformTypesCallback): undefined | Promise<string[]>;
@@ -1,2 +1,2 @@
1
- import type { ConfigOptions, TransformTypesCallback } from './types.ts';
1
+ import type { ConfigOptions, TransformTypesCallback } from './types.js';
2
2
  export default function transformTypes(src: string, dest: string, options?: ConfigOptions | TransformTypesCallback, callback?: TransformTypesCallback): undefined | Promise<string[]>;
@@ -1,2 +1,2 @@
1
- import type { ConfigOptions, TargetType, TransformDirectoryCallback } from '../types.ts';
1
+ import type { ConfigOptions, TargetType, TransformDirectoryCallback } from '../types.js';
2
2
  export default function transformDirectoryWorker(src: string, dest: string, type: TargetType, options: ConfigOptions, callback: TransformDirectoryCallback): undefined;
@@ -1,2 +1,2 @@
1
- import type { ConfigOptions, TargetType, TransformDirectoryCallback } from '../types.ts';
1
+ import type { ConfigOptions, TargetType, TransformDirectoryCallback } from '../types.js';
2
2
  export default function transformDirectoryWorker(src: string, dest: string, type: TargetType, options: ConfigOptions, callback: TransformDirectoryCallback): undefined;
@@ -1,3 +1,3 @@
1
1
  import type { Output } from '@swc/core';
2
- import type { TSConfig } from '../types.ts';
2
+ import type { TSConfig } from '../types.js';
3
3
  export default function transformSyncWorker(contents: string, fileName: string, tsconfig: TSConfig): Output;
@@ -1,3 +1,3 @@
1
1
  import type { Output } from '@swc/core';
2
- import type { TSConfig } from '../types.ts';
2
+ import type { TSConfig } from '../types.js';
3
3
  export default function transformSyncWorker(contents: string, fileName: string, tsconfig: TSConfig): Output;
@@ -1,2 +1,2 @@
1
- import type { ConfigOptions, TransformTypesCallback } from '../types.ts';
1
+ import type { ConfigOptions, TransformTypesCallback } from '../types.js';
2
2
  export default function transformTypesWorker(src: string, dest: string, options: ConfigOptions, callback: TransformTypesCallback): undefined;
@@ -1,2 +1,2 @@
1
- import type { ConfigOptions, TransformTypesCallback } from '../types.ts';
1
+ import type { ConfigOptions, TransformTypesCallback } from '../types.js';
2
2
  export default function transformTypesWorker(src: string, dest: string, options: ConfigOptions, callback: TransformTypesCallback): undefined;
@@ -8,10 +8,12 @@ Object.defineProperty(exports, "default", {
8
8
  return transformTypesWorker;
9
9
  }
10
10
  });
11
+ var _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
11
12
  var _fsiterator = /*#__PURE__*/ _interop_require_default(require("fs-iterator"));
12
13
  var _module = /*#__PURE__*/ _interop_require_default(require("module"));
13
14
  var _constantsts = require("../constants.js");
14
15
  var _createMatcherts = /*#__PURE__*/ _interop_require_default(require("../createMatcher.js"));
16
+ var _rewriteExtensionsts = require("../lib/rewriteExtensions.js");
15
17
  function _define_property(obj, key, value) {
16
18
  if (key in obj) {
17
19
  Object.defineProperty(obj, key, {
@@ -118,16 +120,15 @@ function transformTypesWorker(src, dest, options, callback) {
118
120
  };
119
121
  var program = ts.createProgram(programOptions);
120
122
  var res = program.emit();
121
- // Post-process declaration files to provide .js extensions in import paths
123
+ // TODO: remove patch for https://github.com/microsoft/TypeScript/issues/61037
122
124
  if (res.emittedFiles && compilerOptions.options.rewriteRelativeImportExtensions) {
123
- var fs = _require('fs');
124
125
  res.emittedFiles.forEach(function(file) {
125
126
  if (file.endsWith('.d.ts') || file.endsWith('.d.cts') || file.endsWith('.d.mts')) {
126
127
  try {
127
- var content = fs.readFileSync(file, 'utf8');
128
- var updated = content.replace(/from\s+['"]([^'"]+)\.ts['"]/g, "from '$1.js'").replace(/export\s+\*\s+from\s+['"]([^'"]+)\.ts['"]/g, "export * from '$1.js'");
128
+ var content = _fs.default.readFileSync(file, 'utf8');
129
+ var updated = (0, _rewriteExtensionsts.rewriteExtensions)(content);
129
130
  if (updated !== content) {
130
- fs.writeFileSync(file, updated, 'utf8');
131
+ _fs.default.writeFileSync(file, updated, 'utf8');
131
132
  }
132
133
  } catch (_err) {
133
134
  // Ignore errors
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/workers/transformTypes.ts"],"sourcesContent":["import Iterator, { type Entry } from 'fs-iterator';\n\nimport Module from 'module';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\nimport { typeFileRegEx } from '../constants.ts';\nimport createMatcher from '../createMatcher.ts';\n\nimport type { ConfigOptions, TransformTypesCallback } from '../types.ts';\n\nexport default function transformTypesWorker(src: string, dest: string, options: ConfigOptions, callback: TransformTypesCallback): undefined {\n const tsconfig = options.tsconfig;\n const matcher = createMatcher(tsconfig);\n const ts = _require('typescript');\n\n const entries = [];\n const iterator = new Iterator(src);\n iterator.forEach(\n (entry: Entry): undefined => {\n if (!entry.stats.isFile()) return;\n if (entry.basename[0] === '.') return;\n if (typeFileRegEx.test(entry.basename)) return;\n if (!matcher(entry.fullPath)) return;\n entries.push(entry);\n },\n { concurrency: Infinity },\n (err): undefined => {\n if (err) {\n callback(err);\n return;\n }\n\n const compilerOptions = ts.convertCompilerOptionsFromJson(tsconfig.config.compilerOptions, '');\n const config = {\n fileNames: entries.map((entry) => entry.fullPath),\n options: {\n ...compilerOptions.options,\n outDir: dest,\n noEmit: false,\n allowJs: true,\n declaration: true,\n emitDeclarationOnly: true,\n listEmittedFiles: true,\n },\n projectReferences: tsconfig.config.references,\n };\n const { fileNames, options, projectReferences } = config;\n const host = ts.createCompilerHostWorker(options, /*setParentNodes*/ undefined, ts.sys);\n const programOptions = {\n rootNames: fileNames,\n options,\n projectReferences,\n host,\n configFileParsingDiagnostics: ts.getConfigFileParsingDiagnostics({ fileNames, options }),\n };\n const program = ts.createProgram(programOptions);\n const res = program.emit();\n\n // Post-process declaration files to provide .js extensions in import paths\n if (res.emittedFiles && compilerOptions.options.rewriteRelativeImportExtensions) {\n const fs = _require('fs');\n res.emittedFiles.forEach((file) => {\n if (file.endsWith('.d.ts') || file.endsWith('.d.cts') || file.endsWith('.d.mts')) {\n try {\n const content = fs.readFileSync(file, 'utf8');\n const updated = content.replace(/from\\s+['\"]([^'\"]+)\\.ts['\"]/g, \"from '$1.js'\").replace(/export\\s+\\*\\s+from\\s+['\"]([^'\"]+)\\.ts['\"]/g, \"export * from '$1.js'\");\n if (updated !== content) {\n fs.writeFileSync(file, updated, 'utf8');\n }\n } catch (_err) {\n // Ignore errors\n }\n }\n });\n }\n callback(null, res.emittedFiles);\n }\n );\n}\n"],"names":["transformTypesWorker","_require","require","Module","createRequire","src","dest","options","callback","tsconfig","matcher","createMatcher","ts","entries","iterator","Iterator","forEach","entry","stats","isFile","basename","typeFileRegEx","test","fullPath","push","concurrency","Infinity","err","compilerOptions","convertCompilerOptionsFromJson","config","fileNames","map","outDir","noEmit","allowJs","declaration","emitDeclarationOnly","listEmittedFiles","projectReferences","references","host","createCompilerHostWorker","undefined","sys","programOptions","rootNames","configFileParsingDiagnostics","getConfigFileParsingDiagnostics","program","createProgram","res","emit","emittedFiles","rewriteRelativeImportExtensions","fs","file","endsWith","content","readFileSync","updated","replace","writeFileSync","_err"],"mappings":";;;;+BAWA;;;eAAwBA;;;iEAXa;6DAElB;2BAIW;sEACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAH1B,IAAMC,WAAW,OAAOC,YAAY,cAAcC,eAAM,CAACC,aAAa,CAAC,uDAAmBF;AAO3E,SAASF,qBAAqBK,GAAW,EAAEC,IAAY,EAAEC,OAAsB,EAAEC,QAAgC;IAC9H,IAAMC,WAAWF,QAAQE,QAAQ;IACjC,IAAMC,UAAUC,IAAAA,wBAAa,EAACF;IAC9B,IAAMG,KAAKX,SAAS;IAEpB,IAAMY,UAAU,EAAE;IAClB,IAAMC,WAAW,IAAIC,mBAAQ,CAACV;IAC9BS,SAASE,OAAO,CACd,SAACC;QACC,IAAI,CAACA,MAAMC,KAAK,CAACC,MAAM,IAAI;QAC3B,IAAIF,MAAMG,QAAQ,CAAC,EAAE,KAAK,KAAK;QAC/B,IAAIC,0BAAa,CAACC,IAAI,CAACL,MAAMG,QAAQ,GAAG;QACxC,IAAI,CAACV,QAAQO,MAAMM,QAAQ,GAAG;QAC9BV,QAAQW,IAAI,CAACP;IACf,GACA;QAAEQ,aAAaC;IAAS,GACxB,SAACC;QACC,IAAIA,KAAK;YACPnB,SAASmB;YACT;QACF;QAEA,IAAMC,kBAAkBhB,GAAGiB,8BAA8B,CAACpB,SAASqB,MAAM,CAACF,eAAe,EAAE;QAC3F,IAAME,SAAS;YACbC,WAAWlB,QAAQmB,GAAG,CAAC,SAACf;uBAAUA,MAAMM,QAAQ;;YAChDhB,SAAS,wCACJqB,gBAAgBrB,OAAO;gBAC1B0B,QAAQ3B;gBACR4B,QAAQ;gBACRC,SAAS;gBACTC,aAAa;gBACbC,qBAAqB;gBACrBC,kBAAkB;;YAEpBC,mBAAmB9B,SAASqB,MAAM,CAACU,UAAU;QAC/C;QACA,IAAQT,YAA0CD,OAA1CC,WAAWxB,YAA+BuB,OAA/BvB,SAASgC,oBAAsBT,OAAtBS;QAC5B,IAAME,OAAO7B,GAAG8B,wBAAwB,CAACnC,WAAS,gBAAgB,GAAGoC,WAAW/B,GAAGgC,GAAG;QACtF,IAAMC,iBAAiB;YACrBC,WAAWf;YACXxB,SAAAA;YACAgC,mBAAAA;YACAE,MAAAA;YACAM,8BAA8BnC,GAAGoC,+BAA+B,CAAC;gBAAEjB,WAAAA;gBAAWxB,SAAAA;YAAQ;QACxF;QACA,IAAM0C,UAAUrC,GAAGsC,aAAa,CAACL;QACjC,IAAMM,MAAMF,QAAQG,IAAI;QAExB,2EAA2E;QAC3E,IAAID,IAAIE,YAAY,IAAIzB,gBAAgBrB,OAAO,CAAC+C,+BAA+B,EAAE;YAC/E,IAAMC,KAAKtD,SAAS;YACpBkD,IAAIE,YAAY,CAACrC,OAAO,CAAC,SAACwC;gBACxB,IAAIA,KAAKC,QAAQ,CAAC,YAAYD,KAAKC,QAAQ,CAAC,aAAaD,KAAKC,QAAQ,CAAC,WAAW;oBAChF,IAAI;wBACF,IAAMC,UAAUH,GAAGI,YAAY,CAACH,MAAM;wBACtC,IAAMI,UAAUF,QAAQG,OAAO,CAAC,gCAAgC,gBAAgBA,OAAO,CAAC,8CAA8C;wBACtI,IAAID,YAAYF,SAAS;4BACvBH,GAAGO,aAAa,CAACN,MAAMI,SAAS;wBAClC;oBACF,EAAE,OAAOG,MAAM;oBACb,gBAAgB;oBAClB;gBACF;YACF;QACF;QACAvD,SAAS,MAAM2C,IAAIE,YAAY;IACjC;AAEJ"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/workers/transformTypes.ts"],"sourcesContent":["import fs from 'fs';\nimport Iterator, { type Entry } from 'fs-iterator';\nimport Module from 'module';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\nimport { typeFileRegEx } from '../constants.ts';\nimport createMatcher from '../createMatcher.ts';\nimport { rewriteExtensions } from '../lib/rewriteExtensions.ts';\n\nimport type { ConfigOptions, TransformTypesCallback } from '../types.ts';\n\nexport default function transformTypesWorker(src: string, dest: string, options: ConfigOptions, callback: TransformTypesCallback): undefined {\n const tsconfig = options.tsconfig;\n const matcher = createMatcher(tsconfig);\n const ts = _require('typescript');\n\n const entries = [];\n const iterator = new Iterator(src);\n iterator.forEach(\n (entry: Entry): undefined => {\n if (!entry.stats.isFile()) return;\n if (entry.basename[0] === '.') return;\n if (typeFileRegEx.test(entry.basename)) return;\n if (!matcher(entry.fullPath)) return;\n entries.push(entry);\n },\n { concurrency: Infinity },\n (err): undefined => {\n if (err) {\n callback(err);\n return;\n }\n\n const compilerOptions = ts.convertCompilerOptionsFromJson(tsconfig.config.compilerOptions, '');\n const config = {\n fileNames: entries.map((entry) => entry.fullPath),\n options: {\n ...compilerOptions.options,\n outDir: dest,\n noEmit: false,\n allowJs: true,\n declaration: true,\n emitDeclarationOnly: true,\n listEmittedFiles: true,\n },\n projectReferences: tsconfig.config.references,\n };\n const { fileNames, options, projectReferences } = config;\n const host = ts.createCompilerHostWorker(options, /*setParentNodes*/ undefined, ts.sys);\n const programOptions = {\n rootNames: fileNames,\n options,\n projectReferences,\n host,\n configFileParsingDiagnostics: ts.getConfigFileParsingDiagnostics({ fileNames, options }),\n };\n const program = ts.createProgram(programOptions);\n const res = program.emit();\n\n // TODO: remove patch for https://github.com/microsoft/TypeScript/issues/61037\n if (res.emittedFiles && compilerOptions.options.rewriteRelativeImportExtensions) {\n res.emittedFiles.forEach((file) => {\n if (file.endsWith('.d.ts') || file.endsWith('.d.cts') || file.endsWith('.d.mts')) {\n try {\n const content = fs.readFileSync(file, 'utf8');\n const updated = rewriteExtensions(content);\n if (updated !== content) {\n fs.writeFileSync(file, updated, 'utf8');\n }\n } catch (_err) {\n // Ignore errors\n }\n }\n });\n }\n callback(null, res.emittedFiles);\n }\n );\n}\n"],"names":["transformTypesWorker","_require","require","Module","createRequire","src","dest","options","callback","tsconfig","matcher","createMatcher","ts","entries","iterator","Iterator","forEach","entry","stats","isFile","basename","typeFileRegEx","test","fullPath","push","concurrency","Infinity","err","compilerOptions","convertCompilerOptionsFromJson","config","fileNames","map","outDir","noEmit","allowJs","declaration","emitDeclarationOnly","listEmittedFiles","projectReferences","references","host","createCompilerHostWorker","undefined","sys","programOptions","rootNames","configFileParsingDiagnostics","getConfigFileParsingDiagnostics","program","createProgram","res","emit","emittedFiles","rewriteRelativeImportExtensions","file","endsWith","content","fs","readFileSync","updated","rewriteExtensions","writeFileSync","_err"],"mappings":";;;;+BAYA;;;eAAwBA;;;yDAZT;iEACsB;6DAClB;2BAIW;sEACJ;mCACQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAJlC,IAAMC,WAAW,OAAOC,YAAY,cAAcC,eAAM,CAACC,aAAa,CAAC,uDAAmBF;AAQ3E,SAASF,qBAAqBK,GAAW,EAAEC,IAAY,EAAEC,OAAsB,EAAEC,QAAgC;IAC9H,IAAMC,WAAWF,QAAQE,QAAQ;IACjC,IAAMC,UAAUC,IAAAA,wBAAa,EAACF;IAC9B,IAAMG,KAAKX,SAAS;IAEpB,IAAMY,UAAU,EAAE;IAClB,IAAMC,WAAW,IAAIC,mBAAQ,CAACV;IAC9BS,SAASE,OAAO,CACd,SAACC;QACC,IAAI,CAACA,MAAMC,KAAK,CAACC,MAAM,IAAI;QAC3B,IAAIF,MAAMG,QAAQ,CAAC,EAAE,KAAK,KAAK;QAC/B,IAAIC,0BAAa,CAACC,IAAI,CAACL,MAAMG,QAAQ,GAAG;QACxC,IAAI,CAACV,QAAQO,MAAMM,QAAQ,GAAG;QAC9BV,QAAQW,IAAI,CAACP;IACf,GACA;QAAEQ,aAAaC;IAAS,GACxB,SAACC;QACC,IAAIA,KAAK;YACPnB,SAASmB;YACT;QACF;QAEA,IAAMC,kBAAkBhB,GAAGiB,8BAA8B,CAACpB,SAASqB,MAAM,CAACF,eAAe,EAAE;QAC3F,IAAME,SAAS;YACbC,WAAWlB,QAAQmB,GAAG,CAAC,SAACf;uBAAUA,MAAMM,QAAQ;;YAChDhB,SAAS,wCACJqB,gBAAgBrB,OAAO;gBAC1B0B,QAAQ3B;gBACR4B,QAAQ;gBACRC,SAAS;gBACTC,aAAa;gBACbC,qBAAqB;gBACrBC,kBAAkB;;YAEpBC,mBAAmB9B,SAASqB,MAAM,CAACU,UAAU;QAC/C;QACA,IAAQT,YAA0CD,OAA1CC,WAAWxB,YAA+BuB,OAA/BvB,SAASgC,oBAAsBT,OAAtBS;QAC5B,IAAME,OAAO7B,GAAG8B,wBAAwB,CAACnC,WAAS,gBAAgB,GAAGoC,WAAW/B,GAAGgC,GAAG;QACtF,IAAMC,iBAAiB;YACrBC,WAAWf;YACXxB,SAAAA;YACAgC,mBAAAA;YACAE,MAAAA;YACAM,8BAA8BnC,GAAGoC,+BAA+B,CAAC;gBAAEjB,WAAAA;gBAAWxB,SAAAA;YAAQ;QACxF;QACA,IAAM0C,UAAUrC,GAAGsC,aAAa,CAACL;QACjC,IAAMM,MAAMF,QAAQG,IAAI;QAExB,8EAA8E;QAC9E,IAAID,IAAIE,YAAY,IAAIzB,gBAAgBrB,OAAO,CAAC+C,+BAA+B,EAAE;YAC/EH,IAAIE,YAAY,CAACrC,OAAO,CAAC,SAACuC;gBACxB,IAAIA,KAAKC,QAAQ,CAAC,YAAYD,KAAKC,QAAQ,CAAC,aAAaD,KAAKC,QAAQ,CAAC,WAAW;oBAChF,IAAI;wBACF,IAAMC,UAAUC,WAAE,CAACC,YAAY,CAACJ,MAAM;wBACtC,IAAMK,UAAUC,IAAAA,sCAAiB,EAACJ;wBAClC,IAAIG,YAAYH,SAAS;4BACvBC,WAAE,CAACI,aAAa,CAACP,MAAMK,SAAS;wBAClC;oBACF,EAAE,OAAOG,MAAM;oBACb,gBAAgB;oBAClB;gBACF;YACF;QACF;QACAvD,SAAS,MAAM2C,IAAIE,YAAY;IACjC;AAEJ"}
@@ -1,7 +1,3 @@
1
1
  export declare const moduleRegEx: RegExp;
2
2
  export declare const typeFileRegEx: RegExp;
3
- export declare const moduleDependencyRegEx = "\\s*['\"`]([^'\"`]+)['\"`]\\s*";
4
- export declare const moduleNameRegEx = "\\s*(?:[\\w${},\\s*]+)\\s*";
5
- export declare const requireRegEx: RegExp;
6
- export declare const importRegEx: RegExp;
7
3
  export declare const extensions: string[];
@@ -1,10 +1,5 @@
1
1
  export const moduleRegEx = /^[^./]|^\.[^./]|^\.\.[^/]/;
2
2
  export const typeFileRegEx = /^[^.]+\.d\.[cm]?ts$/;
3
- export const moduleDependencyRegEx = '\\s*[\'"`]([^\'"`]+)[\'"`]\\s*';
4
- // biome-ignore lint/suspicious/noTemplateCurlyInString: Valid regex
5
- export const moduleNameRegEx = '\\s*(?:[\\w${},\\s*]+)\\s*';
6
- export const requireRegEx = new RegExp(`(?:(?:var|const|let)${moduleNameRegEx}=\\s*)?require\\(${moduleDependencyRegEx}\\)?`, 'g');
7
- export const importRegEx = new RegExp(`${requireRegEx}|import(?:${moduleNameRegEx}from\\s*)?${moduleDependencyRegEx};?|export(?:${moduleNameRegEx}from\\s*)?${moduleDependencyRegEx}?`, 'g');
8
3
  export const extensions = [
9
4
  '.js',
10
5
  '.jsx',
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/constants.ts"],"sourcesContent":["export const moduleRegEx = /^[^./]|^\\.[^./]|^\\.\\.[^/]/;\nexport const typeFileRegEx = /^[^.]+\\.d\\.[cm]?ts$/;\n\nexport const moduleDependencyRegEx = '\\\\s*[\\'\"`]([^\\'\"`]+)[\\'\"`]\\\\s*';\n// biome-ignore lint/suspicious/noTemplateCurlyInString: Valid regex\nexport const moduleNameRegEx = '\\\\s*(?:[\\\\w${},\\\\s*]+)\\\\s*';\nexport const requireRegEx = new RegExp(`(?:(?:var|const|let)${moduleNameRegEx}=\\\\s*)?require\\\\(${moduleDependencyRegEx}\\\\)?`, 'g');\nexport const importRegEx = new RegExp(`${requireRegEx}|import(?:${moduleNameRegEx}from\\\\s*)?${moduleDependencyRegEx};?|export(?:${moduleNameRegEx}from\\\\s*)?${moduleDependencyRegEx}?`, 'g');\nexport const extensions = ['.js', '.jsx', '.cjs', '.mjs', '.ts', '.tsx', '.cts', '.mts', '.es6', '.es'];\n"],"names":["moduleRegEx","typeFileRegEx","moduleDependencyRegEx","moduleNameRegEx","requireRegEx","RegExp","importRegEx","extensions"],"mappings":"AAAA,OAAO,MAAMA,cAAc,4BAA4B;AACvD,OAAO,MAAMC,gBAAgB,sBAAsB;AAEnD,OAAO,MAAMC,wBAAwB,iCAAiC;AACtE,oEAAoE;AACpE,OAAO,MAAMC,kBAAkB,6BAA6B;AAC5D,OAAO,MAAMC,eAAe,IAAIC,OAAO,CAAC,oBAAoB,EAAEF,gBAAgB,iBAAiB,EAAED,sBAAsB,IAAI,CAAC,EAAE,KAAK;AACnI,OAAO,MAAMI,cAAc,IAAID,OAAO,GAAGD,aAAa,UAAU,EAAED,gBAAgB,UAAU,EAAED,sBAAsB,YAAY,EAAEC,gBAAgB,UAAU,EAAED,sBAAsB,CAAC,CAAC,EAAE,KAAK;AAC7L,OAAO,MAAMK,aAAa;IAAC;IAAO;IAAQ;IAAQ;IAAQ;IAAO;IAAQ;IAAQ;IAAQ;IAAQ;CAAM,CAAC"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/constants.ts"],"sourcesContent":["export const moduleRegEx = /^[^./]|^\\.[^./]|^\\.\\.[^/]/;\nexport const typeFileRegEx = /^[^.]+\\.d\\.[cm]?ts$/;\nexport const extensions = ['.js', '.jsx', '.cjs', '.mjs', '.ts', '.tsx', '.cts', '.mts', '.es6', '.es'];\n"],"names":["moduleRegEx","typeFileRegEx","extensions"],"mappings":"AAAA,OAAO,MAAMA,cAAc,4BAA4B;AACvD,OAAO,MAAMC,gBAAgB,sBAAsB;AACnD,OAAO,MAAMC,aAAa;IAAC;IAAO;IAAQ;IAAQ;IAAQ;IAAO;IAAQ;IAAQ;IAAQ;IAAQ;CAAM,CAAC"}
@@ -1,2 +1,2 @@
1
- import type { Matcher, TSConfig } from './types.ts';
1
+ import type { Matcher, TSConfig } from './types.js';
2
2
  export default function createMatcher(tsconfig: TSConfig): Matcher;
@@ -1,8 +1,8 @@
1
- export * as constants from './constants.ts';
2
- export { default as createMatcher } from './createMatcher.ts';
3
- export { default as resolveFileSync } from './resolveFileSync.ts';
4
- export { default as toPath } from './toPath.ts';
5
- export { default as transformDirectory } from './transformDirectory.ts';
6
- export { default as transformSync } from './transformSync.ts';
7
- export { default as transformTypes } from './transformTypes.ts';
8
- export type * from './types.ts';
1
+ export * as constants from './constants.js';
2
+ export { default as createMatcher } from './createMatcher.js';
3
+ export { default as resolveFileSync } from './resolveFileSync.js';
4
+ export { default as toPath } from './toPath.js';
5
+ export { default as transformDirectory } from './transformDirectory.js';
6
+ export { default as transformSync } from './transformSync.js';
7
+ export { default as transformTypes } from './transformTypes.js';
8
+ export type * from './types.js';
@@ -3,7 +3,8 @@ export default function parser(code, regex) {
3
3
  let offset = 0;
4
4
  let match = regex.exec(code);
5
5
  while(match){
6
- const dependency = match[1] || match[2] || match[3] || match[4];
6
+ // Support up to 5 capture groups for declaration-specific patterns
7
+ const dependency = match[1] || match[2] || match[3] || match[4] || match[5];
7
8
  parsed.push({
8
9
  content: code.substring(offset, match.index + match[0].lastIndexOf(dependency)),
9
10
  isSpecifier: false
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/parseSpecifiers.ts"],"sourcesContent":["export interface Parsed {\n content: string;\n isSpecifier: boolean;\n}\n\nexport default function parser(code: string, regex: RegExp): Parsed[] {\n const parsed: Parsed[] = [];\n let offset = 0;\n let match = regex.exec(code);\n while (match) {\n const dependency = match[1] || match[2] || match[3] || match[4];\n parsed.push({ content: code.substring(offset, match.index + match[0].lastIndexOf(dependency)), isSpecifier: false });\n offset += parsed[parsed.length - 1].content.length;\n parsed.push({ content: dependency, isSpecifier: true });\n offset += parsed[parsed.length - 1].content.length;\n match = regex.exec(code);\n }\n\n if (offset < code.length) {\n parsed.push({ content: code.substring(offset, code.length), isSpecifier: false });\n }\n return parsed;\n}\n"],"names":["parser","code","regex","parsed","offset","match","exec","dependency","push","content","substring","index","lastIndexOf","isSpecifier","length"],"mappings":"AAKA,eAAe,SAASA,OAAOC,IAAY,EAAEC,KAAa;IACxD,MAAMC,SAAmB,EAAE;IAC3B,IAAIC,SAAS;IACb,IAAIC,QAAQH,MAAMI,IAAI,CAACL;IACvB,MAAOI,MAAO;QACZ,MAAME,aAAaF,KAAK,CAAC,EAAE,IAAIA,KAAK,CAAC,EAAE,IAAIA,KAAK,CAAC,EAAE,IAAIA,KAAK,CAAC,EAAE;QAC/DF,OAAOK,IAAI,CAAC;YAAEC,SAASR,KAAKS,SAAS,CAACN,QAAQC,MAAMM,KAAK,GAAGN,KAAK,CAAC,EAAE,CAACO,WAAW,CAACL;YAAcM,aAAa;QAAM;QAClHT,UAAUD,MAAM,CAACA,OAAOW,MAAM,GAAG,EAAE,CAACL,OAAO,CAACK,MAAM;QAClDX,OAAOK,IAAI,CAAC;YAAEC,SAASF;YAAYM,aAAa;QAAK;QACrDT,UAAUD,MAAM,CAACA,OAAOW,MAAM,GAAG,EAAE,CAACL,OAAO,CAACK,MAAM;QAClDT,QAAQH,MAAMI,IAAI,CAACL;IACrB;IAEA,IAAIG,SAASH,KAAKa,MAAM,EAAE;QACxBX,OAAOK,IAAI,CAAC;YAAEC,SAASR,KAAKS,SAAS,CAACN,QAAQH,KAAKa,MAAM;YAAGD,aAAa;QAAM;IACjF;IACA,OAAOV;AACT"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/parseSpecifiers.ts"],"sourcesContent":["export interface Parsed {\n content: string;\n isSpecifier: boolean;\n}\n\nexport default function parser(code: string, regex: RegExp): Parsed[] {\n const parsed: Parsed[] = [];\n let offset = 0;\n let match = regex.exec(code);\n while (match) {\n // Support up to 5 capture groups for declaration-specific patterns\n const dependency = match[1] || match[2] || match[3] || match[4] || match[5];\n parsed.push({ content: code.substring(offset, match.index + match[0].lastIndexOf(dependency)), isSpecifier: false });\n offset += parsed[parsed.length - 1].content.length;\n parsed.push({ content: dependency, isSpecifier: true });\n offset += parsed[parsed.length - 1].content.length;\n match = regex.exec(code);\n }\n\n if (offset < code.length) {\n parsed.push({ content: code.substring(offset, code.length), isSpecifier: false });\n }\n return parsed;\n}\n"],"names":["parser","code","regex","parsed","offset","match","exec","dependency","push","content","substring","index","lastIndexOf","isSpecifier","length"],"mappings":"AAKA,eAAe,SAASA,OAAOC,IAAY,EAAEC,KAAa;IACxD,MAAMC,SAAmB,EAAE;IAC3B,IAAIC,SAAS;IACb,IAAIC,QAAQH,MAAMI,IAAI,CAACL;IACvB,MAAOI,MAAO;QACZ,mEAAmE;QACnE,MAAME,aAAaF,KAAK,CAAC,EAAE,IAAIA,KAAK,CAAC,EAAE,IAAIA,KAAK,CAAC,EAAE,IAAIA,KAAK,CAAC,EAAE,IAAIA,KAAK,CAAC,EAAE;QAC3EF,OAAOK,IAAI,CAAC;YAAEC,SAASR,KAAKS,SAAS,CAACN,QAAQC,MAAMM,KAAK,GAAGN,KAAK,CAAC,EAAE,CAACO,WAAW,CAACL;YAAcM,aAAa;QAAM;QAClHT,UAAUD,MAAM,CAACA,OAAOW,MAAM,GAAG,EAAE,CAACL,OAAO,CAACK,MAAM;QAClDX,OAAOK,IAAI,CAAC;YAAEC,SAASF;YAAYM,aAAa;QAAK;QACrDT,UAAUD,MAAM,CAACA,OAAOW,MAAM,GAAG,EAAE,CAACL,OAAO,CAACK,MAAM;QAClDT,QAAQH,MAAMI,IAAI,CAACL;IACrB;IAEA,IAAIG,SAASH,KAAKa,MAAM,EAAE;QACxBX,OAAOK,IAAI,CAAC;YAAEC,SAASR,KAAKS,SAAS,CAACN,QAAQH,KAAKa,MAAM;YAAGD,aAAa;QAAM;IACjF;IACA,OAAOV;AACT"}
@@ -1,5 +1,5 @@
1
1
  export declare const interop = "/* 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; }";
2
2
  import type { Output } from '@swc/core';
3
3
  import type { Entry } from 'fs-iterator';
4
- import type { ConfigOptions } from '../types.ts';
4
+ import type { ConfigOptions } from '../types.js';
5
5
  export default function patchCJS(entry: Entry, output: Output, options: ConfigOptions): string;
@@ -1,13 +1,10 @@
1
1
  import path from 'path';
2
- import { requireRegEx } from '../constants';
3
- import { makeReplacements, replaceExtension } from './rewriteExtensions.js';
2
+ import { replaceExtension, rewriteExtensions } from './rewriteExtensions.js';
4
3
  // https://github.com/vercel/next.js/blob/20b63e13ab2631d6043277895d373aa31a1b327c/packages/next/taskfile-swc.js#L118-L125
5
4
  export const interop = "/* 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; }";
6
5
  export default function patchCJS(entry, output, options) {
7
6
  const rewrite = (options.tsconfig.config.compilerOptions || {}).rewriteRelativeImportExtensions;
8
- if (rewrite) {
9
- output.code = makeReplacements(output.code, requireRegEx);
10
- }
7
+ if (rewrite) output.code = rewriteExtensions(output.code);
11
8
  output.code += interop;
12
9
  return replaceExtension(path.extname(entry.basename));
13
10
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/patchCJS.ts"],"sourcesContent":["import path from 'path';\nimport { requireRegEx } from '../constants';\nimport { makeReplacements, replaceExtension } from './rewriteExtensions.ts';\n\n// https://github.com/vercel/next.js/blob/20b63e13ab2631d6043277895d373aa31a1b327c/packages/next/taskfile-swc.js#L118-L125\nexport const interop = \"/* 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\nimport type { Output } from '@swc/core';\nimport type { Entry } from 'fs-iterator';\nimport type { CompilerOptions } from 'typescript';\nimport type { ConfigOptions } from '../types.ts';\n\ninterface InternalCompilerOptions extends CompilerOptions {\n rewriteRelativeImportExtensions?: boolean;\n}\n\nexport default function patchCJS(entry: Entry, output: Output, options: ConfigOptions): string {\n const rewrite = ((options.tsconfig.config.compilerOptions || {}) as unknown as InternalCompilerOptions).rewriteRelativeImportExtensions;\n if (rewrite) {\n output.code = makeReplacements(output.code, requireRegEx);\n }\n output.code += interop;\n\n return replaceExtension(path.extname(entry.basename));\n}\n"],"names":["path","requireRegEx","makeReplacements","replaceExtension","interop","patchCJS","entry","output","options","rewrite","tsconfig","config","compilerOptions","rewriteRelativeImportExtensions","code","extname","basename"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,SAASC,YAAY,QAAQ,eAAe;AAC5C,SAASC,gBAAgB,EAAEC,gBAAgB,QAAQ,yBAAyB;AAE5E,0HAA0H;AAC1H,OAAO,MAAMC,UAAU,oQAAoQ;AAW3R,eAAe,SAASC,SAASC,KAAY,EAAEC,MAAc,EAAEC,OAAsB;IACnF,MAAMC,UAAU,AAAED,CAAAA,QAAQE,QAAQ,CAACC,MAAM,CAACC,eAAe,IAAI,CAAC,CAAA,EAA0CC,+BAA+B;IACvI,IAAIJ,SAAS;QACXF,OAAOO,IAAI,GAAGZ,iBAAiBK,OAAOO,IAAI,EAAEb;IAC9C;IACAM,OAAOO,IAAI,IAAIV;IAEf,OAAOD,iBAAiBH,KAAKe,OAAO,CAACT,MAAMU,QAAQ;AACrD"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/patchCJS.ts"],"sourcesContent":["import path from 'path';\nimport { replaceExtension, rewriteExtensions } from './rewriteExtensions.ts';\n\n// https://github.com/vercel/next.js/blob/20b63e13ab2631d6043277895d373aa31a1b327c/packages/next/taskfile-swc.js#L118-L125\nexport const interop = \"/* 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\nimport type { Output } from '@swc/core';\nimport type { Entry } from 'fs-iterator';\nimport type { CompilerOptions } from 'typescript';\nimport type { ConfigOptions } from '../types.ts';\n\ninterface InternalCompilerOptions extends CompilerOptions {\n rewriteRelativeImportExtensions?: boolean;\n}\n\nexport default function patchCJS(entry: Entry, output: Output, options: ConfigOptions): string {\n const rewrite = ((options.tsconfig.config.compilerOptions || {}) as unknown as InternalCompilerOptions).rewriteRelativeImportExtensions;\n if (rewrite) output.code = rewriteExtensions(output.code);\n output.code += interop;\n\n return replaceExtension(path.extname(entry.basename));\n}\n"],"names":["path","replaceExtension","rewriteExtensions","interop","patchCJS","entry","output","options","rewrite","tsconfig","config","compilerOptions","rewriteRelativeImportExtensions","code","extname","basename"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,SAASC,gBAAgB,EAAEC,iBAAiB,QAAQ,yBAAyB;AAE7E,0HAA0H;AAC1H,OAAO,MAAMC,UAAU,oQAAoQ;AAW3R,eAAe,SAASC,SAASC,KAAY,EAAEC,MAAc,EAAEC,OAAsB;IACnF,MAAMC,UAAU,AAAED,CAAAA,QAAQE,QAAQ,CAACC,MAAM,CAACC,eAAe,IAAI,CAAC,CAAA,EAA0CC,+BAA+B;IACvI,IAAIJ,SAASF,OAAOO,IAAI,GAAGX,kBAAkBI,OAAOO,IAAI;IACxDP,OAAOO,IAAI,IAAIV;IAEf,OAAOF,iBAAiBD,KAAKc,OAAO,CAACT,MAAMU,QAAQ;AACrD"}
@@ -1,4 +1,4 @@
1
1
  import type { Output } from '@swc/core';
2
2
  import type { Entry } from 'fs-iterator';
3
- import type { ConfigOptions } from '../types.ts';
3
+ import type { ConfigOptions } from '../types.js';
4
4
  export default function patchESM(entry: Entry, output: Output, options: ConfigOptions): string;
@@ -1,10 +1,7 @@
1
1
  import path from 'path';
2
- import { importRegEx } from '../constants';
3
- import { makeReplacements, replaceExtension } from './rewriteExtensions.js';
2
+ import { replaceExtension, rewriteExtensions } from './rewriteExtensions.js';
4
3
  export default function patchESM(entry, output, options) {
5
4
  const rewrite = (options.tsconfig.config.compilerOptions || {}).rewriteRelativeImportExtensions;
6
- if (rewrite) {
7
- output.code = makeReplacements(output.code, importRegEx);
8
- }
5
+ if (rewrite) output.code = rewriteExtensions(output.code);
9
6
  return replaceExtension(path.extname(entry.basename));
10
7
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/patchESM.ts"],"sourcesContent":["import type { Output } from '@swc/core';\nimport type { Entry } from 'fs-iterator';\nimport path from 'path';\nimport type { CompilerOptions } from 'typescript';\nimport { importRegEx } from '../constants';\nimport type { ConfigOptions } from '../types.ts';\nimport { makeReplacements, replaceExtension } from './rewriteExtensions.ts';\n\ninterface InternalCompilerOptions extends CompilerOptions {\n rewriteRelativeImportExtensions?: boolean;\n}\n\nexport default function patchESM(entry: Entry, output: Output, options: ConfigOptions): string {\n const rewrite = ((options.tsconfig.config.compilerOptions || {}) as unknown as InternalCompilerOptions).rewriteRelativeImportExtensions;\n if (rewrite) {\n output.code = makeReplacements(output.code, importRegEx);\n }\n\n return replaceExtension(path.extname(entry.basename));\n}\n"],"names":["path","importRegEx","makeReplacements","replaceExtension","patchESM","entry","output","options","rewrite","tsconfig","config","compilerOptions","rewriteRelativeImportExtensions","code","extname","basename"],"mappings":"AAEA,OAAOA,UAAU,OAAO;AAExB,SAASC,WAAW,QAAQ,eAAe;AAE3C,SAASC,gBAAgB,EAAEC,gBAAgB,QAAQ,yBAAyB;AAM5E,eAAe,SAASC,SAASC,KAAY,EAAEC,MAAc,EAAEC,OAAsB;IACnF,MAAMC,UAAU,AAAED,CAAAA,QAAQE,QAAQ,CAACC,MAAM,CAACC,eAAe,IAAI,CAAC,CAAA,EAA0CC,+BAA+B;IACvI,IAAIJ,SAAS;QACXF,OAAOO,IAAI,GAAGX,iBAAiBI,OAAOO,IAAI,EAAEZ;IAC9C;IAEA,OAAOE,iBAAiBH,KAAKc,OAAO,CAACT,MAAMU,QAAQ;AACrD"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/patchESM.ts"],"sourcesContent":["import type { Output } from '@swc/core';\nimport type { Entry } from 'fs-iterator';\nimport path from 'path';\nimport type { CompilerOptions } from 'typescript';\nimport type { ConfigOptions } from '../types.ts';\nimport { replaceExtension, rewriteExtensions } from './rewriteExtensions.ts';\n\ninterface InternalCompilerOptions extends CompilerOptions {\n rewriteRelativeImportExtensions?: boolean;\n}\n\nexport default function patchESM(entry: Entry, output: Output, options: ConfigOptions): string {\n const rewrite = ((options.tsconfig.config.compilerOptions || {}) as unknown as InternalCompilerOptions).rewriteRelativeImportExtensions;\n if (rewrite) output.code = rewriteExtensions(output.code);\n\n return replaceExtension(path.extname(entry.basename));\n}\n"],"names":["path","replaceExtension","rewriteExtensions","patchESM","entry","output","options","rewrite","tsconfig","config","compilerOptions","rewriteRelativeImportExtensions","code","extname","basename"],"mappings":"AAEA,OAAOA,UAAU,OAAO;AAGxB,SAASC,gBAAgB,EAAEC,iBAAiB,QAAQ,yBAAyB;AAM7E,eAAe,SAASC,SAASC,KAAY,EAAEC,MAAc,EAAEC,OAAsB;IACnF,MAAMC,UAAU,AAAED,CAAAA,QAAQE,QAAQ,CAACC,MAAM,CAACC,eAAe,IAAI,CAAC,CAAA,EAA0CC,+BAA+B;IACvI,IAAIJ,SAASF,OAAOO,IAAI,GAAGV,kBAAkBG,OAAOO,IAAI;IAExD,OAAOX,iBAAiBD,KAAKa,OAAO,CAACT,MAAMU,QAAQ;AACrD"}
@@ -1,5 +1,5 @@
1
1
  import type { Options } from '@swc/core';
2
- import type { TSConfig } from '../types.ts';
2
+ import type { TSConfig } from '../types.js';
3
3
  export interface TranspilerOptions {
4
4
  tsxOptions: Options;
5
5
  nonTsxOptions: Options;
@@ -5,4 +5,4 @@ export declare const extensions: {
5
5
  '.cts': string;
6
6
  };
7
7
  export declare function replaceExtension(ext: string): string;
8
- export declare function makeReplacements(code: string, regex: RegExp): string;
8
+ export declare function rewriteExtensions(content: string): string;
@@ -1,6 +1,3 @@
1
- import path from 'path';
2
- import { moduleRegEx } from '../constants.js';
3
- import parseSpecifiers from './parseSpecifiers.js';
4
1
  export const extensions = {
5
2
  '.ts': '.js',
6
3
  '.tsx': '.js',
@@ -11,16 +8,12 @@ export function replaceExtension(ext) {
11
8
  const replace = extensions[ext];
12
9
  return replace === undefined ? ext : replace;
13
10
  }
14
- export function makeReplacements(code, regex) {
15
- const parsed = parseSpecifiers(code, regex);
16
- return parsed.map((parsed)=>{
17
- if (!parsed.isSpecifier) return parsed.content;
18
- const specifier = parsed.content;
19
- if (moduleRegEx.test(specifier)) return specifier;
20
- if (specifier[0] !== '.') return specifier;
21
- const ext = path.extname(specifier);
22
- const replace = replaceExtension(ext);
23
- if (ext === replace) return specifier;
24
- return `${specifier.slice(0, -ext.length)}${replace}`;
25
- }).join('');
11
+ // Pure regex solution for rewriting TypeScript extensions to JavaScript
12
+ // Pattern: quote + relative path (starts with .) + TS extension + matching quote
13
+ const extensionPattern = /(['"`])(\.[-\w./]*?)\.(tsx?|mts|cts)\1/g;
14
+ export function rewriteExtensions(content) {
15
+ return content.replace(extensionPattern, (_match, quote, path, ext)=>{
16
+ const newExt = extensions[`.${ext}`];
17
+ return `${quote}${path}${newExt}${quote}`;
18
+ });
26
19
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/rewriteExtensions.ts"],"sourcesContent":["import path from 'path';\nimport { moduleRegEx } from '../constants.ts';\nimport parseSpecifiers from './parseSpecifiers.ts';\n\nexport const extensions = {\n '.ts': '.js',\n '.tsx': '.js',\n '.mts': '.mjs',\n '.cts': '.cjs',\n};\n\nexport function replaceExtension(ext: string): string {\n const replace = extensions[ext];\n return replace === undefined ? ext : replace;\n}\n\nexport function makeReplacements(code: string, regex: RegExp): string {\n const parsed = parseSpecifiers(code, regex);\n\n return parsed\n .map((parsed) => {\n if (!parsed.isSpecifier) return parsed.content;\n const specifier = parsed.content;\n if (moduleRegEx.test(specifier)) return specifier;\n if (specifier[0] !== '.') return specifier;\n const ext = path.extname(specifier);\n const replace = replaceExtension(ext);\n if (ext === replace) return specifier;\n return `${specifier.slice(0, -ext.length)}${replace}`;\n })\n .join('');\n}\n"],"names":["path","moduleRegEx","parseSpecifiers","extensions","replaceExtension","ext","replace","undefined","makeReplacements","code","regex","parsed","map","isSpecifier","content","specifier","test","extname","slice","length","join"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,SAASC,WAAW,QAAQ,kBAAkB;AAC9C,OAAOC,qBAAqB,uBAAuB;AAEnD,OAAO,MAAMC,aAAa;IACxB,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;AACV,EAAE;AAEF,OAAO,SAASC,iBAAiBC,GAAW;IAC1C,MAAMC,UAAUH,UAAU,CAACE,IAAI;IAC/B,OAAOC,YAAYC,YAAYF,MAAMC;AACvC;AAEA,OAAO,SAASE,iBAAiBC,IAAY,EAAEC,KAAa;IAC1D,MAAMC,SAAST,gBAAgBO,MAAMC;IAErC,OAAOC,OACJC,GAAG,CAAC,CAACD;QACJ,IAAI,CAACA,OAAOE,WAAW,EAAE,OAAOF,OAAOG,OAAO;QAC9C,MAAMC,YAAYJ,OAAOG,OAAO;QAChC,IAAIb,YAAYe,IAAI,CAACD,YAAY,OAAOA;QACxC,IAAIA,SAAS,CAAC,EAAE,KAAK,KAAK,OAAOA;QACjC,MAAMV,MAAML,KAAKiB,OAAO,CAACF;QACzB,MAAMT,UAAUF,iBAAiBC;QACjC,IAAIA,QAAQC,SAAS,OAAOS;QAC5B,OAAO,GAAGA,UAAUG,KAAK,CAAC,GAAG,CAACb,IAAIc,MAAM,IAAIb,SAAS;IACvD,GACCc,IAAI,CAAC;AACV"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/rewriteExtensions.ts"],"sourcesContent":["export const extensions = {\n '.ts': '.js',\n '.tsx': '.js',\n '.mts': '.mjs',\n '.cts': '.cjs',\n};\n\nexport function replaceExtension(ext: string): string {\n const replace = extensions[ext];\n return replace === undefined ? ext : replace;\n}\n\n// Pure regex solution for rewriting TypeScript extensions to JavaScript\n// Pattern: quote + relative path (starts with .) + TS extension + matching quote\nconst extensionPattern = /(['\"`])(\\.[-\\w./]*?)\\.(tsx?|mts|cts)\\1/g;\n\nexport function rewriteExtensions(content: string): string {\n return content.replace(extensionPattern, (_match, quote, path, ext) => {\n const newExt = extensions[`.${ext}`];\n return `${quote}${path}${newExt}${quote}`;\n });\n}\n"],"names":["extensions","replaceExtension","ext","replace","undefined","extensionPattern","rewriteExtensions","content","_match","quote","path","newExt"],"mappings":"AAAA,OAAO,MAAMA,aAAa;IACxB,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;AACV,EAAE;AAEF,OAAO,SAASC,iBAAiBC,GAAW;IAC1C,MAAMC,UAAUH,UAAU,CAACE,IAAI;IAC/B,OAAOC,YAAYC,YAAYF,MAAMC;AACvC;AAEA,wEAAwE;AACxE,iFAAiF;AACjF,MAAME,mBAAmB;AAEzB,OAAO,SAASC,kBAAkBC,OAAe;IAC/C,OAAOA,QAAQJ,OAAO,CAACE,kBAAkB,CAACG,QAAQC,OAAOC,MAAMR;QAC7D,MAAMS,SAASX,UAAU,CAAC,CAAC,CAAC,EAAEE,KAAK,CAAC;QACpC,OAAO,GAAGO,QAAQC,OAAOC,SAASF,OAAO;IAC3C;AACF"}
@@ -1,3 +1,3 @@
1
1
  import type { Entry } from 'fs-iterator';
2
- import type { ConfigOptions, TargetType, TransformFileCallback } from '../types.ts';
2
+ import type { ConfigOptions, TargetType, TransformFileCallback } from '../types.js';
3
3
  export default function transformFile(entry: Entry, dest: string, type: TargetType, options: ConfigOptions, callback: TransformFileCallback): undefined;
@@ -1,2 +1,2 @@
1
- import type { Context } from './types.ts';
1
+ import type { Context } from './types.js';
2
2
  export default function resolveFileSync(specifier: string, context?: Context): string;
@@ -1,2 +1,2 @@
1
- import type { Context } from './types.ts';
1
+ import type { Context } from './types.js';
2
2
  export default function toPath(specifier: string, context?: Context): string;
@@ -1,2 +1,2 @@
1
- import type { ConfigOptions, TargetType, TransformDirectoryCallback } from './types.ts';
1
+ import type { ConfigOptions, TargetType, TransformDirectoryCallback } from './types.js';
2
2
  export default function transformDirectory(src: string, dest: string, type: TargetType, options?: ConfigOptions | TransformDirectoryCallback, callback?: TransformDirectoryCallback): undefined | Promise<string[]>;
@@ -1,3 +1,3 @@
1
- import type { TSConfig } from './types.ts';
1
+ import type { TSConfig } from './types.js';
2
2
  import type { Output } from '@swc/core';
3
3
  export default function transformSync(contents: string, fileName: string, tsconfig?: TSConfig): Output;
@@ -1,2 +1,2 @@
1
- import type { ConfigOptions, TransformTypesCallback } from './types.ts';
1
+ import type { ConfigOptions, TransformTypesCallback } from './types.js';
2
2
  export default function transformTypes(src: string, dest: string, options?: ConfigOptions | TransformTypesCallback, callback?: TransformTypesCallback): undefined | Promise<string[]>;
@@ -1,2 +1,2 @@
1
- import type { ConfigOptions, TargetType, TransformDirectoryCallback } from '../types.ts';
1
+ import type { ConfigOptions, TargetType, TransformDirectoryCallback } from '../types.js';
2
2
  export default function transformDirectoryWorker(src: string, dest: string, type: TargetType, options: ConfigOptions, callback: TransformDirectoryCallback): undefined;
@@ -1,3 +1,3 @@
1
1
  import type { Output } from '@swc/core';
2
- import type { TSConfig } from '../types.ts';
2
+ import type { TSConfig } from '../types.js';
3
3
  export default function transformSyncWorker(contents: string, fileName: string, tsconfig: TSConfig): Output;
@@ -1,2 +1,2 @@
1
- import type { ConfigOptions, TransformTypesCallback } from '../types.ts';
1
+ import type { ConfigOptions, TransformTypesCallback } from '../types.js';
2
2
  export default function transformTypesWorker(src: string, dest: string, options: ConfigOptions, callback: TransformTypesCallback): undefined;
@@ -1,8 +1,10 @@
1
+ import fs from 'fs';
1
2
  import Iterator from 'fs-iterator';
2
3
  import Module from 'module';
3
4
  const _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;
4
5
  import { typeFileRegEx } from '../constants.js';
5
6
  import createMatcher from '../createMatcher.js';
7
+ import { rewriteExtensions } from '../lib/rewriteExtensions.js';
6
8
  export default function transformTypesWorker(src, dest, options, callback) {
7
9
  const tsconfig = options.tsconfig;
8
10
  const matcher = createMatcher(tsconfig);
@@ -50,14 +52,13 @@ export default function transformTypesWorker(src, dest, options, callback) {
50
52
  };
51
53
  const program = ts.createProgram(programOptions);
52
54
  const res = program.emit();
53
- // Post-process declaration files to provide .js extensions in import paths
55
+ // TODO: remove patch for https://github.com/microsoft/TypeScript/issues/61037
54
56
  if (res.emittedFiles && compilerOptions.options.rewriteRelativeImportExtensions) {
55
- const fs = _require('fs');
56
57
  res.emittedFiles.forEach((file)=>{
57
58
  if (file.endsWith('.d.ts') || file.endsWith('.d.cts') || file.endsWith('.d.mts')) {
58
59
  try {
59
60
  const content = fs.readFileSync(file, 'utf8');
60
- const updated = content.replace(/from\s+['"]([^'"]+)\.ts['"]/g, "from '$1.js'").replace(/export\s+\*\s+from\s+['"]([^'"]+)\.ts['"]/g, "export * from '$1.js'");
61
+ const updated = rewriteExtensions(content);
61
62
  if (updated !== content) {
62
63
  fs.writeFileSync(file, updated, 'utf8');
63
64
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/workers/transformTypes.ts"],"sourcesContent":["import Iterator, { type Entry } from 'fs-iterator';\n\nimport Module from 'module';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\nimport { typeFileRegEx } from '../constants.ts';\nimport createMatcher from '../createMatcher.ts';\n\nimport type { ConfigOptions, TransformTypesCallback } from '../types.ts';\n\nexport default function transformTypesWorker(src: string, dest: string, options: ConfigOptions, callback: TransformTypesCallback): undefined {\n const tsconfig = options.tsconfig;\n const matcher = createMatcher(tsconfig);\n const ts = _require('typescript');\n\n const entries = [];\n const iterator = new Iterator(src);\n iterator.forEach(\n (entry: Entry): undefined => {\n if (!entry.stats.isFile()) return;\n if (entry.basename[0] === '.') return;\n if (typeFileRegEx.test(entry.basename)) return;\n if (!matcher(entry.fullPath)) return;\n entries.push(entry);\n },\n { concurrency: Infinity },\n (err): undefined => {\n if (err) {\n callback(err);\n return;\n }\n\n const compilerOptions = ts.convertCompilerOptionsFromJson(tsconfig.config.compilerOptions, '');\n const config = {\n fileNames: entries.map((entry) => entry.fullPath),\n options: {\n ...compilerOptions.options,\n outDir: dest,\n noEmit: false,\n allowJs: true,\n declaration: true,\n emitDeclarationOnly: true,\n listEmittedFiles: true,\n },\n projectReferences: tsconfig.config.references,\n };\n const { fileNames, options, projectReferences } = config;\n const host = ts.createCompilerHostWorker(options, /*setParentNodes*/ undefined, ts.sys);\n const programOptions = {\n rootNames: fileNames,\n options,\n projectReferences,\n host,\n configFileParsingDiagnostics: ts.getConfigFileParsingDiagnostics({ fileNames, options }),\n };\n const program = ts.createProgram(programOptions);\n const res = program.emit();\n\n // Post-process declaration files to provide .js extensions in import paths\n if (res.emittedFiles && compilerOptions.options.rewriteRelativeImportExtensions) {\n const fs = _require('fs');\n res.emittedFiles.forEach((file) => {\n if (file.endsWith('.d.ts') || file.endsWith('.d.cts') || file.endsWith('.d.mts')) {\n try {\n const content = fs.readFileSync(file, 'utf8');\n const updated = content.replace(/from\\s+['\"]([^'\"]+)\\.ts['\"]/g, \"from '$1.js'\").replace(/export\\s+\\*\\s+from\\s+['\"]([^'\"]+)\\.ts['\"]/g, \"export * from '$1.js'\");\n if (updated !== content) {\n fs.writeFileSync(file, updated, 'utf8');\n }\n } catch (_err) {\n // Ignore errors\n }\n }\n });\n }\n callback(null, res.emittedFiles);\n }\n );\n}\n"],"names":["Iterator","Module","_require","require","createRequire","url","typeFileRegEx","createMatcher","transformTypesWorker","src","dest","options","callback","tsconfig","matcher","ts","entries","iterator","forEach","entry","stats","isFile","basename","test","fullPath","push","concurrency","Infinity","err","compilerOptions","convertCompilerOptionsFromJson","config","fileNames","map","outDir","noEmit","allowJs","declaration","emitDeclarationOnly","listEmittedFiles","projectReferences","references","host","createCompilerHostWorker","undefined","sys","programOptions","rootNames","configFileParsingDiagnostics","getConfigFileParsingDiagnostics","program","createProgram","res","emit","emittedFiles","rewriteRelativeImportExtensions","fs","file","endsWith","content","readFileSync","updated","replace","writeFileSync","_err"],"mappings":"AAAA,OAAOA,cAA8B,cAAc;AAEnD,OAAOC,YAAY,SAAS;AAE5B,MAAMC,WAAW,OAAOC,YAAY,cAAcF,OAAOG,aAAa,CAAC,YAAYC,GAAG,IAAIF;AAE1F,SAASG,aAAa,QAAQ,kBAAkB;AAChD,OAAOC,mBAAmB,sBAAsB;AAIhD,eAAe,SAASC,qBAAqBC,GAAW,EAAEC,IAAY,EAAEC,OAAsB,EAAEC,QAAgC;IAC9H,MAAMC,WAAWF,QAAQE,QAAQ;IACjC,MAAMC,UAAUP,cAAcM;IAC9B,MAAME,KAAKb,SAAS;IAEpB,MAAMc,UAAU,EAAE;IAClB,MAAMC,WAAW,IAAIjB,SAASS;IAC9BQ,SAASC,OAAO,CACd,CAACC;QACC,IAAI,CAACA,MAAMC,KAAK,CAACC,MAAM,IAAI;QAC3B,IAAIF,MAAMG,QAAQ,CAAC,EAAE,KAAK,KAAK;QAC/B,IAAIhB,cAAciB,IAAI,CAACJ,MAAMG,QAAQ,GAAG;QACxC,IAAI,CAACR,QAAQK,MAAMK,QAAQ,GAAG;QAC9BR,QAAQS,IAAI,CAACN;IACf,GACA;QAAEO,aAAaC;IAAS,GACxB,CAACC;QACC,IAAIA,KAAK;YACPhB,SAASgB;YACT;QACF;QAEA,MAAMC,kBAAkBd,GAAGe,8BAA8B,CAACjB,SAASkB,MAAM,CAACF,eAAe,EAAE;QAC3F,MAAME,SAAS;YACbC,WAAWhB,QAAQiB,GAAG,CAAC,CAACd,QAAUA,MAAMK,QAAQ;YAChDb,SAAS;gBACP,GAAGkB,gBAAgBlB,OAAO;gBAC1BuB,QAAQxB;gBACRyB,QAAQ;gBACRC,SAAS;gBACTC,aAAa;gBACbC,qBAAqB;gBACrBC,kBAAkB;YACpB;YACAC,mBAAmB3B,SAASkB,MAAM,CAACU,UAAU;QAC/C;QACA,MAAM,EAAET,SAAS,EAAErB,OAAO,EAAE6B,iBAAiB,EAAE,GAAGT;QAClD,MAAMW,OAAO3B,GAAG4B,wBAAwB,CAAChC,SAAS,gBAAgB,GAAGiC,WAAW7B,GAAG8B,GAAG;QACtF,MAAMC,iBAAiB;YACrBC,WAAWf;YACXrB;YACA6B;YACAE;YACAM,8BAA8BjC,GAAGkC,+BAA+B,CAAC;gBAAEjB;gBAAWrB;YAAQ;QACxF;QACA,MAAMuC,UAAUnC,GAAGoC,aAAa,CAACL;QACjC,MAAMM,MAAMF,QAAQG,IAAI;QAExB,2EAA2E;QAC3E,IAAID,IAAIE,YAAY,IAAIzB,gBAAgBlB,OAAO,CAAC4C,+BAA+B,EAAE;YAC/E,MAAMC,KAAKtD,SAAS;YACpBkD,IAAIE,YAAY,CAACpC,OAAO,CAAC,CAACuC;gBACxB,IAAIA,KAAKC,QAAQ,CAAC,YAAYD,KAAKC,QAAQ,CAAC,aAAaD,KAAKC,QAAQ,CAAC,WAAW;oBAChF,IAAI;wBACF,MAAMC,UAAUH,GAAGI,YAAY,CAACH,MAAM;wBACtC,MAAMI,UAAUF,QAAQG,OAAO,CAAC,gCAAgC,gBAAgBA,OAAO,CAAC,8CAA8C;wBACtI,IAAID,YAAYF,SAAS;4BACvBH,GAAGO,aAAa,CAACN,MAAMI,SAAS;wBAClC;oBACF,EAAE,OAAOG,MAAM;oBACb,gBAAgB;oBAClB;gBACF;YACF;QACF;QACApD,SAAS,MAAMwC,IAAIE,YAAY;IACjC;AAEJ"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/workers/transformTypes.ts"],"sourcesContent":["import fs from 'fs';\nimport Iterator, { type Entry } from 'fs-iterator';\nimport Module from 'module';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\nimport { typeFileRegEx } from '../constants.ts';\nimport createMatcher from '../createMatcher.ts';\nimport { rewriteExtensions } from '../lib/rewriteExtensions.ts';\n\nimport type { ConfigOptions, TransformTypesCallback } from '../types.ts';\n\nexport default function transformTypesWorker(src: string, dest: string, options: ConfigOptions, callback: TransformTypesCallback): undefined {\n const tsconfig = options.tsconfig;\n const matcher = createMatcher(tsconfig);\n const ts = _require('typescript');\n\n const entries = [];\n const iterator = new Iterator(src);\n iterator.forEach(\n (entry: Entry): undefined => {\n if (!entry.stats.isFile()) return;\n if (entry.basename[0] === '.') return;\n if (typeFileRegEx.test(entry.basename)) return;\n if (!matcher(entry.fullPath)) return;\n entries.push(entry);\n },\n { concurrency: Infinity },\n (err): undefined => {\n if (err) {\n callback(err);\n return;\n }\n\n const compilerOptions = ts.convertCompilerOptionsFromJson(tsconfig.config.compilerOptions, '');\n const config = {\n fileNames: entries.map((entry) => entry.fullPath),\n options: {\n ...compilerOptions.options,\n outDir: dest,\n noEmit: false,\n allowJs: true,\n declaration: true,\n emitDeclarationOnly: true,\n listEmittedFiles: true,\n },\n projectReferences: tsconfig.config.references,\n };\n const { fileNames, options, projectReferences } = config;\n const host = ts.createCompilerHostWorker(options, /*setParentNodes*/ undefined, ts.sys);\n const programOptions = {\n rootNames: fileNames,\n options,\n projectReferences,\n host,\n configFileParsingDiagnostics: ts.getConfigFileParsingDiagnostics({ fileNames, options }),\n };\n const program = ts.createProgram(programOptions);\n const res = program.emit();\n\n // TODO: remove patch for https://github.com/microsoft/TypeScript/issues/61037\n if (res.emittedFiles && compilerOptions.options.rewriteRelativeImportExtensions) {\n res.emittedFiles.forEach((file) => {\n if (file.endsWith('.d.ts') || file.endsWith('.d.cts') || file.endsWith('.d.mts')) {\n try {\n const content = fs.readFileSync(file, 'utf8');\n const updated = rewriteExtensions(content);\n if (updated !== content) {\n fs.writeFileSync(file, updated, 'utf8');\n }\n } catch (_err) {\n // Ignore errors\n }\n }\n });\n }\n callback(null, res.emittedFiles);\n }\n );\n}\n"],"names":["fs","Iterator","Module","_require","require","createRequire","url","typeFileRegEx","createMatcher","rewriteExtensions","transformTypesWorker","src","dest","options","callback","tsconfig","matcher","ts","entries","iterator","forEach","entry","stats","isFile","basename","test","fullPath","push","concurrency","Infinity","err","compilerOptions","convertCompilerOptionsFromJson","config","fileNames","map","outDir","noEmit","allowJs","declaration","emitDeclarationOnly","listEmittedFiles","projectReferences","references","host","createCompilerHostWorker","undefined","sys","programOptions","rootNames","configFileParsingDiagnostics","getConfigFileParsingDiagnostics","program","createProgram","res","emit","emittedFiles","rewriteRelativeImportExtensions","file","endsWith","content","readFileSync","updated","writeFileSync","_err"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,OAAOC,cAA8B,cAAc;AACnD,OAAOC,YAAY,SAAS;AAE5B,MAAMC,WAAW,OAAOC,YAAY,cAAcF,OAAOG,aAAa,CAAC,YAAYC,GAAG,IAAIF;AAE1F,SAASG,aAAa,QAAQ,kBAAkB;AAChD,OAAOC,mBAAmB,sBAAsB;AAChD,SAASC,iBAAiB,QAAQ,8BAA8B;AAIhE,eAAe,SAASC,qBAAqBC,GAAW,EAAEC,IAAY,EAAEC,OAAsB,EAAEC,QAAgC;IAC9H,MAAMC,WAAWF,QAAQE,QAAQ;IACjC,MAAMC,UAAUR,cAAcO;IAC9B,MAAME,KAAKd,SAAS;IAEpB,MAAMe,UAAU,EAAE;IAClB,MAAMC,WAAW,IAAIlB,SAASU;IAC9BQ,SAASC,OAAO,CACd,CAACC;QACC,IAAI,CAACA,MAAMC,KAAK,CAACC,MAAM,IAAI;QAC3B,IAAIF,MAAMG,QAAQ,CAAC,EAAE,KAAK,KAAK;QAC/B,IAAIjB,cAAckB,IAAI,CAACJ,MAAMG,QAAQ,GAAG;QACxC,IAAI,CAACR,QAAQK,MAAMK,QAAQ,GAAG;QAC9BR,QAAQS,IAAI,CAACN;IACf,GACA;QAAEO,aAAaC;IAAS,GACxB,CAACC;QACC,IAAIA,KAAK;YACPhB,SAASgB;YACT;QACF;QAEA,MAAMC,kBAAkBd,GAAGe,8BAA8B,CAACjB,SAASkB,MAAM,CAACF,eAAe,EAAE;QAC3F,MAAME,SAAS;YACbC,WAAWhB,QAAQiB,GAAG,CAAC,CAACd,QAAUA,MAAMK,QAAQ;YAChDb,SAAS;gBACP,GAAGkB,gBAAgBlB,OAAO;gBAC1BuB,QAAQxB;gBACRyB,QAAQ;gBACRC,SAAS;gBACTC,aAAa;gBACbC,qBAAqB;gBACrBC,kBAAkB;YACpB;YACAC,mBAAmB3B,SAASkB,MAAM,CAACU,UAAU;QAC/C;QACA,MAAM,EAAET,SAAS,EAAErB,OAAO,EAAE6B,iBAAiB,EAAE,GAAGT;QAClD,MAAMW,OAAO3B,GAAG4B,wBAAwB,CAAChC,SAAS,gBAAgB,GAAGiC,WAAW7B,GAAG8B,GAAG;QACtF,MAAMC,iBAAiB;YACrBC,WAAWf;YACXrB;YACA6B;YACAE;YACAM,8BAA8BjC,GAAGkC,+BAA+B,CAAC;gBAAEjB;gBAAWrB;YAAQ;QACxF;QACA,MAAMuC,UAAUnC,GAAGoC,aAAa,CAACL;QACjC,MAAMM,MAAMF,QAAQG,IAAI;QAExB,8EAA8E;QAC9E,IAAID,IAAIE,YAAY,IAAIzB,gBAAgBlB,OAAO,CAAC4C,+BAA+B,EAAE;YAC/EH,IAAIE,YAAY,CAACpC,OAAO,CAAC,CAACsC;gBACxB,IAAIA,KAAKC,QAAQ,CAAC,YAAYD,KAAKC,QAAQ,CAAC,aAAaD,KAAKC,QAAQ,CAAC,WAAW;oBAChF,IAAI;wBACF,MAAMC,UAAU5D,GAAG6D,YAAY,CAACH,MAAM;wBACtC,MAAMI,UAAUrD,kBAAkBmD;wBAClC,IAAIE,YAAYF,SAAS;4BACvB5D,GAAG+D,aAAa,CAACL,MAAMI,SAAS;wBAClC;oBACF,EAAE,OAAOE,MAAM;oBACb,gBAAgB;oBAClB;gBACF;YACF;QACF;QACAlD,SAAS,MAAMwC,IAAIE,YAAY;IACjC;AAEJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-swc-transform",
3
- "version": "2.6.14",
3
+ "version": "2.6.15",
4
4
  "description": "Typescript transformers for swc. Supports Node >= 0.8",
5
5
  "keywords": [
6
6
  "matcher",