ts-swc-transform 2.7.10 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/compat.d.cts +1 -0
- package/dist/cjs/compat.d.ts +1 -0
- package/dist/cjs/compat.js +17 -0
- package/dist/cjs/compat.js.map +1 -1
- package/dist/cjs/lib/resolve-with-exports.d.cts +12 -0
- package/dist/cjs/lib/resolve-with-exports.d.ts +12 -0
- package/dist/cjs/lib/resolve-with-exports.js +146 -0
- package/dist/cjs/lib/resolve-with-exports.js.map +1 -0
- package/dist/cjs/resolveFileSync.js +3 -3
- package/dist/cjs/resolveFileSync.js.map +1 -1
- package/dist/cjs/toPath.js +5 -6
- package/dist/cjs/toPath.js.map +1 -1
- package/dist/esm/compat.d.ts +1 -0
- package/dist/esm/compat.js +14 -0
- package/dist/esm/compat.js.map +1 -1
- package/dist/esm/lib/resolve-with-exports.d.ts +12 -0
- package/dist/esm/lib/resolve-with-exports.js +88 -0
- package/dist/esm/lib/resolve-with-exports.js.map +1 -0
- package/dist/esm/resolveFileSync.js +3 -3
- package/dist/esm/resolveFileSync.js.map +1 -1
- package/dist/esm/toPath.js +3 -4
- package/dist/esm/toPath.js.map +1 -1
- package/package.json +18 -19
- package/dist/cjs/lib/import-meta-resolve.d.cts +0 -1
- package/dist/cjs/lib/import-meta-resolve.d.ts +0 -1
- package/dist/cjs/lib/import-meta-resolve.js +0 -22
- package/dist/cjs/lib/import-meta-resolve.js.map +0 -1
- package/dist/esm/lib/import-meta-resolve.d.ts +0 -1
- package/dist/esm/lib/import-meta-resolve.js +0 -6
- package/dist/esm/lib/import-meta-resolve.js.map +0 -1
package/dist/cjs/compat.d.cts
CHANGED
|
@@ -5,3 +5,4 @@
|
|
|
5
5
|
export declare function stringStartsWith(str: string, search: string, position?: number): boolean;
|
|
6
6
|
export declare function stringEndsWith(str: string, search: string, position?: number): boolean;
|
|
7
7
|
export declare function stringReplaceAll(str: string, search: string, replace: string): string;
|
|
8
|
+
export declare function arrayFind<T>(arr: T[], predicate: (item: T, index: number, arr: T[]) => boolean): T | undefined;
|
package/dist/cjs/compat.d.ts
CHANGED
|
@@ -5,3 +5,4 @@
|
|
|
5
5
|
export declare function stringStartsWith(str: string, search: string, position?: number): boolean;
|
|
6
6
|
export declare function stringEndsWith(str: string, search: string, position?: number): boolean;
|
|
7
7
|
export declare function stringReplaceAll(str: string, search: string, replace: string): string;
|
|
8
|
+
export declare function arrayFind<T>(arr: T[], predicate: (item: T, index: number, arr: T[]) => boolean): T | undefined;
|
package/dist/cjs/compat.js
CHANGED
|
@@ -9,6 +9,9 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
+
get arrayFind () {
|
|
13
|
+
return arrayFind;
|
|
14
|
+
},
|
|
12
15
|
get stringEndsWith () {
|
|
13
16
|
return stringEndsWith;
|
|
14
17
|
},
|
|
@@ -61,4 +64,18 @@ function stringReplaceAll(str, search, replace) {
|
|
|
61
64
|
var escaped = search.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
62
65
|
return str.replace(new RegExp(escaped, 'g'), replace);
|
|
63
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Array.prototype.find wrapper for Node.js 0.8+
|
|
69
|
+
* - Uses native find on Node 4.0+ / ES2015+
|
|
70
|
+
* - Falls back to loop on Node 0.8-3.x
|
|
71
|
+
*/ var hasArrayFind = typeof Array.prototype.find === 'function';
|
|
72
|
+
function arrayFind(arr, predicate) {
|
|
73
|
+
if (hasArrayFind) {
|
|
74
|
+
return arr.find(predicate);
|
|
75
|
+
}
|
|
76
|
+
for(var i = 0; i < arr.length; i++){
|
|
77
|
+
if (predicate(arr[i], i, arr)) return arr[i];
|
|
78
|
+
}
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
64
81
|
/* 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; }
|
package/dist/cjs/compat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/compat.ts"],"sourcesContent":["/**\n * Compatibility Layer for Node.js 0.8+\n * Local to this package - contains only needed functions.\n */\n\n/**\n * String.prototype.startsWith wrapper for Node.js 0.8+\n * - Uses native startsWith on Node 4.0+ / ES2015+\n * - Falls back to indexOf on Node 0.8-3.x\n */\nconst hasStartsWith = typeof String.prototype.startsWith === 'function';\n\nexport function stringStartsWith(str: string, search: string, position?: number): boolean {\n if (hasStartsWith) {\n return str.startsWith(search, position);\n }\n position = position || 0;\n return str.indexOf(search, position) === position;\n}\n\n/**\n * String.prototype.endsWith wrapper for Node.js 0.8+\n * - Uses native endsWith on Node 4.0+ / ES2015+\n * - Falls back to lastIndexOf on Node 0.8-3.x\n */\nconst hasEndsWith = typeof String.prototype.endsWith === 'function';\n\nexport function stringEndsWith(str: string, search: string, position?: number): boolean {\n if (hasEndsWith) {\n return str.endsWith(search, position);\n }\n const len = position === undefined ? str.length : position;\n return str.lastIndexOf(search) === len - search.length;\n}\n\n/**\n * String.prototype.replaceAll wrapper for Node.js 0.8+\n * - Uses native replaceAll on Node 15.0+ / ES2021+\n * - Falls back to regex replace on older versions\n */\n// biome-ignore lint/suspicious/noExplicitAny: Feature detection for ES2021 replaceAll\nconst hasReplaceAll = typeof (String.prototype as any).replaceAll === 'function';\n\nexport function stringReplaceAll(str: string, search: string, replace: string): string {\n if (hasReplaceAll) {\n // biome-ignore lint/suspicious/noExplicitAny: Using native replaceAll when available\n return (str as any).replaceAll(search, replace);\n }\n // Escape special regex characters\n const escaped = search.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n return str.replace(new RegExp(escaped, 'g'), replace);\n}\n"],"names":["stringEndsWith","stringReplaceAll","stringStartsWith","hasStartsWith","String","prototype","startsWith","str","search","position","indexOf","hasEndsWith","endsWith","len","undefined","length","lastIndexOf","hasReplaceAll","replaceAll","replace","escaped","RegExp"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/compat.ts"],"sourcesContent":["/**\n * Compatibility Layer for Node.js 0.8+\n * Local to this package - contains only needed functions.\n */\n\n/**\n * String.prototype.startsWith wrapper for Node.js 0.8+\n * - Uses native startsWith on Node 4.0+ / ES2015+\n * - Falls back to indexOf on Node 0.8-3.x\n */\nconst hasStartsWith = typeof String.prototype.startsWith === 'function';\n\nexport function stringStartsWith(str: string, search: string, position?: number): boolean {\n if (hasStartsWith) {\n return str.startsWith(search, position);\n }\n position = position || 0;\n return str.indexOf(search, position) === position;\n}\n\n/**\n * String.prototype.endsWith wrapper for Node.js 0.8+\n * - Uses native endsWith on Node 4.0+ / ES2015+\n * - Falls back to lastIndexOf on Node 0.8-3.x\n */\nconst hasEndsWith = typeof String.prototype.endsWith === 'function';\n\nexport function stringEndsWith(str: string, search: string, position?: number): boolean {\n if (hasEndsWith) {\n return str.endsWith(search, position);\n }\n const len = position === undefined ? str.length : position;\n return str.lastIndexOf(search) === len - search.length;\n}\n\n/**\n * String.prototype.replaceAll wrapper for Node.js 0.8+\n * - Uses native replaceAll on Node 15.0+ / ES2021+\n * - Falls back to regex replace on older versions\n */\n// biome-ignore lint/suspicious/noExplicitAny: Feature detection for ES2021 replaceAll\nconst hasReplaceAll = typeof (String.prototype as any).replaceAll === 'function';\n\nexport function stringReplaceAll(str: string, search: string, replace: string): string {\n if (hasReplaceAll) {\n // biome-ignore lint/suspicious/noExplicitAny: Using native replaceAll when available\n return (str as any).replaceAll(search, replace);\n }\n // Escape special regex characters\n const escaped = search.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n return str.replace(new RegExp(escaped, 'g'), replace);\n}\n\n/**\n * Array.prototype.find wrapper for Node.js 0.8+\n * - Uses native find on Node 4.0+ / ES2015+\n * - Falls back to loop on Node 0.8-3.x\n */\nconst hasArrayFind = typeof Array.prototype.find === 'function';\n\nexport function arrayFind<T>(arr: T[], predicate: (item: T, index: number, arr: T[]) => boolean): T | undefined {\n if (hasArrayFind) {\n return arr.find(predicate);\n }\n for (let i = 0; i < arr.length; i++) {\n if (predicate(arr[i], i, arr)) return arr[i];\n }\n return undefined;\n}\n"],"names":["arrayFind","stringEndsWith","stringReplaceAll","stringStartsWith","hasStartsWith","String","prototype","startsWith","str","search","position","indexOf","hasEndsWith","endsWith","len","undefined","length","lastIndexOf","hasReplaceAll","replaceAll","replace","escaped","RegExp","hasArrayFind","Array","find","arr","predicate","i"],"mappings":";;;;;;;;;;;QA4DgBA;eAAAA;;QAjCAC;eAAAA;;QAgBAC;eAAAA;;QA/BAC;eAAAA;;;AAZhB;;;CAGC,GAED;;;;CAIC,GACD,IAAMC,gBAAgB,OAAOC,OAAOC,SAAS,CAACC,UAAU,KAAK;AAEtD,SAASJ,iBAAiBK,GAAW,EAAEC,MAAc,EAAEC,QAAiB;IAC7E,IAAIN,eAAe;QACjB,OAAOI,IAAID,UAAU,CAACE,QAAQC;IAChC;IACAA,WAAWA,YAAY;IACvB,OAAOF,IAAIG,OAAO,CAACF,QAAQC,cAAcA;AAC3C;AAEA;;;;CAIC,GACD,IAAME,cAAc,OAAOP,OAAOC,SAAS,CAACO,QAAQ,KAAK;AAElD,SAASZ,eAAeO,GAAW,EAAEC,MAAc,EAAEC,QAAiB;IAC3E,IAAIE,aAAa;QACf,OAAOJ,IAAIK,QAAQ,CAACJ,QAAQC;IAC9B;IACA,IAAMI,MAAMJ,aAAaK,YAAYP,IAAIQ,MAAM,GAAGN;IAClD,OAAOF,IAAIS,WAAW,CAACR,YAAYK,MAAML,OAAOO,MAAM;AACxD;AAEA;;;;CAIC,GACD,sFAAsF;AACtF,IAAME,gBAAgB,OAAO,AAACb,OAAOC,SAAS,CAASa,UAAU,KAAK;AAE/D,SAASjB,iBAAiBM,GAAW,EAAEC,MAAc,EAAEW,OAAe;IAC3E,IAAIF,eAAe;QACjB,qFAAqF;QACrF,OAAO,AAACV,IAAYW,UAAU,CAACV,QAAQW;IACzC;IACA,kCAAkC;IAClC,IAAMC,UAAUZ,OAAOW,OAAO,CAAC,uBAAuB;IACtD,OAAOZ,IAAIY,OAAO,CAAC,IAAIE,OAAOD,SAAS,MAAMD;AAC/C;AAEA;;;;CAIC,GACD,IAAMG,eAAe,OAAOC,MAAMlB,SAAS,CAACmB,IAAI,KAAK;AAE9C,SAASzB,UAAa0B,GAAQ,EAAEC,SAAwD;IAC7F,IAAIJ,cAAc;QAChB,OAAOG,IAAID,IAAI,CAACE;IAClB;IACA,IAAK,IAAIC,IAAI,GAAGA,IAAIF,IAAIV,MAAM,EAAEY,IAAK;QACnC,IAAID,UAAUD,GAAG,CAACE,EAAE,EAAEA,GAAGF,MAAM,OAAOA,GAAG,CAACE,EAAE;IAC9C;IACA,OAAOb;AACT"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight ESM exports field resolver
|
|
3
|
+
* Uses resolve.exports (952 bytes) instead of import-meta-resolve (64KB)
|
|
4
|
+
*
|
|
5
|
+
* Only loaded on Node >= 12.2 where module.createRequire exists.
|
|
6
|
+
* On older Node, toPath.ts skips this and falls back to resolve.sync().
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Resolve a module specifier using the exports field in package.json
|
|
10
|
+
* Falls back to legacy main/module fields if exports is not present
|
|
11
|
+
*/
|
|
12
|
+
export default function resolveWithExports(specifier: string, basedir: string, conditions?: string[]): string | null;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight ESM exports field resolver
|
|
3
|
+
* Uses resolve.exports (952 bytes) instead of import-meta-resolve (64KB)
|
|
4
|
+
*
|
|
5
|
+
* Only loaded on Node >= 12.2 where module.createRequire exists.
|
|
6
|
+
* On older Node, toPath.ts skips this and falls back to resolve.sync().
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Resolve a module specifier using the exports field in package.json
|
|
10
|
+
* Falls back to legacy main/module fields if exports is not present
|
|
11
|
+
*/
|
|
12
|
+
export default function resolveWithExports(specifier: string, basedir: string, conditions?: string[]): string | null;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight ESM exports field resolver
|
|
3
|
+
* Uses resolve.exports (952 bytes) instead of import-meta-resolve (64KB)
|
|
4
|
+
*
|
|
5
|
+
* Only loaded on Node >= 12.2 where module.createRequire exists.
|
|
6
|
+
* On older Node, toPath.ts skips this and falls back to resolve.sync().
|
|
7
|
+
*/ "use strict";
|
|
8
|
+
Object.defineProperty(exports, "__esModule", {
|
|
9
|
+
value: true
|
|
10
|
+
});
|
|
11
|
+
Object.defineProperty(exports, /**
|
|
12
|
+
* Resolve a module specifier using the exports field in package.json
|
|
13
|
+
* Falls back to legacy main/module fields if exports is not present
|
|
14
|
+
*/ "default", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function() {
|
|
17
|
+
return resolveWithExports;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
var _module = /*#__PURE__*/ _interop_require_default(require("module"));
|
|
21
|
+
var _resolve = /*#__PURE__*/ _interop_require_wildcard(require("resolve"));
|
|
22
|
+
function _interop_require_default(obj) {
|
|
23
|
+
return obj && obj.__esModule ? obj : {
|
|
24
|
+
default: obj
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
28
|
+
if (typeof WeakMap !== "function") return null;
|
|
29
|
+
var cacheBabelInterop = new WeakMap();
|
|
30
|
+
var cacheNodeInterop = new WeakMap();
|
|
31
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
32
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
33
|
+
})(nodeInterop);
|
|
34
|
+
}
|
|
35
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
36
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
37
|
+
return obj;
|
|
38
|
+
}
|
|
39
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
40
|
+
return {
|
|
41
|
+
default: obj
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
45
|
+
if (cache && cache.has(obj)) {
|
|
46
|
+
return cache.get(obj);
|
|
47
|
+
}
|
|
48
|
+
var newObj = {
|
|
49
|
+
__proto__: null
|
|
50
|
+
};
|
|
51
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
52
|
+
for(var key in obj){
|
|
53
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
54
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
55
|
+
if (desc && (desc.get || desc.set)) {
|
|
56
|
+
Object.defineProperty(newObj, key, desc);
|
|
57
|
+
} else {
|
|
58
|
+
newObj[key] = obj[key];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
newObj.default = obj;
|
|
63
|
+
if (cache) {
|
|
64
|
+
cache.set(obj, newObj);
|
|
65
|
+
}
|
|
66
|
+
return newObj;
|
|
67
|
+
}
|
|
68
|
+
var _resolve_default;
|
|
69
|
+
var resolveSync = ((_resolve_default = _resolve.default) !== null && _resolve_default !== void 0 ? _resolve_default : _resolve).sync;
|
|
70
|
+
var _resolveExports = null;
|
|
71
|
+
function getResolveExports() {
|
|
72
|
+
if (_resolveExports === null) {
|
|
73
|
+
try {
|
|
74
|
+
// Use dynamic require to avoid loading on older Node versions
|
|
75
|
+
var _require = typeof require === 'undefined' ? _module.default.createRequire(require("url").pathToFileURL(__filename).toString()) : require;
|
|
76
|
+
_resolveExports = _require('resolve.exports');
|
|
77
|
+
} catch (_) {
|
|
78
|
+
// If resolve.exports fails to load, return null
|
|
79
|
+
// This shouldn't happen on Node >= 12.2, but handle gracefully
|
|
80
|
+
_resolveExports = null;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return _resolveExports;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Extract the subpath from a specifier
|
|
87
|
+
* "lodash/get" → "./get"
|
|
88
|
+
* "react" → "."
|
|
89
|
+
* "@scope/pkg/foo" → "./foo"
|
|
90
|
+
*/ function getSubpath(specifier) {
|
|
91
|
+
var parts = specifier.split('/');
|
|
92
|
+
var pkgName = specifier[0] === '@' ? parts.slice(0, 2).join('/') : parts[0];
|
|
93
|
+
var remainder = specifier.slice(pkgName.length);
|
|
94
|
+
return remainder ? ".".concat(remainder) : '.';
|
|
95
|
+
}
|
|
96
|
+
function resolveWithExports(specifier, basedir) {
|
|
97
|
+
var conditions = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [
|
|
98
|
+
'node',
|
|
99
|
+
'import'
|
|
100
|
+
];
|
|
101
|
+
var resolveExportsMod = getResolveExports();
|
|
102
|
+
if (!resolveExportsMod) {
|
|
103
|
+
// resolve.exports not available, return null to trigger fallback
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
var resolveExportsFn = resolveExportsMod.exports, legacy = resolveExportsMod.legacy;
|
|
107
|
+
var subpath = getSubpath(specifier);
|
|
108
|
+
try {
|
|
109
|
+
return resolveSync(specifier, {
|
|
110
|
+
basedir: basedir,
|
|
111
|
+
extensions: [
|
|
112
|
+
'.js',
|
|
113
|
+
'.json',
|
|
114
|
+
'.node',
|
|
115
|
+
'.mjs'
|
|
116
|
+
],
|
|
117
|
+
packageFilter: function(pkg) {
|
|
118
|
+
// Try exports field first
|
|
119
|
+
try {
|
|
120
|
+
var resolved = resolveExportsFn(pkg, subpath, {
|
|
121
|
+
conditions: conditions
|
|
122
|
+
});
|
|
123
|
+
if (resolved === null || resolved === void 0 ? void 0 : resolved[0]) {
|
|
124
|
+
pkg.main = resolved[0];
|
|
125
|
+
return pkg;
|
|
126
|
+
}
|
|
127
|
+
} catch (_) {
|
|
128
|
+
// exports field parsing failed, try legacy
|
|
129
|
+
}
|
|
130
|
+
// Try legacy main/module fields
|
|
131
|
+
try {
|
|
132
|
+
var legacyMain = legacy(pkg);
|
|
133
|
+
if (legacyMain) {
|
|
134
|
+
pkg.main = legacyMain;
|
|
135
|
+
}
|
|
136
|
+
} catch (_) {
|
|
137
|
+
// legacy parsing failed, use original pkg
|
|
138
|
+
}
|
|
139
|
+
return pkg;
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
} catch (_) {
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/* 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; }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/resolve-with-exports.ts"],"sourcesContent":["/**\n * Lightweight ESM exports field resolver\n * Uses resolve.exports (952 bytes) instead of import-meta-resolve (64KB)\n *\n * Only loaded on Node >= 12.2 where module.createRequire exists.\n * On older Node, toPath.ts skips this and falls back to resolve.sync().\n */\n\nimport Module from 'module';\nimport * as resolve from 'resolve';\n\nconst resolveSync = (resolve.default ?? resolve).sync;\n\n// Lazy-load resolve.exports to avoid requiring it on older Node versions\n// resolve.exports requires Node >= 10, but this code only runs on Node >= 12.2\ntype ResolveExportsModule = typeof import('resolve.exports');\nlet _resolveExports: ResolveExportsModule | null = null;\n\nfunction getResolveExports(): ResolveExportsModule | null {\n if (_resolveExports === null) {\n try {\n // Use dynamic require to avoid loading on older Node versions\n const _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n _resolveExports = _require('resolve.exports') as ResolveExportsModule;\n } catch (_) {\n // If resolve.exports fails to load, return null\n // This shouldn't happen on Node >= 12.2, but handle gracefully\n _resolveExports = null;\n }\n }\n return _resolveExports;\n}\n\n/**\n * Extract the subpath from a specifier\n * \"lodash/get\" → \"./get\"\n * \"react\" → \".\"\n * \"@scope/pkg/foo\" → \"./foo\"\n */\nfunction getSubpath(specifier: string): 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 return remainder ? `.${remainder}` : '.';\n}\n\n/**\n * Resolve a module specifier using the exports field in package.json\n * Falls back to legacy main/module fields if exports is not present\n */\nexport default function resolveWithExports(specifier: string, basedir: string, conditions: string[] = ['node', 'import']): string | null {\n const resolveExportsMod = getResolveExports();\n if (!resolveExportsMod) {\n // resolve.exports not available, return null to trigger fallback\n return null;\n }\n\n const { exports: resolveExportsFn, legacy } = resolveExportsMod;\n const subpath = getSubpath(specifier);\n\n try {\n return resolveSync(specifier, {\n basedir,\n extensions: ['.js', '.json', '.node', '.mjs'],\n packageFilter: (pkg) => {\n // Try exports field first\n try {\n const resolved = resolveExportsFn(pkg, subpath, { conditions });\n if (resolved?.[0]) {\n pkg.main = resolved[0];\n return pkg;\n }\n } catch (_) {\n // exports field parsing failed, try legacy\n }\n\n // Try legacy main/module fields\n try {\n const legacyMain = legacy(pkg);\n if (legacyMain) {\n pkg.main = legacyMain;\n }\n } catch (_) {\n // legacy parsing failed, use original pkg\n }\n\n return pkg;\n },\n });\n } catch (_) {\n return null;\n }\n}\n"],"names":["resolveWithExports","resolve","resolveSync","default","sync","_resolveExports","getResolveExports","_require","require","Module","createRequire","_","getSubpath","specifier","parts","split","pkgName","slice","join","remainder","length","basedir","conditions","resolveExportsMod","exports","resolveExportsFn","legacy","subpath","extensions","packageFilter","pkg","resolved","main","legacyMain"],"mappings":"AAAA;;;;;;CAMC;;;;+BAwCD;;;CAGC,GACD;;;eAAwBA;;;6DA1CL;+DACM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEJC;AAArB,IAAMC,cAAc,AAACD,CAAAA,CAAAA,mBAAAA,SAAQE,OAAO,cAAfF,8BAAAA,mBAAmBA,QAAM,EAAGG,IAAI;AAKrD,IAAIC,kBAA+C;AAEnD,SAASC;IACP,IAAID,oBAAoB,MAAM;QAC5B,IAAI;YACF,8DAA8D;YAC9D,IAAME,WAAW,OAAOC,YAAY,cAAcC,eAAM,CAACC,aAAa,CAAC,uDAAmBF;YAC1FH,kBAAkBE,SAAS;QAC7B,EAAE,OAAOI,GAAG;YACV,gDAAgD;YAChD,+DAA+D;YAC/DN,kBAAkB;QACpB;IACF;IACA,OAAOA;AACT;AAEA;;;;;CAKC,GACD,SAASO,WAAWC,SAAiB;IACnC,IAAMC,QAAQD,UAAUE,KAAK,CAAC;IAC9B,IAAMC,UAAUH,SAAS,CAAC,EAAE,KAAK,MAAMC,MAAMG,KAAK,CAAC,GAAG,GAAGC,IAAI,CAAC,OAAOJ,KAAK,CAAC,EAAE;IAC7E,IAAMK,YAAYN,UAAUI,KAAK,CAACD,QAAQI,MAAM;IAChD,OAAOD,YAAY,AAAC,IAAa,OAAVA,aAAc;AACvC;AAMe,SAASnB,mBAAmBa,SAAiB,EAAEQ,OAAe;QAAEC,aAAAA,iEAAuB;QAAC;QAAQ;KAAS;IACtH,IAAMC,oBAAoBjB;IAC1B,IAAI,CAACiB,mBAAmB;QACtB,iEAAiE;QACjE,OAAO;IACT;IAEA,IAAQC,AAASC,mBAA6BF,kBAAtCC,SAA2BE,SAAWH,kBAAXG;IACnC,IAAMC,UAAUf,WAAWC;IAE3B,IAAI;QACF,OAAOX,YAAYW,WAAW;YAC5BQ,SAAAA;YACAO,YAAY;gBAAC;gBAAO;gBAAS;gBAAS;aAAO;YAC7CC,eAAe,SAACC;gBACd,0BAA0B;gBAC1B,IAAI;oBACF,IAAMC,WAAWN,iBAAiBK,KAAKH,SAAS;wBAAEL,YAAAA;oBAAW;oBAC7D,IAAIS,qBAAAA,+BAAAA,QAAU,CAAC,EAAE,EAAE;wBACjBD,IAAIE,IAAI,GAAGD,QAAQ,CAAC,EAAE;wBACtB,OAAOD;oBACT;gBACF,EAAE,OAAOnB,GAAG;gBACV,2CAA2C;gBAC7C;gBAEA,gCAAgC;gBAChC,IAAI;oBACF,IAAMsB,aAAaP,OAAOI;oBAC1B,IAAIG,YAAY;wBACdH,IAAIE,IAAI,GAAGC;oBACb;gBACF,EAAE,OAAOtB,GAAG;gBACV,0CAA0C;gBAC5C;gBAEA,OAAOmB;YACT;QACF;IACF,EAAE,OAAOnB,GAAG;QACV,OAAO;IACT;AACF"}
|
|
@@ -9,8 +9,8 @@ Object.defineProperty(exports, "default", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
var _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
|
12
|
-
var _lodashfind = /*#__PURE__*/ _interop_require_default(require("lodash.find"));
|
|
13
12
|
var _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
13
|
+
var _compatts = require("./compat.js");
|
|
14
14
|
var _constantsts = require("./constants.js");
|
|
15
15
|
var _toPathts = /*#__PURE__*/ _interop_require_default(require("./toPath.js"));
|
|
16
16
|
function _interop_require_default(obj) {
|
|
@@ -30,7 +30,7 @@ function resolveFileSync(specifier, context) {
|
|
|
30
30
|
try {
|
|
31
31
|
if (stat && stat.isDirectory() || specifier[specifier.length - 1] === '/') {
|
|
32
32
|
var items = _fs.default.readdirSync(filePath);
|
|
33
|
-
var item = (0,
|
|
33
|
+
var item = (0, _compatts.arrayFind)(indexExtensions, function(x) {
|
|
34
34
|
return items.indexOf(x) !== -1;
|
|
35
35
|
});
|
|
36
36
|
if (item) return _path.default.join(filePath, item);
|
|
@@ -38,7 +38,7 @@ function resolveFileSync(specifier, context) {
|
|
|
38
38
|
var ext = _path.default.extname(filePath);
|
|
39
39
|
var basename = ext ? _path.default.basename(filePath).slice(0, -ext.length) : _path.default.basename(filePath);
|
|
40
40
|
var items1 = _fs.default.readdirSync(_path.default.dirname(filePath));
|
|
41
|
-
var item1 = (0,
|
|
41
|
+
var item1 = (0, _compatts.arrayFind)(items1, function(x) {
|
|
42
42
|
if (_constantsts.typeFileRegEx.test(x)) return false;
|
|
43
43
|
var extTest = _path.default.extname(x);
|
|
44
44
|
var basenameTest = extTest ? _path.default.basename(x).slice(0, -extTest.length) : _path.default.basename(x);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/resolveFileSync.ts"],"sourcesContent":["import fs from 'fs';\nimport
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/resolveFileSync.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport { arrayFind } from './compat.ts';\nimport { extensions, moduleRegEx, typeFileRegEx } from './constants.ts';\nimport toPath from './toPath.ts';\nimport type { Context } from './types.ts';\n\nconst indexExtensions = extensions.map((x) => `index${x}`);\n\nexport default function resolveFileSync(specifier: string, context?: Context): string {\n const filePath = toPath(specifier, context);\n let stat: fs.Stats;\n try {\n stat = fs.statSync(filePath);\n } catch (_err) {}\n try {\n if ((stat && stat.isDirectory()) || specifier[specifier.length - 1] === '/') {\n const items = fs.readdirSync(filePath);\n const item = arrayFind(indexExtensions, (x) => items.indexOf(x) !== -1);\n if (item) return path.join(filePath, item);\n } else if (!stat && !moduleRegEx.test(specifier)) {\n const ext = path.extname(filePath);\n const basename = ext ? path.basename(filePath).slice(0, -ext.length) : path.basename(filePath);\n const items = fs.readdirSync(path.dirname(filePath));\n const item = arrayFind(items, (x) => {\n if (typeFileRegEx.test(x)) return false;\n const extTest = path.extname(x);\n const basenameTest = extTest ? path.basename(x).slice(0, -extTest.length) : path.basename(x);\n return basename === basenameTest;\n });\n if (item) return path.join(path.dirname(filePath), item);\n }\n // return what was found\n return stat ? filePath : null;\n } catch (_err) {\n return null;\n }\n}\n"],"names":["resolveFileSync","indexExtensions","extensions","map","x","specifier","context","filePath","toPath","stat","fs","statSync","_err","isDirectory","length","items","readdirSync","item","arrayFind","indexOf","path","join","moduleRegEx","test","ext","extname","basename","slice","dirname","typeFileRegEx","extTest","basenameTest"],"mappings":";;;;+BASA;;;eAAwBA;;;yDATT;2DACE;wBACS;2BAC6B;+DACpC;;;;;;AAGnB,IAAMC,kBAAkBC,uBAAU,CAACC,GAAG,CAAC,SAACC;WAAM,AAAC,QAAS,OAAFA;;AAEvC,SAASJ,gBAAgBK,SAAiB,EAAEC,OAAiB;IAC1E,IAAMC,WAAWC,IAAAA,iBAAM,EAACH,WAAWC;IACnC,IAAIG;IACJ,IAAI;QACFA,OAAOC,WAAE,CAACC,QAAQ,CAACJ;IACrB,EAAE,OAAOK,MAAM,CAAC;IAChB,IAAI;QACF,IAAI,AAACH,QAAQA,KAAKI,WAAW,MAAOR,SAAS,CAACA,UAAUS,MAAM,GAAG,EAAE,KAAK,KAAK;YAC3E,IAAMC,QAAQL,WAAE,CAACM,WAAW,CAACT;YAC7B,IAAMU,OAAOC,IAAAA,mBAAS,EAACjB,iBAAiB,SAACG;uBAAMW,MAAMI,OAAO,CAACf,OAAO,CAAC;;YACrE,IAAIa,MAAM,OAAOG,aAAI,CAACC,IAAI,CAACd,UAAUU;QACvC,OAAO,IAAI,CAACR,QAAQ,CAACa,wBAAW,CAACC,IAAI,CAAClB,YAAY;YAChD,IAAMmB,MAAMJ,aAAI,CAACK,OAAO,CAAClB;YACzB,IAAMmB,WAAWF,MAAMJ,aAAI,CAACM,QAAQ,CAACnB,UAAUoB,KAAK,CAAC,GAAG,CAACH,IAAIV,MAAM,IAAIM,aAAI,CAACM,QAAQ,CAACnB;YACrF,IAAMQ,SAAQL,WAAE,CAACM,WAAW,CAACI,aAAI,CAACQ,OAAO,CAACrB;YAC1C,IAAMU,QAAOC,IAAAA,mBAAS,EAACH,QAAO,SAACX;gBAC7B,IAAIyB,0BAAa,CAACN,IAAI,CAACnB,IAAI,OAAO;gBAClC,IAAM0B,UAAUV,aAAI,CAACK,OAAO,CAACrB;gBAC7B,IAAM2B,eAAeD,UAAUV,aAAI,CAACM,QAAQ,CAACtB,GAAGuB,KAAK,CAAC,GAAG,CAACG,QAAQhB,MAAM,IAAIM,aAAI,CAACM,QAAQ,CAACtB;gBAC1F,OAAOsB,aAAaK;YACtB;YACA,IAAId,OAAM,OAAOG,aAAI,CAACC,IAAI,CAACD,aAAI,CAACQ,OAAO,CAACrB,WAAWU;QACrD;QACA,wBAAwB;QACxB,OAAOR,OAAOF,WAAW;IAC3B,EAAE,OAAOK,MAAM;QACb,OAAO;IACT;AACF"}
|
package/dist/cjs/toPath.js
CHANGED
|
@@ -15,7 +15,7 @@ var _resolve = /*#__PURE__*/ _interop_require_wildcard(require("resolve"));
|
|
|
15
15
|
var _url = /*#__PURE__*/ _interop_require_default(require("url"));
|
|
16
16
|
var _compatts = require("./compat.js");
|
|
17
17
|
var _constantsts = require("./constants.js");
|
|
18
|
-
var
|
|
18
|
+
var _resolvewithexportsts = /*#__PURE__*/ _interop_require_default(require("./lib/resolve-with-exports.js"));
|
|
19
19
|
var _urlFileUrlts = /*#__PURE__*/ _interop_require_wildcard(require("./lib/urlFileUrl.js"));
|
|
20
20
|
function _interop_require_default(obj) {
|
|
21
21
|
return obj && obj.__esModule ? obj : {
|
|
@@ -67,7 +67,6 @@ var _resolve_default;
|
|
|
67
67
|
var resolveSync = ((_resolve_default = _resolve.default) !== null && _resolve_default !== void 0 ? _resolve_default : _resolve).sync;
|
|
68
68
|
var useCJS = !_module.default.createRequire;
|
|
69
69
|
var fileURLToPath = _url.default.fileURLToPath || _urlFileUrlts.fileURLToPath;
|
|
70
|
-
var pathToFileURL = _url.default.pathToFileURL || _urlFileUrlts.pathToFileURL;
|
|
71
70
|
function getParentPath(context) {
|
|
72
71
|
if (context.parentPath) return _path.default.dirname(context.parentPath);
|
|
73
72
|
return context.parentURL ? _path.default.dirname(toPath(context.parentURL)) : process.cwd();
|
|
@@ -83,12 +82,12 @@ function toPath(specifier, context) {
|
|
|
83
82
|
var parentPath1 = context ? getParentPath(context) : process.cwd();
|
|
84
83
|
if (!useCJS) {
|
|
85
84
|
try {
|
|
86
|
-
var
|
|
87
|
-
if (
|
|
85
|
+
var entryPath = (0, _resolvewithexportsts.default)(specifier, parentPath1);
|
|
86
|
+
if (entryPath) return entryPath;
|
|
88
87
|
} catch (_) {
|
|
89
88
|
/* it may fail due to commonjs edge cases */ }
|
|
90
89
|
}
|
|
91
|
-
var
|
|
90
|
+
var entryPath1 = resolveSync(specifier, {
|
|
92
91
|
basedir: parentPath1,
|
|
93
92
|
extensions: [
|
|
94
93
|
'.js',
|
|
@@ -97,7 +96,7 @@ function toPath(specifier, context) {
|
|
|
97
96
|
'.mjs'
|
|
98
97
|
]
|
|
99
98
|
});
|
|
100
|
-
if (
|
|
99
|
+
if (entryPath1) return entryPath1;
|
|
101
100
|
}
|
|
102
101
|
return specifier;
|
|
103
102
|
}
|
package/dist/cjs/toPath.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/toPath.ts"],"sourcesContent":["import isAbsolute from 'is-absolute';\nimport module from 'module';\nimport path from 'path';\nimport * as resolve from 'resolve';\nimport url from 'url';\n\nimport { stringStartsWith } from './compat.ts';\nimport { moduleRegEx } from './constants.ts';\nimport
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/toPath.ts"],"sourcesContent":["import isAbsolute from 'is-absolute';\nimport module from 'module';\nimport path from 'path';\nimport * as resolve from 'resolve';\nimport url from 'url';\n\nimport { stringStartsWith } from './compat.ts';\nimport { moduleRegEx } from './constants.ts';\nimport resolveWithExports from './lib/resolve-with-exports.ts';\nimport * as urlPolyfills from './lib/urlFileUrl.ts';\nimport type { Context } from './types.ts';\n\nconst resolveSync = (resolve.default ?? resolve).sync;\n\nconst useCJS = !module.createRequire;\nconst fileURLToPath = url.fileURLToPath || urlPolyfills.fileURLToPath;\n\nfunction getParentPath(context: Context): string {\n if (context.parentPath) return path.dirname(context.parentPath);\n return context.parentURL ? path.dirname(toPath(context.parentURL)) : process.cwd();\n}\n\nexport default function toPath(specifier: string, context?: Context): string {\n if (stringStartsWith(specifier, 'file:')) return fileURLToPath(specifier);\n if (isAbsolute(specifier)) return specifier;\n if (specifier[0] === '.') {\n const parentPath = context ? getParentPath(context) : process.cwd();\n return path.join(parentPath, specifier);\n }\n if (moduleRegEx.test(specifier)) {\n const parentPath = context ? getParentPath(context) : process.cwd();\n if (!useCJS) {\n try {\n const entryPath = resolveWithExports(specifier, parentPath);\n if (entryPath) return entryPath;\n } catch (_) {\n /* it may fail due to commonjs edge cases */\n }\n }\n const entryPath = resolveSync(specifier, {\n basedir: parentPath,\n extensions: ['.js', '.json', '.node', '.mjs'],\n });\n if (entryPath) return entryPath;\n }\n\n return specifier;\n}\n"],"names":["toPath","resolve","resolveSync","default","sync","useCJS","module","createRequire","fileURLToPath","url","urlPolyfills","getParentPath","context","parentPath","path","dirname","parentURL","process","cwd","specifier","stringStartsWith","isAbsolute","join","moduleRegEx","test","entryPath","resolveWithExports","_","basedir","extensions"],"mappings":";;;;+BAsBA;;;eAAwBA;;;iEAtBD;6DACJ;2DACF;+DACQ;0DACT;wBAEiB;2BACL;2EACG;oEACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGTC;AAArB,IAAMC,cAAc,AAACD,CAAAA,CAAAA,mBAAAA,SAAQE,OAAO,cAAfF,8BAAAA,mBAAmBA,QAAM,EAAGG,IAAI;AAErD,IAAMC,SAAS,CAACC,eAAM,CAACC,aAAa;AACpC,IAAMC,gBAAgBC,YAAG,CAACD,aAAa,IAAIE,cAAaF,aAAa;AAErE,SAASG,cAAcC,OAAgB;IACrC,IAAIA,QAAQC,UAAU,EAAE,OAAOC,aAAI,CAACC,OAAO,CAACH,QAAQC,UAAU;IAC9D,OAAOD,QAAQI,SAAS,GAAGF,aAAI,CAACC,OAAO,CAACf,OAAOY,QAAQI,SAAS,KAAKC,QAAQC,GAAG;AAClF;AAEe,SAASlB,OAAOmB,SAAiB,EAAEP,OAAiB;IACjE,IAAIQ,IAAAA,0BAAgB,EAACD,WAAW,UAAU,OAAOX,cAAcW;IAC/D,IAAIE,IAAAA,mBAAU,EAACF,YAAY,OAAOA;IAClC,IAAIA,SAAS,CAAC,EAAE,KAAK,KAAK;QACxB,IAAMN,aAAaD,UAAUD,cAAcC,WAAWK,QAAQC,GAAG;QACjE,OAAOJ,aAAI,CAACQ,IAAI,CAACT,YAAYM;IAC/B;IACA,IAAII,wBAAW,CAACC,IAAI,CAACL,YAAY;QAC/B,IAAMN,cAAaD,UAAUD,cAAcC,WAAWK,QAAQC,GAAG;QACjE,IAAI,CAACb,QAAQ;YACX,IAAI;gBACF,IAAMoB,YAAYC,IAAAA,6BAAkB,EAACP,WAAWN;gBAChD,IAAIY,WAAW,OAAOA;YACxB,EAAE,OAAOE,GAAG;YACV,0CAA0C,GAC5C;QACF;QACA,IAAMF,aAAYvB,YAAYiB,WAAW;YACvCS,SAASf;YACTgB,YAAY;gBAAC;gBAAO;gBAAS;gBAAS;aAAO;QAC/C;QACA,IAAIJ,YAAW,OAAOA;IACxB;IAEA,OAAON;AACT"}
|
package/dist/esm/compat.d.ts
CHANGED
|
@@ -5,3 +5,4 @@
|
|
|
5
5
|
export declare function stringStartsWith(str: string, search: string, position?: number): boolean;
|
|
6
6
|
export declare function stringEndsWith(str: string, search: string, position?: number): boolean;
|
|
7
7
|
export declare function stringReplaceAll(str: string, search: string, replace: string): string;
|
|
8
|
+
export declare function arrayFind<T>(arr: T[], predicate: (item: T, index: number, arr: T[]) => boolean): T | undefined;
|
package/dist/esm/compat.js
CHANGED
|
@@ -40,3 +40,17 @@ export function stringReplaceAll(str, search, replace) {
|
|
|
40
40
|
const escaped = search.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
41
41
|
return str.replace(new RegExp(escaped, 'g'), replace);
|
|
42
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Array.prototype.find wrapper for Node.js 0.8+
|
|
45
|
+
* - Uses native find on Node 4.0+ / ES2015+
|
|
46
|
+
* - Falls back to loop on Node 0.8-3.x
|
|
47
|
+
*/ const hasArrayFind = typeof Array.prototype.find === 'function';
|
|
48
|
+
export function arrayFind(arr, predicate) {
|
|
49
|
+
if (hasArrayFind) {
|
|
50
|
+
return arr.find(predicate);
|
|
51
|
+
}
|
|
52
|
+
for(let i = 0; i < arr.length; i++){
|
|
53
|
+
if (predicate(arr[i], i, arr)) return arr[i];
|
|
54
|
+
}
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
package/dist/esm/compat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/compat.ts"],"sourcesContent":["/**\n * Compatibility Layer for Node.js 0.8+\n * Local to this package - contains only needed functions.\n */\n\n/**\n * String.prototype.startsWith wrapper for Node.js 0.8+\n * - Uses native startsWith on Node 4.0+ / ES2015+\n * - Falls back to indexOf on Node 0.8-3.x\n */\nconst hasStartsWith = typeof String.prototype.startsWith === 'function';\n\nexport function stringStartsWith(str: string, search: string, position?: number): boolean {\n if (hasStartsWith) {\n return str.startsWith(search, position);\n }\n position = position || 0;\n return str.indexOf(search, position) === position;\n}\n\n/**\n * String.prototype.endsWith wrapper for Node.js 0.8+\n * - Uses native endsWith on Node 4.0+ / ES2015+\n * - Falls back to lastIndexOf on Node 0.8-3.x\n */\nconst hasEndsWith = typeof String.prototype.endsWith === 'function';\n\nexport function stringEndsWith(str: string, search: string, position?: number): boolean {\n if (hasEndsWith) {\n return str.endsWith(search, position);\n }\n const len = position === undefined ? str.length : position;\n return str.lastIndexOf(search) === len - search.length;\n}\n\n/**\n * String.prototype.replaceAll wrapper for Node.js 0.8+\n * - Uses native replaceAll on Node 15.0+ / ES2021+\n * - Falls back to regex replace on older versions\n */\n// biome-ignore lint/suspicious/noExplicitAny: Feature detection for ES2021 replaceAll\nconst hasReplaceAll = typeof (String.prototype as any).replaceAll === 'function';\n\nexport function stringReplaceAll(str: string, search: string, replace: string): string {\n if (hasReplaceAll) {\n // biome-ignore lint/suspicious/noExplicitAny: Using native replaceAll when available\n return (str as any).replaceAll(search, replace);\n }\n // Escape special regex characters\n const escaped = search.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n return str.replace(new RegExp(escaped, 'g'), replace);\n}\n"],"names":["hasStartsWith","String","prototype","startsWith","stringStartsWith","str","search","position","indexOf","hasEndsWith","endsWith","stringEndsWith","len","undefined","length","lastIndexOf","hasReplaceAll","replaceAll","stringReplaceAll","replace","escaped","RegExp"],"mappings":"AAAA;;;CAGC,GAED;;;;CAIC,GACD,MAAMA,gBAAgB,OAAOC,OAAOC,SAAS,CAACC,UAAU,KAAK;AAE7D,OAAO,SAASC,iBAAiBC,GAAW,EAAEC,MAAc,EAAEC,QAAiB;IAC7E,IAAIP,eAAe;QACjB,OAAOK,IAAIF,UAAU,CAACG,QAAQC;IAChC;IACAA,WAAWA,YAAY;IACvB,OAAOF,IAAIG,OAAO,CAACF,QAAQC,cAAcA;AAC3C;AAEA;;;;CAIC,GACD,MAAME,cAAc,OAAOR,OAAOC,SAAS,CAACQ,QAAQ,KAAK;AAEzD,OAAO,SAASC,eAAeN,GAAW,EAAEC,MAAc,EAAEC,QAAiB;IAC3E,IAAIE,aAAa;QACf,OAAOJ,IAAIK,QAAQ,CAACJ,QAAQC;IAC9B;IACA,MAAMK,MAAML,aAAaM,YAAYR,IAAIS,MAAM,GAAGP;IAClD,OAAOF,IAAIU,WAAW,CAACT,YAAYM,MAAMN,OAAOQ,MAAM;AACxD;AAEA;;;;CAIC,GACD,sFAAsF;AACtF,MAAME,gBAAgB,OAAO,AAACf,OAAOC,SAAS,CAASe,UAAU,KAAK;AAEtE,OAAO,SAASC,iBAAiBb,GAAW,EAAEC,MAAc,EAAEa,OAAe;IAC3E,IAAIH,eAAe;QACjB,qFAAqF;QACrF,OAAO,AAACX,IAAYY,UAAU,CAACX,QAAQa;IACzC;IACA,kCAAkC;IAClC,MAAMC,UAAUd,OAAOa,OAAO,CAAC,uBAAuB;IACtD,OAAOd,IAAIc,OAAO,CAAC,IAAIE,OAAOD,SAAS,MAAMD;AAC/C"}
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/compat.ts"],"sourcesContent":["/**\n * Compatibility Layer for Node.js 0.8+\n * Local to this package - contains only needed functions.\n */\n\n/**\n * String.prototype.startsWith wrapper for Node.js 0.8+\n * - Uses native startsWith on Node 4.0+ / ES2015+\n * - Falls back to indexOf on Node 0.8-3.x\n */\nconst hasStartsWith = typeof String.prototype.startsWith === 'function';\n\nexport function stringStartsWith(str: string, search: string, position?: number): boolean {\n if (hasStartsWith) {\n return str.startsWith(search, position);\n }\n position = position || 0;\n return str.indexOf(search, position) === position;\n}\n\n/**\n * String.prototype.endsWith wrapper for Node.js 0.8+\n * - Uses native endsWith on Node 4.0+ / ES2015+\n * - Falls back to lastIndexOf on Node 0.8-3.x\n */\nconst hasEndsWith = typeof String.prototype.endsWith === 'function';\n\nexport function stringEndsWith(str: string, search: string, position?: number): boolean {\n if (hasEndsWith) {\n return str.endsWith(search, position);\n }\n const len = position === undefined ? str.length : position;\n return str.lastIndexOf(search) === len - search.length;\n}\n\n/**\n * String.prototype.replaceAll wrapper for Node.js 0.8+\n * - Uses native replaceAll on Node 15.0+ / ES2021+\n * - Falls back to regex replace on older versions\n */\n// biome-ignore lint/suspicious/noExplicitAny: Feature detection for ES2021 replaceAll\nconst hasReplaceAll = typeof (String.prototype as any).replaceAll === 'function';\n\nexport function stringReplaceAll(str: string, search: string, replace: string): string {\n if (hasReplaceAll) {\n // biome-ignore lint/suspicious/noExplicitAny: Using native replaceAll when available\n return (str as any).replaceAll(search, replace);\n }\n // Escape special regex characters\n const escaped = search.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n return str.replace(new RegExp(escaped, 'g'), replace);\n}\n\n/**\n * Array.prototype.find wrapper for Node.js 0.8+\n * - Uses native find on Node 4.0+ / ES2015+\n * - Falls back to loop on Node 0.8-3.x\n */\nconst hasArrayFind = typeof Array.prototype.find === 'function';\n\nexport function arrayFind<T>(arr: T[], predicate: (item: T, index: number, arr: T[]) => boolean): T | undefined {\n if (hasArrayFind) {\n return arr.find(predicate);\n }\n for (let i = 0; i < arr.length; i++) {\n if (predicate(arr[i], i, arr)) return arr[i];\n }\n return undefined;\n}\n"],"names":["hasStartsWith","String","prototype","startsWith","stringStartsWith","str","search","position","indexOf","hasEndsWith","endsWith","stringEndsWith","len","undefined","length","lastIndexOf","hasReplaceAll","replaceAll","stringReplaceAll","replace","escaped","RegExp","hasArrayFind","Array","find","arrayFind","arr","predicate","i"],"mappings":"AAAA;;;CAGC,GAED;;;;CAIC,GACD,MAAMA,gBAAgB,OAAOC,OAAOC,SAAS,CAACC,UAAU,KAAK;AAE7D,OAAO,SAASC,iBAAiBC,GAAW,EAAEC,MAAc,EAAEC,QAAiB;IAC7E,IAAIP,eAAe;QACjB,OAAOK,IAAIF,UAAU,CAACG,QAAQC;IAChC;IACAA,WAAWA,YAAY;IACvB,OAAOF,IAAIG,OAAO,CAACF,QAAQC,cAAcA;AAC3C;AAEA;;;;CAIC,GACD,MAAME,cAAc,OAAOR,OAAOC,SAAS,CAACQ,QAAQ,KAAK;AAEzD,OAAO,SAASC,eAAeN,GAAW,EAAEC,MAAc,EAAEC,QAAiB;IAC3E,IAAIE,aAAa;QACf,OAAOJ,IAAIK,QAAQ,CAACJ,QAAQC;IAC9B;IACA,MAAMK,MAAML,aAAaM,YAAYR,IAAIS,MAAM,GAAGP;IAClD,OAAOF,IAAIU,WAAW,CAACT,YAAYM,MAAMN,OAAOQ,MAAM;AACxD;AAEA;;;;CAIC,GACD,sFAAsF;AACtF,MAAME,gBAAgB,OAAO,AAACf,OAAOC,SAAS,CAASe,UAAU,KAAK;AAEtE,OAAO,SAASC,iBAAiBb,GAAW,EAAEC,MAAc,EAAEa,OAAe;IAC3E,IAAIH,eAAe;QACjB,qFAAqF;QACrF,OAAO,AAACX,IAAYY,UAAU,CAACX,QAAQa;IACzC;IACA,kCAAkC;IAClC,MAAMC,UAAUd,OAAOa,OAAO,CAAC,uBAAuB;IACtD,OAAOd,IAAIc,OAAO,CAAC,IAAIE,OAAOD,SAAS,MAAMD;AAC/C;AAEA;;;;CAIC,GACD,MAAMG,eAAe,OAAOC,MAAMrB,SAAS,CAACsB,IAAI,KAAK;AAErD,OAAO,SAASC,UAAaC,GAAQ,EAAEC,SAAwD;IAC7F,IAAIL,cAAc;QAChB,OAAOI,IAAIF,IAAI,CAACG;IAClB;IACA,IAAK,IAAIC,IAAI,GAAGA,IAAIF,IAAIZ,MAAM,EAAEc,IAAK;QACnC,IAAID,UAAUD,GAAG,CAACE,EAAE,EAAEA,GAAGF,MAAM,OAAOA,GAAG,CAACE,EAAE;IAC9C;IACA,OAAOf;AACT"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight ESM exports field resolver
|
|
3
|
+
* Uses resolve.exports (952 bytes) instead of import-meta-resolve (64KB)
|
|
4
|
+
*
|
|
5
|
+
* Only loaded on Node >= 12.2 where module.createRequire exists.
|
|
6
|
+
* On older Node, toPath.ts skips this and falls back to resolve.sync().
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Resolve a module specifier using the exports field in package.json
|
|
10
|
+
* Falls back to legacy main/module fields if exports is not present
|
|
11
|
+
*/
|
|
12
|
+
export default function resolveWithExports(specifier: string, basedir: string, conditions?: string[]): string | null;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight ESM exports field resolver
|
|
3
|
+
* Uses resolve.exports (952 bytes) instead of import-meta-resolve (64KB)
|
|
4
|
+
*
|
|
5
|
+
* Only loaded on Node >= 12.2 where module.createRequire exists.
|
|
6
|
+
* On older Node, toPath.ts skips this and falls back to resolve.sync().
|
|
7
|
+
*/ import Module from 'module';
|
|
8
|
+
import * as resolve from 'resolve';
|
|
9
|
+
var _resolve_default;
|
|
10
|
+
const resolveSync = ((_resolve_default = resolve.default) !== null && _resolve_default !== void 0 ? _resolve_default : resolve).sync;
|
|
11
|
+
let _resolveExports = null;
|
|
12
|
+
function getResolveExports() {
|
|
13
|
+
if (_resolveExports === null) {
|
|
14
|
+
try {
|
|
15
|
+
// Use dynamic require to avoid loading on older Node versions
|
|
16
|
+
const _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;
|
|
17
|
+
_resolveExports = _require('resolve.exports');
|
|
18
|
+
} catch (_) {
|
|
19
|
+
// If resolve.exports fails to load, return null
|
|
20
|
+
// This shouldn't happen on Node >= 12.2, but handle gracefully
|
|
21
|
+
_resolveExports = null;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return _resolveExports;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Extract the subpath from a specifier
|
|
28
|
+
* "lodash/get" → "./get"
|
|
29
|
+
* "react" → "."
|
|
30
|
+
* "@scope/pkg/foo" → "./foo"
|
|
31
|
+
*/ function getSubpath(specifier) {
|
|
32
|
+
const parts = specifier.split('/');
|
|
33
|
+
const pkgName = specifier[0] === '@' ? parts.slice(0, 2).join('/') : parts[0];
|
|
34
|
+
const remainder = specifier.slice(pkgName.length);
|
|
35
|
+
return remainder ? `.${remainder}` : '.';
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Resolve a module specifier using the exports field in package.json
|
|
39
|
+
* Falls back to legacy main/module fields if exports is not present
|
|
40
|
+
*/ export default function resolveWithExports(specifier, basedir, conditions = [
|
|
41
|
+
'node',
|
|
42
|
+
'import'
|
|
43
|
+
]) {
|
|
44
|
+
const resolveExportsMod = getResolveExports();
|
|
45
|
+
if (!resolveExportsMod) {
|
|
46
|
+
// resolve.exports not available, return null to trigger fallback
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
const { exports: resolveExportsFn, legacy } = resolveExportsMod;
|
|
50
|
+
const subpath = getSubpath(specifier);
|
|
51
|
+
try {
|
|
52
|
+
return resolveSync(specifier, {
|
|
53
|
+
basedir,
|
|
54
|
+
extensions: [
|
|
55
|
+
'.js',
|
|
56
|
+
'.json',
|
|
57
|
+
'.node',
|
|
58
|
+
'.mjs'
|
|
59
|
+
],
|
|
60
|
+
packageFilter: (pkg)=>{
|
|
61
|
+
// Try exports field first
|
|
62
|
+
try {
|
|
63
|
+
const resolved = resolveExportsFn(pkg, subpath, {
|
|
64
|
+
conditions
|
|
65
|
+
});
|
|
66
|
+
if (resolved === null || resolved === void 0 ? void 0 : resolved[0]) {
|
|
67
|
+
pkg.main = resolved[0];
|
|
68
|
+
return pkg;
|
|
69
|
+
}
|
|
70
|
+
} catch (_) {
|
|
71
|
+
// exports field parsing failed, try legacy
|
|
72
|
+
}
|
|
73
|
+
// Try legacy main/module fields
|
|
74
|
+
try {
|
|
75
|
+
const legacyMain = legacy(pkg);
|
|
76
|
+
if (legacyMain) {
|
|
77
|
+
pkg.main = legacyMain;
|
|
78
|
+
}
|
|
79
|
+
} catch (_) {
|
|
80
|
+
// legacy parsing failed, use original pkg
|
|
81
|
+
}
|
|
82
|
+
return pkg;
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
} catch (_) {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/resolve-with-exports.ts"],"sourcesContent":["/**\n * Lightweight ESM exports field resolver\n * Uses resolve.exports (952 bytes) instead of import-meta-resolve (64KB)\n *\n * Only loaded on Node >= 12.2 where module.createRequire exists.\n * On older Node, toPath.ts skips this and falls back to resolve.sync().\n */\n\nimport Module from 'module';\nimport * as resolve from 'resolve';\n\nconst resolveSync = (resolve.default ?? resolve).sync;\n\n// Lazy-load resolve.exports to avoid requiring it on older Node versions\n// resolve.exports requires Node >= 10, but this code only runs on Node >= 12.2\ntype ResolveExportsModule = typeof import('resolve.exports');\nlet _resolveExports: ResolveExportsModule | null = null;\n\nfunction getResolveExports(): ResolveExportsModule | null {\n if (_resolveExports === null) {\n try {\n // Use dynamic require to avoid loading on older Node versions\n const _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n _resolveExports = _require('resolve.exports') as ResolveExportsModule;\n } catch (_) {\n // If resolve.exports fails to load, return null\n // This shouldn't happen on Node >= 12.2, but handle gracefully\n _resolveExports = null;\n }\n }\n return _resolveExports;\n}\n\n/**\n * Extract the subpath from a specifier\n * \"lodash/get\" → \"./get\"\n * \"react\" → \".\"\n * \"@scope/pkg/foo\" → \"./foo\"\n */\nfunction getSubpath(specifier: string): 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 return remainder ? `.${remainder}` : '.';\n}\n\n/**\n * Resolve a module specifier using the exports field in package.json\n * Falls back to legacy main/module fields if exports is not present\n */\nexport default function resolveWithExports(specifier: string, basedir: string, conditions: string[] = ['node', 'import']): string | null {\n const resolveExportsMod = getResolveExports();\n if (!resolveExportsMod) {\n // resolve.exports not available, return null to trigger fallback\n return null;\n }\n\n const { exports: resolveExportsFn, legacy } = resolveExportsMod;\n const subpath = getSubpath(specifier);\n\n try {\n return resolveSync(specifier, {\n basedir,\n extensions: ['.js', '.json', '.node', '.mjs'],\n packageFilter: (pkg) => {\n // Try exports field first\n try {\n const resolved = resolveExportsFn(pkg, subpath, { conditions });\n if (resolved?.[0]) {\n pkg.main = resolved[0];\n return pkg;\n }\n } catch (_) {\n // exports field parsing failed, try legacy\n }\n\n // Try legacy main/module fields\n try {\n const legacyMain = legacy(pkg);\n if (legacyMain) {\n pkg.main = legacyMain;\n }\n } catch (_) {\n // legacy parsing failed, use original pkg\n }\n\n return pkg;\n },\n });\n } catch (_) {\n return null;\n }\n}\n"],"names":["Module","resolve","resolveSync","default","sync","_resolveExports","getResolveExports","_require","require","createRequire","url","_","getSubpath","specifier","parts","split","pkgName","slice","join","remainder","length","resolveWithExports","basedir","conditions","resolveExportsMod","exports","resolveExportsFn","legacy","subpath","extensions","packageFilter","pkg","resolved","main","legacyMain"],"mappings":"AAAA;;;;;;CAMC,GAED,OAAOA,YAAY,SAAS;AAC5B,YAAYC,aAAa,UAAU;IAEdA;AAArB,MAAMC,cAAc,AAACD,CAAAA,CAAAA,mBAAAA,QAAQE,OAAO,cAAfF,8BAAAA,mBAAmBA,OAAM,EAAGG,IAAI;AAKrD,IAAIC,kBAA+C;AAEnD,SAASC;IACP,IAAID,oBAAoB,MAAM;QAC5B,IAAI;YACF,8DAA8D;YAC9D,MAAME,WAAW,OAAOC,YAAY,cAAcR,OAAOS,aAAa,CAAC,YAAYC,GAAG,IAAIF;YAC1FH,kBAAkBE,SAAS;QAC7B,EAAE,OAAOI,GAAG;YACV,gDAAgD;YAChD,+DAA+D;YAC/DN,kBAAkB;QACpB;IACF;IACA,OAAOA;AACT;AAEA;;;;;CAKC,GACD,SAASO,WAAWC,SAAiB;IACnC,MAAMC,QAAQD,UAAUE,KAAK,CAAC;IAC9B,MAAMC,UAAUH,SAAS,CAAC,EAAE,KAAK,MAAMC,MAAMG,KAAK,CAAC,GAAG,GAAGC,IAAI,CAAC,OAAOJ,KAAK,CAAC,EAAE;IAC7E,MAAMK,YAAYN,UAAUI,KAAK,CAACD,QAAQI,MAAM;IAChD,OAAOD,YAAY,CAAC,CAAC,EAAEA,WAAW,GAAG;AACvC;AAEA;;;CAGC,GACD,eAAe,SAASE,mBAAmBR,SAAiB,EAAES,OAAe,EAAEC,aAAuB;IAAC;IAAQ;CAAS;IACtH,MAAMC,oBAAoBlB;IAC1B,IAAI,CAACkB,mBAAmB;QACtB,iEAAiE;QACjE,OAAO;IACT;IAEA,MAAM,EAAEC,SAASC,gBAAgB,EAAEC,MAAM,EAAE,GAAGH;IAC9C,MAAMI,UAAUhB,WAAWC;IAE3B,IAAI;QACF,OAAOX,YAAYW,WAAW;YAC5BS;YACAO,YAAY;gBAAC;gBAAO;gBAAS;gBAAS;aAAO;YAC7CC,eAAe,CAACC;gBACd,0BAA0B;gBAC1B,IAAI;oBACF,MAAMC,WAAWN,iBAAiBK,KAAKH,SAAS;wBAAEL;oBAAW;oBAC7D,IAAIS,qBAAAA,+BAAAA,QAAU,CAAC,EAAE,EAAE;wBACjBD,IAAIE,IAAI,GAAGD,QAAQ,CAAC,EAAE;wBACtB,OAAOD;oBACT;gBACF,EAAE,OAAOpB,GAAG;gBACV,2CAA2C;gBAC7C;gBAEA,gCAAgC;gBAChC,IAAI;oBACF,MAAMuB,aAAaP,OAAOI;oBAC1B,IAAIG,YAAY;wBACdH,IAAIE,IAAI,GAAGC;oBACb;gBACF,EAAE,OAAOvB,GAAG;gBACV,0CAA0C;gBAC5C;gBAEA,OAAOoB;YACT;QACF;IACF,EAAE,OAAOpB,GAAG;QACV,OAAO;IACT;AACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
|
-
import find from 'lodash.find';
|
|
3
2
|
import path from 'path';
|
|
3
|
+
import { arrayFind } from './compat.js';
|
|
4
4
|
import { extensions, moduleRegEx, typeFileRegEx } from './constants.js';
|
|
5
5
|
import toPath from './toPath.js';
|
|
6
6
|
const indexExtensions = extensions.map((x)=>`index${x}`);
|
|
@@ -13,13 +13,13 @@ export default function resolveFileSync(specifier, context) {
|
|
|
13
13
|
try {
|
|
14
14
|
if (stat && stat.isDirectory() || specifier[specifier.length - 1] === '/') {
|
|
15
15
|
const items = fs.readdirSync(filePath);
|
|
16
|
-
const item =
|
|
16
|
+
const item = arrayFind(indexExtensions, (x)=>items.indexOf(x) !== -1);
|
|
17
17
|
if (item) return path.join(filePath, item);
|
|
18
18
|
} else if (!stat && !moduleRegEx.test(specifier)) {
|
|
19
19
|
const ext = path.extname(filePath);
|
|
20
20
|
const basename = ext ? path.basename(filePath).slice(0, -ext.length) : path.basename(filePath);
|
|
21
21
|
const items = fs.readdirSync(path.dirname(filePath));
|
|
22
|
-
const item =
|
|
22
|
+
const item = arrayFind(items, (x)=>{
|
|
23
23
|
if (typeFileRegEx.test(x)) return false;
|
|
24
24
|
const extTest = path.extname(x);
|
|
25
25
|
const basenameTest = extTest ? path.basename(x).slice(0, -extTest.length) : path.basename(x);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/resolveFileSync.ts"],"sourcesContent":["import fs from 'fs';\nimport
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/resolveFileSync.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport { arrayFind } from './compat.ts';\nimport { extensions, moduleRegEx, typeFileRegEx } from './constants.ts';\nimport toPath from './toPath.ts';\nimport type { Context } from './types.ts';\n\nconst indexExtensions = extensions.map((x) => `index${x}`);\n\nexport default function resolveFileSync(specifier: string, context?: Context): string {\n const filePath = toPath(specifier, context);\n let stat: fs.Stats;\n try {\n stat = fs.statSync(filePath);\n } catch (_err) {}\n try {\n if ((stat && stat.isDirectory()) || specifier[specifier.length - 1] === '/') {\n const items = fs.readdirSync(filePath);\n const item = arrayFind(indexExtensions, (x) => items.indexOf(x) !== -1);\n if (item) return path.join(filePath, item);\n } else if (!stat && !moduleRegEx.test(specifier)) {\n const ext = path.extname(filePath);\n const basename = ext ? path.basename(filePath).slice(0, -ext.length) : path.basename(filePath);\n const items = fs.readdirSync(path.dirname(filePath));\n const item = arrayFind(items, (x) => {\n if (typeFileRegEx.test(x)) return false;\n const extTest = path.extname(x);\n const basenameTest = extTest ? path.basename(x).slice(0, -extTest.length) : path.basename(x);\n return basename === basenameTest;\n });\n if (item) return path.join(path.dirname(filePath), item);\n }\n // return what was found\n return stat ? filePath : null;\n } catch (_err) {\n return null;\n }\n}\n"],"names":["fs","path","arrayFind","extensions","moduleRegEx","typeFileRegEx","toPath","indexExtensions","map","x","resolveFileSync","specifier","context","filePath","stat","statSync","_err","isDirectory","length","items","readdirSync","item","indexOf","join","test","ext","extname","basename","slice","dirname","extTest","basenameTest"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,SAASC,SAAS,QAAQ,cAAc;AACxC,SAASC,UAAU,EAAEC,WAAW,EAAEC,aAAa,QAAQ,iBAAiB;AACxE,OAAOC,YAAY,cAAc;AAGjC,MAAMC,kBAAkBJ,WAAWK,GAAG,CAAC,CAACC,IAAM,CAAC,KAAK,EAAEA,GAAG;AAEzD,eAAe,SAASC,gBAAgBC,SAAiB,EAAEC,OAAiB;IAC1E,MAAMC,WAAWP,OAAOK,WAAWC;IACnC,IAAIE;IACJ,IAAI;QACFA,OAAOd,GAAGe,QAAQ,CAACF;IACrB,EAAE,OAAOG,MAAM,CAAC;IAChB,IAAI;QACF,IAAI,AAACF,QAAQA,KAAKG,WAAW,MAAON,SAAS,CAACA,UAAUO,MAAM,GAAG,EAAE,KAAK,KAAK;YAC3E,MAAMC,QAAQnB,GAAGoB,WAAW,CAACP;YAC7B,MAAMQ,OAAOnB,UAAUK,iBAAiB,CAACE,IAAMU,MAAMG,OAAO,CAACb,OAAO,CAAC;YACrE,IAAIY,MAAM,OAAOpB,KAAKsB,IAAI,CAACV,UAAUQ;QACvC,OAAO,IAAI,CAACP,QAAQ,CAACV,YAAYoB,IAAI,CAACb,YAAY;YAChD,MAAMc,MAAMxB,KAAKyB,OAAO,CAACb;YACzB,MAAMc,WAAWF,MAAMxB,KAAK0B,QAAQ,CAACd,UAAUe,KAAK,CAAC,GAAG,CAACH,IAAIP,MAAM,IAAIjB,KAAK0B,QAAQ,CAACd;YACrF,MAAMM,QAAQnB,GAAGoB,WAAW,CAACnB,KAAK4B,OAAO,CAAChB;YAC1C,MAAMQ,OAAOnB,UAAUiB,OAAO,CAACV;gBAC7B,IAAIJ,cAAcmB,IAAI,CAACf,IAAI,OAAO;gBAClC,MAAMqB,UAAU7B,KAAKyB,OAAO,CAACjB;gBAC7B,MAAMsB,eAAeD,UAAU7B,KAAK0B,QAAQ,CAAClB,GAAGmB,KAAK,CAAC,GAAG,CAACE,QAAQZ,MAAM,IAAIjB,KAAK0B,QAAQ,CAAClB;gBAC1F,OAAOkB,aAAaI;YACtB;YACA,IAAIV,MAAM,OAAOpB,KAAKsB,IAAI,CAACtB,KAAK4B,OAAO,CAAChB,WAAWQ;QACrD;QACA,wBAAwB;QACxB,OAAOP,OAAOD,WAAW;IAC3B,EAAE,OAAOG,MAAM;QACb,OAAO;IACT;AACF"}
|
package/dist/esm/toPath.js
CHANGED
|
@@ -5,13 +5,12 @@ import * as resolve from 'resolve';
|
|
|
5
5
|
import url from 'url';
|
|
6
6
|
import { stringStartsWith } from './compat.js';
|
|
7
7
|
import { moduleRegEx } from './constants.js';
|
|
8
|
-
import
|
|
8
|
+
import resolveWithExports from './lib/resolve-with-exports.js';
|
|
9
9
|
import * as urlPolyfills from './lib/urlFileUrl.js';
|
|
10
10
|
var _resolve_default;
|
|
11
11
|
const resolveSync = ((_resolve_default = resolve.default) !== null && _resolve_default !== void 0 ? _resolve_default : resolve).sync;
|
|
12
12
|
const useCJS = !module.createRequire;
|
|
13
13
|
const fileURLToPath = url.fileURLToPath || urlPolyfills.fileURLToPath;
|
|
14
|
-
const pathToFileURL = url.pathToFileURL || urlPolyfills.pathToFileURL;
|
|
15
14
|
function getParentPath(context) {
|
|
16
15
|
if (context.parentPath) return path.dirname(context.parentPath);
|
|
17
16
|
return context.parentURL ? path.dirname(toPath(context.parentURL)) : process.cwd();
|
|
@@ -27,8 +26,8 @@ export default function toPath(specifier, context) {
|
|
|
27
26
|
const parentPath = context ? getParentPath(context) : process.cwd();
|
|
28
27
|
if (!useCJS) {
|
|
29
28
|
try {
|
|
30
|
-
const
|
|
31
|
-
if (
|
|
29
|
+
const entryPath = resolveWithExports(specifier, parentPath);
|
|
30
|
+
if (entryPath) return entryPath;
|
|
32
31
|
} catch (_) {
|
|
33
32
|
/* it may fail due to commonjs edge cases */ }
|
|
34
33
|
}
|
package/dist/esm/toPath.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/toPath.ts"],"sourcesContent":["import isAbsolute from 'is-absolute';\nimport module from 'module';\nimport path from 'path';\nimport * as resolve from 'resolve';\nimport url from 'url';\n\nimport { stringStartsWith } from './compat.ts';\nimport { moduleRegEx } from './constants.ts';\nimport
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/toPath.ts"],"sourcesContent":["import isAbsolute from 'is-absolute';\nimport module from 'module';\nimport path from 'path';\nimport * as resolve from 'resolve';\nimport url from 'url';\n\nimport { stringStartsWith } from './compat.ts';\nimport { moduleRegEx } from './constants.ts';\nimport resolveWithExports from './lib/resolve-with-exports.ts';\nimport * as urlPolyfills from './lib/urlFileUrl.ts';\nimport type { Context } from './types.ts';\n\nconst resolveSync = (resolve.default ?? resolve).sync;\n\nconst useCJS = !module.createRequire;\nconst fileURLToPath = url.fileURLToPath || urlPolyfills.fileURLToPath;\n\nfunction getParentPath(context: Context): string {\n if (context.parentPath) return path.dirname(context.parentPath);\n return context.parentURL ? path.dirname(toPath(context.parentURL)) : process.cwd();\n}\n\nexport default function toPath(specifier: string, context?: Context): string {\n if (stringStartsWith(specifier, 'file:')) return fileURLToPath(specifier);\n if (isAbsolute(specifier)) return specifier;\n if (specifier[0] === '.') {\n const parentPath = context ? getParentPath(context) : process.cwd();\n return path.join(parentPath, specifier);\n }\n if (moduleRegEx.test(specifier)) {\n const parentPath = context ? getParentPath(context) : process.cwd();\n if (!useCJS) {\n try {\n const entryPath = resolveWithExports(specifier, parentPath);\n if (entryPath) return entryPath;\n } catch (_) {\n /* it may fail due to commonjs edge cases */\n }\n }\n const entryPath = resolveSync(specifier, {\n basedir: parentPath,\n extensions: ['.js', '.json', '.node', '.mjs'],\n });\n if (entryPath) return entryPath;\n }\n\n return specifier;\n}\n"],"names":["isAbsolute","module","path","resolve","url","stringStartsWith","moduleRegEx","resolveWithExports","urlPolyfills","resolveSync","default","sync","useCJS","createRequire","fileURLToPath","getParentPath","context","parentPath","dirname","parentURL","toPath","process","cwd","specifier","join","test","entryPath","_","basedir","extensions"],"mappings":"AAAA,OAAOA,gBAAgB,cAAc;AACrC,OAAOC,YAAY,SAAS;AAC5B,OAAOC,UAAU,OAAO;AACxB,YAAYC,aAAa,UAAU;AACnC,OAAOC,SAAS,MAAM;AAEtB,SAASC,gBAAgB,QAAQ,cAAc;AAC/C,SAASC,WAAW,QAAQ,iBAAiB;AAC7C,OAAOC,wBAAwB,gCAAgC;AAC/D,YAAYC,kBAAkB,sBAAsB;IAG/BL;AAArB,MAAMM,cAAc,AAACN,CAAAA,CAAAA,mBAAAA,QAAQO,OAAO,cAAfP,8BAAAA,mBAAmBA,OAAM,EAAGQ,IAAI;AAErD,MAAMC,SAAS,CAACX,OAAOY,aAAa;AACpC,MAAMC,gBAAgBV,IAAIU,aAAa,IAAIN,aAAaM,aAAa;AAErE,SAASC,cAAcC,OAAgB;IACrC,IAAIA,QAAQC,UAAU,EAAE,OAAOf,KAAKgB,OAAO,CAACF,QAAQC,UAAU;IAC9D,OAAOD,QAAQG,SAAS,GAAGjB,KAAKgB,OAAO,CAACE,OAAOJ,QAAQG,SAAS,KAAKE,QAAQC,GAAG;AAClF;AAEA,eAAe,SAASF,OAAOG,SAAiB,EAAEP,OAAiB;IACjE,IAAIX,iBAAiBkB,WAAW,UAAU,OAAOT,cAAcS;IAC/D,IAAIvB,WAAWuB,YAAY,OAAOA;IAClC,IAAIA,SAAS,CAAC,EAAE,KAAK,KAAK;QACxB,MAAMN,aAAaD,UAAUD,cAAcC,WAAWK,QAAQC,GAAG;QACjE,OAAOpB,KAAKsB,IAAI,CAACP,YAAYM;IAC/B;IACA,IAAIjB,YAAYmB,IAAI,CAACF,YAAY;QAC/B,MAAMN,aAAaD,UAAUD,cAAcC,WAAWK,QAAQC,GAAG;QACjE,IAAI,CAACV,QAAQ;YACX,IAAI;gBACF,MAAMc,YAAYnB,mBAAmBgB,WAAWN;gBAChD,IAAIS,WAAW,OAAOA;YACxB,EAAE,OAAOC,GAAG;YACV,0CAA0C,GAC5C;QACF;QACA,MAAMD,YAAYjB,YAAYc,WAAW;YACvCK,SAASX;YACTY,YAAY;gBAAC;gBAAO;gBAAS;gBAAS;aAAO;QAC/C;QACA,IAAIH,WAAW,OAAOA;IACxB;IAEA,OAAOH;AACT"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-swc-transform",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.8.0",
|
|
4
4
|
"description": "Typescript transformers for swc. Supports Node >= 0.8",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"matcher",
|
|
@@ -44,35 +44,34 @@
|
|
|
44
44
|
"version": "tsds version"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@swc/core": "^1.15.
|
|
48
|
-
"core-js-pure": "^3.
|
|
49
|
-
"exit-compat": "^1.0.
|
|
47
|
+
"@swc/core": "^1.15.5",
|
|
48
|
+
"core-js-pure": "^3.20.0",
|
|
49
|
+
"exit-compat": "^1.0.0",
|
|
50
50
|
"fs-iterator": "^6.1.12",
|
|
51
51
|
"install-optional": "^1.0.20",
|
|
52
52
|
"is-absolute": "^1.0.0",
|
|
53
53
|
"lodash.debounce": "^4.0.8",
|
|
54
|
-
"
|
|
55
|
-
"mkdirp-classic": "^0.5.3",
|
|
54
|
+
"mkdirp-classic": "^0.5.2",
|
|
56
55
|
"node-version-call": "^1.9.19",
|
|
57
|
-
"queue-cb": "^1.
|
|
58
|
-
"read-tsconfig-sync": "^1.
|
|
59
|
-
"resolve": "^1.
|
|
56
|
+
"queue-cb": "^1.0.0",
|
|
57
|
+
"read-tsconfig-sync": "^1.0.3",
|
|
58
|
+
"resolve": "^1.3.1",
|
|
59
|
+
"resolve.exports": "^2.0.3",
|
|
60
60
|
"test-match": "^1.1.4",
|
|
61
|
-
"ts-node": "^10.9.
|
|
61
|
+
"ts-node": "^10.9.0",
|
|
62
62
|
"typescript": "^5.9.3"
|
|
63
63
|
},
|
|
64
64
|
"devDependencies": {
|
|
65
|
-
"@types/mocha": "
|
|
66
|
-
"@types/node": "
|
|
67
|
-
"core-js": "^3.47.0",
|
|
65
|
+
"@types/mocha": "*",
|
|
66
|
+
"@types/node": "*",
|
|
68
67
|
"cr": "^0.1.0",
|
|
69
|
-
"cross-spawn-cb": "^2.
|
|
70
|
-
"fs-remove-compat": "^0.
|
|
71
|
-
"node-version-use": "
|
|
72
|
-
"pinkie-promise": "
|
|
68
|
+
"cross-spawn-cb": "^2.0.0",
|
|
69
|
+
"fs-remove-compat": "^1.0.0",
|
|
70
|
+
"node-version-use": "*",
|
|
71
|
+
"pinkie-promise": "*",
|
|
73
72
|
"react": "^19.2.3",
|
|
74
|
-
"ts-dev-stack": "
|
|
75
|
-
"tsds-config": "
|
|
73
|
+
"ts-dev-stack": "*",
|
|
74
|
+
"tsds-config": "*"
|
|
76
75
|
},
|
|
77
76
|
"engines": {
|
|
78
77
|
"node": ">=0.8"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function importMetaResolve(specifier: string, url: URL): string;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function importMetaResolve(specifier: string, url: URL): string;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return importMetaResolve;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _module = /*#__PURE__*/ _interop_require_default(require("module"));
|
|
12
|
-
function _interop_require_default(obj) {
|
|
13
|
-
return obj && obj.__esModule ? obj : {
|
|
14
|
-
default: obj
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
var _require = typeof require === 'undefined' ? _module.default.createRequire(require("url").pathToFileURL(__filename).toString()) : require;
|
|
18
|
-
var resolve = _require('../../../assets/import-meta-resolve.cjs').resolve;
|
|
19
|
-
function importMetaResolve(specifier, url) {
|
|
20
|
-
return resolve(specifier, url);
|
|
21
|
-
}
|
|
22
|
-
/* 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 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/import-meta-resolve.ts"],"sourcesContent":["import Module from 'module';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\nconst resolve = _require('../../../assets/import-meta-resolve.cjs').resolve;\n\nexport default function importMetaResolve(specifier: string, url: URL): string {\n return resolve(specifier, url);\n}\n"],"names":["importMetaResolve","_require","require","Module","createRequire","resolve","specifier","url"],"mappings":";;;;+BAKA;;;eAAwBA;;;6DALL;;;;;;AAEnB,IAAMC,WAAW,OAAOC,YAAY,cAAcC,eAAM,CAACC,aAAa,CAAC,uDAAmBF;AAC1F,IAAMG,UAAUJ,SAAS,2CAA2CI,OAAO;AAE5D,SAASL,kBAAkBM,SAAiB,EAAEC,GAAQ;IACnE,OAAOF,QAAQC,WAAWC;AAC5B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function importMetaResolve(specifier: string, url: URL): string;
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import Module from 'module';
|
|
2
|
-
const _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;
|
|
3
|
-
const resolve = _require('../../../assets/import-meta-resolve.cjs').resolve;
|
|
4
|
-
export default function importMetaResolve(specifier, url) {
|
|
5
|
-
return resolve(specifier, url);
|
|
6
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/typescript/ts-swc-transform/src/lib/import-meta-resolve.ts"],"sourcesContent":["import Module from 'module';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\nconst resolve = _require('../../../assets/import-meta-resolve.cjs').resolve;\n\nexport default function importMetaResolve(specifier: string, url: URL): string {\n return resolve(specifier, url);\n}\n"],"names":["Module","_require","require","createRequire","url","resolve","importMetaResolve","specifier"],"mappings":"AAAA,OAAOA,YAAY,SAAS;AAE5B,MAAMC,WAAW,OAAOC,YAAY,cAAcF,OAAOG,aAAa,CAAC,YAAYC,GAAG,IAAIF;AAC1F,MAAMG,UAAUJ,SAAS,2CAA2CI,OAAO;AAE3E,eAAe,SAASC,kBAAkBC,SAAiB,EAAEH,GAAQ;IACnE,OAAOC,QAAQE,WAAWH;AAC5B"}
|