ts-swc-transform 2.9.0 → 2.10.1

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.
@@ -26,6 +26,7 @@ Object.defineProperty(exports, /**
26
26
  });
27
27
  var _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
28
28
  var _module = /*#__PURE__*/ _interop_require_default(require("module"));
29
+ var _modulerootsync = /*#__PURE__*/ _interop_require_default(require("module-root-sync"));
29
30
  var _path = /*#__PURE__*/ _interop_require_default(require("path"));
30
31
  function _interop_require_default(obj) {
31
32
  return obj && obj.__esModule ? obj : {
@@ -85,31 +86,6 @@ function getResolveExports() {
85
86
  }
86
87
  return null;
87
88
  }
88
- /**
89
- * Find the containing package.json by walking up from a file path
90
- * Used for # subpath imports which are scoped to the containing package
91
- */ function findContainingPackage(filePath) {
92
- var dir = _path.default.dirname(filePath);
93
- var root = _path.default.parse(dir).root;
94
- while(dir !== root){
95
- var pkgJsonPath = _path.default.join(dir, 'package.json');
96
- try {
97
- if (_fs.default.existsSync(pkgJsonPath)) {
98
- var content = _fs.default.readFileSync(pkgJsonPath, 'utf8');
99
- return {
100
- dir: dir,
101
- json: JSON.parse(content)
102
- };
103
- }
104
- } catch (_) {
105
- // Ignore filesystem errors
106
- }
107
- var parent = _path.default.dirname(dir);
108
- if (parent === dir) break;
109
- dir = parent;
110
- }
111
- return null;
112
- }
113
89
  function resolveESM(specifier, parentPath) {
114
90
  var conditions = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [
115
91
  'node',
@@ -125,7 +101,19 @@ function resolveESM(specifier, parentPath) {
125
101
  var subpath;
126
102
  if (specifier.startsWith('#')) {
127
103
  // Subpath import - find containing package
128
- pkg = findContainingPackage(parentPath);
104
+ try {
105
+ var dir = (0, _modulerootsync.default)(parentPath, {
106
+ includeSynthetic: true
107
+ });
108
+ var pkgJsonPath = _path.default.join(dir, 'package.json');
109
+ var content = _fs.default.readFileSync(pkgJsonPath, 'utf8');
110
+ pkg = {
111
+ dir: dir,
112
+ json: JSON.parse(content)
113
+ };
114
+ } catch (_) {
115
+ pkg = null;
116
+ }
129
117
  subpath = specifier; // resolve.exports expects the full #specifier
130
118
  } else {
131
119
  // External package - find in node_modules
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/resolveESM.ts"],"sourcesContent":["/**\n * Unified ESM resolver\n *\n * Handles both:\n * - Package exports: import x from 'lodash' → uses exports field\n * - Subpath imports: import x from '#internal' → uses imports field\n *\n * Uses resolve.exports.resolve() which automatically detects the specifier type.\n * Only loaded on Node >= 12.2 where module.createRequire exists.\n */\n\nimport fs from 'fs';\nimport Module from 'module';\nimport path from 'path';\n\n// Lazy-load resolve.exports\ntype ResolveExportsModule = typeof import('resolve.exports');\nlet _resolveExports: ResolveExportsModule | null = null;\n\nfunction getResolveExports(): ResolveExportsModule | null {\n if (_resolveExports === null) {\n try {\n const _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n _resolveExports = _require('resolve.exports') as ResolveExportsModule;\n } catch (_) {\n _resolveExports = null;\n }\n }\n return _resolveExports;\n}\n\n/**\n * Parse a specifier into package name and subpath\n * \"lodash\" → { pkgName: \"lodash\", subpath: \".\" }\n * \"lodash/get\" → { pkgName: \"lodash\", subpath: \"./get\" }\n * \"@scope/pkg\" → { pkgName: \"@scope/pkg\", subpath: \".\" }\n * \"@scope/pkg/foo\" → { pkgName: \"@scope/pkg\", subpath: \"./foo\" }\n */\nfunction parseSpecifier(specifier: string): { pkgName: string; subpath: string } {\n const parts = specifier.split('/');\n const pkgName = specifier[0] === '@' ? parts.slice(0, 2).join('/') : parts[0];\n const remainder = specifier.slice(pkgName.length);\n const subpath = remainder ? `.${remainder}` : '.';\n return { pkgName, subpath };\n}\n\n/**\n * Find package.json in node_modules for external packages\n */\nfunction findPackageInNodeModules(pkgName: string, basedir: string): { dir: string; json: Record<string, unknown> } | null {\n let dir = basedir;\n const root = path.parse(dir).root;\n\n while (dir !== root) {\n const pkgDir = path.join(dir, 'node_modules', pkgName);\n const pkgJsonPath = path.join(pkgDir, 'package.json');\n try {\n if (fs.existsSync(pkgJsonPath)) {\n const content = fs.readFileSync(pkgJsonPath, 'utf8');\n return { dir: pkgDir, json: JSON.parse(content) };\n }\n } catch (_) {\n // Ignore filesystem errors\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n\n return null;\n}\n\n/**\n * Find the containing package.json by walking up from a file path\n * Used for # subpath imports which are scoped to the containing package\n */\nfunction findContainingPackage(filePath: string): { dir: string; json: Record<string, unknown> } | null {\n let dir = path.dirname(filePath);\n const root = path.parse(dir).root;\n\n while (dir !== root) {\n const pkgJsonPath = path.join(dir, 'package.json');\n try {\n if (fs.existsSync(pkgJsonPath)) {\n const content = fs.readFileSync(pkgJsonPath, 'utf8');\n return { dir, json: JSON.parse(content) };\n }\n } catch (_) {\n // Ignore filesystem errors\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n\n return null;\n}\n\n/**\n * Resolve an ESM specifier to an absolute file path\n *\n * @param specifier - The import specifier (e.g., 'lodash', 'lodash/get', '#internal')\n * @param parentPath - The file path of the importing module\n * @param conditions - Export conditions (defaults to ['node', 'import'])\n * @returns The resolved absolute file path, or null if not resolvable\n */\nexport default function resolveESM(specifier: string, parentPath: string, conditions: string[] = ['node', 'import']): string | null {\n const resolveExportsMod = getResolveExports();\n if (!resolveExportsMod) {\n return null;\n }\n\n const { resolve: resolveFn, legacy } = resolveExportsMod;\n\n // Determine how to find the package.json based on specifier type\n let pkg: { dir: string; json: Record<string, unknown> } | null;\n let subpath: string;\n\n if (specifier.startsWith('#')) {\n // Subpath import - find containing package\n pkg = findContainingPackage(parentPath);\n subpath = specifier; // resolve.exports expects the full #specifier\n } else {\n // External package - find in node_modules\n const { pkgName, subpath: parsedSubpath } = parseSpecifier(specifier);\n pkg = findPackageInNodeModules(pkgName, parentPath);\n subpath = parsedSubpath;\n }\n\n if (!pkg) {\n return null;\n }\n\n // Use resolve.exports.resolve() which handles both exports and imports\n try {\n const resolved = resolveFn(pkg.json, subpath, { conditions });\n if (resolved?.[0]) {\n return path.join(pkg.dir, resolved[0]);\n }\n } catch (_) {\n // Resolution failed, try legacy\n }\n\n // Try legacy main/module fields for non-# imports\n if (!specifier.startsWith('#')) {\n try {\n const legacyMain = legacy(pkg.json);\n if (legacyMain) {\n let mainPath: string | undefined;\n if (typeof legacyMain === 'string') {\n mainPath = legacyMain;\n } else if (Array.isArray(legacyMain)) {\n mainPath = legacyMain[0];\n }\n if (mainPath) {\n return path.join(pkg.dir, mainPath);\n }\n }\n } catch (_) {\n // Legacy parsing failed\n }\n\n // Last resort: try index.js\n const indexPath = path.join(pkg.dir, 'index.js');\n try {\n if (fs.existsSync(indexPath)) {\n return indexPath;\n }\n } catch (_) {\n // Ignore\n }\n }\n\n return null;\n}\n"],"names":["resolveESM","_resolveExports","getResolveExports","_require","require","Module","createRequire","_","parseSpecifier","specifier","parts","split","pkgName","slice","join","remainder","length","subpath","findPackageInNodeModules","basedir","dir","root","path","parse","pkgDir","pkgJsonPath","fs","existsSync","content","readFileSync","json","JSON","parent","dirname","findContainingPackage","filePath","parentPath","conditions","resolveExportsMod","resolve","resolveFn","legacy","pkg","startsWith","parsedSubpath","resolved","legacyMain","mainPath","Array","isArray","indexPath"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/resolveESM.ts"],"sourcesContent":["/**\n * Unified ESM resolver\n *\n * Handles both:\n * - Package exports: import x from 'lodash' → uses exports field\n * - Subpath imports: import x from '#internal' → uses imports field\n *\n * Uses resolve.exports.resolve() which automatically detects the specifier type.\n * Only loaded on Node >= 12.2 where module.createRequire exists.\n */\n\nimport fs from 'fs';\nimport Module from 'module';\nimport findRoot from 'module-root-sync';\nimport path from 'path';\n\n// Lazy-load resolve.exports\ntype ResolveExportsModule = typeof import('resolve.exports');\nlet _resolveExports: ResolveExportsModule | null = null;\n\nfunction getResolveExports(): ResolveExportsModule | null {\n if (_resolveExports === null) {\n try {\n const _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n _resolveExports = _require('resolve.exports') as ResolveExportsModule;\n } catch (_) {\n _resolveExports = null;\n }\n }\n return _resolveExports;\n}\n\n/**\n * Parse a specifier into package name and subpath\n * \"lodash\" → { pkgName: \"lodash\", subpath: \".\" }\n * \"lodash/get\" → { pkgName: \"lodash\", subpath: \"./get\" }\n * \"@scope/pkg\" → { pkgName: \"@scope/pkg\", subpath: \".\" }\n * \"@scope/pkg/foo\" → { pkgName: \"@scope/pkg\", subpath: \"./foo\" }\n */\nfunction parseSpecifier(specifier: string): { pkgName: string; subpath: string } {\n const parts = specifier.split('/');\n const pkgName = specifier[0] === '@' ? parts.slice(0, 2).join('/') : parts[0];\n const remainder = specifier.slice(pkgName.length);\n const subpath = remainder ? `.${remainder}` : '.';\n return { pkgName, subpath };\n}\n\n/**\n * Find package.json in node_modules for external packages\n */\nfunction findPackageInNodeModules(pkgName: string, basedir: string): { dir: string; json: Record<string, unknown> } | null {\n let dir = basedir;\n const root = path.parse(dir).root;\n\n while (dir !== root) {\n const pkgDir = path.join(dir, 'node_modules', pkgName);\n const pkgJsonPath = path.join(pkgDir, 'package.json');\n try {\n if (fs.existsSync(pkgJsonPath)) {\n const content = fs.readFileSync(pkgJsonPath, 'utf8');\n return { dir: pkgDir, json: JSON.parse(content) };\n }\n } catch (_) {\n // Ignore filesystem errors\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n\n return null;\n}\n\n/**\n * Resolve an ESM specifier to an absolute file path\n *\n * @param specifier - The import specifier (e.g., 'lodash', 'lodash/get', '#internal')\n * @param parentPath - The file path of the importing module\n * @param conditions - Export conditions (defaults to ['node', 'import'])\n * @returns The resolved absolute file path, or null if not resolvable\n */\nexport default function resolveESM(specifier: string, parentPath: string, conditions: string[] = ['node', 'import']): string | null {\n const resolveExportsMod = getResolveExports();\n if (!resolveExportsMod) {\n return null;\n }\n\n const { resolve: resolveFn, legacy } = resolveExportsMod;\n\n // Determine how to find the package.json based on specifier type\n let pkg: { dir: string; json: Record<string, unknown> } | null;\n let subpath: string;\n\n if (specifier.startsWith('#')) {\n // Subpath import - find containing package\n try {\n const dir = findRoot(parentPath, { includeSynthetic: true });\n const pkgJsonPath = path.join(dir, 'package.json');\n const content = fs.readFileSync(pkgJsonPath, 'utf8');\n pkg = { dir, json: JSON.parse(content) };\n } catch (_) {\n pkg = null;\n }\n subpath = specifier; // resolve.exports expects the full #specifier\n } else {\n // External package - find in node_modules\n const { pkgName, subpath: parsedSubpath } = parseSpecifier(specifier);\n pkg = findPackageInNodeModules(pkgName, parentPath);\n subpath = parsedSubpath;\n }\n\n if (!pkg) {\n return null;\n }\n\n // Use resolve.exports.resolve() which handles both exports and imports\n try {\n const resolved = resolveFn(pkg.json, subpath, { conditions });\n if (resolved?.[0]) {\n return path.join(pkg.dir, resolved[0]);\n }\n } catch (_) {\n // Resolution failed, try legacy\n }\n\n // Try legacy main/module fields for non-# imports\n if (!specifier.startsWith('#')) {\n try {\n const legacyMain = legacy(pkg.json);\n if (legacyMain) {\n let mainPath: string | undefined;\n if (typeof legacyMain === 'string') {\n mainPath = legacyMain;\n } else if (Array.isArray(legacyMain)) {\n mainPath = legacyMain[0];\n }\n if (mainPath) {\n return path.join(pkg.dir, mainPath);\n }\n }\n } catch (_) {\n // Legacy parsing failed\n }\n\n // Last resort: try index.js\n const indexPath = path.join(pkg.dir, 'index.js');\n try {\n if (fs.existsSync(indexPath)) {\n return indexPath;\n }\n } catch (_) {\n // Ignore\n }\n }\n\n return null;\n}\n"],"names":["resolveESM","_resolveExports","getResolveExports","_require","require","Module","createRequire","_","parseSpecifier","specifier","parts","split","pkgName","slice","join","remainder","length","subpath","findPackageInNodeModules","basedir","dir","root","path","parse","pkgDir","pkgJsonPath","fs","existsSync","content","readFileSync","json","JSON","parent","dirname","parentPath","conditions","resolveExportsMod","resolve","resolveFn","legacy","pkg","startsWith","findRoot","includeSynthetic","parsedSubpath","resolved","legacyMain","mainPath","Array","isArray","indexPath"],"mappings":"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"}
@@ -8,10 +8,11 @@ Object.defineProperty(exports, "default", {
8
8
  return transformDirectory;
9
9
  }
10
10
  });
11
+ var _module = /*#__PURE__*/ _interop_require_default(require("module"));
12
+ var _nodeversioncall = require("node-version-call");
11
13
  var _path = /*#__PURE__*/ _interop_require_default(require("path"));
12
14
  var _readtsconfigsync = /*#__PURE__*/ _interop_require_default(require("read-tsconfig-sync"));
13
15
  var _url = /*#__PURE__*/ _interop_require_default(require("url"));
14
- var _module = /*#__PURE__*/ _interop_require_default(require("module"));
15
16
  function _define_property(obj, key, value) {
16
17
  if (key in obj) {
17
18
  Object.defineProperty(obj, key, {
@@ -46,21 +47,17 @@ function _object_spread(target) {
46
47
  return target;
47
48
  }
48
49
  var major = +process.versions.node.split('.')[0];
49
- var version = major < 14 ? 'stable' : 'local';
50
+ var _require = typeof require === 'undefined' ? _module.default.createRequire(require("url").pathToFileURL(__filename).toString()) : require;
50
51
  var __dirname = _path.default.dirname(typeof __filename === 'undefined' ? _url.default.fileURLToPath(require("url").pathToFileURL(__filename).toString()) : __filename);
51
52
  var workerPath = _path.default.join(__dirname, '..', 'cjs', 'workers', 'transformDirectory.js');
52
- var _require = typeof require === 'undefined' ? _module.default.createRequire(require("url").pathToFileURL(__filename).toString()) : require;
53
- function dispatch(version, src, dest, type, options, callback) {
54
- if (version === 'local') return _require(workerPath)(src, dest, type, options, callback);
55
- try {
56
- callback(null, _require('node-version-call')({
57
- version: version,
58
- callbacks: true
59
- }, workerPath, src, dest, type, options));
60
- } catch (err) {
61
- callback(err);
62
- }
53
+ function run(src, dest, type, options, callback) {
54
+ return _require(workerPath)(src, dest, type, options, callback);
63
55
  }
56
+ // spawnOptions: false - no node/npm spawn (library call only)
57
+ var worker = major >= 20 ? run : (0, _nodeversioncall.bind)('>=20', workerPath, {
58
+ callbacks: true,
59
+ spawnOptions: false
60
+ });
64
61
  function transformDirectory(src, dest, type, options, callback) {
65
62
  try {
66
63
  if (typeof src !== 'string') throw new Error('transformDirectory: unexpected source');
@@ -68,16 +65,16 @@ function transformDirectory(src, dest, type, options, callback) {
68
65
  if (typeof type !== 'string') throw new Error('transformDirectory: unexpected type');
69
66
  if (typeof options === 'function') {
70
67
  callback = options;
71
- options = null;
68
+ options = undefined;
72
69
  }
73
- options = options || {};
74
- var tsconfig = options.tsconfig ? options.tsconfig : (0, _readtsconfigsync.default)(src);
75
- options = _object_spread({
70
+ var baseOpts = options || {};
71
+ var tsconfig = baseOpts.tsconfig ? baseOpts.tsconfig : (0, _readtsconfigsync.default)(src);
72
+ var opts = _object_spread({
76
73
  tsconfig: tsconfig
77
- }, options);
78
- if (typeof callback === 'function') return dispatch(version, src, dest, type, options, callback);
74
+ }, baseOpts);
75
+ if (typeof callback === 'function') return worker(src, dest, type, opts, callback);
79
76
  return new Promise(function(resolve, reject) {
80
- return dispatch(version, src, dest, type, options, function(err, result) {
77
+ return worker(src, dest, type, opts, function(err, result) {
81
78
  err ? reject(err) : resolve(result);
82
79
  });
83
80
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/transformDirectory.ts"],"sourcesContent":["import path from 'path';\nimport loadConfigSync from 'read-tsconfig-sync';\nimport url from 'url';\n\nconst major = +process.versions.node.split('.')[0];\nconst version = major < 14 ? 'stable' : 'local';\nconst __dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);\nconst workerPath = path.join(__dirname, '..', 'cjs', 'workers', 'transformDirectory.js');\n\nimport Module from 'module';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\nimport type { ConfigOptions, TargetType, TransformDirectoryCallback } from './types.ts';\n\nfunction dispatch(version: string, src: string, dest: string, type: TargetType, options: ConfigOptions, callback: TransformDirectoryCallback) {\n if (version === 'local') return _require(workerPath)(src, dest, type, options, callback);\n try {\n callback(null, _require('node-version-call')({ version, callbacks: true }, workerPath, src, dest, type, options));\n } catch (err) {\n callback(err);\n }\n}\n\nexport default function transformDirectory(src: string, dest: string, type: TargetType, callback: TransformDirectoryCallback): void;\nexport default function transformDirectory(src: string, dest: string, type: TargetType, options: ConfigOptions, callback: TransformDirectoryCallback): void;\nexport default function transformDirectory(src: string, dest: string, type: TargetType): Promise<string[]>;\nexport default function transformDirectory(src: string, dest: string, type: TargetType, options: ConfigOptions): Promise<string[]>;\nexport default function transformDirectory(src: string, dest: string, type: TargetType, options?: ConfigOptions | TransformDirectoryCallback, callback?: TransformDirectoryCallback): void | Promise<string[]> {\n try {\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 options === 'function') {\n callback = options as TransformDirectoryCallback;\n options = null;\n }\n options = (options || {}) as ConfigOptions;\n const tsconfig = options.tsconfig ? options.tsconfig : loadConfigSync(src);\n options = { tsconfig, ...options };\n\n if (typeof callback === 'function') return dispatch(version, src, dest, type, options, callback);\n return new Promise((resolve, reject) =>\n dispatch(version, src, dest, type, options as ConfigOptions, (err, result) => {\n err ? reject(err) : resolve(result);\n })\n );\n } catch (err) {\n if (callback) callback(err);\n else return Promise.reject(err);\n }\n}\n"],"names":["transformDirectory","major","process","versions","node","split","version","__dirname","path","dirname","__filename","url","fileURLToPath","workerPath","join","_require","require","Module","createRequire","dispatch","src","dest","type","options","callback","callbacks","err","Error","tsconfig","loadConfigSync","Promise","resolve","reject","result"],"mappings":";;;;+BA4BA;;;eAAwBA;;;2DA5BP;uEACU;0DACX;6DAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AALnB,IAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;AAClD,IAAMC,UAAUL,QAAQ,KAAK,WAAW;AACxC,IAAMM,YAAYC,aAAI,CAACC,OAAO,CAAC,OAAOC,eAAe,cAAcC,YAAG,CAACC,aAAa,CAAC,uDAAmBF;AACxG,IAAMG,aAAaL,aAAI,CAACM,IAAI,CAACP,WAAW,MAAM,OAAO,WAAW;AAIhE,IAAMQ,WAAW,OAAOC,YAAY,cAAcC,eAAM,CAACC,aAAa,CAAC,uDAAmBF;AAI1F,SAASG,SAASb,OAAe,EAAEc,GAAW,EAAEC,IAAY,EAAEC,IAAgB,EAAEC,OAAsB,EAAEC,QAAoC;IAC1I,IAAIlB,YAAY,SAAS,OAAOS,SAASF,YAAYO,KAAKC,MAAMC,MAAMC,SAASC;IAC/E,IAAI;QACFA,SAAS,MAAMT,SAAS,qBAAqB;YAAET,SAAAA;YAASmB,WAAW;QAAK,GAAGZ,YAAYO,KAAKC,MAAMC,MAAMC;IAC1G,EAAE,OAAOG,KAAK;QACZF,SAASE;IACX;AACF;AAMe,SAAS1B,mBAAmBoB,GAAW,EAAEC,IAAY,EAAEC,IAAgB,EAAEC,OAAoD,EAAEC,QAAqC;IACjL,IAAI;QACF,IAAI,OAAOJ,QAAQ,UAAU,MAAM,IAAIO,MAAM;QAC7C,IAAI,OAAON,SAAS,UAAU,MAAM,IAAIM,MAAM;QAC9C,IAAI,OAAOL,SAAS,UAAU,MAAM,IAAIK,MAAM;QAE9C,IAAI,OAAOJ,YAAY,YAAY;YACjCC,WAAWD;YACXA,UAAU;QACZ;QACAA,UAAWA,WAAW,CAAC;QACvB,IAAMK,WAAWL,QAAQK,QAAQ,GAAGL,QAAQK,QAAQ,GAAGC,IAAAA,yBAAc,EAACT;QACtEG,UAAU;YAAEK,UAAAA;WAAaL;QAEzB,IAAI,OAAOC,aAAa,YAAY,OAAOL,SAASb,SAASc,KAAKC,MAAMC,MAAMC,SAASC;QACvF,OAAO,IAAIM,QAAQ,SAACC,SAASC;mBAC3Bb,SAASb,SAASc,KAAKC,MAAMC,MAAMC,SAA0B,SAACG,KAAKO;gBACjEP,MAAMM,OAAON,OAAOK,QAAQE;YAC9B;;IAEJ,EAAE,OAAOP,KAAK;QACZ,IAAIF,UAAUA,SAASE;aAClB,OAAOI,QAAQE,MAAM,CAACN;IAC7B;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/transformDirectory.ts"],"sourcesContent":["import Module from 'module';\nimport { bind } from 'node-version-call';\nimport path from 'path';\nimport loadConfigSync from 'read-tsconfig-sync';\nimport url from 'url';\n\nimport type { ConfigOptions, TargetType, TransformDirectoryCallback } from './types.ts';\n\nconst major = +process.versions.node.split('.')[0];\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\nconst __dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);\nconst workerPath = path.join(__dirname, '..', 'cjs', 'workers', 'transformDirectory.js');\n\nfunction run(src: string, dest: string, type: TargetType, options: ConfigOptions, callback: TransformDirectoryCallback) {\n return _require(workerPath)(src, dest, type, options, callback);\n}\n\n// spawnOptions: false - no node/npm spawn (library call only)\nconst worker = major >= 20 ? run : bind('>=20', workerPath, { callbacks: true, spawnOptions: false });\n\nexport default function transformDirectory(src: string, dest: string, type: TargetType, callback: TransformDirectoryCallback): void;\nexport default function transformDirectory(src: string, dest: string, type: TargetType, options: ConfigOptions, callback: TransformDirectoryCallback): void;\nexport default function transformDirectory(src: string, dest: string, type: TargetType): Promise<string[]>;\nexport default function transformDirectory(src: string, dest: string, type: TargetType, options: ConfigOptions): Promise<string[]>;\nexport default function transformDirectory(src: string, dest: string, type: TargetType, options?: ConfigOptions | TransformDirectoryCallback, callback?: TransformDirectoryCallback): void | Promise<string[]> {\n try {\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 options === 'function') {\n callback = options;\n options = undefined;\n }\n const baseOpts = (options || {}) as ConfigOptions;\n const tsconfig = baseOpts.tsconfig ? baseOpts.tsconfig : loadConfigSync(src);\n const opts: ConfigOptions = { tsconfig, ...baseOpts };\n\n if (typeof callback === 'function') return worker(src, dest, type, opts, callback);\n return new Promise((resolve, reject) =>\n worker(src, dest, type, opts, (err, result) => {\n err ? reject(err) : resolve(result);\n })\n );\n } catch (err) {\n if (callback) callback(err);\n else return Promise.reject(err);\n }\n}\n"],"names":["transformDirectory","major","process","versions","node","split","_require","require","Module","createRequire","__dirname","path","dirname","__filename","url","fileURLToPath","workerPath","join","run","src","dest","type","options","callback","worker","bind","callbacks","spawnOptions","Error","undefined","baseOpts","tsconfig","loadConfigSync","opts","Promise","resolve","reject","err","result"],"mappings":";;;;+BAwBA;;;eAAwBA;;;6DAxBL;+BACE;2DACJ;uEACU;0DACX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIhB,IAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;AAClD,IAAMC,WAAW,OAAOC,YAAY,cAAcC,eAAM,CAACC,aAAa,CAAC,uDAAmBF;AAC1F,IAAMG,YAAYC,aAAI,CAACC,OAAO,CAAC,OAAOC,eAAe,cAAcC,YAAG,CAACC,aAAa,CAAC,uDAAmBF;AACxG,IAAMG,aAAaL,aAAI,CAACM,IAAI,CAACP,WAAW,MAAM,OAAO,WAAW;AAEhE,SAASQ,IAAIC,GAAW,EAAEC,IAAY,EAAEC,IAAgB,EAAEC,OAAsB,EAAEC,QAAoC;IACpH,OAAOjB,SAASU,YAAYG,KAAKC,MAAMC,MAAMC,SAASC;AACxD;AAEA,8DAA8D;AAC9D,IAAMC,SAASvB,SAAS,KAAKiB,MAAMO,IAAAA,qBAAI,EAAC,QAAQT,YAAY;IAAEU,WAAW;IAAMC,cAAc;AAAM;AAMpF,SAAS3B,mBAAmBmB,GAAW,EAAEC,IAAY,EAAEC,IAAgB,EAAEC,OAAoD,EAAEC,QAAqC;IACjL,IAAI;QACF,IAAI,OAAOJ,QAAQ,UAAU,MAAM,IAAIS,MAAM;QAC7C,IAAI,OAAOR,SAAS,UAAU,MAAM,IAAIQ,MAAM;QAC9C,IAAI,OAAOP,SAAS,UAAU,MAAM,IAAIO,MAAM;QAE9C,IAAI,OAAON,YAAY,YAAY;YACjCC,WAAWD;YACXA,UAAUO;QACZ;QACA,IAAMC,WAAYR,WAAW,CAAC;QAC9B,IAAMS,WAAWD,SAASC,QAAQ,GAAGD,SAASC,QAAQ,GAAGC,IAAAA,yBAAc,EAACb;QACxE,IAAMc,OAAsB;YAAEF,UAAAA;WAAaD;QAE3C,IAAI,OAAOP,aAAa,YAAY,OAAOC,OAAOL,KAAKC,MAAMC,MAAMY,MAAMV;QACzE,OAAO,IAAIW,QAAQ,SAACC,SAASC;mBAC3BZ,OAAOL,KAAKC,MAAMC,MAAMY,MAAM,SAACI,KAAKC;gBAClCD,MAAMD,OAAOC,OAAOF,QAAQG;YAC9B;;IAEJ,EAAE,OAAOD,KAAK;QACZ,IAAId,UAAUA,SAASc;aAClB,OAAOH,QAAQE,MAAM,CAACC;IAC7B;AACF"}
@@ -8,28 +8,31 @@ Object.defineProperty(exports, "default", {
8
8
  return transformSync;
9
9
  }
10
10
  });
11
+ var _module = /*#__PURE__*/ _interop_require_default(require("module"));
12
+ var _nodeversioncall = require("node-version-call");
11
13
  var _path = /*#__PURE__*/ _interop_require_default(require("path"));
12
14
  var _readtsconfigsync = /*#__PURE__*/ _interop_require_default(require("read-tsconfig-sync"));
13
15
  var _url = /*#__PURE__*/ _interop_require_default(require("url"));
14
- var _module = /*#__PURE__*/ _interop_require_default(require("module"));
15
16
  function _interop_require_default(obj) {
16
17
  return obj && obj.__esModule ? obj : {
17
18
  default: obj
18
19
  };
19
20
  }
20
21
  var major = +process.versions.node.split('.')[0];
21
- var version = major < 14 ? 'stable' : 'local';
22
+ var _require = typeof require === 'undefined' ? _module.default.createRequire(require("url").pathToFileURL(__filename).toString()) : require;
22
23
  var __dirname = _path.default.dirname(typeof __filename === 'undefined' ? _url.default.fileURLToPath(require("url").pathToFileURL(__filename).toString()) : __filename);
23
24
  var workerPath = _path.default.join(__dirname, '..', 'cjs', 'workers', 'transformSync.js');
24
- var _require = typeof require === 'undefined' ? _module.default.createRequire(require("url").pathToFileURL(__filename).toString()) : require;
25
- function dispatch(version, contents, fileName, tsconfig) {
26
- if (version === 'local') return _require(workerPath)(contents, fileName, tsconfig);
27
- return _require('node-version-call')(version, workerPath, contents, fileName, tsconfig);
25
+ function run(contents, fileName, tsconfig) {
26
+ return _require(workerPath)(contents, fileName, tsconfig);
28
27
  }
28
+ // spawnOptions: false - no node/npm spawn (library call only)
29
+ var worker = major >= 20 ? run : (0, _nodeversioncall.bindSync)('>=20', workerPath, {
30
+ spawnOptions: false
31
+ });
29
32
  function transformSync(contents, fileName, tsconfig) {
30
33
  if (typeof contents !== 'string') throw new Error('transformSync: unexpected contents');
31
34
  if (typeof fileName !== 'string') throw new Error('transformSync: unexpected fileName');
32
35
  if (!tsconfig) tsconfig = (0, _readtsconfigsync.default)(process.cwd());
33
- return dispatch(version, contents, fileName, tsconfig);
36
+ return worker(contents, fileName, tsconfig);
34
37
  }
35
38
  /* 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/transformSync.ts"],"sourcesContent":["import path from 'path';\nimport loadConfigSync from 'read-tsconfig-sync';\nimport url from 'url';\n\nimport type { TSConfig } from './types.ts';\n\nconst major = +process.versions.node.split('.')[0];\nconst version = major < 14 ? 'stable' : 'local';\nconst __dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);\nconst workerPath = path.join(__dirname, '..', 'cjs', 'workers', 'transformSync.js');\n\nimport Module from 'module';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\nfunction dispatch(version, contents, fileName, tsconfig) {\n if (version === 'local') return _require(workerPath)(contents, fileName, tsconfig);\n return _require('node-version-call')(version, workerPath, contents, fileName, tsconfig);\n}\n\nimport type { Output } from '@swc/core';\nexport default function transformSync(contents: string, fileName: string, tsconfig?: TSConfig): Output {\n if (typeof contents !== 'string') throw new Error('transformSync: unexpected contents');\n if (typeof fileName !== 'string') throw new Error('transformSync: unexpected fileName');\n if (!tsconfig) tsconfig = loadConfigSync(process.cwd());\n return dispatch(version, contents, fileName, tsconfig);\n}\n"],"names":["transformSync","major","process","versions","node","split","version","__dirname","path","dirname","__filename","url","fileURLToPath","workerPath","join","_require","require","Module","createRequire","dispatch","contents","fileName","tsconfig","Error","loadConfigSync","cwd"],"mappings":";;;;+BAqBA;;;eAAwBA;;;2DArBP;uEACU;0DACX;6DASG;;;;;;AALnB,IAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;AAClD,IAAMC,UAAUL,QAAQ,KAAK,WAAW;AACxC,IAAMM,YAAYC,aAAI,CAACC,OAAO,CAAC,OAAOC,eAAe,cAAcC,YAAG,CAACC,aAAa,CAAC,uDAAmBF;AACxG,IAAMG,aAAaL,aAAI,CAACM,IAAI,CAACP,WAAW,MAAM,OAAO,WAAW;AAIhE,IAAMQ,WAAW,OAAOC,YAAY,cAAcC,eAAM,CAACC,aAAa,CAAC,uDAAmBF;AAE1F,SAASG,SAASb,OAAO,EAAEc,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ;IACrD,IAAIhB,YAAY,SAAS,OAAOS,SAASF,YAAYO,UAAUC,UAAUC;IACzE,OAAOP,SAAS,qBAAqBT,SAASO,YAAYO,UAAUC,UAAUC;AAChF;AAGe,SAAStB,cAAcoB,QAAgB,EAAEC,QAAgB,EAAEC,QAAmB;IAC3F,IAAI,OAAOF,aAAa,UAAU,MAAM,IAAIG,MAAM;IAClD,IAAI,OAAOF,aAAa,UAAU,MAAM,IAAIE,MAAM;IAClD,IAAI,CAACD,UAAUA,WAAWE,IAAAA,yBAAc,EAACtB,QAAQuB,GAAG;IACpD,OAAON,SAASb,SAASc,UAAUC,UAAUC;AAC/C"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/transformSync.ts"],"sourcesContent":["import Module from 'module';\nimport { bindSync } from 'node-version-call';\nimport path from 'path';\nimport loadConfigSync from 'read-tsconfig-sync';\nimport url from 'url';\n\nimport type { TSConfig } from './types.ts';\n\nconst major = +process.versions.node.split('.')[0];\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\nconst __dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);\nconst workerPath = path.join(__dirname, '..', 'cjs', 'workers', 'transformSync.js');\n\nfunction run(contents: string, fileName: string, tsconfig: TSConfig) {\n return _require(workerPath)(contents, fileName, tsconfig);\n}\n\n// spawnOptions: false - no node/npm spawn (library call only)\nconst worker = major >= 20 ? run : bindSync('>=20', workerPath, { spawnOptions: false });\n\nimport type { Output } from '@swc/core';\nexport default function transformSync(contents: string, fileName: string, tsconfig?: TSConfig): Output {\n if (typeof contents !== 'string') throw new Error('transformSync: unexpected contents');\n if (typeof fileName !== 'string') throw new Error('transformSync: unexpected fileName');\n if (!tsconfig) tsconfig = loadConfigSync(process.cwd());\n return worker(contents, fileName, tsconfig) as Output;\n}\n"],"names":["transformSync","major","process","versions","node","split","_require","require","Module","createRequire","__dirname","path","dirname","__filename","url","fileURLToPath","workerPath","join","run","contents","fileName","tsconfig","worker","bindSync","spawnOptions","Error","loadConfigSync","cwd"],"mappings":";;;;+BAqBA;;;eAAwBA;;;6DArBL;+BACM;2DACR;uEACU;0DACX;;;;;;AAIhB,IAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;AAClD,IAAMC,WAAW,OAAOC,YAAY,cAAcC,eAAM,CAACC,aAAa,CAAC,uDAAmBF;AAC1F,IAAMG,YAAYC,aAAI,CAACC,OAAO,CAAC,OAAOC,eAAe,cAAcC,YAAG,CAACC,aAAa,CAAC,uDAAmBF;AACxG,IAAMG,aAAaL,aAAI,CAACM,IAAI,CAACP,WAAW,MAAM,OAAO,WAAW;AAEhE,SAASQ,IAAIC,QAAgB,EAAEC,QAAgB,EAAEC,QAAkB;IACjE,OAAOf,SAASU,YAAYG,UAAUC,UAAUC;AAClD;AAEA,8DAA8D;AAC9D,IAAMC,SAASrB,SAAS,KAAKiB,MAAMK,IAAAA,yBAAQ,EAAC,QAAQP,YAAY;IAAEQ,cAAc;AAAM;AAGvE,SAASxB,cAAcmB,QAAgB,EAAEC,QAAgB,EAAEC,QAAmB;IAC3F,IAAI,OAAOF,aAAa,UAAU,MAAM,IAAIM,MAAM;IAClD,IAAI,OAAOL,aAAa,UAAU,MAAM,IAAIK,MAAM;IAClD,IAAI,CAACJ,UAAUA,WAAWK,IAAAA,yBAAc,EAACxB,QAAQyB,GAAG;IACpD,OAAOL,OAAOH,UAAUC,UAAUC;AACpC"}
@@ -8,10 +8,11 @@ Object.defineProperty(exports, "default", {
8
8
  return transformTypes;
9
9
  }
10
10
  });
11
+ var _module = /*#__PURE__*/ _interop_require_default(require("module"));
12
+ var _nodeversioncall = require("node-version-call");
11
13
  var _path = /*#__PURE__*/ _interop_require_default(require("path"));
12
14
  var _readtsconfigsync = /*#__PURE__*/ _interop_require_default(require("read-tsconfig-sync"));
13
15
  var _url = /*#__PURE__*/ _interop_require_default(require("url"));
14
- var _module = /*#__PURE__*/ _interop_require_default(require("module"));
15
16
  function _define_property(obj, key, value) {
16
17
  if (key in obj) {
17
18
  Object.defineProperty(obj, key, {
@@ -46,37 +47,33 @@ function _object_spread(target) {
46
47
  return target;
47
48
  }
48
49
  var major = +process.versions.node.split('.')[0];
49
- var version = major < 14 ? 'stable' : 'local';
50
+ var _require = typeof require === 'undefined' ? _module.default.createRequire(require("url").pathToFileURL(__filename).toString()) : require;
50
51
  var __dirname = _path.default.dirname(typeof __filename === 'undefined' ? _url.default.fileURLToPath(require("url").pathToFileURL(__filename).toString()) : __filename);
51
52
  var workerPath = _path.default.join(__dirname, '..', 'cjs', 'workers', 'transformTypes.js');
52
- var _require = typeof require === 'undefined' ? _module.default.createRequire(require("url").pathToFileURL(__filename).toString()) : require;
53
- function dispatch(version, src, dest, options, callback) {
54
- if (version === 'local') return _require(workerPath)(src, dest, options, callback);
55
- try {
56
- callback(null, _require('node-version-call')({
57
- version: version,
58
- callbacks: true
59
- }, workerPath, src, dest, options));
60
- } catch (err) {
61
- callback(err);
62
- }
53
+ function run(src, dest, options, callback) {
54
+ return _require(workerPath)(src, dest, options, callback);
63
55
  }
56
+ // spawnOptions: false - no node/npm spawn (library call only)
57
+ var worker = major >= 20 ? run : (0, _nodeversioncall.bind)('>=20', workerPath, {
58
+ callbacks: true,
59
+ spawnOptions: false
60
+ });
64
61
  function transformTypes(src, dest, options, callback) {
65
62
  try {
66
63
  if (typeof src !== 'string') throw new Error('transformTypes: unexpected source');
67
64
  if (typeof dest !== 'string') throw new Error('transformTypes: unexpected destination directory');
68
65
  if (typeof options === 'function') {
69
66
  callback = options;
70
- options = null;
67
+ options = undefined;
71
68
  }
72
- options = options || {};
73
- var tsconfig = options.tsconfig ? options.tsconfig : (0, _readtsconfigsync.default)(src);
74
- options = _object_spread({
69
+ var baseOpts = options || {};
70
+ var tsconfig = baseOpts.tsconfig ? baseOpts.tsconfig : (0, _readtsconfigsync.default)(src);
71
+ var opts = _object_spread({
75
72
  tsconfig: tsconfig
76
- }, options);
77
- if (typeof callback === 'function') return dispatch(version, src, dest, options, callback);
73
+ }, baseOpts);
74
+ if (typeof callback === 'function') return worker(src, dest, opts, callback);
78
75
  return new Promise(function(resolve, reject) {
79
- return dispatch(version, src, dest, options, function(err, result) {
76
+ return worker(src, dest, opts, function(err, result) {
80
77
  return err ? reject(err) : resolve(result);
81
78
  });
82
79
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/transformTypes.ts"],"sourcesContent":["import path from 'path';\nimport loadConfigSync from 'read-tsconfig-sync';\nimport url from 'url';\n\nconst major = +process.versions.node.split('.')[0];\nconst version = major < 14 ? 'stable' : 'local';\nconst __dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);\nconst workerPath = path.join(__dirname, '..', 'cjs', 'workers', 'transformTypes.js');\n\nimport Module from 'module';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\nfunction dispatch(version, src, dest, options, callback) {\n if (version === 'local') return _require(workerPath)(src, dest, options, callback);\n try {\n callback(null, _require('node-version-call')({ version, callbacks: true }, workerPath, src, dest, options));\n } catch (err) {\n callback(err);\n }\n}\n\nimport type { ConfigOptions, TransformTypesCallback } from './types.ts';\n\nexport default function transformTypes(src: string, dest: string, callback: TransformTypesCallback): void;\nexport default function transformTypes(src: string, dest: string, options: ConfigOptions, callback: TransformTypesCallback): void;\nexport default function transformTypes(src: string, dest: string): Promise<string[]>;\nexport default function transformTypes(src: string, dest: string, options: ConfigOptions): Promise<string[]>;\nexport default function transformTypes(src: string, dest: string, options?: ConfigOptions | TransformTypesCallback, callback?: TransformTypesCallback): void | Promise<string[]> {\n try {\n if (typeof src !== 'string') throw new Error('transformTypes: unexpected source');\n if (typeof dest !== 'string') throw new Error('transformTypes: unexpected destination directory');\n\n if (typeof options === 'function') {\n callback = options as TransformTypesCallback;\n options = null;\n }\n options = (options || {}) as ConfigOptions;\n const tsconfig = options.tsconfig ? options.tsconfig : loadConfigSync(src);\n options = { tsconfig, ...options };\n\n if (typeof callback === 'function') return dispatch(version, src, dest, options, callback);\n return new Promise((resolve, reject) => dispatch(version, src, dest, options, (err, result) => (err ? reject(err) : resolve(result))));\n } catch (err) {\n if (callback) callback(err);\n else return Promise.reject(err);\n }\n}\n"],"names":["transformTypes","major","process","versions","node","split","version","__dirname","path","dirname","__filename","url","fileURLToPath","workerPath","join","_require","require","Module","createRequire","dispatch","src","dest","options","callback","callbacks","err","Error","tsconfig","loadConfigSync","Promise","resolve","reject","result"],"mappings":";;;;+BA4BA;;;eAAwBA;;;2DA5BP;uEACU;0DACX;6DAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AALnB,IAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;AAClD,IAAMC,UAAUL,QAAQ,KAAK,WAAW;AACxC,IAAMM,YAAYC,aAAI,CAACC,OAAO,CAAC,OAAOC,eAAe,cAAcC,YAAG,CAACC,aAAa,CAAC,uDAAmBF;AACxG,IAAMG,aAAaL,aAAI,CAACM,IAAI,CAACP,WAAW,MAAM,OAAO,WAAW;AAIhE,IAAMQ,WAAW,OAAOC,YAAY,cAAcC,eAAM,CAACC,aAAa,CAAC,uDAAmBF;AAE1F,SAASG,SAASb,OAAO,EAAEc,GAAG,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IACrD,IAAIjB,YAAY,SAAS,OAAOS,SAASF,YAAYO,KAAKC,MAAMC,SAASC;IACzE,IAAI;QACFA,SAAS,MAAMR,SAAS,qBAAqB;YAAET,SAAAA;YAASkB,WAAW;QAAK,GAAGX,YAAYO,KAAKC,MAAMC;IACpG,EAAE,OAAOG,KAAK;QACZF,SAASE;IACX;AACF;AAQe,SAASzB,eAAeoB,GAAW,EAAEC,IAAY,EAAEC,OAAgD,EAAEC,QAAiC;IACnJ,IAAI;QACF,IAAI,OAAOH,QAAQ,UAAU,MAAM,IAAIM,MAAM;QAC7C,IAAI,OAAOL,SAAS,UAAU,MAAM,IAAIK,MAAM;QAE9C,IAAI,OAAOJ,YAAY,YAAY;YACjCC,WAAWD;YACXA,UAAU;QACZ;QACAA,UAAWA,WAAW,CAAC;QACvB,IAAMK,WAAWL,QAAQK,QAAQ,GAAGL,QAAQK,QAAQ,GAAGC,IAAAA,yBAAc,EAACR;QACtEE,UAAU;YAAEK,UAAAA;WAAaL;QAEzB,IAAI,OAAOC,aAAa,YAAY,OAAOJ,SAASb,SAASc,KAAKC,MAAMC,SAASC;QACjF,OAAO,IAAIM,QAAQ,SAACC,SAASC;mBAAWZ,SAASb,SAASc,KAAKC,MAAMC,SAAS,SAACG,KAAKO;uBAAYP,MAAMM,OAAON,OAAOK,QAAQE;;;IAC9H,EAAE,OAAOP,KAAK;QACZ,IAAIF,UAAUA,SAASE;aAClB,OAAOI,QAAQE,MAAM,CAACN;IAC7B;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/transformTypes.ts"],"sourcesContent":["import Module from 'module';\nimport { bind } from 'node-version-call';\nimport path from 'path';\nimport loadConfigSync from 'read-tsconfig-sync';\nimport url from 'url';\n\nimport type { ConfigOptions, TransformTypesCallback } from './types.ts';\n\nconst major = +process.versions.node.split('.')[0];\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\nconst __dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);\nconst workerPath = path.join(__dirname, '..', 'cjs', 'workers', 'transformTypes.js');\n\nfunction run(src: string, dest: string, options: ConfigOptions, callback: TransformTypesCallback) {\n return _require(workerPath)(src, dest, options, callback);\n}\n\n// spawnOptions: false - no node/npm spawn (library call only)\nconst worker = major >= 20 ? run : bind('>=20', workerPath, { callbacks: true, spawnOptions: false });\n\nexport default function transformTypes(src: string, dest: string, callback: TransformTypesCallback): void;\nexport default function transformTypes(src: string, dest: string, options: ConfigOptions, callback: TransformTypesCallback): void;\nexport default function transformTypes(src: string, dest: string): Promise<string[]>;\nexport default function transformTypes(src: string, dest: string, options: ConfigOptions): Promise<string[]>;\nexport default function transformTypes(src: string, dest: string, options?: ConfigOptions | TransformTypesCallback, callback?: TransformTypesCallback): void | Promise<string[]> {\n try {\n if (typeof src !== 'string') throw new Error('transformTypes: unexpected source');\n if (typeof dest !== 'string') throw new Error('transformTypes: unexpected destination directory');\n\n if (typeof options === 'function') {\n callback = options;\n options = undefined;\n }\n const baseOpts = (options || {}) as ConfigOptions;\n const tsconfig = baseOpts.tsconfig ? baseOpts.tsconfig : loadConfigSync(src);\n const opts: ConfigOptions = { tsconfig, ...baseOpts };\n\n if (typeof callback === 'function') return worker(src, dest, opts, callback);\n return new Promise((resolve, reject) => worker(src, dest, opts, (err, result) => (err ? reject(err) : resolve(result))));\n } catch (err) {\n if (callback) callback(err);\n else return Promise.reject(err);\n }\n}\n"],"names":["transformTypes","major","process","versions","node","split","_require","require","Module","createRequire","__dirname","path","dirname","__filename","url","fileURLToPath","workerPath","join","run","src","dest","options","callback","worker","bind","callbacks","spawnOptions","Error","undefined","baseOpts","tsconfig","loadConfigSync","opts","Promise","resolve","reject","err","result"],"mappings":";;;;+BAwBA;;;eAAwBA;;;6DAxBL;+BACE;2DACJ;uEACU;0DACX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIhB,IAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;AAClD,IAAMC,WAAW,OAAOC,YAAY,cAAcC,eAAM,CAACC,aAAa,CAAC,uDAAmBF;AAC1F,IAAMG,YAAYC,aAAI,CAACC,OAAO,CAAC,OAAOC,eAAe,cAAcC,YAAG,CAACC,aAAa,CAAC,uDAAmBF;AACxG,IAAMG,aAAaL,aAAI,CAACM,IAAI,CAACP,WAAW,MAAM,OAAO,WAAW;AAEhE,SAASQ,IAAIC,GAAW,EAAEC,IAAY,EAAEC,OAAsB,EAAEC,QAAgC;IAC9F,OAAOhB,SAASU,YAAYG,KAAKC,MAAMC,SAASC;AAClD;AAEA,8DAA8D;AAC9D,IAAMC,SAAStB,SAAS,KAAKiB,MAAMM,IAAAA,qBAAI,EAAC,QAAQR,YAAY;IAAES,WAAW;IAAMC,cAAc;AAAM;AAMpF,SAAS1B,eAAemB,GAAW,EAAEC,IAAY,EAAEC,OAAgD,EAAEC,QAAiC;IACnJ,IAAI;QACF,IAAI,OAAOH,QAAQ,UAAU,MAAM,IAAIQ,MAAM;QAC7C,IAAI,OAAOP,SAAS,UAAU,MAAM,IAAIO,MAAM;QAE9C,IAAI,OAAON,YAAY,YAAY;YACjCC,WAAWD;YACXA,UAAUO;QACZ;QACA,IAAMC,WAAYR,WAAW,CAAC;QAC9B,IAAMS,WAAWD,SAASC,QAAQ,GAAGD,SAASC,QAAQ,GAAGC,IAAAA,yBAAc,EAACZ;QACxE,IAAMa,OAAsB;YAAEF,UAAAA;WAAaD;QAE3C,IAAI,OAAOP,aAAa,YAAY,OAAOC,OAAOJ,KAAKC,MAAMY,MAAMV;QACnE,OAAO,IAAIW,QAAQ,SAACC,SAASC;mBAAWZ,OAAOJ,KAAKC,MAAMY,MAAM,SAACI,KAAKC;uBAAYD,MAAMD,OAAOC,OAAOF,QAAQG;;;IAChH,EAAE,OAAOD,KAAK;QACZ,IAAId,UAAUA,SAASc;aAClB,OAAOH,QAAQE,MAAM,CAACC;IAC7B;AACF"}
@@ -1,3 +1,4 @@
1
+ var _resolve_default;
1
2
  /**
2
3
  * CJS resolver
3
4
  *
@@ -6,7 +7,6 @@
6
7
  *
7
8
  * Note: CJS does not support subpath imports (#prefix) - those are ESM-only.
8
9
  */ import * as resolve from 'resolve';
9
- var _resolve_default;
10
10
  const resolveSync = ((_resolve_default = resolve.default) !== null && _resolve_default !== void 0 ? _resolve_default : resolve).sync;
11
11
  /**
12
12
  * Resolve a CJS specifier to an absolute file path
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/resolveCJS.ts"],"sourcesContent":["/**\n * CJS resolver\n *\n * Uses the `resolve` npm package for CommonJS-style module resolution.\n * Handles main field, index.js, etc.\n *\n * Note: CJS does not support subpath imports (#prefix) - those are ESM-only.\n */\n\nimport * as resolve from 'resolve';\n\nconst resolveSync = (resolve.default ?? resolve).sync;\n\n/**\n * Resolve a CJS specifier to an absolute file path\n *\n * @param specifier - The require specifier (e.g., 'lodash', 'lodash/get')\n * @param basedir - The directory to resolve from\n * @returns The resolved absolute file path\n * @throws Error if module cannot be found\n */\nexport default function resolveCJS(specifier: string, basedir: string): string {\n return resolveSync(specifier, {\n basedir,\n extensions: ['.js', '.json', '.node', '.mjs'],\n });\n}\n"],"names":["resolve","resolveSync","default","sync","resolveCJS","specifier","basedir","extensions"],"mappings":"AAAA;;;;;;;CAOC,GAED,YAAYA,aAAa,UAAU;IAEdA;AAArB,MAAMC,cAAc,EAACD,mBAAAA,QAAQE,OAAO,cAAfF,8BAAAA,mBAAmBA,SAASG,IAAI;AAErD;;;;;;;CAOC,GACD,eAAe,SAASC,WAAWC,SAAiB,EAAEC,OAAe;IACnE,OAAOL,YAAYI,WAAW;QAC5BC;QACAC,YAAY;YAAC;YAAO;YAAS;YAAS;SAAO;IAC/C;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/resolveCJS.ts"],"sourcesContent":["/**\n * CJS resolver\n *\n * Uses the `resolve` npm package for CommonJS-style module resolution.\n * Handles main field, index.js, etc.\n *\n * Note: CJS does not support subpath imports (#prefix) - those are ESM-only.\n */\n\nimport * as resolve from 'resolve';\n\nconst resolveSync = (resolve.default ?? resolve).sync;\n\n/**\n * Resolve a CJS specifier to an absolute file path\n *\n * @param specifier - The require specifier (e.g., 'lodash', 'lodash/get')\n * @param basedir - The directory to resolve from\n * @returns The resolved absolute file path\n * @throws Error if module cannot be found\n */\nexport default function resolveCJS(specifier: string, basedir: string): string {\n return resolveSync(specifier, {\n basedir,\n extensions: ['.js', '.json', '.node', '.mjs'],\n });\n}\n"],"names":["resolve","resolveSync","default","sync","resolveCJS","specifier","basedir","extensions"],"mappings":"IAWqBA;AAXrB;;;;;;;CAOC,GAED,YAAYA,aAAa,UAAU;AAEnC,MAAMC,cAAc,EAACD,mBAAAA,QAAQE,OAAO,cAAfF,8BAAAA,mBAAmBA,SAASG,IAAI;AAErD;;;;;;;CAOC,GACD,eAAe,SAASC,WAAWC,SAAiB,EAAEC,OAAe;IACnE,OAAOL,YAAYI,WAAW;QAC5BC;QACAC,YAAY;YAAC;YAAO;YAAS;YAAS;SAAO;IAC/C;AACF"}
@@ -9,6 +9,7 @@
9
9
  * Only loaded on Node >= 12.2 where module.createRequire exists.
10
10
  */ import fs from 'fs';
11
11
  import Module from 'module';
12
+ import findRoot from 'module-root-sync';
12
13
  import path from 'path';
13
14
  let _resolveExports = null;
14
15
  function getResolveExports() {
@@ -63,31 +64,6 @@ function getResolveExports() {
63
64
  }
64
65
  return null;
65
66
  }
66
- /**
67
- * Find the containing package.json by walking up from a file path
68
- * Used for # subpath imports which are scoped to the containing package
69
- */ function findContainingPackage(filePath) {
70
- let dir = path.dirname(filePath);
71
- const root = path.parse(dir).root;
72
- while(dir !== root){
73
- const pkgJsonPath = path.join(dir, 'package.json');
74
- try {
75
- if (fs.existsSync(pkgJsonPath)) {
76
- const content = fs.readFileSync(pkgJsonPath, 'utf8');
77
- return {
78
- dir,
79
- json: JSON.parse(content)
80
- };
81
- }
82
- } catch (_) {
83
- // Ignore filesystem errors
84
- }
85
- const parent = path.dirname(dir);
86
- if (parent === dir) break;
87
- dir = parent;
88
- }
89
- return null;
90
- }
91
67
  /**
92
68
  * Resolve an ESM specifier to an absolute file path
93
69
  *
@@ -109,7 +85,19 @@ function getResolveExports() {
109
85
  let subpath;
110
86
  if (specifier.startsWith('#')) {
111
87
  // Subpath import - find containing package
112
- pkg = findContainingPackage(parentPath);
88
+ try {
89
+ const dir = findRoot(parentPath, {
90
+ includeSynthetic: true
91
+ });
92
+ const pkgJsonPath = path.join(dir, 'package.json');
93
+ const content = fs.readFileSync(pkgJsonPath, 'utf8');
94
+ pkg = {
95
+ dir,
96
+ json: JSON.parse(content)
97
+ };
98
+ } catch (_) {
99
+ pkg = null;
100
+ }
113
101
  subpath = specifier; // resolve.exports expects the full #specifier
114
102
  } else {
115
103
  // External package - find in node_modules
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/resolveESM.ts"],"sourcesContent":["/**\n * Unified ESM resolver\n *\n * Handles both:\n * - Package exports: import x from 'lodash' → uses exports field\n * - Subpath imports: import x from '#internal' → uses imports field\n *\n * Uses resolve.exports.resolve() which automatically detects the specifier type.\n * Only loaded on Node >= 12.2 where module.createRequire exists.\n */\n\nimport fs from 'fs';\nimport Module from 'module';\nimport path from 'path';\n\n// Lazy-load resolve.exports\ntype ResolveExportsModule = typeof import('resolve.exports');\nlet _resolveExports: ResolveExportsModule | null = null;\n\nfunction getResolveExports(): ResolveExportsModule | null {\n if (_resolveExports === null) {\n try {\n const _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n _resolveExports = _require('resolve.exports') as ResolveExportsModule;\n } catch (_) {\n _resolveExports = null;\n }\n }\n return _resolveExports;\n}\n\n/**\n * Parse a specifier into package name and subpath\n * \"lodash\" → { pkgName: \"lodash\", subpath: \".\" }\n * \"lodash/get\" → { pkgName: \"lodash\", subpath: \"./get\" }\n * \"@scope/pkg\" → { pkgName: \"@scope/pkg\", subpath: \".\" }\n * \"@scope/pkg/foo\" → { pkgName: \"@scope/pkg\", subpath: \"./foo\" }\n */\nfunction parseSpecifier(specifier: string): { pkgName: string; subpath: string } {\n const parts = specifier.split('/');\n const pkgName = specifier[0] === '@' ? parts.slice(0, 2).join('/') : parts[0];\n const remainder = specifier.slice(pkgName.length);\n const subpath = remainder ? `.${remainder}` : '.';\n return { pkgName, subpath };\n}\n\n/**\n * Find package.json in node_modules for external packages\n */\nfunction findPackageInNodeModules(pkgName: string, basedir: string): { dir: string; json: Record<string, unknown> } | null {\n let dir = basedir;\n const root = path.parse(dir).root;\n\n while (dir !== root) {\n const pkgDir = path.join(dir, 'node_modules', pkgName);\n const pkgJsonPath = path.join(pkgDir, 'package.json');\n try {\n if (fs.existsSync(pkgJsonPath)) {\n const content = fs.readFileSync(pkgJsonPath, 'utf8');\n return { dir: pkgDir, json: JSON.parse(content) };\n }\n } catch (_) {\n // Ignore filesystem errors\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n\n return null;\n}\n\n/**\n * Find the containing package.json by walking up from a file path\n * Used for # subpath imports which are scoped to the containing package\n */\nfunction findContainingPackage(filePath: string): { dir: string; json: Record<string, unknown> } | null {\n let dir = path.dirname(filePath);\n const root = path.parse(dir).root;\n\n while (dir !== root) {\n const pkgJsonPath = path.join(dir, 'package.json');\n try {\n if (fs.existsSync(pkgJsonPath)) {\n const content = fs.readFileSync(pkgJsonPath, 'utf8');\n return { dir, json: JSON.parse(content) };\n }\n } catch (_) {\n // Ignore filesystem errors\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n\n return null;\n}\n\n/**\n * Resolve an ESM specifier to an absolute file path\n *\n * @param specifier - The import specifier (e.g., 'lodash', 'lodash/get', '#internal')\n * @param parentPath - The file path of the importing module\n * @param conditions - Export conditions (defaults to ['node', 'import'])\n * @returns The resolved absolute file path, or null if not resolvable\n */\nexport default function resolveESM(specifier: string, parentPath: string, conditions: string[] = ['node', 'import']): string | null {\n const resolveExportsMod = getResolveExports();\n if (!resolveExportsMod) {\n return null;\n }\n\n const { resolve: resolveFn, legacy } = resolveExportsMod;\n\n // Determine how to find the package.json based on specifier type\n let pkg: { dir: string; json: Record<string, unknown> } | null;\n let subpath: string;\n\n if (specifier.startsWith('#')) {\n // Subpath import - find containing package\n pkg = findContainingPackage(parentPath);\n subpath = specifier; // resolve.exports expects the full #specifier\n } else {\n // External package - find in node_modules\n const { pkgName, subpath: parsedSubpath } = parseSpecifier(specifier);\n pkg = findPackageInNodeModules(pkgName, parentPath);\n subpath = parsedSubpath;\n }\n\n if (!pkg) {\n return null;\n }\n\n // Use resolve.exports.resolve() which handles both exports and imports\n try {\n const resolved = resolveFn(pkg.json, subpath, { conditions });\n if (resolved?.[0]) {\n return path.join(pkg.dir, resolved[0]);\n }\n } catch (_) {\n // Resolution failed, try legacy\n }\n\n // Try legacy main/module fields for non-# imports\n if (!specifier.startsWith('#')) {\n try {\n const legacyMain = legacy(pkg.json);\n if (legacyMain) {\n let mainPath: string | undefined;\n if (typeof legacyMain === 'string') {\n mainPath = legacyMain;\n } else if (Array.isArray(legacyMain)) {\n mainPath = legacyMain[0];\n }\n if (mainPath) {\n return path.join(pkg.dir, mainPath);\n }\n }\n } catch (_) {\n // Legacy parsing failed\n }\n\n // Last resort: try index.js\n const indexPath = path.join(pkg.dir, 'index.js');\n try {\n if (fs.existsSync(indexPath)) {\n return indexPath;\n }\n } catch (_) {\n // Ignore\n }\n }\n\n return null;\n}\n"],"names":["fs","Module","path","_resolveExports","getResolveExports","_require","require","createRequire","url","_","parseSpecifier","specifier","parts","split","pkgName","slice","join","remainder","length","subpath","findPackageInNodeModules","basedir","dir","root","parse","pkgDir","pkgJsonPath","existsSync","content","readFileSync","json","JSON","parent","dirname","findContainingPackage","filePath","resolveESM","parentPath","conditions","resolveExportsMod","resolve","resolveFn","legacy","pkg","startsWith","parsedSubpath","resolved","legacyMain","mainPath","Array","isArray","indexPath"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/resolveESM.ts"],"sourcesContent":["/**\n * Unified ESM resolver\n *\n * Handles both:\n * - Package exports: import x from 'lodash' → uses exports field\n * - Subpath imports: import x from '#internal' → uses imports field\n *\n * Uses resolve.exports.resolve() which automatically detects the specifier type.\n * Only loaded on Node >= 12.2 where module.createRequire exists.\n */\n\nimport fs from 'fs';\nimport Module from 'module';\nimport findRoot from 'module-root-sync';\nimport path from 'path';\n\n// Lazy-load resolve.exports\ntype ResolveExportsModule = typeof import('resolve.exports');\nlet _resolveExports: ResolveExportsModule | null = null;\n\nfunction getResolveExports(): ResolveExportsModule | null {\n if (_resolveExports === null) {\n try {\n const _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n _resolveExports = _require('resolve.exports') as ResolveExportsModule;\n } catch (_) {\n _resolveExports = null;\n }\n }\n return _resolveExports;\n}\n\n/**\n * Parse a specifier into package name and subpath\n * \"lodash\" → { pkgName: \"lodash\", subpath: \".\" }\n * \"lodash/get\" → { pkgName: \"lodash\", subpath: \"./get\" }\n * \"@scope/pkg\" → { pkgName: \"@scope/pkg\", subpath: \".\" }\n * \"@scope/pkg/foo\" → { pkgName: \"@scope/pkg\", subpath: \"./foo\" }\n */\nfunction parseSpecifier(specifier: string): { pkgName: string; subpath: string } {\n const parts = specifier.split('/');\n const pkgName = specifier[0] === '@' ? parts.slice(0, 2).join('/') : parts[0];\n const remainder = specifier.slice(pkgName.length);\n const subpath = remainder ? `.${remainder}` : '.';\n return { pkgName, subpath };\n}\n\n/**\n * Find package.json in node_modules for external packages\n */\nfunction findPackageInNodeModules(pkgName: string, basedir: string): { dir: string; json: Record<string, unknown> } | null {\n let dir = basedir;\n const root = path.parse(dir).root;\n\n while (dir !== root) {\n const pkgDir = path.join(dir, 'node_modules', pkgName);\n const pkgJsonPath = path.join(pkgDir, 'package.json');\n try {\n if (fs.existsSync(pkgJsonPath)) {\n const content = fs.readFileSync(pkgJsonPath, 'utf8');\n return { dir: pkgDir, json: JSON.parse(content) };\n }\n } catch (_) {\n // Ignore filesystem errors\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n\n return null;\n}\n\n/**\n * Resolve an ESM specifier to an absolute file path\n *\n * @param specifier - The import specifier (e.g., 'lodash', 'lodash/get', '#internal')\n * @param parentPath - The file path of the importing module\n * @param conditions - Export conditions (defaults to ['node', 'import'])\n * @returns The resolved absolute file path, or null if not resolvable\n */\nexport default function resolveESM(specifier: string, parentPath: string, conditions: string[] = ['node', 'import']): string | null {\n const resolveExportsMod = getResolveExports();\n if (!resolveExportsMod) {\n return null;\n }\n\n const { resolve: resolveFn, legacy } = resolveExportsMod;\n\n // Determine how to find the package.json based on specifier type\n let pkg: { dir: string; json: Record<string, unknown> } | null;\n let subpath: string;\n\n if (specifier.startsWith('#')) {\n // Subpath import - find containing package\n try {\n const dir = findRoot(parentPath, { includeSynthetic: true });\n const pkgJsonPath = path.join(dir, 'package.json');\n const content = fs.readFileSync(pkgJsonPath, 'utf8');\n pkg = { dir, json: JSON.parse(content) };\n } catch (_) {\n pkg = null;\n }\n subpath = specifier; // resolve.exports expects the full #specifier\n } else {\n // External package - find in node_modules\n const { pkgName, subpath: parsedSubpath } = parseSpecifier(specifier);\n pkg = findPackageInNodeModules(pkgName, parentPath);\n subpath = parsedSubpath;\n }\n\n if (!pkg) {\n return null;\n }\n\n // Use resolve.exports.resolve() which handles both exports and imports\n try {\n const resolved = resolveFn(pkg.json, subpath, { conditions });\n if (resolved?.[0]) {\n return path.join(pkg.dir, resolved[0]);\n }\n } catch (_) {\n // Resolution failed, try legacy\n }\n\n // Try legacy main/module fields for non-# imports\n if (!specifier.startsWith('#')) {\n try {\n const legacyMain = legacy(pkg.json);\n if (legacyMain) {\n let mainPath: string | undefined;\n if (typeof legacyMain === 'string') {\n mainPath = legacyMain;\n } else if (Array.isArray(legacyMain)) {\n mainPath = legacyMain[0];\n }\n if (mainPath) {\n return path.join(pkg.dir, mainPath);\n }\n }\n } catch (_) {\n // Legacy parsing failed\n }\n\n // Last resort: try index.js\n const indexPath = path.join(pkg.dir, 'index.js');\n try {\n if (fs.existsSync(indexPath)) {\n return indexPath;\n }\n } catch (_) {\n // Ignore\n }\n }\n\n return null;\n}\n"],"names":["fs","Module","findRoot","path","_resolveExports","getResolveExports","_require","require","createRequire","url","_","parseSpecifier","specifier","parts","split","pkgName","slice","join","remainder","length","subpath","findPackageInNodeModules","basedir","dir","root","parse","pkgDir","pkgJsonPath","existsSync","content","readFileSync","json","JSON","parent","dirname","resolveESM","parentPath","conditions","resolveExportsMod","resolve","resolveFn","legacy","pkg","startsWith","includeSynthetic","parsedSubpath","resolved","legacyMain","mainPath","Array","isArray","indexPath"],"mappings":"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"}
@@ -1,23 +1,20 @@
1
+ import Module from 'module';
2
+ import { bind } from 'node-version-call';
1
3
  import path from 'path';
2
4
  import loadConfigSync from 'read-tsconfig-sync';
3
5
  import url from 'url';
4
6
  const major = +process.versions.node.split('.')[0];
5
- const version = major < 14 ? 'stable' : 'local';
7
+ const _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;
6
8
  const __dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);
7
9
  const workerPath = path.join(__dirname, '..', 'cjs', 'workers', 'transformDirectory.js');
8
- import Module from 'module';
9
- const _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;
10
- function dispatch(version, src, dest, type, options, callback) {
11
- if (version === 'local') return _require(workerPath)(src, dest, type, options, callback);
12
- try {
13
- callback(null, _require('node-version-call')({
14
- version,
15
- callbacks: true
16
- }, workerPath, src, dest, type, options));
17
- } catch (err) {
18
- callback(err);
19
- }
10
+ function run(src, dest, type, options, callback) {
11
+ return _require(workerPath)(src, dest, type, options, callback);
20
12
  }
13
+ // spawnOptions: false - no node/npm spawn (library call only)
14
+ const worker = major >= 20 ? run : bind('>=20', workerPath, {
15
+ callbacks: true,
16
+ spawnOptions: false
17
+ });
21
18
  export default function transformDirectory(src, dest, type, options, callback) {
22
19
  try {
23
20
  if (typeof src !== 'string') throw new Error('transformDirectory: unexpected source');
@@ -25,16 +22,16 @@ export default function transformDirectory(src, dest, type, options, callback) {
25
22
  if (typeof type !== 'string') throw new Error('transformDirectory: unexpected type');
26
23
  if (typeof options === 'function') {
27
24
  callback = options;
28
- options = null;
25
+ options = undefined;
29
26
  }
30
- options = options || {};
31
- const tsconfig = options.tsconfig ? options.tsconfig : loadConfigSync(src);
32
- options = {
27
+ const baseOpts = options || {};
28
+ const tsconfig = baseOpts.tsconfig ? baseOpts.tsconfig : loadConfigSync(src);
29
+ const opts = {
33
30
  tsconfig,
34
- ...options
31
+ ...baseOpts
35
32
  };
36
- if (typeof callback === 'function') return dispatch(version, src, dest, type, options, callback);
37
- return new Promise((resolve, reject)=>dispatch(version, src, dest, type, options, (err, result)=>{
33
+ if (typeof callback === 'function') return worker(src, dest, type, opts, callback);
34
+ return new Promise((resolve, reject)=>worker(src, dest, type, opts, (err, result)=>{
38
35
  err ? reject(err) : resolve(result);
39
36
  }));
40
37
  } catch (err) {
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/transformDirectory.ts"],"sourcesContent":["import path from 'path';\nimport loadConfigSync from 'read-tsconfig-sync';\nimport url from 'url';\n\nconst major = +process.versions.node.split('.')[0];\nconst version = major < 14 ? 'stable' : 'local';\nconst __dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);\nconst workerPath = path.join(__dirname, '..', 'cjs', 'workers', 'transformDirectory.js');\n\nimport Module from 'module';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\nimport type { ConfigOptions, TargetType, TransformDirectoryCallback } from './types.ts';\n\nfunction dispatch(version: string, src: string, dest: string, type: TargetType, options: ConfigOptions, callback: TransformDirectoryCallback) {\n if (version === 'local') return _require(workerPath)(src, dest, type, options, callback);\n try {\n callback(null, _require('node-version-call')({ version, callbacks: true }, workerPath, src, dest, type, options));\n } catch (err) {\n callback(err);\n }\n}\n\nexport default function transformDirectory(src: string, dest: string, type: TargetType, callback: TransformDirectoryCallback): void;\nexport default function transformDirectory(src: string, dest: string, type: TargetType, options: ConfigOptions, callback: TransformDirectoryCallback): void;\nexport default function transformDirectory(src: string, dest: string, type: TargetType): Promise<string[]>;\nexport default function transformDirectory(src: string, dest: string, type: TargetType, options: ConfigOptions): Promise<string[]>;\nexport default function transformDirectory(src: string, dest: string, type: TargetType, options?: ConfigOptions | TransformDirectoryCallback, callback?: TransformDirectoryCallback): void | Promise<string[]> {\n try {\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 options === 'function') {\n callback = options as TransformDirectoryCallback;\n options = null;\n }\n options = (options || {}) as ConfigOptions;\n const tsconfig = options.tsconfig ? options.tsconfig : loadConfigSync(src);\n options = { tsconfig, ...options };\n\n if (typeof callback === 'function') return dispatch(version, src, dest, type, options, callback);\n return new Promise((resolve, reject) =>\n dispatch(version, src, dest, type, options as ConfigOptions, (err, result) => {\n err ? reject(err) : resolve(result);\n })\n );\n } catch (err) {\n if (callback) callback(err);\n else return Promise.reject(err);\n }\n}\n"],"names":["path","loadConfigSync","url","major","process","versions","node","split","version","__dirname","dirname","__filename","fileURLToPath","workerPath","join","Module","_require","require","createRequire","dispatch","src","dest","type","options","callback","callbacks","err","transformDirectory","Error","tsconfig","Promise","resolve","reject","result"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,oBAAoB,qBAAqB;AAChD,OAAOC,SAAS,MAAM;AAEtB,MAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;AAClD,MAAMC,UAAUL,QAAQ,KAAK,WAAW;AACxC,MAAMM,YAAYT,KAAKU,OAAO,CAAC,OAAOC,eAAe,cAAcT,IAAIU,aAAa,CAAC,YAAYV,GAAG,IAAIS;AACxG,MAAME,aAAab,KAAKc,IAAI,CAACL,WAAW,MAAM,OAAO,WAAW;AAEhE,OAAOM,YAAY,SAAS;AAE5B,MAAMC,WAAW,OAAOC,YAAY,cAAcF,OAAOG,aAAa,CAAC,YAAYhB,GAAG,IAAIe;AAI1F,SAASE,SAASX,OAAe,EAAEY,GAAW,EAAEC,IAAY,EAAEC,IAAgB,EAAEC,OAAsB,EAAEC,QAAoC;IAC1I,IAAIhB,YAAY,SAAS,OAAOQ,SAASH,YAAYO,KAAKC,MAAMC,MAAMC,SAASC;IAC/E,IAAI;QACFA,SAAS,MAAMR,SAAS,qBAAqB;YAAER;YAASiB,WAAW;QAAK,GAAGZ,YAAYO,KAAKC,MAAMC,MAAMC;IAC1G,EAAE,OAAOG,KAAK;QACZF,SAASE;IACX;AACF;AAMA,eAAe,SAASC,mBAAmBP,GAAW,EAAEC,IAAY,EAAEC,IAAgB,EAAEC,OAAoD,EAAEC,QAAqC;IACjL,IAAI;QACF,IAAI,OAAOJ,QAAQ,UAAU,MAAM,IAAIQ,MAAM;QAC7C,IAAI,OAAOP,SAAS,UAAU,MAAM,IAAIO,MAAM;QAC9C,IAAI,OAAON,SAAS,UAAU,MAAM,IAAIM,MAAM;QAE9C,IAAI,OAAOL,YAAY,YAAY;YACjCC,WAAWD;YACXA,UAAU;QACZ;QACAA,UAAWA,WAAW,CAAC;QACvB,MAAMM,WAAWN,QAAQM,QAAQ,GAAGN,QAAQM,QAAQ,GAAG5B,eAAemB;QACtEG,UAAU;YAAEM;YAAU,GAAGN,OAAO;QAAC;QAEjC,IAAI,OAAOC,aAAa,YAAY,OAAOL,SAASX,SAASY,KAAKC,MAAMC,MAAMC,SAASC;QACvF,OAAO,IAAIM,QAAQ,CAACC,SAASC,SAC3Bb,SAASX,SAASY,KAAKC,MAAMC,MAAMC,SAA0B,CAACG,KAAKO;gBACjEP,MAAMM,OAAON,OAAOK,QAAQE;YAC9B;IAEJ,EAAE,OAAOP,KAAK;QACZ,IAAIF,UAAUA,SAASE;aAClB,OAAOI,QAAQE,MAAM,CAACN;IAC7B;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/transformDirectory.ts"],"sourcesContent":["import Module from 'module';\nimport { bind } from 'node-version-call';\nimport path from 'path';\nimport loadConfigSync from 'read-tsconfig-sync';\nimport url from 'url';\n\nimport type { ConfigOptions, TargetType, TransformDirectoryCallback } from './types.ts';\n\nconst major = +process.versions.node.split('.')[0];\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\nconst __dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);\nconst workerPath = path.join(__dirname, '..', 'cjs', 'workers', 'transformDirectory.js');\n\nfunction run(src: string, dest: string, type: TargetType, options: ConfigOptions, callback: TransformDirectoryCallback) {\n return _require(workerPath)(src, dest, type, options, callback);\n}\n\n// spawnOptions: false - no node/npm spawn (library call only)\nconst worker = major >= 20 ? run : bind('>=20', workerPath, { callbacks: true, spawnOptions: false });\n\nexport default function transformDirectory(src: string, dest: string, type: TargetType, callback: TransformDirectoryCallback): void;\nexport default function transformDirectory(src: string, dest: string, type: TargetType, options: ConfigOptions, callback: TransformDirectoryCallback): void;\nexport default function transformDirectory(src: string, dest: string, type: TargetType): Promise<string[]>;\nexport default function transformDirectory(src: string, dest: string, type: TargetType, options: ConfigOptions): Promise<string[]>;\nexport default function transformDirectory(src: string, dest: string, type: TargetType, options?: ConfigOptions | TransformDirectoryCallback, callback?: TransformDirectoryCallback): void | Promise<string[]> {\n try {\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 options === 'function') {\n callback = options;\n options = undefined;\n }\n const baseOpts = (options || {}) as ConfigOptions;\n const tsconfig = baseOpts.tsconfig ? baseOpts.tsconfig : loadConfigSync(src);\n const opts: ConfigOptions = { tsconfig, ...baseOpts };\n\n if (typeof callback === 'function') return worker(src, dest, type, opts, callback);\n return new Promise((resolve, reject) =>\n worker(src, dest, type, opts, (err, result) => {\n err ? reject(err) : resolve(result);\n })\n );\n } catch (err) {\n if (callback) callback(err);\n else return Promise.reject(err);\n }\n}\n"],"names":["Module","bind","path","loadConfigSync","url","major","process","versions","node","split","_require","require","createRequire","__dirname","dirname","__filename","fileURLToPath","workerPath","join","run","src","dest","type","options","callback","worker","callbacks","spawnOptions","transformDirectory","Error","undefined","baseOpts","tsconfig","opts","Promise","resolve","reject","err","result"],"mappings":"AAAA,OAAOA,YAAY,SAAS;AAC5B,SAASC,IAAI,QAAQ,oBAAoB;AACzC,OAAOC,UAAU,OAAO;AACxB,OAAOC,oBAAoB,qBAAqB;AAChD,OAAOC,SAAS,MAAM;AAItB,MAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;AAClD,MAAMC,WAAW,OAAOC,YAAY,cAAcX,OAAOY,aAAa,CAAC,YAAYR,GAAG,IAAIO;AAC1F,MAAME,YAAYX,KAAKY,OAAO,CAAC,OAAOC,eAAe,cAAcX,IAAIY,aAAa,CAAC,YAAYZ,GAAG,IAAIW;AACxG,MAAME,aAAaf,KAAKgB,IAAI,CAACL,WAAW,MAAM,OAAO,WAAW;AAEhE,SAASM,IAAIC,GAAW,EAAEC,IAAY,EAAEC,IAAgB,EAAEC,OAAsB,EAAEC,QAAoC;IACpH,OAAOd,SAASO,YAAYG,KAAKC,MAAMC,MAAMC,SAASC;AACxD;AAEA,8DAA8D;AAC9D,MAAMC,SAASpB,SAAS,KAAKc,MAAMlB,KAAK,QAAQgB,YAAY;IAAES,WAAW;IAAMC,cAAc;AAAM;AAMnG,eAAe,SAASC,mBAAmBR,GAAW,EAAEC,IAAY,EAAEC,IAAgB,EAAEC,OAAoD,EAAEC,QAAqC;IACjL,IAAI;QACF,IAAI,OAAOJ,QAAQ,UAAU,MAAM,IAAIS,MAAM;QAC7C,IAAI,OAAOR,SAAS,UAAU,MAAM,IAAIQ,MAAM;QAC9C,IAAI,OAAOP,SAAS,UAAU,MAAM,IAAIO,MAAM;QAE9C,IAAI,OAAON,YAAY,YAAY;YACjCC,WAAWD;YACXA,UAAUO;QACZ;QACA,MAAMC,WAAYR,WAAW,CAAC;QAC9B,MAAMS,WAAWD,SAASC,QAAQ,GAAGD,SAASC,QAAQ,GAAG7B,eAAeiB;QACxE,MAAMa,OAAsB;YAAED;YAAU,GAAGD,QAAQ;QAAC;QAEpD,IAAI,OAAOP,aAAa,YAAY,OAAOC,OAAOL,KAAKC,MAAMC,MAAMW,MAAMT;QACzE,OAAO,IAAIU,QAAQ,CAACC,SAASC,SAC3BX,OAAOL,KAAKC,MAAMC,MAAMW,MAAM,CAACI,KAAKC;gBAClCD,MAAMD,OAAOC,OAAOF,QAAQG;YAC9B;IAEJ,EAAE,OAAOD,KAAK;QACZ,IAAIb,UAAUA,SAASa;aAClB,OAAOH,QAAQE,MAAM,CAACC;IAC7B;AACF"}
@@ -1,19 +1,22 @@
1
+ import Module from 'module';
2
+ import { bindSync } from 'node-version-call';
1
3
  import path from 'path';
2
4
  import loadConfigSync from 'read-tsconfig-sync';
3
5
  import url from 'url';
4
6
  const major = +process.versions.node.split('.')[0];
5
- const version = major < 14 ? 'stable' : 'local';
7
+ const _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;
6
8
  const __dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);
7
9
  const workerPath = path.join(__dirname, '..', 'cjs', 'workers', 'transformSync.js');
8
- import Module from 'module';
9
- const _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;
10
- function dispatch(version, contents, fileName, tsconfig) {
11
- if (version === 'local') return _require(workerPath)(contents, fileName, tsconfig);
12
- return _require('node-version-call')(version, workerPath, contents, fileName, tsconfig);
10
+ function run(contents, fileName, tsconfig) {
11
+ return _require(workerPath)(contents, fileName, tsconfig);
13
12
  }
13
+ // spawnOptions: false - no node/npm spawn (library call only)
14
+ const worker = major >= 20 ? run : bindSync('>=20', workerPath, {
15
+ spawnOptions: false
16
+ });
14
17
  export default function transformSync(contents, fileName, tsconfig) {
15
18
  if (typeof contents !== 'string') throw new Error('transformSync: unexpected contents');
16
19
  if (typeof fileName !== 'string') throw new Error('transformSync: unexpected fileName');
17
20
  if (!tsconfig) tsconfig = loadConfigSync(process.cwd());
18
- return dispatch(version, contents, fileName, tsconfig);
21
+ return worker(contents, fileName, tsconfig);
19
22
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/transformSync.ts"],"sourcesContent":["import path from 'path';\nimport loadConfigSync from 'read-tsconfig-sync';\nimport url from 'url';\n\nimport type { TSConfig } from './types.ts';\n\nconst major = +process.versions.node.split('.')[0];\nconst version = major < 14 ? 'stable' : 'local';\nconst __dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);\nconst workerPath = path.join(__dirname, '..', 'cjs', 'workers', 'transformSync.js');\n\nimport Module from 'module';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\nfunction dispatch(version, contents, fileName, tsconfig) {\n if (version === 'local') return _require(workerPath)(contents, fileName, tsconfig);\n return _require('node-version-call')(version, workerPath, contents, fileName, tsconfig);\n}\n\nimport type { Output } from '@swc/core';\nexport default function transformSync(contents: string, fileName: string, tsconfig?: TSConfig): Output {\n if (typeof contents !== 'string') throw new Error('transformSync: unexpected contents');\n if (typeof fileName !== 'string') throw new Error('transformSync: unexpected fileName');\n if (!tsconfig) tsconfig = loadConfigSync(process.cwd());\n return dispatch(version, contents, fileName, tsconfig);\n}\n"],"names":["path","loadConfigSync","url","major","process","versions","node","split","version","__dirname","dirname","__filename","fileURLToPath","workerPath","join","Module","_require","require","createRequire","dispatch","contents","fileName","tsconfig","transformSync","Error","cwd"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,oBAAoB,qBAAqB;AAChD,OAAOC,SAAS,MAAM;AAItB,MAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;AAClD,MAAMC,UAAUL,QAAQ,KAAK,WAAW;AACxC,MAAMM,YAAYT,KAAKU,OAAO,CAAC,OAAOC,eAAe,cAAcT,IAAIU,aAAa,CAAC,YAAYV,GAAG,IAAIS;AACxG,MAAME,aAAab,KAAKc,IAAI,CAACL,WAAW,MAAM,OAAO,WAAW;AAEhE,OAAOM,YAAY,SAAS;AAE5B,MAAMC,WAAW,OAAOC,YAAY,cAAcF,OAAOG,aAAa,CAAC,YAAYhB,GAAG,IAAIe;AAE1F,SAASE,SAASX,OAAO,EAAEY,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ;IACrD,IAAId,YAAY,SAAS,OAAOQ,SAASH,YAAYO,UAAUC,UAAUC;IACzE,OAAON,SAAS,qBAAqBR,SAASK,YAAYO,UAAUC,UAAUC;AAChF;AAGA,eAAe,SAASC,cAAcH,QAAgB,EAAEC,QAAgB,EAAEC,QAAmB;IAC3F,IAAI,OAAOF,aAAa,UAAU,MAAM,IAAII,MAAM;IAClD,IAAI,OAAOH,aAAa,UAAU,MAAM,IAAIG,MAAM;IAClD,IAAI,CAACF,UAAUA,WAAWrB,eAAeG,QAAQqB,GAAG;IACpD,OAAON,SAASX,SAASY,UAAUC,UAAUC;AAC/C"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/transformSync.ts"],"sourcesContent":["import Module from 'module';\nimport { bindSync } from 'node-version-call';\nimport path from 'path';\nimport loadConfigSync from 'read-tsconfig-sync';\nimport url from 'url';\n\nimport type { TSConfig } from './types.ts';\n\nconst major = +process.versions.node.split('.')[0];\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\nconst __dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);\nconst workerPath = path.join(__dirname, '..', 'cjs', 'workers', 'transformSync.js');\n\nfunction run(contents: string, fileName: string, tsconfig: TSConfig) {\n return _require(workerPath)(contents, fileName, tsconfig);\n}\n\n// spawnOptions: false - no node/npm spawn (library call only)\nconst worker = major >= 20 ? run : bindSync('>=20', workerPath, { spawnOptions: false });\n\nimport type { Output } from '@swc/core';\nexport default function transformSync(contents: string, fileName: string, tsconfig?: TSConfig): Output {\n if (typeof contents !== 'string') throw new Error('transformSync: unexpected contents');\n if (typeof fileName !== 'string') throw new Error('transformSync: unexpected fileName');\n if (!tsconfig) tsconfig = loadConfigSync(process.cwd());\n return worker(contents, fileName, tsconfig) as Output;\n}\n"],"names":["Module","bindSync","path","loadConfigSync","url","major","process","versions","node","split","_require","require","createRequire","__dirname","dirname","__filename","fileURLToPath","workerPath","join","run","contents","fileName","tsconfig","worker","spawnOptions","transformSync","Error","cwd"],"mappings":"AAAA,OAAOA,YAAY,SAAS;AAC5B,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,OAAOC,UAAU,OAAO;AACxB,OAAOC,oBAAoB,qBAAqB;AAChD,OAAOC,SAAS,MAAM;AAItB,MAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;AAClD,MAAMC,WAAW,OAAOC,YAAY,cAAcX,OAAOY,aAAa,CAAC,YAAYR,GAAG,IAAIO;AAC1F,MAAME,YAAYX,KAAKY,OAAO,CAAC,OAAOC,eAAe,cAAcX,IAAIY,aAAa,CAAC,YAAYZ,GAAG,IAAIW;AACxG,MAAME,aAAaf,KAAKgB,IAAI,CAACL,WAAW,MAAM,OAAO,WAAW;AAEhE,SAASM,IAAIC,QAAgB,EAAEC,QAAgB,EAAEC,QAAkB;IACjE,OAAOZ,SAASO,YAAYG,UAAUC,UAAUC;AAClD;AAEA,8DAA8D;AAC9D,MAAMC,SAASlB,SAAS,KAAKc,MAAMlB,SAAS,QAAQgB,YAAY;IAAEO,cAAc;AAAM;AAGtF,eAAe,SAASC,cAAcL,QAAgB,EAAEC,QAAgB,EAAEC,QAAmB;IAC3F,IAAI,OAAOF,aAAa,UAAU,MAAM,IAAIM,MAAM;IAClD,IAAI,OAAOL,aAAa,UAAU,MAAM,IAAIK,MAAM;IAClD,IAAI,CAACJ,UAAUA,WAAWnB,eAAeG,QAAQqB,GAAG;IACpD,OAAOJ,OAAOH,UAAUC,UAAUC;AACpC"}
@@ -1,39 +1,36 @@
1
+ import Module from 'module';
2
+ import { bind } from 'node-version-call';
1
3
  import path from 'path';
2
4
  import loadConfigSync from 'read-tsconfig-sync';
3
5
  import url from 'url';
4
6
  const major = +process.versions.node.split('.')[0];
5
- const version = major < 14 ? 'stable' : 'local';
7
+ const _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;
6
8
  const __dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);
7
9
  const workerPath = path.join(__dirname, '..', 'cjs', 'workers', 'transformTypes.js');
8
- import Module from 'module';
9
- const _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;
10
- function dispatch(version, src, dest, options, callback) {
11
- if (version === 'local') return _require(workerPath)(src, dest, options, callback);
12
- try {
13
- callback(null, _require('node-version-call')({
14
- version,
15
- callbacks: true
16
- }, workerPath, src, dest, options));
17
- } catch (err) {
18
- callback(err);
19
- }
10
+ function run(src, dest, options, callback) {
11
+ return _require(workerPath)(src, dest, options, callback);
20
12
  }
13
+ // spawnOptions: false - no node/npm spawn (library call only)
14
+ const worker = major >= 20 ? run : bind('>=20', workerPath, {
15
+ callbacks: true,
16
+ spawnOptions: false
17
+ });
21
18
  export default function transformTypes(src, dest, options, callback) {
22
19
  try {
23
20
  if (typeof src !== 'string') throw new Error('transformTypes: unexpected source');
24
21
  if (typeof dest !== 'string') throw new Error('transformTypes: unexpected destination directory');
25
22
  if (typeof options === 'function') {
26
23
  callback = options;
27
- options = null;
24
+ options = undefined;
28
25
  }
29
- options = options || {};
30
- const tsconfig = options.tsconfig ? options.tsconfig : loadConfigSync(src);
31
- options = {
26
+ const baseOpts = options || {};
27
+ const tsconfig = baseOpts.tsconfig ? baseOpts.tsconfig : loadConfigSync(src);
28
+ const opts = {
32
29
  tsconfig,
33
- ...options
30
+ ...baseOpts
34
31
  };
35
- if (typeof callback === 'function') return dispatch(version, src, dest, options, callback);
36
- return new Promise((resolve, reject)=>dispatch(version, src, dest, options, (err, result)=>err ? reject(err) : resolve(result)));
32
+ if (typeof callback === 'function') return worker(src, dest, opts, callback);
33
+ return new Promise((resolve, reject)=>worker(src, dest, opts, (err, result)=>err ? reject(err) : resolve(result)));
37
34
  } catch (err) {
38
35
  if (callback) callback(err);
39
36
  else return Promise.reject(err);
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/transformTypes.ts"],"sourcesContent":["import path from 'path';\nimport loadConfigSync from 'read-tsconfig-sync';\nimport url from 'url';\n\nconst major = +process.versions.node.split('.')[0];\nconst version = major < 14 ? 'stable' : 'local';\nconst __dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);\nconst workerPath = path.join(__dirname, '..', 'cjs', 'workers', 'transformTypes.js');\n\nimport Module from 'module';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\nfunction dispatch(version, src, dest, options, callback) {\n if (version === 'local') return _require(workerPath)(src, dest, options, callback);\n try {\n callback(null, _require('node-version-call')({ version, callbacks: true }, workerPath, src, dest, options));\n } catch (err) {\n callback(err);\n }\n}\n\nimport type { ConfigOptions, TransformTypesCallback } from './types.ts';\n\nexport default function transformTypes(src: string, dest: string, callback: TransformTypesCallback): void;\nexport default function transformTypes(src: string, dest: string, options: ConfigOptions, callback: TransformTypesCallback): void;\nexport default function transformTypes(src: string, dest: string): Promise<string[]>;\nexport default function transformTypes(src: string, dest: string, options: ConfigOptions): Promise<string[]>;\nexport default function transformTypes(src: string, dest: string, options?: ConfigOptions | TransformTypesCallback, callback?: TransformTypesCallback): void | Promise<string[]> {\n try {\n if (typeof src !== 'string') throw new Error('transformTypes: unexpected source');\n if (typeof dest !== 'string') throw new Error('transformTypes: unexpected destination directory');\n\n if (typeof options === 'function') {\n callback = options as TransformTypesCallback;\n options = null;\n }\n options = (options || {}) as ConfigOptions;\n const tsconfig = options.tsconfig ? options.tsconfig : loadConfigSync(src);\n options = { tsconfig, ...options };\n\n if (typeof callback === 'function') return dispatch(version, src, dest, options, callback);\n return new Promise((resolve, reject) => dispatch(version, src, dest, options, (err, result) => (err ? reject(err) : resolve(result))));\n } catch (err) {\n if (callback) callback(err);\n else return Promise.reject(err);\n }\n}\n"],"names":["path","loadConfigSync","url","major","process","versions","node","split","version","__dirname","dirname","__filename","fileURLToPath","workerPath","join","Module","_require","require","createRequire","dispatch","src","dest","options","callback","callbacks","err","transformTypes","Error","tsconfig","Promise","resolve","reject","result"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,oBAAoB,qBAAqB;AAChD,OAAOC,SAAS,MAAM;AAEtB,MAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;AAClD,MAAMC,UAAUL,QAAQ,KAAK,WAAW;AACxC,MAAMM,YAAYT,KAAKU,OAAO,CAAC,OAAOC,eAAe,cAAcT,IAAIU,aAAa,CAAC,YAAYV,GAAG,IAAIS;AACxG,MAAME,aAAab,KAAKc,IAAI,CAACL,WAAW,MAAM,OAAO,WAAW;AAEhE,OAAOM,YAAY,SAAS;AAE5B,MAAMC,WAAW,OAAOC,YAAY,cAAcF,OAAOG,aAAa,CAAC,YAAYhB,GAAG,IAAIe;AAE1F,SAASE,SAASX,OAAO,EAAEY,GAAG,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IACrD,IAAIf,YAAY,SAAS,OAAOQ,SAASH,YAAYO,KAAKC,MAAMC,SAASC;IACzE,IAAI;QACFA,SAAS,MAAMP,SAAS,qBAAqB;YAAER;YAASgB,WAAW;QAAK,GAAGX,YAAYO,KAAKC,MAAMC;IACpG,EAAE,OAAOG,KAAK;QACZF,SAASE;IACX;AACF;AAQA,eAAe,SAASC,eAAeN,GAAW,EAAEC,IAAY,EAAEC,OAAgD,EAAEC,QAAiC;IACnJ,IAAI;QACF,IAAI,OAAOH,QAAQ,UAAU,MAAM,IAAIO,MAAM;QAC7C,IAAI,OAAON,SAAS,UAAU,MAAM,IAAIM,MAAM;QAE9C,IAAI,OAAOL,YAAY,YAAY;YACjCC,WAAWD;YACXA,UAAU;QACZ;QACAA,UAAWA,WAAW,CAAC;QACvB,MAAMM,WAAWN,QAAQM,QAAQ,GAAGN,QAAQM,QAAQ,GAAG3B,eAAemB;QACtEE,UAAU;YAAEM;YAAU,GAAGN,OAAO;QAAC;QAEjC,IAAI,OAAOC,aAAa,YAAY,OAAOJ,SAASX,SAASY,KAAKC,MAAMC,SAASC;QACjF,OAAO,IAAIM,QAAQ,CAACC,SAASC,SAAWZ,SAASX,SAASY,KAAKC,MAAMC,SAAS,CAACG,KAAKO,SAAYP,MAAMM,OAAON,OAAOK,QAAQE;IAC9H,EAAE,OAAOP,KAAK;QACZ,IAAIF,UAAUA,SAASE;aAClB,OAAOI,QAAQE,MAAM,CAACN;IAC7B;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/transformTypes.ts"],"sourcesContent":["import Module from 'module';\nimport { bind } from 'node-version-call';\nimport path from 'path';\nimport loadConfigSync from 'read-tsconfig-sync';\nimport url from 'url';\n\nimport type { ConfigOptions, TransformTypesCallback } from './types.ts';\n\nconst major = +process.versions.node.split('.')[0];\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\nconst __dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);\nconst workerPath = path.join(__dirname, '..', 'cjs', 'workers', 'transformTypes.js');\n\nfunction run(src: string, dest: string, options: ConfigOptions, callback: TransformTypesCallback) {\n return _require(workerPath)(src, dest, options, callback);\n}\n\n// spawnOptions: false - no node/npm spawn (library call only)\nconst worker = major >= 20 ? run : bind('>=20', workerPath, { callbacks: true, spawnOptions: false });\n\nexport default function transformTypes(src: string, dest: string, callback: TransformTypesCallback): void;\nexport default function transformTypes(src: string, dest: string, options: ConfigOptions, callback: TransformTypesCallback): void;\nexport default function transformTypes(src: string, dest: string): Promise<string[]>;\nexport default function transformTypes(src: string, dest: string, options: ConfigOptions): Promise<string[]>;\nexport default function transformTypes(src: string, dest: string, options?: ConfigOptions | TransformTypesCallback, callback?: TransformTypesCallback): void | Promise<string[]> {\n try {\n if (typeof src !== 'string') throw new Error('transformTypes: unexpected source');\n if (typeof dest !== 'string') throw new Error('transformTypes: unexpected destination directory');\n\n if (typeof options === 'function') {\n callback = options;\n options = undefined;\n }\n const baseOpts = (options || {}) as ConfigOptions;\n const tsconfig = baseOpts.tsconfig ? baseOpts.tsconfig : loadConfigSync(src);\n const opts: ConfigOptions = { tsconfig, ...baseOpts };\n\n if (typeof callback === 'function') return worker(src, dest, opts, callback);\n return new Promise((resolve, reject) => worker(src, dest, opts, (err, result) => (err ? reject(err) : resolve(result))));\n } catch (err) {\n if (callback) callback(err);\n else return Promise.reject(err);\n }\n}\n"],"names":["Module","bind","path","loadConfigSync","url","major","process","versions","node","split","_require","require","createRequire","__dirname","dirname","__filename","fileURLToPath","workerPath","join","run","src","dest","options","callback","worker","callbacks","spawnOptions","transformTypes","Error","undefined","baseOpts","tsconfig","opts","Promise","resolve","reject","err","result"],"mappings":"AAAA,OAAOA,YAAY,SAAS;AAC5B,SAASC,IAAI,QAAQ,oBAAoB;AACzC,OAAOC,UAAU,OAAO;AACxB,OAAOC,oBAAoB,qBAAqB;AAChD,OAAOC,SAAS,MAAM;AAItB,MAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;AAClD,MAAMC,WAAW,OAAOC,YAAY,cAAcX,OAAOY,aAAa,CAAC,YAAYR,GAAG,IAAIO;AAC1F,MAAME,YAAYX,KAAKY,OAAO,CAAC,OAAOC,eAAe,cAAcX,IAAIY,aAAa,CAAC,YAAYZ,GAAG,IAAIW;AACxG,MAAME,aAAaf,KAAKgB,IAAI,CAACL,WAAW,MAAM,OAAO,WAAW;AAEhE,SAASM,IAAIC,GAAW,EAAEC,IAAY,EAAEC,OAAsB,EAAEC,QAAgC;IAC9F,OAAOb,SAASO,YAAYG,KAAKC,MAAMC,SAASC;AAClD;AAEA,8DAA8D;AAC9D,MAAMC,SAASnB,SAAS,KAAKc,MAAMlB,KAAK,QAAQgB,YAAY;IAAEQ,WAAW;IAAMC,cAAc;AAAM;AAMnG,eAAe,SAASC,eAAeP,GAAW,EAAEC,IAAY,EAAEC,OAAgD,EAAEC,QAAiC;IACnJ,IAAI;QACF,IAAI,OAAOH,QAAQ,UAAU,MAAM,IAAIQ,MAAM;QAC7C,IAAI,OAAOP,SAAS,UAAU,MAAM,IAAIO,MAAM;QAE9C,IAAI,OAAON,YAAY,YAAY;YACjCC,WAAWD;YACXA,UAAUO;QACZ;QACA,MAAMC,WAAYR,WAAW,CAAC;QAC9B,MAAMS,WAAWD,SAASC,QAAQ,GAAGD,SAASC,QAAQ,GAAG5B,eAAeiB;QACxE,MAAMY,OAAsB;YAAED;YAAU,GAAGD,QAAQ;QAAC;QAEpD,IAAI,OAAOP,aAAa,YAAY,OAAOC,OAAOJ,KAAKC,MAAMW,MAAMT;QACnE,OAAO,IAAIU,QAAQ,CAACC,SAASC,SAAWX,OAAOJ,KAAKC,MAAMW,MAAM,CAACI,KAAKC,SAAYD,MAAMD,OAAOC,OAAOF,QAAQG;IAChH,EAAE,OAAOD,KAAK;QACZ,IAAIb,UAAUA,SAASa;aAClB,OAAOH,QAAQE,MAAM,CAACC;IAC7B;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-swc-transform",
3
- "version": "2.9.0",
3
+ "version": "2.10.1",
4
4
  "description": "Typescript transformers for swc. Supports Node >= 0.8",
5
5
  "keywords": [
6
6
  "matcher",
@@ -52,12 +52,13 @@
52
52
  "is-absolute": "^1.0.0",
53
53
  "lodash.debounce": "^4.0.8",
54
54
  "mkdirp-classic": "^0.5.2",
55
- "node-version-call": "^1.9.19",
55
+ "module-root-sync": "^2.0.2",
56
+ "node-version-call": "^3.0.0",
56
57
  "queue-cb": "^1.0.0",
57
- "read-tsconfig-sync": "^1.0.3",
58
+ "read-tsconfig-sync": "^1.1.0",
58
59
  "resolve": "^1.3.1",
59
60
  "resolve.exports": "^2.0.3",
60
- "test-match": "^1.1.4",
61
+ "test-match": "^1.0.0",
61
62
  "ts-node": "^10.9.0",
62
63
  "typescript": "^5.9.3"
63
64
  },
@@ -65,7 +66,7 @@
65
66
  "@types/mocha": "*",
66
67
  "@types/node": "*",
67
68
  "cr": "^0.1.0",
68
- "cross-spawn-cb": "^2.0.0",
69
+ "cross-spawn-cb": "^3.0.0",
69
70
  "fs-remove-compat": "^1.0.0",
70
71
  "mock-exports-only-pkg": "file:test/data/mock-exports-only-pkg",
71
72
  "mock-subpath-imports-pkg": "file:test/data/mock-subpath-imports-pkg",