rolldown-require 2.0.1 → 2.0.2
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/index.d.ts +8 -1
- package/dist/index.mjs +324 -790
- package/package.json +3 -5
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/bundler.ts
|
|
2
|
-
import
|
|
2
|
+
import path4 from "path";
|
|
3
3
|
import { pathToFileURL as pathToFileURL2 } from "url";
|
|
4
4
|
import { rolldown } from "rolldown";
|
|
5
5
|
|
|
@@ -25,299 +25,37 @@ function collectReferencedModules(bundle, fileName, allModules, analyzedModules
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
// src/externalize.ts
|
|
28
|
-
import
|
|
28
|
+
import fs3 from "fs";
|
|
29
29
|
import { createRequire as createRequire3 } from "module";
|
|
30
|
-
import
|
|
31
|
-
import { pathToFileURL } from "url";
|
|
32
|
-
|
|
33
|
-
// src/config.ts
|
|
34
|
-
var configDefaults = Object.freeze({
|
|
35
|
-
resolve: {
|
|
36
|
-
extensions: [".mjs", ".js", ".mts", ".ts", ".jsx", ".tsx", ".json"]
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
var defaultGetOutputFile = (filepath, _format) => {
|
|
40
|
-
return filepath;
|
|
41
|
-
};
|
|
30
|
+
import path3 from "path";
|
|
31
|
+
import { fileURLToPath, pathToFileURL } from "url";
|
|
42
32
|
|
|
43
|
-
// src/
|
|
44
|
-
import
|
|
45
|
-
import
|
|
46
|
-
import {
|
|
47
|
-
import
|
|
33
|
+
// src/utils.ts
|
|
34
|
+
import { exec } from "child_process";
|
|
35
|
+
import fs2 from "fs";
|
|
36
|
+
import { builtinModules, createRequire as createRequire2 } from "module";
|
|
37
|
+
import path2 from "path";
|
|
38
|
+
import process3 from "process";
|
|
39
|
+
import { createFilter as _createFilter } from "@rollup/pluginutils";
|
|
48
40
|
|
|
49
41
|
// src/constants.ts
|
|
50
42
|
import { readFileSync } from "fs";
|
|
51
43
|
var { version } = JSON.parse(
|
|
52
44
|
readFileSync(new URL("../package.json", import.meta.url)).toString()
|
|
53
45
|
);
|
|
54
|
-
var DEV_PROD_CONDITION = `development|production`;
|
|
55
|
-
var OPTIMIZABLE_ENTRY_RE = /\.[cm]?[jt]s$/;
|
|
56
|
-
var SPECIAL_QUERY_RE = /[?&](?:worker|sharedworker|raw|url)\b/;
|
|
57
|
-
|
|
58
|
-
// src/external.ts
|
|
59
|
-
import path from "path";
|
|
60
|
-
function canExternalizeFile(filePath) {
|
|
61
|
-
const ext = path.extname(filePath);
|
|
62
|
-
return !ext || ext === ".js" || ext === ".mjs" || ext === ".cjs";
|
|
63
|
-
}
|
|
64
46
|
|
|
65
47
|
// src/packages.ts
|
|
66
|
-
import fs2 from "fs";
|
|
67
|
-
import { createRequire as createRequire2 } from "module";
|
|
68
|
-
import path3 from "path";
|
|
69
|
-
import process3 from "process";
|
|
70
|
-
|
|
71
|
-
// src/utils.ts
|
|
72
|
-
import { exec } from "child_process";
|
|
73
48
|
import fs from "fs";
|
|
74
|
-
import {
|
|
75
|
-
import
|
|
76
|
-
import process2 from "process";
|
|
77
|
-
import { createFilter as _createFilter } from "@rollup/pluginutils";
|
|
78
|
-
|
|
79
|
-
// src/sharedUtils.ts
|
|
49
|
+
import { createRequire } from "module";
|
|
50
|
+
import path from "path";
|
|
80
51
|
import process from "process";
|
|
81
|
-
var isWindows = typeof process !== "undefined" && process.platform === "win32";
|
|
82
|
-
var windowsSlashRE = /\\/g;
|
|
83
|
-
function slash(p) {
|
|
84
|
-
return p.replace(windowsSlashRE, "/");
|
|
85
|
-
}
|
|
86
|
-
var postfixRE = /[?#].*$/;
|
|
87
|
-
function cleanUrl(url) {
|
|
88
|
-
return url.replace(postfixRE, "");
|
|
89
|
-
}
|
|
90
|
-
function splitFileAndPostfix(path11) {
|
|
91
|
-
const file = cleanUrl(path11);
|
|
92
|
-
return { file, postfix: path11.slice(file.length) };
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// src/utils.ts
|
|
96
|
-
var createFilter = _createFilter;
|
|
97
|
-
var NODE_BUILTIN_NAMESPACE = "node:";
|
|
98
|
-
var NPM_BUILTIN_NAMESPACE = "npm:";
|
|
99
|
-
var BUN_BUILTIN_NAMESPACE = "bun:";
|
|
100
|
-
var nodeBuiltins = builtinModules.filter((id) => !id.includes(":"));
|
|
101
|
-
var isBuiltinCache = /* @__PURE__ */ new WeakMap();
|
|
102
|
-
function isBuiltin(builtins, id) {
|
|
103
|
-
let isBuiltin2 = isBuiltinCache.get(builtins);
|
|
104
|
-
if (!isBuiltin2) {
|
|
105
|
-
isBuiltin2 = createIsBuiltin(builtins);
|
|
106
|
-
isBuiltinCache.set(builtins, isBuiltin2);
|
|
107
|
-
}
|
|
108
|
-
return isBuiltin2(id);
|
|
109
|
-
}
|
|
110
|
-
function createIsBuiltin(builtins) {
|
|
111
|
-
const plainBuiltinsSet = new Set(
|
|
112
|
-
builtins.filter((builtin) => typeof builtin === "string")
|
|
113
|
-
);
|
|
114
|
-
const regexBuiltins = builtins.filter(
|
|
115
|
-
(builtin) => typeof builtin !== "string"
|
|
116
|
-
);
|
|
117
|
-
return (id) => plainBuiltinsSet.has(id) || regexBuiltins.some((regexp) => regexp.test(id));
|
|
118
|
-
}
|
|
119
|
-
var nodeLikeBuiltins = [
|
|
120
|
-
...nodeBuiltins,
|
|
121
|
-
new RegExp(`^${NODE_BUILTIN_NAMESPACE}`),
|
|
122
|
-
new RegExp(`^${NPM_BUILTIN_NAMESPACE}`),
|
|
123
|
-
new RegExp(`^${BUN_BUILTIN_NAMESPACE}`)
|
|
124
|
-
];
|
|
125
|
-
function isNodeLikeBuiltin(id) {
|
|
126
|
-
return isBuiltin(nodeLikeBuiltins, id);
|
|
127
|
-
}
|
|
128
|
-
function isNodeBuiltin(id) {
|
|
129
|
-
if (id.startsWith(NODE_BUILTIN_NAMESPACE)) {
|
|
130
|
-
return true;
|
|
131
|
-
}
|
|
132
|
-
return nodeBuiltins.includes(id);
|
|
133
|
-
}
|
|
134
|
-
function isInNodeModules(id) {
|
|
135
|
-
return id.includes("node_modules");
|
|
136
|
-
}
|
|
137
|
-
function isOptimizable(id, optimizeDeps) {
|
|
138
|
-
const { extensions } = optimizeDeps;
|
|
139
|
-
return OPTIMIZABLE_ENTRY_RE.test(id) || (extensions?.some((ext) => id.endsWith(ext)) ?? false);
|
|
140
|
-
}
|
|
141
|
-
var bareImportRE = /^(?![a-z]:)[\w@](?!.*:\/\/)/i;
|
|
142
|
-
var deepImportRE = /^([^@][^/]*)\/|^(@[^/]+\/[^/]+)\//;
|
|
143
|
-
function normalizePath(id) {
|
|
144
|
-
return path2.posix.normalize(isWindows ? slash(id) : id);
|
|
145
|
-
}
|
|
146
|
-
function injectQuery(url, queryToInject) {
|
|
147
|
-
const { file, postfix } = splitFileAndPostfix(url);
|
|
148
|
-
const normalizedFile = isWindows ? slash(file) : file;
|
|
149
|
-
return `${normalizedFile}?${queryToInject}${postfix[0] === "?" ? `&${postfix.slice(1)}` : (
|
|
150
|
-
/* hash only */
|
|
151
|
-
postfix
|
|
152
|
-
)}`;
|
|
153
|
-
}
|
|
154
|
-
function isObject(value) {
|
|
155
|
-
return Object.prototype.toString.call(value) === "[object Object]";
|
|
156
|
-
}
|
|
157
|
-
function tryStatSync(file) {
|
|
158
|
-
try {
|
|
159
|
-
return fs.statSync(file, { throwIfNoEntry: false });
|
|
160
|
-
} catch {
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
function isFilePathESM(filePath, packageCache) {
|
|
164
|
-
if (/\.m[jt]s$/.test(filePath)) {
|
|
165
|
-
return true;
|
|
166
|
-
} else if (/\.c[jt]s$/.test(filePath)) {
|
|
167
|
-
return false;
|
|
168
|
-
} else {
|
|
169
|
-
try {
|
|
170
|
-
const pkg = findNearestPackageData(path2.dirname(filePath), packageCache);
|
|
171
|
-
return pkg?.data.type === "module";
|
|
172
|
-
} catch {
|
|
173
|
-
return false;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
var currentSafeRealpathSync = isWindows ? windowsSafeRealPathSync : fs.realpathSync.native;
|
|
178
|
-
function safeRealpathSync(filePath) {
|
|
179
|
-
return currentSafeRealpathSync(filePath);
|
|
180
|
-
}
|
|
181
|
-
var windowsNetworkMap = /* @__PURE__ */ new Map();
|
|
182
|
-
function windowsMappedRealpathSync(path11) {
|
|
183
|
-
const realPath = fs.realpathSync.native(path11);
|
|
184
|
-
if (realPath.startsWith("\\\\")) {
|
|
185
|
-
for (const [network, volume] of windowsNetworkMap) {
|
|
186
|
-
if (realPath.startsWith(network)) {
|
|
187
|
-
return realPath.replace(network, volume);
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
return realPath;
|
|
192
|
-
}
|
|
193
|
-
var parseNetUseRE = /^\w* +(\w:) +([^ ]+)\s/;
|
|
194
|
-
var firstSafeRealPathSyncRun = false;
|
|
195
|
-
function windowsSafeRealPathSync(path11) {
|
|
196
|
-
if (!firstSafeRealPathSyncRun) {
|
|
197
|
-
optimizeSafeRealPathSync();
|
|
198
|
-
firstSafeRealPathSyncRun = true;
|
|
199
|
-
}
|
|
200
|
-
return fs.realpathSync(path11);
|
|
201
|
-
}
|
|
202
|
-
function optimizeSafeRealPathSync() {
|
|
203
|
-
const nodeVersion = process2.versions.node.split(".").map(Number);
|
|
204
|
-
if (nodeVersion[0] < 18 || nodeVersion[0] === 18 && nodeVersion[1] < 10) {
|
|
205
|
-
currentSafeRealpathSync = fs.realpathSync;
|
|
206
|
-
return;
|
|
207
|
-
}
|
|
208
|
-
try {
|
|
209
|
-
fs.realpathSync.native(path2.resolve("./"));
|
|
210
|
-
} catch (error) {
|
|
211
|
-
if (error.message.includes("EISDIR: illegal operation on a directory")) {
|
|
212
|
-
currentSafeRealpathSync = fs.realpathSync;
|
|
213
|
-
return;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
exec("net use", (error, stdout) => {
|
|
217
|
-
if (error) {
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
const lines = stdout.split("\n");
|
|
221
|
-
for (const line of lines) {
|
|
222
|
-
const m = parseNetUseRE.exec(line);
|
|
223
|
-
if (m) {
|
|
224
|
-
windowsNetworkMap.set(m[2], m[1]);
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
currentSafeRealpathSync = windowsNetworkMap.size === 0 ? fs.realpathSync.native : windowsMappedRealpathSync;
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
function stripBomTag(content) {
|
|
231
|
-
if (content.charCodeAt(0) === 65279) {
|
|
232
|
-
return content.slice(1);
|
|
233
|
-
}
|
|
234
|
-
return content;
|
|
235
|
-
}
|
|
236
|
-
function getNpmPackageName(importPath) {
|
|
237
|
-
const parts = importPath.split("/");
|
|
238
|
-
if (parts[0][0] === "@") {
|
|
239
|
-
if (!parts[1]) {
|
|
240
|
-
return null;
|
|
241
|
-
}
|
|
242
|
-
return `${parts[0]}/${parts[1]}`;
|
|
243
|
-
} else {
|
|
244
|
-
return parts[0];
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
var dynamicImport = async (id, { format }) => {
|
|
248
|
-
const fn = format === "esm" ? (file) => import(file) : true ? createRequire(import.meta.url) : __require;
|
|
249
|
-
return fn(id);
|
|
250
|
-
};
|
|
251
|
-
|
|
252
|
-
// src/packages.ts
|
|
253
52
|
var pnp;
|
|
254
|
-
if (
|
|
53
|
+
if (process.versions.pnp) {
|
|
255
54
|
try {
|
|
256
|
-
pnp =
|
|
55
|
+
pnp = createRequire(import.meta.url)("pnpapi");
|
|
257
56
|
} catch {
|
|
258
57
|
}
|
|
259
58
|
}
|
|
260
|
-
function resolvePackageData(pkgName, basedir, preserveSymlinks = false, packageCache) {
|
|
261
|
-
if (pnp) {
|
|
262
|
-
const cacheKey = getRpdCacheKey(pkgName, basedir, preserveSymlinks);
|
|
263
|
-
if (packageCache?.has(cacheKey)) {
|
|
264
|
-
return packageCache.get(cacheKey);
|
|
265
|
-
}
|
|
266
|
-
try {
|
|
267
|
-
const pkg = pnp.resolveToUnqualified(pkgName, basedir, {
|
|
268
|
-
considerBuiltins: false
|
|
269
|
-
});
|
|
270
|
-
if (!pkg) {
|
|
271
|
-
return null;
|
|
272
|
-
}
|
|
273
|
-
const pkgData = loadPackageData(path3.join(pkg, "package.json"));
|
|
274
|
-
packageCache?.set(cacheKey, pkgData);
|
|
275
|
-
return pkgData;
|
|
276
|
-
} catch {
|
|
277
|
-
return null;
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
const originalBasedir = basedir;
|
|
281
|
-
while (basedir) {
|
|
282
|
-
if (packageCache) {
|
|
283
|
-
const cached = getRpdCache(
|
|
284
|
-
packageCache,
|
|
285
|
-
pkgName,
|
|
286
|
-
basedir,
|
|
287
|
-
originalBasedir,
|
|
288
|
-
preserveSymlinks
|
|
289
|
-
);
|
|
290
|
-
if (cached) {
|
|
291
|
-
return cached;
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
const pkg = path3.join(basedir, "node_modules", pkgName, "package.json");
|
|
295
|
-
try {
|
|
296
|
-
if (fs2.existsSync(pkg)) {
|
|
297
|
-
const pkgPath = preserveSymlinks ? pkg : safeRealpathSync(pkg);
|
|
298
|
-
const pkgData = loadPackageData(pkgPath);
|
|
299
|
-
if (packageCache) {
|
|
300
|
-
setRpdCache(
|
|
301
|
-
packageCache,
|
|
302
|
-
pkgData,
|
|
303
|
-
pkgName,
|
|
304
|
-
basedir,
|
|
305
|
-
originalBasedir,
|
|
306
|
-
preserveSymlinks
|
|
307
|
-
);
|
|
308
|
-
}
|
|
309
|
-
return pkgData;
|
|
310
|
-
}
|
|
311
|
-
} catch {
|
|
312
|
-
}
|
|
313
|
-
const nextBasedir = path3.dirname(basedir);
|
|
314
|
-
if (nextBasedir === basedir) {
|
|
315
|
-
break;
|
|
316
|
-
}
|
|
317
|
-
basedir = nextBasedir;
|
|
318
|
-
}
|
|
319
|
-
return null;
|
|
320
|
-
}
|
|
321
59
|
function findNearestPackageData(basedir, packageCache) {
|
|
322
60
|
const originalBasedir = basedir;
|
|
323
61
|
while (basedir) {
|
|
@@ -327,7 +65,7 @@ function findNearestPackageData(basedir, packageCache) {
|
|
|
327
65
|
return cached;
|
|
328
66
|
}
|
|
329
67
|
}
|
|
330
|
-
const pkgPath =
|
|
68
|
+
const pkgPath = path.join(basedir, "package.json");
|
|
331
69
|
if (tryStatSync(pkgPath)?.isFile()) {
|
|
332
70
|
try {
|
|
333
71
|
const pkgData = loadPackageData(pkgPath);
|
|
@@ -338,7 +76,7 @@ function findNearestPackageData(basedir, packageCache) {
|
|
|
338
76
|
} catch {
|
|
339
77
|
}
|
|
340
78
|
}
|
|
341
|
-
const nextBasedir =
|
|
79
|
+
const nextBasedir = path.dirname(basedir);
|
|
342
80
|
if (nextBasedir === basedir) {
|
|
343
81
|
break;
|
|
344
82
|
}
|
|
@@ -346,16 +84,9 @@ function findNearestPackageData(basedir, packageCache) {
|
|
|
346
84
|
}
|
|
347
85
|
return null;
|
|
348
86
|
}
|
|
349
|
-
function findNearestMainPackageData(basedir, packageCache) {
|
|
350
|
-
const nearestPackage = findNearestPackageData(basedir, packageCache);
|
|
351
|
-
return nearestPackage && (nearestPackage.data.name ? nearestPackage : findNearestMainPackageData(
|
|
352
|
-
path3.dirname(nearestPackage.dir),
|
|
353
|
-
packageCache
|
|
354
|
-
));
|
|
355
|
-
}
|
|
356
87
|
function loadPackageData(pkgPath) {
|
|
357
|
-
const data = JSON.parse(stripBomTag(
|
|
358
|
-
const pkgDir = normalizePath(
|
|
88
|
+
const data = JSON.parse(stripBomTag(fs.readFileSync(pkgPath, "utf-8")));
|
|
89
|
+
const pkgDir = normalizePath(path.dirname(pkgPath));
|
|
359
90
|
const { sideEffects } = data;
|
|
360
91
|
let hasSideEffects;
|
|
361
92
|
if (typeof sideEffects === "boolean") {
|
|
@@ -402,11 +133,11 @@ function getResolveCacheKey(key, options) {
|
|
|
402
133
|
}
|
|
403
134
|
function findNearestNodeModules(basedir) {
|
|
404
135
|
while (basedir) {
|
|
405
|
-
const pkgPath =
|
|
136
|
+
const pkgPath = path.join(basedir, "node_modules");
|
|
406
137
|
if (tryStatSync(pkgPath)?.isDirectory()) {
|
|
407
138
|
return pkgPath;
|
|
408
139
|
}
|
|
409
|
-
const nextBasedir =
|
|
140
|
+
const nextBasedir = path.dirname(basedir);
|
|
410
141
|
if (nextBasedir === basedir) {
|
|
411
142
|
break;
|
|
412
143
|
}
|
|
@@ -414,25 +145,6 @@ function findNearestNodeModules(basedir) {
|
|
|
414
145
|
}
|
|
415
146
|
return null;
|
|
416
147
|
}
|
|
417
|
-
function getRpdCache(packageCache, pkgName, basedir, originalBasedir, preserveSymlinks) {
|
|
418
|
-
const cacheKey = getRpdCacheKey(pkgName, basedir, preserveSymlinks);
|
|
419
|
-
const pkgData = packageCache.get(cacheKey);
|
|
420
|
-
if (pkgData) {
|
|
421
|
-
traverseBetweenDirs(originalBasedir, basedir, (dir) => {
|
|
422
|
-
packageCache.set(getRpdCacheKey(pkgName, dir, preserveSymlinks), pkgData);
|
|
423
|
-
});
|
|
424
|
-
return pkgData;
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
function setRpdCache(packageCache, pkgData, pkgName, basedir, originalBasedir, preserveSymlinks) {
|
|
428
|
-
packageCache.set(getRpdCacheKey(pkgName, basedir, preserveSymlinks), pkgData);
|
|
429
|
-
traverseBetweenDirs(originalBasedir, basedir, (dir) => {
|
|
430
|
-
packageCache.set(getRpdCacheKey(pkgName, dir, preserveSymlinks), pkgData);
|
|
431
|
-
});
|
|
432
|
-
}
|
|
433
|
-
function getRpdCacheKey(pkgName, basedir, preserveSymlinks) {
|
|
434
|
-
return `rpd_${pkgName}_${basedir}_${preserveSymlinks}`;
|
|
435
|
-
}
|
|
436
148
|
function getFnpdCache(packageCache, basedir, originalBasedir) {
|
|
437
149
|
const cacheKey = getFnpdCacheKey(basedir);
|
|
438
150
|
const pkgData = packageCache.get(cacheKey);
|
|
@@ -455,502 +167,235 @@ function getFnpdCacheKey(basedir) {
|
|
|
455
167
|
function traverseBetweenDirs(longerDir, shorterDir, cb) {
|
|
456
168
|
while (longerDir !== shorterDir) {
|
|
457
169
|
cb(longerDir);
|
|
458
|
-
longerDir =
|
|
170
|
+
longerDir = path.dirname(longerDir);
|
|
459
171
|
}
|
|
460
172
|
}
|
|
461
173
|
|
|
462
|
-
// src/
|
|
463
|
-
|
|
464
|
-
var
|
|
465
|
-
var
|
|
466
|
-
function
|
|
467
|
-
|
|
468
|
-
if (hashIndex >= 0 && isInNodeModules(fsPath)) {
|
|
469
|
-
const queryIndex = fsPath.indexOf("?");
|
|
470
|
-
if (queryIndex < 0 || queryIndex > hashIndex) {
|
|
471
|
-
const file2 = queryIndex > hashIndex ? fsPath.slice(0, queryIndex) : fsPath;
|
|
472
|
-
const res2 = tryCleanFsResolve(file2, options, tryIndex, skipPackageJson);
|
|
473
|
-
if (res2) {
|
|
474
|
-
return res2 + fsPath.slice(file2.length);
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
const { file, postfix } = splitFileAndPostfix(fsPath);
|
|
479
|
-
const res = tryCleanFsResolve(file, options, tryIndex, skipPackageJson);
|
|
480
|
-
if (res) {
|
|
481
|
-
return res + postfix;
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
var knownTsOutputRE = /\.(?:js|mjs|cjs|jsx)$/;
|
|
485
|
-
var isPossibleTsOutput = (url) => knownTsOutputRE.test(url);
|
|
486
|
-
function tryCleanFsResolve(file, options, tryIndex = true, skipPackageJson = false) {
|
|
487
|
-
const { tryPrefix, extensions, preserveSymlinks } = options;
|
|
488
|
-
const fileResult = tryResolveRealFileOrType(file, options.preserveSymlinks);
|
|
489
|
-
if (fileResult?.path) {
|
|
490
|
-
return fileResult.path;
|
|
491
|
-
}
|
|
492
|
-
let res;
|
|
493
|
-
const possibleJsToTs = isPossibleTsOutput(file);
|
|
494
|
-
if (possibleJsToTs || options.extensions.length || tryPrefix) {
|
|
495
|
-
const dirPath = path4.dirname(file);
|
|
496
|
-
if (isDirectory(dirPath)) {
|
|
497
|
-
if (possibleJsToTs) {
|
|
498
|
-
const fileExt = path4.extname(file);
|
|
499
|
-
const fileName = file.slice(0, -fileExt.length);
|
|
500
|
-
if (res = tryResolveRealFile(
|
|
501
|
-
fileName + fileExt.replace("js", "ts"),
|
|
502
|
-
preserveSymlinks
|
|
503
|
-
)) {
|
|
504
|
-
return res;
|
|
505
|
-
}
|
|
506
|
-
if (fileExt === ".js" && (res = tryResolveRealFile(`${fileName}.tsx`, preserveSymlinks))) {
|
|
507
|
-
return res;
|
|
508
|
-
}
|
|
509
|
-
}
|
|
510
|
-
if (res = tryResolveRealFileWithExtensions(
|
|
511
|
-
file,
|
|
512
|
-
extensions,
|
|
513
|
-
preserveSymlinks
|
|
514
|
-
)) {
|
|
515
|
-
return res;
|
|
516
|
-
}
|
|
517
|
-
if (tryPrefix) {
|
|
518
|
-
const prefixed = `${dirPath}/${options.tryPrefix}${path4.basename(file)}`;
|
|
519
|
-
if (res = tryResolveRealFile(prefixed, preserveSymlinks)) {
|
|
520
|
-
return res;
|
|
521
|
-
}
|
|
522
|
-
if (res = tryResolveRealFileWithExtensions(
|
|
523
|
-
prefixed,
|
|
524
|
-
extensions,
|
|
525
|
-
preserveSymlinks
|
|
526
|
-
)) {
|
|
527
|
-
return res;
|
|
528
|
-
}
|
|
529
|
-
}
|
|
530
|
-
}
|
|
531
|
-
}
|
|
532
|
-
if (tryIndex && fileResult?.type === "directory") {
|
|
533
|
-
const dirPath = file;
|
|
534
|
-
if (!skipPackageJson) {
|
|
535
|
-
let pkgPath = `${dirPath}/package.json`;
|
|
536
|
-
try {
|
|
537
|
-
if (fs3.existsSync(pkgPath)) {
|
|
538
|
-
if (!options.preserveSymlinks) {
|
|
539
|
-
pkgPath = safeRealpathSync(pkgPath);
|
|
540
|
-
}
|
|
541
|
-
const pkg = loadPackageData(pkgPath);
|
|
542
|
-
return resolvePackageEntry(dirPath, pkg, options);
|
|
543
|
-
}
|
|
544
|
-
} catch (e) {
|
|
545
|
-
if (e.code !== ERR_RESOLVE_PACKAGE_ENTRY_FAIL && e.code !== "ENOENT") {
|
|
546
|
-
throw e;
|
|
547
|
-
}
|
|
548
|
-
}
|
|
549
|
-
}
|
|
550
|
-
if (res = tryResolveRealFileWithExtensions(
|
|
551
|
-
`${dirPath}/index`,
|
|
552
|
-
extensions,
|
|
553
|
-
preserveSymlinks
|
|
554
|
-
)) {
|
|
555
|
-
return res;
|
|
556
|
-
}
|
|
557
|
-
if (tryPrefix) {
|
|
558
|
-
if (res = tryResolveRealFileWithExtensions(
|
|
559
|
-
`${dirPath}/${options.tryPrefix}index`,
|
|
560
|
-
extensions,
|
|
561
|
-
preserveSymlinks
|
|
562
|
-
)) {
|
|
563
|
-
return res;
|
|
564
|
-
}
|
|
565
|
-
}
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
|
-
function tryNodeResolve(id, importer, options, depsOptimizer, externalize) {
|
|
569
|
-
const { root, dedupe, isBuild, preserveSymlinks, packageCache } = options;
|
|
570
|
-
const deepMatch = deepImportRE.exec(id);
|
|
571
|
-
const pkgId = deepMatch ? deepMatch[1] || deepMatch[2] : cleanUrl(id);
|
|
572
|
-
let basedir;
|
|
573
|
-
if (dedupe.includes(pkgId)) {
|
|
574
|
-
basedir = root;
|
|
575
|
-
} else if (importer && path4.isAbsolute(importer) && (importer.endsWith("*") || fs3.existsSync(cleanUrl(importer)))) {
|
|
576
|
-
basedir = path4.dirname(importer);
|
|
577
|
-
} else {
|
|
578
|
-
basedir = root;
|
|
579
|
-
}
|
|
580
|
-
const isModuleBuiltin = (id2) => isBuiltin(options.builtins, id2);
|
|
581
|
-
let selfPkg = null;
|
|
582
|
-
if (!isModuleBuiltin(id) && !id.includes("\0") && bareImportRE.test(id)) {
|
|
583
|
-
const selfPackageData = findNearestPackageData(basedir, packageCache);
|
|
584
|
-
selfPkg = selfPackageData?.data.exports && selfPackageData.data.name === pkgId ? selfPackageData : null;
|
|
585
|
-
}
|
|
586
|
-
const pkg = selfPkg || resolvePackageData(pkgId, basedir, preserveSymlinks, packageCache);
|
|
587
|
-
if (!pkg) {
|
|
588
|
-
if (basedir !== root && !isModuleBuiltin(id) && !id.includes("\0") && bareImportRE.test(id)) {
|
|
589
|
-
const mainPkg = findNearestMainPackageData(basedir, packageCache)?.data;
|
|
590
|
-
if (mainPkg) {
|
|
591
|
-
const pkgName = getNpmPackageName(id);
|
|
592
|
-
if (pkgName != null && mainPkg.peerDependencies?.[pkgName] && mainPkg.peerDependenciesMeta?.[pkgName]?.optional) {
|
|
593
|
-
return {
|
|
594
|
-
id: `${optionalPeerDepId}:${id}:${mainPkg.name}`
|
|
595
|
-
};
|
|
596
|
-
}
|
|
597
|
-
}
|
|
598
|
-
}
|
|
599
|
-
return;
|
|
600
|
-
}
|
|
601
|
-
const resolveId = deepMatch ? resolveDeepImport : resolvePackageEntry;
|
|
602
|
-
const unresolvedId = deepMatch ? `.${id.slice(pkgId.length)}` : id;
|
|
603
|
-
let resolved = resolveId(unresolvedId, pkg, options);
|
|
604
|
-
if (!resolved) {
|
|
605
|
-
return;
|
|
606
|
-
}
|
|
607
|
-
const processResult = (resolved2) => {
|
|
608
|
-
if (!externalize) {
|
|
609
|
-
return resolved2;
|
|
610
|
-
}
|
|
611
|
-
if (!canExternalizeFile(resolved2.id)) {
|
|
612
|
-
return resolved2;
|
|
613
|
-
}
|
|
614
|
-
let resolvedId = id;
|
|
615
|
-
if (deepMatch && !pkg.data.exports && path4.extname(id) !== path4.extname(resolved2.id)) {
|
|
616
|
-
const index = resolved2.id.indexOf(id);
|
|
617
|
-
if (index > -1) {
|
|
618
|
-
resolvedId = resolved2.id.slice(index);
|
|
619
|
-
}
|
|
620
|
-
}
|
|
621
|
-
return { ...resolved2, id: resolvedId, external: true };
|
|
622
|
-
};
|
|
623
|
-
if (!options.idOnly && (!options.scan && isBuild || externalize)) {
|
|
624
|
-
return processResult({
|
|
625
|
-
id: resolved,
|
|
626
|
-
moduleSideEffects: pkg.hasSideEffects(resolved)
|
|
627
|
-
});
|
|
628
|
-
}
|
|
629
|
-
if (!isInNodeModules(resolved) || !depsOptimizer || options.scan) {
|
|
630
|
-
return { id: resolved };
|
|
631
|
-
}
|
|
632
|
-
const isJsType = isOptimizable(resolved, depsOptimizer.options);
|
|
633
|
-
const exclude = depsOptimizer.options.exclude;
|
|
634
|
-
const skipOptimization = depsOptimizer.options.noDiscovery || !isJsType || importer && isInNodeModules(importer) || exclude?.includes(pkgId) || exclude?.includes(id) || SPECIAL_QUERY_RE.test(resolved);
|
|
635
|
-
if (skipOptimization) {
|
|
636
|
-
const versionHash = depsOptimizer.metadata.browserHash;
|
|
637
|
-
if (versionHash && isJsType) {
|
|
638
|
-
resolved = injectQuery(resolved, `v=${versionHash}`);
|
|
639
|
-
}
|
|
640
|
-
} else {
|
|
641
|
-
const optimizedInfo = depsOptimizer.registerMissingImport(id, resolved);
|
|
642
|
-
resolved = depsOptimizer.getOptimizedDepId(optimizedInfo);
|
|
643
|
-
}
|
|
644
|
-
return { id: resolved };
|
|
174
|
+
// src/sharedUtils.ts
|
|
175
|
+
import process2 from "process";
|
|
176
|
+
var isWindows = typeof process2 !== "undefined" && process2.platform === "win32";
|
|
177
|
+
var windowsSlashRE = /\\/g;
|
|
178
|
+
function slash(p) {
|
|
179
|
+
return p.replace(windowsSlashRE, "/");
|
|
645
180
|
}
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
if (field === "browser") {
|
|
660
|
-
entryPoint = tryResolveBrowserEntry(dir, data, options);
|
|
661
|
-
if (entryPoint) {
|
|
662
|
-
break;
|
|
663
|
-
}
|
|
664
|
-
} else if (typeof data[field] === "string") {
|
|
665
|
-
entryPoint = data[field];
|
|
666
|
-
break;
|
|
667
|
-
}
|
|
668
|
-
}
|
|
669
|
-
}
|
|
670
|
-
entryPoint ||= data.main;
|
|
671
|
-
const entryPoints = entryPoint ? [entryPoint] : ["index.js", "index.json", "index.node"];
|
|
672
|
-
for (let entry of entryPoints) {
|
|
673
|
-
let skipPackageJson = false;
|
|
674
|
-
if (options.mainFields[0] === "sass" && !options.extensions.includes(path4.extname(entry))) {
|
|
675
|
-
entry = "";
|
|
676
|
-
skipPackageJson = true;
|
|
677
|
-
} else {
|
|
678
|
-
const { browser: browserField } = data;
|
|
679
|
-
if (options.mainFields.includes("browser") && isObject(browserField)) {
|
|
680
|
-
entry = mapWithBrowserField(entry, browserField) || entry;
|
|
681
|
-
}
|
|
682
|
-
}
|
|
683
|
-
const entryPointPath = path4.join(dir, entry);
|
|
684
|
-
const resolvedEntryPoint = tryFsResolve(
|
|
685
|
-
entryPointPath,
|
|
686
|
-
options,
|
|
687
|
-
true,
|
|
688
|
-
skipPackageJson
|
|
689
|
-
);
|
|
690
|
-
if (resolvedEntryPoint) {
|
|
691
|
-
setResolvedCache(".", resolvedEntryPoint, options);
|
|
692
|
-
return resolvedEntryPoint + postfix;
|
|
693
|
-
}
|
|
694
|
-
}
|
|
695
|
-
} catch (e) {
|
|
696
|
-
packageEntryFailure(
|
|
697
|
-
id,
|
|
698
|
-
// @ts-ignore
|
|
699
|
-
e.message
|
|
700
|
-
);
|
|
181
|
+
|
|
182
|
+
// src/utils.ts
|
|
183
|
+
var createFilter = _createFilter;
|
|
184
|
+
var NODE_BUILTIN_NAMESPACE = "node:";
|
|
185
|
+
var NPM_BUILTIN_NAMESPACE = "npm:";
|
|
186
|
+
var BUN_BUILTIN_NAMESPACE = "bun:";
|
|
187
|
+
var nodeBuiltins = builtinModules.filter((id) => !id.includes(":"));
|
|
188
|
+
var isBuiltinCache = /* @__PURE__ */ new WeakMap();
|
|
189
|
+
function isBuiltin(builtins, id) {
|
|
190
|
+
let isBuiltin2 = isBuiltinCache.get(builtins);
|
|
191
|
+
if (!isBuiltin2) {
|
|
192
|
+
isBuiltin2 = createIsBuiltin(builtins);
|
|
193
|
+
isBuiltinCache.set(builtins, isBuiltin2);
|
|
701
194
|
}
|
|
702
|
-
|
|
195
|
+
return isBuiltin2(id);
|
|
703
196
|
}
|
|
704
|
-
function
|
|
705
|
-
const
|
|
706
|
-
|
|
197
|
+
function createIsBuiltin(builtins) {
|
|
198
|
+
const plainBuiltinsSet = new Set(
|
|
199
|
+
builtins.filter((builtin) => typeof builtin === "string")
|
|
200
|
+
);
|
|
201
|
+
const regexBuiltins = builtins.filter(
|
|
202
|
+
(builtin) => typeof builtin !== "string"
|
|
707
203
|
);
|
|
708
|
-
|
|
709
|
-
throw err;
|
|
204
|
+
return (id) => plainBuiltinsSet.has(id) || regexBuiltins.some((regexp) => regexp.test(id));
|
|
710
205
|
}
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
206
|
+
var nodeLikeBuiltins = [
|
|
207
|
+
...nodeBuiltins,
|
|
208
|
+
new RegExp(`^${NODE_BUILTIN_NAMESPACE}`),
|
|
209
|
+
new RegExp(`^${NPM_BUILTIN_NAMESPACE}`),
|
|
210
|
+
new RegExp(`^${BUN_BUILTIN_NAMESPACE}`)
|
|
211
|
+
];
|
|
212
|
+
function isNodeLikeBuiltin(id) {
|
|
213
|
+
return isBuiltin(nodeLikeBuiltins, id);
|
|
214
|
+
}
|
|
215
|
+
function isNodeBuiltin(id) {
|
|
216
|
+
if (id.startsWith(NODE_BUILTIN_NAMESPACE)) {
|
|
217
|
+
return true;
|
|
722
218
|
}
|
|
723
|
-
return
|
|
219
|
+
return nodeBuiltins.includes(id);
|
|
724
220
|
}
|
|
725
|
-
function
|
|
726
|
-
|
|
727
|
-
options.conditions,
|
|
728
|
-
options.isProduction,
|
|
729
|
-
options.isRequire
|
|
730
|
-
);
|
|
731
|
-
const fn = type === "imports" ? imports : exports;
|
|
732
|
-
const result = fn(pkg, key, { conditions, unsafe: true });
|
|
733
|
-
return result ? result[0] : void 0;
|
|
221
|
+
function normalizePath(id) {
|
|
222
|
+
return path2.posix.normalize(isWindows ? slash(id) : id);
|
|
734
223
|
}
|
|
735
|
-
function
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
}
|
|
740
|
-
let relativeId = id;
|
|
741
|
-
const { exports: exportsField, browser: browserField } = data;
|
|
742
|
-
if (exportsField) {
|
|
743
|
-
if (isObject(exportsField) && !Array.isArray(exportsField)) {
|
|
744
|
-
const { file, postfix } = splitFileAndPostfix(relativeId);
|
|
745
|
-
const exportsId = resolveExportsOrImports(data, file, options, "exports");
|
|
746
|
-
if (exportsId !== void 0) {
|
|
747
|
-
relativeId = exportsId + postfix;
|
|
748
|
-
} else {
|
|
749
|
-
relativeId = void 0;
|
|
750
|
-
}
|
|
751
|
-
} else {
|
|
752
|
-
relativeId = void 0;
|
|
753
|
-
}
|
|
754
|
-
if (!relativeId) {
|
|
755
|
-
throw new Error(
|
|
756
|
-
`Package subpath '${relativeId}' is not defined by "exports" in ${path4.join(dir, "package.json")}.`
|
|
757
|
-
);
|
|
758
|
-
}
|
|
759
|
-
} else if (options.mainFields.includes("browser") && isObject(browserField)) {
|
|
760
|
-
const { file, postfix } = splitFileAndPostfix(relativeId);
|
|
761
|
-
const mapped = mapWithBrowserField(file, browserField);
|
|
762
|
-
if (mapped) {
|
|
763
|
-
relativeId = mapped + postfix;
|
|
764
|
-
} else if (mapped === false) {
|
|
765
|
-
setResolvedCache(id, browserExternalId, options);
|
|
766
|
-
return browserExternalId;
|
|
767
|
-
}
|
|
224
|
+
function tryStatSync(file) {
|
|
225
|
+
try {
|
|
226
|
+
return fs2.statSync(file, { throwIfNoEntry: false });
|
|
227
|
+
} catch {
|
|
768
228
|
}
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
return
|
|
229
|
+
}
|
|
230
|
+
function isFilePathESM(filePath, packageCache) {
|
|
231
|
+
if (/\.m[jt]s$/.test(filePath)) {
|
|
232
|
+
return true;
|
|
233
|
+
} else if (/\.c[jt]s$/.test(filePath)) {
|
|
234
|
+
return false;
|
|
235
|
+
} else {
|
|
236
|
+
try {
|
|
237
|
+
const pkg = findNearestPackageData(path2.dirname(filePath), packageCache);
|
|
238
|
+
return pkg?.data.type === "module";
|
|
239
|
+
} catch {
|
|
240
|
+
return false;
|
|
779
241
|
}
|
|
780
242
|
}
|
|
781
243
|
}
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
if (resolvedBrowserEntry) {
|
|
791
|
-
const content = fs3.readFileSync(resolvedBrowserEntry, "utf-8");
|
|
792
|
-
if (hasESMSyntax(content)) {
|
|
793
|
-
return browserEntry;
|
|
794
|
-
} else {
|
|
795
|
-
return data.module;
|
|
796
|
-
}
|
|
244
|
+
var currentSafeRealpathSync = isWindows ? windowsSafeRealPathSync : fs2.realpathSync.native;
|
|
245
|
+
var windowsNetworkMap = /* @__PURE__ */ new Map();
|
|
246
|
+
function windowsMappedRealpathSync(path9) {
|
|
247
|
+
const realPath = fs2.realpathSync.native(path9);
|
|
248
|
+
if (realPath.startsWith("\\\\")) {
|
|
249
|
+
for (const [network, volume] of windowsNetworkMap) {
|
|
250
|
+
if (realPath.startsWith(network)) {
|
|
251
|
+
return realPath.replace(network, volume);
|
|
797
252
|
}
|
|
798
|
-
} else {
|
|
799
|
-
return browserEntry;
|
|
800
253
|
}
|
|
801
254
|
}
|
|
255
|
+
return realPath;
|
|
802
256
|
}
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
}
|
|
257
|
+
var parseNetUseRE = /^\w* +(\w:) +([^ ]+)\s/;
|
|
258
|
+
var firstSafeRealPathSyncRun = false;
|
|
259
|
+
function windowsSafeRealPathSync(path9) {
|
|
260
|
+
if (!firstSafeRealPathSyncRun) {
|
|
261
|
+
optimizeSafeRealPathSync();
|
|
262
|
+
firstSafeRealPathSyncRun = true;
|
|
810
263
|
}
|
|
264
|
+
return fs2.realpathSync(path9);
|
|
811
265
|
}
|
|
812
|
-
function
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
if (stat?.isFile()) {
|
|
818
|
-
return getRealPath(file, preserveSymlinks);
|
|
266
|
+
function optimizeSafeRealPathSync() {
|
|
267
|
+
const nodeVersion = process3.versions.node.split(".").map(Number);
|
|
268
|
+
if (nodeVersion[0] < 18 || nodeVersion[0] === 18 && nodeVersion[1] < 10) {
|
|
269
|
+
currentSafeRealpathSync = fs2.realpathSync;
|
|
270
|
+
return;
|
|
819
271
|
}
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
return
|
|
272
|
+
try {
|
|
273
|
+
fs2.realpathSync.native(path2.resolve("./"));
|
|
274
|
+
} catch (error) {
|
|
275
|
+
if (error.message.includes("EISDIR: illegal operation on a directory")) {
|
|
276
|
+
currentSafeRealpathSync = fs2.realpathSync;
|
|
277
|
+
return;
|
|
826
278
|
}
|
|
827
279
|
}
|
|
280
|
+
exec("net use", (error, stdout) => {
|
|
281
|
+
if (error) {
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
const lines = stdout.split("\n");
|
|
285
|
+
for (const line of lines) {
|
|
286
|
+
const m = parseNetUseRE.exec(line);
|
|
287
|
+
if (m) {
|
|
288
|
+
windowsNetworkMap.set(m[2], m[1]);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
currentSafeRealpathSync = windowsNetworkMap.size === 0 ? fs2.realpathSync.native : windowsMappedRealpathSync;
|
|
292
|
+
});
|
|
828
293
|
}
|
|
829
|
-
function
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
return { path: getRealPath(file, preserveSymlinks), type: "file" };
|
|
833
|
-
}
|
|
834
|
-
if (fileStat?.isDirectory()) {
|
|
835
|
-
return { type: "directory" };
|
|
836
|
-
}
|
|
837
|
-
}
|
|
838
|
-
function getRealPath(resolved, preserveSymlinks) {
|
|
839
|
-
if (!preserveSymlinks) {
|
|
840
|
-
resolved = safeRealpathSync(resolved);
|
|
294
|
+
function stripBomTag(content) {
|
|
295
|
+
if (content.charCodeAt(0) === 65279) {
|
|
296
|
+
return content.slice(1);
|
|
841
297
|
}
|
|
842
|
-
return
|
|
843
|
-
}
|
|
844
|
-
function isDirectory(path11) {
|
|
845
|
-
const stat = tryStatSync(path11);
|
|
846
|
-
return stat?.isDirectory() ?? false;
|
|
298
|
+
return content;
|
|
847
299
|
}
|
|
300
|
+
var dynamicImport = async (id, { format }) => {
|
|
301
|
+
const fn = format === "esm" ? (file) => import(file) : true ? createRequire2(import.meta.url) : __require;
|
|
302
|
+
return fn(id);
|
|
303
|
+
};
|
|
848
304
|
|
|
849
305
|
// src/externalize.ts
|
|
850
306
|
function createExternalizeDepsPlugin({
|
|
851
307
|
entryFile,
|
|
852
|
-
isESM
|
|
853
|
-
moduleSyncEnabled
|
|
308
|
+
isESM
|
|
854
309
|
}) {
|
|
855
|
-
const entryDir =
|
|
856
|
-
const
|
|
857
|
-
const
|
|
858
|
-
return tryNodeResolve(id, importer, {
|
|
859
|
-
root: path5.dirname(entryFile),
|
|
860
|
-
isBuild: true,
|
|
861
|
-
isProduction: true,
|
|
862
|
-
preferRelative: false,
|
|
863
|
-
tryIndex: true,
|
|
864
|
-
mainFields: [],
|
|
865
|
-
conditions: [
|
|
866
|
-
"node",
|
|
867
|
-
...moduleSyncEnabled ? ["module-sync"] : []
|
|
868
|
-
],
|
|
869
|
-
externalConditions: [],
|
|
870
|
-
external: [],
|
|
871
|
-
noExternal: [],
|
|
872
|
-
dedupe: [],
|
|
873
|
-
extensions: configDefaults.resolve.extensions,
|
|
874
|
-
preserveSymlinks: false,
|
|
875
|
-
packageCache,
|
|
876
|
-
isRequire,
|
|
877
|
-
builtins: nodeLikeBuiltins
|
|
878
|
-
})?.id;
|
|
879
|
-
};
|
|
310
|
+
const entryDir = path3.dirname(entryFile);
|
|
311
|
+
const externalizeCache = /* @__PURE__ */ new Map();
|
|
312
|
+
const entryResolveCache = /* @__PURE__ */ new Map();
|
|
880
313
|
return {
|
|
881
314
|
name: "externalize-deps",
|
|
882
315
|
resolveId: {
|
|
883
316
|
filter: { id: /^[^.#].*/ },
|
|
884
|
-
async handler(id, importer,
|
|
885
|
-
|
|
317
|
+
async handler(id, importer, options) {
|
|
318
|
+
const { kind } = options;
|
|
319
|
+
if (!importer || path3.isAbsolute(id) || isNodeBuiltin(id)) {
|
|
886
320
|
return;
|
|
887
321
|
}
|
|
888
322
|
if (isNodeLikeBuiltin(id)) {
|
|
889
323
|
return { id, external: true };
|
|
890
324
|
}
|
|
325
|
+
const cacheKey = `${importer}::${kind}::${id}`;
|
|
326
|
+
const cached = externalizeCache.get(cacheKey);
|
|
327
|
+
if (cached !== void 0) {
|
|
328
|
+
return cached ?? void 0;
|
|
329
|
+
}
|
|
891
330
|
const isImport = isESM || kind === "dynamic-import";
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
}
|
|
906
|
-
if (canResolveWithImport) {
|
|
907
|
-
throw new Error(
|
|
908
|
-
`Failed to resolve ${JSON.stringify(
|
|
909
|
-
id
|
|
910
|
-
)}. This package is ESM only but it was tried to load by \`require\`. See https://vite.dev/guide/troubleshooting.html#this-package-is-esm-only for more details.`
|
|
911
|
-
);
|
|
912
|
-
}
|
|
913
|
-
}
|
|
914
|
-
throw e;
|
|
331
|
+
const resolved = await resolveWithRolldown(this, id, importer, kind);
|
|
332
|
+
if (!resolved?.id) {
|
|
333
|
+
externalizeCache.set(cacheKey, null);
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
if (resolved.external) {
|
|
337
|
+
const external = resolved.external === "absolute" ? "absolute" : true;
|
|
338
|
+
const result2 = {
|
|
339
|
+
id: resolved.id,
|
|
340
|
+
external
|
|
341
|
+
};
|
|
342
|
+
externalizeCache.set(cacheKey, result2);
|
|
343
|
+
return result2;
|
|
915
344
|
}
|
|
916
|
-
|
|
345
|
+
const { cleanId, query } = splitIdAndQuery(resolved.id);
|
|
346
|
+
const resolvedPath = toFilePath(cleanId);
|
|
347
|
+
if (!resolvedPath) {
|
|
348
|
+
externalizeCache.set(cacheKey, null);
|
|
917
349
|
return;
|
|
918
350
|
}
|
|
919
|
-
if (
|
|
920
|
-
|
|
351
|
+
if (!path3.isAbsolute(resolvedPath)) {
|
|
352
|
+
externalizeCache.set(cacheKey, null);
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
if (resolvedPath.endsWith(".json")) {
|
|
356
|
+
const idWithQuery = resolvedPath + query;
|
|
357
|
+
externalizeCache.set(cacheKey, idWithQuery);
|
|
358
|
+
return idWithQuery;
|
|
921
359
|
}
|
|
922
|
-
const shouldExternalize = shouldExternalizeBareImport(
|
|
923
|
-
|
|
924
|
-
|
|
360
|
+
const shouldExternalize = shouldExternalizeBareImport(
|
|
361
|
+
id,
|
|
362
|
+
importer,
|
|
363
|
+
entryDir,
|
|
364
|
+
resolvedPath,
|
|
365
|
+
entryResolveCache
|
|
366
|
+
);
|
|
367
|
+
let idOut = resolvedPath + query;
|
|
368
|
+
if (isImport && shouldExternalize) {
|
|
369
|
+
idOut = pathToFileURL(resolvedPath).href + query;
|
|
925
370
|
}
|
|
926
|
-
|
|
371
|
+
const result = { id: idOut, external: shouldExternalize };
|
|
372
|
+
externalizeCache.set(cacheKey, result);
|
|
373
|
+
return result;
|
|
927
374
|
}
|
|
928
375
|
}
|
|
929
376
|
};
|
|
930
377
|
}
|
|
931
|
-
function shouldExternalizeBareImport(specifier, importer, entryDir) {
|
|
932
|
-
if (!specifier || specifier.startsWith(".") ||
|
|
378
|
+
function shouldExternalizeBareImport(specifier, importer, entryDir, resolvedPath, canResolveCache) {
|
|
379
|
+
if (!specifier || specifier.startsWith(".") || path3.isAbsolute(specifier)) {
|
|
933
380
|
return false;
|
|
934
381
|
}
|
|
935
382
|
if (isNodeLikeBuiltin(specifier)) {
|
|
936
383
|
return true;
|
|
937
384
|
}
|
|
938
385
|
const importerPath = normalizeImporterPath(importer, entryDir);
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
);
|
|
386
|
+
const resolvedFromImporter = resolvedPath ?? resolveSpecifierFromImporter(specifier, importerPath);
|
|
387
|
+
if (resolvedFromImporter) {
|
|
388
|
+
const containingNodeModules = findContainingNodeModules(resolvedFromImporter);
|
|
943
389
|
if (containingNodeModules) {
|
|
944
|
-
const ownerDir =
|
|
390
|
+
const ownerDir = path3.dirname(containingNodeModules);
|
|
945
391
|
const ownerInsideEntry = isPathWithinDirectory(entryDir, ownerDir);
|
|
946
392
|
const entryInsideOwner = isPathWithinDirectory(ownerDir, entryDir);
|
|
947
393
|
if (ownerInsideEntry && !entryInsideOwner) {
|
|
948
394
|
return false;
|
|
949
395
|
}
|
|
950
396
|
}
|
|
951
|
-
} catch {
|
|
952
397
|
}
|
|
953
|
-
if (!canResolveFromEntry(specifier, entryDir)) {
|
|
398
|
+
if (!canResolveFromEntry(specifier, entryDir, canResolveCache)) {
|
|
954
399
|
return false;
|
|
955
400
|
}
|
|
956
401
|
return true;
|
|
@@ -963,21 +408,21 @@ function normalizeImporterPath(importer, fallback) {
|
|
|
963
408
|
return withoutQuery || fallback;
|
|
964
409
|
}
|
|
965
410
|
function findContainingNodeModules(filePath) {
|
|
966
|
-
let current =
|
|
967
|
-
const { root } =
|
|
411
|
+
let current = path3.dirname(filePath);
|
|
412
|
+
const { root } = path3.parse(current);
|
|
968
413
|
while (true) {
|
|
969
|
-
if (
|
|
414
|
+
if (path3.basename(current) === "node_modules") {
|
|
970
415
|
return current;
|
|
971
416
|
}
|
|
972
417
|
if (current === root) {
|
|
973
418
|
break;
|
|
974
419
|
}
|
|
975
|
-
current =
|
|
420
|
+
current = path3.dirname(current);
|
|
976
421
|
}
|
|
977
422
|
}
|
|
978
423
|
function isPathWithinDirectory(parent, child) {
|
|
979
|
-
const relative =
|
|
980
|
-
return relative === "" || !relative.startsWith("..") && !
|
|
424
|
+
const relative = path3.relative(parent, child);
|
|
425
|
+
return relative === "" || !relative.startsWith("..") && !path3.isAbsolute(relative);
|
|
981
426
|
}
|
|
982
427
|
function getPackageName(specifier) {
|
|
983
428
|
if (!specifier) {
|
|
@@ -993,24 +438,52 @@ function getPackageName(specifier) {
|
|
|
993
438
|
const [name] = specifier.split("/");
|
|
994
439
|
return name || void 0;
|
|
995
440
|
}
|
|
996
|
-
function canResolveFromEntry(specifier, entryDir) {
|
|
441
|
+
function canResolveFromEntry(specifier, entryDir, cache) {
|
|
997
442
|
const packageName = getPackageName(specifier);
|
|
998
443
|
if (!packageName) {
|
|
999
444
|
return false;
|
|
1000
445
|
}
|
|
446
|
+
if (cache?.has(packageName)) {
|
|
447
|
+
return cache.get(packageName);
|
|
448
|
+
}
|
|
1001
449
|
let currentDir = entryDir;
|
|
1002
450
|
while (true) {
|
|
1003
|
-
if (
|
|
451
|
+
if (fs3.existsSync(path3.join(currentDir, "node_modules", packageName))) {
|
|
452
|
+
cache?.set(packageName, true);
|
|
1004
453
|
return true;
|
|
1005
454
|
}
|
|
1006
|
-
const parentDir =
|
|
455
|
+
const parentDir = path3.dirname(currentDir);
|
|
1007
456
|
if (parentDir === currentDir) {
|
|
1008
457
|
break;
|
|
1009
458
|
}
|
|
1010
459
|
currentDir = parentDir;
|
|
1011
460
|
}
|
|
461
|
+
cache?.set(packageName, false);
|
|
1012
462
|
return false;
|
|
1013
463
|
}
|
|
464
|
+
function resolveWithRolldown(ctx, id, importer, kind) {
|
|
465
|
+
return ctx.resolve(id, importer, { kind, skipSelf: true });
|
|
466
|
+
}
|
|
467
|
+
function splitIdAndQuery(id) {
|
|
468
|
+
const [cleanId, rawQuery] = id.split("?");
|
|
469
|
+
return { cleanId, query: rawQuery ? `?${rawQuery}` : "" };
|
|
470
|
+
}
|
|
471
|
+
function toFilePath(id) {
|
|
472
|
+
if (!id) {
|
|
473
|
+
return null;
|
|
474
|
+
}
|
|
475
|
+
if (id.startsWith("file://")) {
|
|
476
|
+
return fileURLToPath(id);
|
|
477
|
+
}
|
|
478
|
+
return id;
|
|
479
|
+
}
|
|
480
|
+
function resolveSpecifierFromImporter(specifier, importerPath) {
|
|
481
|
+
try {
|
|
482
|
+
return createRequire3(importerPath).resolve(specifier);
|
|
483
|
+
} catch {
|
|
484
|
+
return void 0;
|
|
485
|
+
}
|
|
486
|
+
}
|
|
1014
487
|
|
|
1015
488
|
// src/module-sync.ts
|
|
1016
489
|
var cachedModuleSyncCondition;
|
|
@@ -1036,7 +509,6 @@ async function getModuleSyncConditionEnabled() {
|
|
|
1036
509
|
// src/bundler.ts
|
|
1037
510
|
async function bundleFile(fileName, options) {
|
|
1038
511
|
const { isESM } = options;
|
|
1039
|
-
const moduleSyncEnabled = await getModuleSyncConditionEnabled();
|
|
1040
512
|
const dirnameVarName = "__vite_injected_original_dirname";
|
|
1041
513
|
const filenameVarName = "__vite_injected_original_filename";
|
|
1042
514
|
const importMetaUrlVarName = "__vite_injected_original_import_meta_url";
|
|
@@ -1058,10 +530,17 @@ async function bundleFile(fileName, options) {
|
|
|
1058
530
|
...userTransform ?? {},
|
|
1059
531
|
define: transformDefine
|
|
1060
532
|
};
|
|
533
|
+
const moduleSyncEnabled = await getModuleSyncConditionEnabled();
|
|
534
|
+
const userConditionNames = userResolve?.conditionNames;
|
|
535
|
+
const conditionNames = [...userConditionNames ?? []];
|
|
536
|
+
if (moduleSyncEnabled && !conditionNames.includes("module-sync")) {
|
|
537
|
+
conditionNames.push("module-sync");
|
|
538
|
+
}
|
|
1061
539
|
const resolveOptions = {
|
|
1062
540
|
...userResolve ?? {},
|
|
1063
541
|
mainFields: ["main"],
|
|
1064
|
-
tsconfigFilename: options.tsconfig
|
|
542
|
+
...typeof options.tsconfig === "string" ? { tsconfigFilename: options.tsconfig } : {},
|
|
543
|
+
...conditionNames.length ? { conditionNames } : {}
|
|
1065
544
|
};
|
|
1066
545
|
const originalConsoleWarn = console.warn;
|
|
1067
546
|
console.warn = (...args) => {
|
|
@@ -1077,6 +556,7 @@ async function bundleFile(fileName, options) {
|
|
|
1077
556
|
...restRolldownInputOptions,
|
|
1078
557
|
input: fileName,
|
|
1079
558
|
platform: "node",
|
|
559
|
+
...options.tsconfig !== void 0 ? { tsconfig: options.tsconfig } : {},
|
|
1080
560
|
resolve: resolveOptions,
|
|
1081
561
|
// @ts-ignore
|
|
1082
562
|
define: transformDefine,
|
|
@@ -1086,8 +566,7 @@ async function bundleFile(fileName, options) {
|
|
|
1086
566
|
plugins: [
|
|
1087
567
|
createExternalizeDepsPlugin({
|
|
1088
568
|
entryFile: fileName,
|
|
1089
|
-
isESM
|
|
1090
|
-
moduleSyncEnabled
|
|
569
|
+
isESM
|
|
1091
570
|
}),
|
|
1092
571
|
createFileScopeVariablesPlugin({
|
|
1093
572
|
dirnameVarName,
|
|
@@ -1108,8 +587,8 @@ async function bundleFile(fileName, options) {
|
|
|
1108
587
|
const result = await bundle.generate({
|
|
1109
588
|
...normalizedOutputOptions,
|
|
1110
589
|
format: options.format,
|
|
1111
|
-
sourcemap:
|
|
1112
|
-
|
|
590
|
+
sourcemap: resolveSourcemapOutput(normalizedOutputOptions.sourcemap, options.sourcemap),
|
|
591
|
+
codeSplitting: false
|
|
1113
592
|
});
|
|
1114
593
|
await bundle.close();
|
|
1115
594
|
const entryChunk = result.output.find(
|
|
@@ -1126,6 +605,15 @@ async function bundleFile(fileName, options) {
|
|
|
1126
605
|
dependencies: [...allModules]
|
|
1127
606
|
};
|
|
1128
607
|
}
|
|
608
|
+
function resolveSourcemapOutput(outputSourcemap, requested) {
|
|
609
|
+
if (outputSourcemap !== void 0) {
|
|
610
|
+
return outputSourcemap;
|
|
611
|
+
}
|
|
612
|
+
if (requested === true) {
|
|
613
|
+
return "inline";
|
|
614
|
+
}
|
|
615
|
+
return requested ?? false;
|
|
616
|
+
}
|
|
1129
617
|
function createFileScopeVariablesPlugin({
|
|
1130
618
|
dirnameVarName,
|
|
1131
619
|
filenameVarName,
|
|
@@ -1136,7 +624,7 @@ function createFileScopeVariablesPlugin({
|
|
|
1136
624
|
transform: {
|
|
1137
625
|
filter: { id: /\.[cm]?[jt]s$/ },
|
|
1138
626
|
async handler(code, id) {
|
|
1139
|
-
const injectValues = `const ${dirnameVarName} = ${JSON.stringify(
|
|
627
|
+
const injectValues = `const ${dirnameVarName} = ${JSON.stringify(path4.dirname(id))};const ${filenameVarName} = ${JSON.stringify(id)};const ${importMetaUrlVarName} = ${JSON.stringify(
|
|
1140
628
|
pathToFileURL2(id).href
|
|
1141
629
|
)};`;
|
|
1142
630
|
return { code: injectValues + code, map: null };
|
|
@@ -1145,19 +633,13 @@ function createFileScopeVariablesPlugin({
|
|
|
1145
633
|
};
|
|
1146
634
|
}
|
|
1147
635
|
|
|
1148
|
-
// src/loader.ts
|
|
1149
|
-
import fs6 from "fs";
|
|
1150
|
-
import { createRequire as createRequire5 } from "module";
|
|
1151
|
-
import path9 from "path";
|
|
1152
|
-
import { promisify } from "util";
|
|
1153
|
-
|
|
1154
636
|
// src/cache.ts
|
|
1155
637
|
import crypto from "crypto";
|
|
1156
|
-
import
|
|
638
|
+
import fs4 from "fs";
|
|
1157
639
|
import fsp from "fs/promises";
|
|
1158
640
|
import { createRequire as createRequire4 } from "module";
|
|
1159
641
|
import os from "os";
|
|
1160
|
-
import
|
|
642
|
+
import path5 from "path";
|
|
1161
643
|
import process4 from "process";
|
|
1162
644
|
import { pathToFileURL as pathToFileURL3 } from "url";
|
|
1163
645
|
var _require = createRequire4(import.meta.url);
|
|
@@ -1196,7 +678,7 @@ function resolveCacheOptions(fileName, options) {
|
|
|
1196
678
|
const hash = crypto.createHash("sha1");
|
|
1197
679
|
hash.update(
|
|
1198
680
|
JSON.stringify({
|
|
1199
|
-
entry:
|
|
681
|
+
entry: path5.resolve(fileName),
|
|
1200
682
|
mtimeMs: stat.mtimeMs,
|
|
1201
683
|
size: stat.size,
|
|
1202
684
|
format: options.format,
|
|
@@ -1211,22 +693,22 @@ function resolveCacheOptions(fileName, options) {
|
|
|
1211
693
|
key: hash.digest("hex"),
|
|
1212
694
|
dir,
|
|
1213
695
|
reset,
|
|
1214
|
-
entryPath:
|
|
696
|
+
entryPath: path5.resolve(fileName),
|
|
1215
697
|
memory,
|
|
1216
698
|
onEvent
|
|
1217
699
|
};
|
|
1218
700
|
}
|
|
1219
701
|
function resolveDefaultCacheDir(fileName) {
|
|
1220
702
|
if (typeof process4.versions.deno !== "string") {
|
|
1221
|
-
const nearest = findNearestNodeModules(
|
|
703
|
+
const nearest = findNearestNodeModules(path5.dirname(fileName));
|
|
1222
704
|
if (nearest) {
|
|
1223
|
-
return
|
|
705
|
+
return path5.resolve(nearest, ".rolldown-require-cache");
|
|
1224
706
|
}
|
|
1225
707
|
}
|
|
1226
|
-
return
|
|
708
|
+
return path5.join(os.tmpdir(), "rolldown-require-cache");
|
|
1227
709
|
}
|
|
1228
710
|
async function maybeReadCache(cache, options) {
|
|
1229
|
-
const metaPath =
|
|
711
|
+
const metaPath = path5.join(cache.dir, `${cache.key}.meta.json`);
|
|
1230
712
|
const mem = cache.memory ? memoryCache.get(cache.key) : void 0;
|
|
1231
713
|
if (mem?.meta) {
|
|
1232
714
|
const valid2 = validateMeta(mem.meta, options);
|
|
@@ -1270,11 +752,11 @@ async function importCachedCode(cached, options) {
|
|
|
1270
752
|
async function storeCacheOutput(cache, code, options, dependencies) {
|
|
1271
753
|
await fsp.mkdir(cache.dir, { recursive: true });
|
|
1272
754
|
const ext = options.format === "cjs" ? "cjs" : "mjs";
|
|
1273
|
-
const codePath =
|
|
755
|
+
const codePath = path5.join(cache.dir, `${cache.key}.code.${ext}`);
|
|
1274
756
|
if (cache.reset) {
|
|
1275
757
|
await Promise.allSettled([
|
|
1276
758
|
fsp.rm(codePath, { force: true }),
|
|
1277
|
-
fsp.rm(
|
|
759
|
+
fsp.rm(path5.join(cache.dir, `${cache.key}.meta.json`), { force: true })
|
|
1278
760
|
]);
|
|
1279
761
|
}
|
|
1280
762
|
await fsp.writeFile(codePath, code);
|
|
@@ -1296,7 +778,7 @@ async function storeCacheOutput(cache, code, options, dependencies) {
|
|
|
1296
778
|
async function writeCacheMeta(cache, meta) {
|
|
1297
779
|
await fsp.mkdir(cache.dir, { recursive: true });
|
|
1298
780
|
await fsp.writeFile(
|
|
1299
|
-
|
|
781
|
+
path5.join(cache.dir, `${cache.key}.meta.json`),
|
|
1300
782
|
JSON.stringify(meta)
|
|
1301
783
|
);
|
|
1302
784
|
if (cache.memory) {
|
|
@@ -1314,7 +796,7 @@ function collectFileStats(files) {
|
|
|
1314
796
|
const stat = tryStatSync(file);
|
|
1315
797
|
if (stat?.isFile()) {
|
|
1316
798
|
stats.push({
|
|
1317
|
-
path:
|
|
799
|
+
path: path5.resolve(file),
|
|
1318
800
|
mtimeMs: stat.mtimeMs,
|
|
1319
801
|
size: stat.size
|
|
1320
802
|
});
|
|
@@ -1340,7 +822,7 @@ function validateMeta(meta, options) {
|
|
|
1340
822
|
if (meta.format !== options.format) {
|
|
1341
823
|
return "format-mismatch";
|
|
1342
824
|
}
|
|
1343
|
-
if (!meta.codePath || !
|
|
825
|
+
if (!meta.codePath || !fs4.existsSync(meta.codePath)) {
|
|
1344
826
|
return "missing-code";
|
|
1345
827
|
}
|
|
1346
828
|
for (const file of meta.files ?? []) {
|
|
@@ -1365,11 +847,27 @@ function hashRolldownOptions(options) {
|
|
|
1365
847
|
).digest("hex");
|
|
1366
848
|
}
|
|
1367
849
|
|
|
850
|
+
// src/config.ts
|
|
851
|
+
var configDefaults = Object.freeze({
|
|
852
|
+
resolve: {
|
|
853
|
+
extensions: [".mjs", ".js", ".mts", ".ts", ".jsx", ".tsx", ".json"]
|
|
854
|
+
}
|
|
855
|
+
});
|
|
856
|
+
var defaultGetOutputFile = (filepath, _format) => {
|
|
857
|
+
return filepath;
|
|
858
|
+
};
|
|
859
|
+
|
|
860
|
+
// src/loader.ts
|
|
861
|
+
import fs5 from "fs";
|
|
862
|
+
import { createRequire as createRequire5 } from "module";
|
|
863
|
+
import path7 from "path";
|
|
864
|
+
import { promisify } from "util";
|
|
865
|
+
|
|
1368
866
|
// src/temp-output.ts
|
|
1369
867
|
import { Buffer as Buffer2 } from "buffer";
|
|
1370
868
|
import fsp2 from "fs/promises";
|
|
1371
869
|
import os2 from "os";
|
|
1372
|
-
import
|
|
870
|
+
import path6 from "path";
|
|
1373
871
|
import process5 from "process";
|
|
1374
872
|
import { pathToFileURL as pathToFileURL4 } from "url";
|
|
1375
873
|
function sanitizeFilename(name) {
|
|
@@ -1377,22 +875,22 @@ function sanitizeFilename(name) {
|
|
|
1377
875
|
}
|
|
1378
876
|
async function resolveTempOutputFile(sourceFile, code, options) {
|
|
1379
877
|
const getOutputFile = options.getOutputFile || defaultGetOutputFile;
|
|
1380
|
-
const filenameHint = sanitizeFilename(
|
|
878
|
+
const filenameHint = sanitizeFilename(path6.basename(sourceFile));
|
|
1381
879
|
const hash = `timestamp-${Date.now()}-${Math.random().toString(16).slice(2)}`;
|
|
1382
880
|
const extension = options.format === "cjs" ? "cjs" : "mjs";
|
|
1383
881
|
const fileName = `${filenameHint}.${hash}.${extension}`;
|
|
1384
882
|
const candidates = [];
|
|
1385
883
|
if (typeof process5.versions.deno !== "string") {
|
|
1386
|
-
const nearest = findNearestNodeModules(
|
|
884
|
+
const nearest = findNearestNodeModules(path6.dirname(sourceFile));
|
|
1387
885
|
if (nearest) {
|
|
1388
|
-
candidates.push(
|
|
886
|
+
candidates.push(path6.resolve(nearest, ".rolldown-require"));
|
|
1389
887
|
}
|
|
1390
888
|
}
|
|
1391
|
-
candidates.push(
|
|
889
|
+
candidates.push(path6.join(os2.tmpdir(), "rolldown-require"));
|
|
1392
890
|
for (const base of candidates) {
|
|
1393
|
-
const target = getOutputFile(
|
|
891
|
+
const target = getOutputFile(path6.join(base, fileName), options.format);
|
|
1394
892
|
try {
|
|
1395
|
-
await fsp2.mkdir(
|
|
893
|
+
await fsp2.mkdir(path6.dirname(target), { recursive: true });
|
|
1396
894
|
await fsp2.writeFile(target, code);
|
|
1397
895
|
const cleanup = async () => {
|
|
1398
896
|
if (options.preserveTemporaryFile) {
|
|
@@ -1423,7 +921,7 @@ async function resolveTempOutputFile(sourceFile, code, options) {
|
|
|
1423
921
|
|
|
1424
922
|
// src/loader.ts
|
|
1425
923
|
var _require2 = createRequire5(import.meta.url);
|
|
1426
|
-
var promisifiedRealpath = promisify(
|
|
924
|
+
var promisifiedRealpath = promisify(fs5.realpath);
|
|
1427
925
|
async function loadFromBundledFile(fileName, bundledCode, options, dependencies) {
|
|
1428
926
|
const cacheConfig = resolveCacheOptions(fileName, options);
|
|
1429
927
|
if (cacheConfig.enabled) {
|
|
@@ -1457,7 +955,7 @@ async function loadFromBundledFile(fileName, bundledCode, options, dependencies)
|
|
|
1457
955
|
}
|
|
1458
956
|
}
|
|
1459
957
|
} else {
|
|
1460
|
-
const extension =
|
|
958
|
+
const extension = path7.extname(fileName);
|
|
1461
959
|
const realFileName = await promisifiedRealpath(fileName);
|
|
1462
960
|
const loaderExt = extension in _require2.extensions ? extension : ".js";
|
|
1463
961
|
const defaultLoader = _require2.extensions[loaderExt];
|
|
@@ -1497,15 +995,15 @@ async function loadFromBundledFile(fileName, bundledCode, options, dependencies)
|
|
|
1497
995
|
}
|
|
1498
996
|
|
|
1499
997
|
// src/options.ts
|
|
1500
|
-
import
|
|
998
|
+
import path8 from "path";
|
|
1501
999
|
import process6 from "process";
|
|
1502
1000
|
import { getTsconfig } from "get-tsconfig";
|
|
1503
1001
|
function resolveEntryFilepath(options) {
|
|
1504
|
-
if (
|
|
1002
|
+
if (path8.isAbsolute(options.filepath)) {
|
|
1505
1003
|
return options.filepath;
|
|
1506
1004
|
}
|
|
1507
|
-
const cwd = options.cwd ?
|
|
1508
|
-
return
|
|
1005
|
+
const cwd = options.cwd ? path8.resolve(options.cwd) : process6.cwd();
|
|
1006
|
+
return path8.resolve(cwd, options.filepath);
|
|
1509
1007
|
}
|
|
1510
1008
|
function detectModuleType(resolvedPath) {
|
|
1511
1009
|
return typeof process6.versions.deno === "string" || isFilePathESM(resolvedPath);
|
|
@@ -1516,13 +1014,15 @@ function createInternalOptions(userOptions, isESM) {
|
|
|
1516
1014
|
cwd: _cwd,
|
|
1517
1015
|
...rest
|
|
1518
1016
|
} = userOptions;
|
|
1519
|
-
const tsconfig = resolveTsconfigPath(userOptions);
|
|
1017
|
+
const tsconfig = userOptions.tsconfig === false ? false : resolveTsconfigPath(userOptions);
|
|
1520
1018
|
const format = userOptions.format ?? (isESM ? "esm" : "cjs");
|
|
1019
|
+
const sourcemap = resolveSourcemapOption(userOptions);
|
|
1521
1020
|
return {
|
|
1522
1021
|
...rest,
|
|
1523
1022
|
isESM,
|
|
1524
1023
|
format,
|
|
1525
|
-
tsconfig
|
|
1024
|
+
tsconfig,
|
|
1025
|
+
sourcemap
|
|
1526
1026
|
};
|
|
1527
1027
|
}
|
|
1528
1028
|
function resolveTsconfigPath(options) {
|
|
@@ -1534,12 +1034,46 @@ function resolveTsconfigPath(options) {
|
|
|
1534
1034
|
}
|
|
1535
1035
|
return getTsconfig(options.cwd, "tsconfig.json")?.path ?? void 0;
|
|
1536
1036
|
}
|
|
1037
|
+
function resolveSourcemapOption(options) {
|
|
1038
|
+
if (options.sourcemap !== void 0) {
|
|
1039
|
+
return options.sourcemap;
|
|
1040
|
+
}
|
|
1041
|
+
if (shouldEnableSourcemapFromEnv()) {
|
|
1042
|
+
return "inline";
|
|
1043
|
+
}
|
|
1044
|
+
return void 0;
|
|
1045
|
+
}
|
|
1046
|
+
function shouldEnableSourcemapFromEnv() {
|
|
1047
|
+
const nodeOptions = process6.env.NODE_OPTIONS ?? "";
|
|
1048
|
+
if (nodeOptions.includes("--inspect")) {
|
|
1049
|
+
return true;
|
|
1050
|
+
}
|
|
1051
|
+
if (process6.env.VSCODE_INSPECTOR_OPTIONS) {
|
|
1052
|
+
return true;
|
|
1053
|
+
}
|
|
1054
|
+
if (process6.env.DEBUG) {
|
|
1055
|
+
return true;
|
|
1056
|
+
}
|
|
1057
|
+
return false;
|
|
1058
|
+
}
|
|
1537
1059
|
|
|
1538
1060
|
// src/index.ts
|
|
1539
1061
|
async function bundleRequire(options) {
|
|
1540
1062
|
const resolvedPath = resolveEntryFilepath(options);
|
|
1541
1063
|
const isESM = detectModuleType(resolvedPath);
|
|
1542
1064
|
const internalOptions = createInternalOptions(options, isESM);
|
|
1065
|
+
const cacheConfig = resolveCacheOptions(resolvedPath, internalOptions);
|
|
1066
|
+
if (cacheConfig.enabled) {
|
|
1067
|
+
const cached = await maybeReadCache(cacheConfig, internalOptions);
|
|
1068
|
+
if (cached) {
|
|
1069
|
+
const mod2 = await importCachedCode(cached, internalOptions);
|
|
1070
|
+
if (cacheConfig.memory && cached.meta) {
|
|
1071
|
+
writeMemoryCache(cacheConfig, mod2, cached.meta);
|
|
1072
|
+
}
|
|
1073
|
+
const dependencies = cached.meta?.files?.map((file) => file.path).filter((file) => file !== cacheConfig.entryPath) ?? [];
|
|
1074
|
+
return { mod: mod2, dependencies };
|
|
1075
|
+
}
|
|
1076
|
+
}
|
|
1543
1077
|
const bundled = await bundleFile(
|
|
1544
1078
|
resolvedPath,
|
|
1545
1079
|
internalOptions
|