@ricsam/isolate 0.0.1 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +243 -34
- package/dist/cjs/bridge/diagnostics.cjs +58 -0
- package/dist/cjs/bridge/diagnostics.cjs.map +10 -0
- package/dist/cjs/bridge/legacy-adapters.cjs +242 -0
- package/dist/cjs/bridge/legacy-adapters.cjs.map +10 -0
- package/dist/cjs/bridge/request-context.cjs +59 -0
- package/dist/cjs/bridge/request-context.cjs.map +10 -0
- package/dist/cjs/bridge/runtime-bindings.cjs +367 -0
- package/dist/cjs/bridge/runtime-bindings.cjs.map +10 -0
- package/dist/cjs/browser/browser-runtime.cjs +157 -0
- package/dist/cjs/browser/browser-runtime.cjs.map +10 -0
- package/dist/cjs/daemon.cjs +91 -0
- package/dist/cjs/daemon.cjs.map +10 -0
- package/dist/cjs/files/index.cjs +140 -0
- package/dist/cjs/files/index.cjs.map +10 -0
- package/dist/cjs/host/create-isolate-host.cjs +235 -0
- package/dist/cjs/host/create-isolate-host.cjs.map +10 -0
- package/dist/cjs/host/index.cjs +47 -0
- package/dist/cjs/host/index.cjs.map +10 -0
- package/dist/cjs/index.cjs +55 -0
- package/dist/cjs/index.cjs.map +10 -0
- package/dist/cjs/internal/client/connection.cjs +1919 -0
- package/dist/cjs/internal/client/connection.cjs.map +10 -0
- package/dist/cjs/internal/client/index.cjs +48 -0
- package/dist/cjs/internal/client/index.cjs.map +10 -0
- package/dist/cjs/internal/client/types.cjs +30 -0
- package/dist/cjs/internal/client/types.cjs.map +9 -0
- package/dist/cjs/internal/console/index.cjs +506 -0
- package/dist/cjs/internal/console/index.cjs.map +10 -0
- package/dist/cjs/internal/console/utils.cjs +70 -0
- package/dist/cjs/internal/console/utils.cjs.map +10 -0
- package/dist/cjs/internal/core/index.cjs +2745 -0
- package/dist/cjs/internal/core/index.cjs.map +10 -0
- package/dist/cjs/internal/crypto/index.cjs +470 -0
- package/dist/cjs/internal/crypto/index.cjs.map +10 -0
- package/dist/cjs/internal/daemon/callback-fs-handler.cjs +355 -0
- package/dist/cjs/internal/daemon/callback-fs-handler.cjs.map +10 -0
- package/dist/cjs/internal/daemon/connection.cjs +1952 -0
- package/dist/cjs/internal/daemon/connection.cjs.map +10 -0
- package/dist/cjs/internal/daemon/daemon.cjs +98 -0
- package/dist/cjs/internal/daemon/daemon.cjs.map +10 -0
- package/dist/cjs/internal/daemon/index.cjs +145 -0
- package/dist/cjs/internal/daemon/index.cjs.map +10 -0
- package/dist/cjs/internal/daemon/runtime-pool.cjs +106 -0
- package/dist/cjs/internal/daemon/runtime-pool.cjs.map +10 -0
- package/dist/cjs/internal/daemon/types.cjs +30 -0
- package/dist/cjs/internal/daemon/types.cjs.map +9 -0
- package/dist/cjs/internal/encoding/index.cjs +419 -0
- package/dist/cjs/internal/encoding/index.cjs.map +10 -0
- package/dist/cjs/internal/fetch/consistency/origins.cjs +598 -0
- package/dist/cjs/internal/fetch/consistency/origins.cjs.map +10 -0
- package/dist/cjs/internal/fetch/index.cjs +2640 -0
- package/dist/cjs/internal/fetch/index.cjs.map +10 -0
- package/dist/cjs/internal/fetch/stream-state.cjs +256 -0
- package/dist/cjs/internal/fetch/stream-state.cjs.map +10 -0
- package/dist/cjs/internal/fs/index.cjs +847 -0
- package/dist/cjs/internal/fs/index.cjs.map +10 -0
- package/dist/cjs/internal/fs/node-adapter.cjs +254 -0
- package/dist/cjs/internal/fs/node-adapter.cjs.map +10 -0
- package/dist/cjs/internal/module-loader/bundle.cjs +482 -0
- package/dist/cjs/internal/module-loader/bundle.cjs.map +10 -0
- package/dist/cjs/internal/module-loader/index.cjs +240 -0
- package/dist/cjs/internal/module-loader/index.cjs.map +10 -0
- package/dist/cjs/internal/module-loader/mappings.cjs +120 -0
- package/dist/cjs/internal/module-loader/mappings.cjs.map +10 -0
- package/dist/cjs/internal/module-loader/resolve.cjs +177 -0
- package/dist/cjs/internal/module-loader/resolve.cjs.map +10 -0
- package/dist/cjs/internal/module-loader/strip-types.cjs +236 -0
- package/dist/cjs/internal/module-loader/strip-types.cjs.map +10 -0
- package/dist/cjs/internal/path/index.cjs +503 -0
- package/dist/cjs/internal/path/index.cjs.map +10 -0
- package/dist/cjs/internal/playwright/client.cjs +49 -0
- package/dist/cjs/internal/playwright/client.cjs.map +10 -0
- package/dist/cjs/internal/playwright/handler.cjs +1416 -0
- package/dist/cjs/internal/playwright/handler.cjs.map +10 -0
- package/dist/cjs/internal/playwright/index.cjs +1289 -0
- package/dist/cjs/internal/playwright/index.cjs.map +10 -0
- package/dist/cjs/internal/playwright/types.cjs +47 -0
- package/dist/cjs/internal/playwright/types.cjs.map +10 -0
- package/dist/cjs/internal/protocol/codec.cjs +510 -0
- package/dist/cjs/internal/protocol/codec.cjs.map +10 -0
- package/dist/cjs/internal/protocol/framing.cjs +141 -0
- package/dist/cjs/internal/protocol/framing.cjs.map +10 -0
- package/dist/cjs/internal/protocol/index.cjs +110 -0
- package/dist/cjs/internal/protocol/index.cjs.map +10 -0
- package/dist/cjs/internal/protocol/marshalValue.cjs +518 -0
- package/dist/cjs/internal/protocol/marshalValue.cjs.map +10 -0
- package/dist/cjs/internal/protocol/serialization.cjs +109 -0
- package/dist/cjs/internal/protocol/serialization.cjs.map +10 -0
- package/dist/cjs/internal/protocol/types.cjs +181 -0
- package/dist/cjs/internal/protocol/types.cjs.map +10 -0
- package/dist/cjs/internal/runtime/index.cjs +1235 -0
- package/dist/cjs/internal/runtime/index.cjs.map +10 -0
- package/dist/cjs/internal/server/index.cjs +223 -0
- package/dist/cjs/internal/server/index.cjs.map +10 -0
- package/dist/cjs/internal/test-environment/index.cjs +1415 -0
- package/dist/cjs/internal/test-environment/index.cjs.map +10 -0
- package/dist/cjs/internal/timers/index.cjs +200 -0
- package/dist/cjs/internal/timers/index.cjs.map +10 -0
- package/dist/cjs/internal/transform/index.cjs +361 -0
- package/dist/cjs/internal/transform/index.cjs.map +10 -0
- package/dist/cjs/internal/typecheck/index.cjs +60 -0
- package/dist/cjs/internal/typecheck/index.cjs.map +10 -0
- package/dist/cjs/internal/typecheck/isolate-types.cjs +2614 -0
- package/dist/cjs/internal/typecheck/isolate-types.cjs.map +10 -0
- package/dist/cjs/internal/typecheck/typecheck.cjs +131 -0
- package/dist/cjs/internal/typecheck/typecheck.cjs.map +10 -0
- package/dist/cjs/modules/index.cjs +160 -0
- package/dist/cjs/modules/index.cjs.map +10 -0
- package/dist/cjs/package.json +5 -0
- package/dist/cjs/runtime/script-runtime.cjs +97 -0
- package/dist/cjs/runtime/script-runtime.cjs.map +10 -0
- package/dist/cjs/server/app-server.cjs +158 -0
- package/dist/cjs/server/app-server.cjs.map +10 -0
- package/dist/cjs/testing/integration-helpers.cjs +127 -0
- package/dist/cjs/testing/integration-helpers.cjs.map +10 -0
- package/dist/cjs/typecheck/index.cjs +96 -0
- package/dist/cjs/typecheck/index.cjs.map +10 -0
- package/dist/cjs/types.cjs +30 -0
- package/dist/cjs/types.cjs.map +9 -0
- package/dist/mjs/bridge/diagnostics.mjs +18 -0
- package/dist/mjs/bridge/diagnostics.mjs.map +10 -0
- package/dist/mjs/bridge/legacy-adapters.mjs +178 -0
- package/dist/mjs/bridge/legacy-adapters.mjs.map +10 -0
- package/dist/mjs/bridge/request-context.mjs +19 -0
- package/dist/mjs/bridge/request-context.mjs.map +10 -0
- package/dist/mjs/bridge/runtime-bindings.mjs +303 -0
- package/dist/mjs/bridge/runtime-bindings.mjs.map +10 -0
- package/dist/mjs/browser/browser-runtime.mjs +93 -0
- package/dist/mjs/browser/browser-runtime.mjs.map +10 -0
- package/dist/mjs/daemon.mjs +91 -0
- package/dist/mjs/daemon.mjs.map +10 -0
- package/dist/mjs/files/index.mjs +76 -0
- package/dist/mjs/files/index.mjs.map +10 -0
- package/dist/mjs/host/create-isolate-host.mjs +171 -0
- package/dist/mjs/host/create-isolate-host.mjs.map +10 -0
- package/dist/mjs/host/index.mjs +7 -0
- package/dist/mjs/host/index.mjs.map +10 -0
- package/dist/mjs/index.mjs +15 -0
- package/dist/mjs/index.mjs.map +10 -0
- package/dist/mjs/internal/client/connection.mjs +1872 -0
- package/dist/mjs/internal/client/connection.mjs.map +10 -0
- package/dist/mjs/internal/client/index.mjs +8 -0
- package/dist/mjs/internal/client/index.mjs.map +10 -0
- package/dist/mjs/internal/client/types.mjs +2 -0
- package/dist/mjs/internal/client/types.mjs.map +9 -0
- package/dist/mjs/internal/console/index.mjs +442 -0
- package/dist/mjs/internal/console/index.mjs.map +10 -0
- package/dist/mjs/internal/console/utils.mjs +30 -0
- package/dist/mjs/internal/console/utils.mjs.map +10 -0
- package/dist/mjs/internal/core/index.mjs +2681 -0
- package/dist/mjs/internal/core/index.mjs.map +10 -0
- package/dist/mjs/internal/crypto/index.mjs +406 -0
- package/dist/mjs/internal/crypto/index.mjs.map +10 -0
- package/dist/mjs/internal/daemon/callback-fs-handler.mjs +315 -0
- package/dist/mjs/internal/daemon/callback-fs-handler.mjs.map +10 -0
- package/dist/mjs/internal/daemon/connection.mjs +1931 -0
- package/dist/mjs/internal/daemon/connection.mjs.map +10 -0
- package/dist/mjs/internal/daemon/daemon.mjs +98 -0
- package/dist/mjs/internal/daemon/daemon.mjs.map +10 -0
- package/dist/mjs/internal/daemon/index.mjs +105 -0
- package/dist/mjs/internal/daemon/index.mjs.map +10 -0
- package/dist/mjs/internal/daemon/runtime-pool.mjs +66 -0
- package/dist/mjs/internal/daemon/runtime-pool.mjs.map +10 -0
- package/dist/mjs/internal/daemon/types.mjs +2 -0
- package/dist/mjs/internal/daemon/types.mjs.map +9 -0
- package/dist/mjs/internal/encoding/index.mjs +379 -0
- package/dist/mjs/internal/encoding/index.mjs.map +10 -0
- package/dist/mjs/internal/fetch/consistency/origins.mjs +558 -0
- package/dist/mjs/internal/fetch/consistency/origins.mjs.map +10 -0
- package/dist/mjs/internal/fetch/index.mjs +2580 -0
- package/dist/mjs/internal/fetch/index.mjs.map +10 -0
- package/dist/mjs/internal/fetch/stream-state.mjs +216 -0
- package/dist/mjs/internal/fetch/stream-state.mjs.map +10 -0
- package/dist/mjs/internal/fs/index.mjs +783 -0
- package/dist/mjs/internal/fs/index.mjs.map +10 -0
- package/dist/mjs/internal/fs/node-adapter.mjs +190 -0
- package/dist/mjs/internal/fs/node-adapter.mjs.map +10 -0
- package/dist/mjs/internal/module-loader/bundle.mjs +418 -0
- package/dist/mjs/internal/module-loader/bundle.mjs.map +10 -0
- package/dist/mjs/internal/module-loader/index.mjs +185 -0
- package/dist/mjs/internal/module-loader/index.mjs.map +10 -0
- package/dist/mjs/internal/module-loader/mappings.mjs +80 -0
- package/dist/mjs/internal/module-loader/mappings.mjs.map +10 -0
- package/dist/mjs/internal/module-loader/resolve.mjs +113 -0
- package/dist/mjs/internal/module-loader/resolve.mjs.map +10 -0
- package/dist/mjs/internal/module-loader/strip-types.mjs +172 -0
- package/dist/mjs/internal/module-loader/strip-types.mjs.map +10 -0
- package/dist/mjs/internal/path/index.mjs +463 -0
- package/dist/mjs/internal/path/index.mjs.map +10 -0
- package/dist/mjs/internal/playwright/client.mjs +13 -0
- package/dist/mjs/internal/playwright/client.mjs.map +10 -0
- package/dist/mjs/internal/playwright/handler.mjs +1378 -0
- package/dist/mjs/internal/playwright/handler.mjs.map +10 -0
- package/dist/mjs/internal/playwright/index.mjs +1234 -0
- package/dist/mjs/internal/playwright/index.mjs.map +10 -0
- package/dist/mjs/internal/playwright/types.mjs +7 -0
- package/dist/mjs/internal/playwright/types.mjs.map +10 -0
- package/dist/mjs/internal/protocol/codec.mjs +470 -0
- package/dist/mjs/internal/protocol/codec.mjs.map +10 -0
- package/dist/mjs/internal/protocol/framing.mjs +101 -0
- package/dist/mjs/internal/protocol/framing.mjs.map +10 -0
- package/dist/mjs/internal/protocol/index.mjs +98 -0
- package/dist/mjs/internal/protocol/index.mjs.map +10 -0
- package/dist/mjs/internal/protocol/marshalValue.mjs +494 -0
- package/dist/mjs/internal/protocol/marshalValue.mjs.map +10 -0
- package/dist/mjs/internal/protocol/serialization.mjs +69 -0
- package/dist/mjs/internal/protocol/serialization.mjs.map +10 -0
- package/dist/mjs/internal/protocol/types.mjs +141 -0
- package/dist/mjs/internal/protocol/types.mjs.map +10 -0
- package/dist/mjs/internal/runtime/index.mjs +1198 -0
- package/dist/mjs/internal/runtime/index.mjs.map +10 -0
- package/dist/mjs/internal/server/index.mjs +183 -0
- package/dist/mjs/internal/server/index.mjs.map +10 -0
- package/dist/mjs/internal/test-environment/index.mjs +1351 -0
- package/dist/mjs/internal/test-environment/index.mjs.map +10 -0
- package/dist/mjs/internal/timers/index.mjs +136 -0
- package/dist/mjs/internal/timers/index.mjs.map +10 -0
- package/dist/mjs/internal/transform/index.mjs +321 -0
- package/dist/mjs/internal/transform/index.mjs.map +10 -0
- package/dist/mjs/internal/typecheck/index.mjs +35 -0
- package/dist/mjs/internal/typecheck/index.mjs.map +10 -0
- package/dist/mjs/internal/typecheck/isolate-types.mjs +2574 -0
- package/dist/mjs/internal/typecheck/isolate-types.mjs.map +10 -0
- package/dist/mjs/internal/typecheck/typecheck.mjs +91 -0
- package/dist/mjs/internal/typecheck/typecheck.mjs.map +10 -0
- package/dist/mjs/modules/index.mjs +96 -0
- package/dist/mjs/modules/index.mjs.map +10 -0
- package/dist/mjs/package.json +5 -0
- package/dist/mjs/runtime/script-runtime.mjs +57 -0
- package/dist/mjs/runtime/script-runtime.mjs.map +10 -0
- package/dist/mjs/server/app-server.mjs +118 -0
- package/dist/mjs/server/app-server.mjs.map +10 -0
- package/dist/mjs/testing/integration-helpers.mjs +63 -0
- package/dist/mjs/testing/integration-helpers.mjs.map +10 -0
- package/dist/mjs/typecheck/index.mjs +56 -0
- package/dist/mjs/typecheck/index.mjs.map +10 -0
- package/dist/mjs/types.mjs +2 -0
- package/dist/mjs/types.mjs.map +9 -0
- package/dist/types/bridge/diagnostics.d.ts +12 -0
- package/dist/types/bridge/legacy-adapters.d.ts +14 -0
- package/dist/types/bridge/request-context.d.ts +10 -0
- package/dist/types/bridge/runtime-bindings.d.ts +14 -0
- package/dist/types/browser/browser-runtime.d.ts +3 -0
- package/dist/types/daemon.d.ts +2 -0
- package/dist/types/files/index.d.ts +5 -0
- package/dist/types/host/create-isolate-host.d.ts +2 -0
- package/dist/types/host/index.d.ts +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/internal/client/connection.d.ts +9 -0
- package/dist/types/internal/client/index.d.ts +8 -0
- package/dist/types/internal/client/types.d.ts +198 -0
- package/dist/types/internal/console/index.d.ts +108 -0
- package/dist/types/internal/console/utils.d.ts +27 -0
- package/dist/types/internal/core/index.d.ts +119 -0
- package/dist/types/internal/crypto/index.d.ts +18 -0
- package/dist/types/internal/daemon/callback-fs-handler.d.ts +28 -0
- package/dist/types/internal/daemon/connection.d.ts +9 -0
- package/dist/types/internal/daemon/daemon.d.ts +2 -0
- package/dist/types/internal/daemon/index.d.ts +14 -0
- package/dist/types/internal/daemon/runtime-pool.d.ts +16 -0
- package/dist/types/internal/daemon/types.d.ts +211 -0
- package/dist/types/internal/encoding/index.d.ts +21 -0
- package/dist/types/internal/fetch/consistency/origins.d.ts +179 -0
- package/dist/types/internal/fetch/index.d.ts +93 -0
- package/dist/types/internal/fetch/stream-state.d.ts +65 -0
- package/dist/types/internal/fs/index.d.ts +70 -0
- package/dist/types/internal/fs/node-adapter.d.ts +24 -0
- package/dist/types/internal/module-loader/bundle.d.ts +33 -0
- package/dist/types/internal/module-loader/index.d.ts +30 -0
- package/dist/types/internal/module-loader/mappings.d.ts +47 -0
- package/dist/types/internal/module-loader/resolve.d.ts +26 -0
- package/dist/types/internal/module-loader/strip-types.d.ts +19 -0
- package/dist/types/internal/path/index.d.ts +23 -0
- package/dist/types/internal/playwright/client.d.ts +7 -0
- package/dist/types/internal/playwright/handler.d.ts +44 -0
- package/dist/types/internal/playwright/index.d.ts +14 -0
- package/dist/types/internal/playwright/types.d.ts +145 -0
- package/dist/types/internal/protocol/codec.d.ts +242 -0
- package/dist/types/internal/protocol/framing.d.ts +89 -0
- package/dist/types/internal/protocol/index.d.ts +10 -0
- package/dist/types/internal/protocol/marshalValue.d.ts +79 -0
- package/dist/types/internal/protocol/serialization.d.ts +23 -0
- package/dist/types/internal/protocol/types.d.ts +996 -0
- package/dist/types/internal/runtime/index.d.ts +200 -0
- package/dist/types/internal/server/index.d.ts +42 -0
- package/dist/types/internal/test-environment/index.d.ts +112 -0
- package/dist/types/internal/timers/index.d.ts +22 -0
- package/dist/types/internal/transform/index.d.ts +36 -0
- package/dist/types/internal/typecheck/index.d.ts +7 -0
- package/dist/types/internal/typecheck/isolate-types.d.ts +94 -0
- package/dist/types/internal/typecheck/typecheck.d.ts +148 -0
- package/dist/types/modules/index.d.ts +2 -0
- package/dist/types/runtime/script-runtime.d.ts +6 -0
- package/dist/types/server/app-server.d.ts +3 -0
- package/dist/types/testing/integration-helpers.d.ts +9 -0
- package/dist/types/typecheck/index.d.ts +8 -0
- package/dist/types/types.d.ts +233 -0
- package/package.json +82 -6
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
// src/internal/module-loader/bundle.ts
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { builtinModules, createRequire } from "node:module";
|
|
5
|
+
import { rollup } from "rollup";
|
|
6
|
+
import * as nodeResolveModule from "@rollup/plugin-node-resolve";
|
|
7
|
+
import * as commonjsModule from "@rollup/plugin-commonjs";
|
|
8
|
+
import * as jsonModule from "@rollup/plugin-json";
|
|
9
|
+
import * as replaceModule from "@rollup/plugin-replace";
|
|
10
|
+
import { detectFormat, parseSpecifier } from "./resolve.mjs";
|
|
11
|
+
import { processTypeScript, isTypeScriptFile } from "./strip-types.mjs";
|
|
12
|
+
var nodeResolve = nodeResolveModule.default || nodeResolveModule;
|
|
13
|
+
var commonjs = commonjsModule.default || commonjsModule;
|
|
14
|
+
var json = jsonModule.default || jsonModule;
|
|
15
|
+
var replace = replaceModule.default || replaceModule;
|
|
16
|
+
var commonjsInteropOptions = {
|
|
17
|
+
esmExternals: true,
|
|
18
|
+
requireReturnsDefault: "auto"
|
|
19
|
+
};
|
|
20
|
+
var PACKAGE_ENTRY_WRAPPER_PREFIX = "\x00package-entry-wrapper:";
|
|
21
|
+
var INVALID_FUNCTION_EXPORT_NAMES = new Set([
|
|
22
|
+
"arguments",
|
|
23
|
+
"caller",
|
|
24
|
+
"length",
|
|
25
|
+
"name",
|
|
26
|
+
"prototype"
|
|
27
|
+
]);
|
|
28
|
+
var nodeBuiltins = new Set(builtinModules);
|
|
29
|
+
function isNodeBuiltin(source) {
|
|
30
|
+
const name = source.startsWith("node:") ? source.slice(5) : source;
|
|
31
|
+
const topLevel = name.split("/")[0];
|
|
32
|
+
return nodeBuiltins.has(topLevel);
|
|
33
|
+
}
|
|
34
|
+
var NODE_BUILTIN_SHIM_PREFIX = "\x00node-builtin-shim:";
|
|
35
|
+
function getNodeBuiltinShimCode(source) {
|
|
36
|
+
if (source === "ws" || source === "node:ws") {
|
|
37
|
+
return `
|
|
38
|
+
const WebSocketShim = globalThis.WebSocket;
|
|
39
|
+
|
|
40
|
+
if (!WebSocketShim) {
|
|
41
|
+
throw new Error("The isolate runtime does not provide a global WebSocket implementation.");
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export { WebSocketShim as WebSocket };
|
|
45
|
+
export default WebSocketShim;
|
|
46
|
+
`;
|
|
47
|
+
}
|
|
48
|
+
return `export default {};
|
|
49
|
+
`;
|
|
50
|
+
}
|
|
51
|
+
function shimNodeBuiltinsPlugin() {
|
|
52
|
+
return {
|
|
53
|
+
name: "shim-node-builtins",
|
|
54
|
+
resolveId(source) {
|
|
55
|
+
if (isNodeBuiltin(source)) {
|
|
56
|
+
return { id: `${NODE_BUILTIN_SHIM_PREFIX}${source}`, moduleSideEffects: false };
|
|
57
|
+
}
|
|
58
|
+
return null;
|
|
59
|
+
},
|
|
60
|
+
load(id) {
|
|
61
|
+
if (id.startsWith(NODE_BUILTIN_SHIM_PREFIX)) {
|
|
62
|
+
return getNodeBuiltinShimCode(id.slice(NODE_BUILTIN_SHIM_PREFIX.length));
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function isValidEsmIdentifier(name) {
|
|
69
|
+
return /^[$A-Z_a-z][$\w]*$/.test(name);
|
|
70
|
+
}
|
|
71
|
+
function resolvePackageImportPath(specifier, rootDir) {
|
|
72
|
+
const resolver = createRequire(path.join(rootDir, "__isolate_module_loader__.js"));
|
|
73
|
+
let resolvedRequirePath;
|
|
74
|
+
try {
|
|
75
|
+
resolvedRequirePath = resolver.resolve(specifier);
|
|
76
|
+
} catch {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
const { packageName, subpath } = parseSpecifier(specifier);
|
|
80
|
+
const packageJsonPath = findPackageJsonPath(resolvedRequirePath, packageName);
|
|
81
|
+
if (!packageJsonPath) {
|
|
82
|
+
return resolvedRequirePath;
|
|
83
|
+
}
|
|
84
|
+
let packageJson;
|
|
85
|
+
try {
|
|
86
|
+
packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
|
|
87
|
+
} catch {
|
|
88
|
+
return resolvedRequirePath;
|
|
89
|
+
}
|
|
90
|
+
const packageRoot = path.dirname(packageJsonPath);
|
|
91
|
+
const exportPath = resolveImportEntryFromPackageJson(packageJson, subpath);
|
|
92
|
+
if (exportPath) {
|
|
93
|
+
return path.resolve(packageRoot, exportPath);
|
|
94
|
+
}
|
|
95
|
+
if (!subpath) {
|
|
96
|
+
const moduleEntry = packageJson.module;
|
|
97
|
+
if (typeof moduleEntry === "string") {
|
|
98
|
+
return path.resolve(packageRoot, moduleEntry);
|
|
99
|
+
}
|
|
100
|
+
const browserEntry = packageJson.browser;
|
|
101
|
+
if (typeof browserEntry === "string") {
|
|
102
|
+
return path.resolve(packageRoot, browserEntry);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return resolvedRequirePath;
|
|
106
|
+
}
|
|
107
|
+
function findPackageJsonPath(resolvedPath, packageName) {
|
|
108
|
+
let currentDir = path.dirname(resolvedPath);
|
|
109
|
+
let matchedPackageJsonPath = null;
|
|
110
|
+
while (true) {
|
|
111
|
+
const packageJsonPath = path.join(currentDir, "package.json");
|
|
112
|
+
if (fs.existsSync(packageJsonPath)) {
|
|
113
|
+
try {
|
|
114
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
|
|
115
|
+
if (packageJson.name === packageName) {
|
|
116
|
+
matchedPackageJsonPath = packageJsonPath;
|
|
117
|
+
}
|
|
118
|
+
} catch {}
|
|
119
|
+
}
|
|
120
|
+
const parentDir = path.dirname(currentDir);
|
|
121
|
+
if (parentDir === currentDir) {
|
|
122
|
+
return matchedPackageJsonPath;
|
|
123
|
+
}
|
|
124
|
+
currentDir = parentDir;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
function resolveImportEntryFromPackageJson(packageJson, subpath) {
|
|
128
|
+
const exportsField = packageJson.exports;
|
|
129
|
+
if (exportsField === undefined) {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
const exportKey = subpath ? `.${subpath}` : ".";
|
|
133
|
+
if (isConditionalExportsObject(exportsField)) {
|
|
134
|
+
if (exportKey !== ".") {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
return pickImportTarget(exportsField);
|
|
138
|
+
}
|
|
139
|
+
if (typeof exportsField === "object" && exportsField !== null && !Array.isArray(exportsField)) {
|
|
140
|
+
const target = exportsField[exportKey];
|
|
141
|
+
return target === undefined ? null : pickImportTarget(target);
|
|
142
|
+
}
|
|
143
|
+
return exportKey === "." ? pickImportTarget(exportsField) : null;
|
|
144
|
+
}
|
|
145
|
+
function isConditionalExportsObject(value) {
|
|
146
|
+
return typeof value === "object" && value !== null && !Array.isArray(value) && Object.keys(value).every((key) => !key.startsWith("."));
|
|
147
|
+
}
|
|
148
|
+
function pickImportTarget(value) {
|
|
149
|
+
if (typeof value === "string") {
|
|
150
|
+
return value;
|
|
151
|
+
}
|
|
152
|
+
if (Array.isArray(value)) {
|
|
153
|
+
for (const item of value) {
|
|
154
|
+
const target = pickImportTarget(item);
|
|
155
|
+
if (target) {
|
|
156
|
+
return target;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
if (typeof value !== "object" || value === null) {
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
const record = value;
|
|
165
|
+
for (const key of ["browser", "import", "module", "default"]) {
|
|
166
|
+
if (key in record) {
|
|
167
|
+
const target = pickImportTarget(record[key]);
|
|
168
|
+
if (target) {
|
|
169
|
+
return target;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
for (const nestedValue of Object.values(record)) {
|
|
174
|
+
const target = pickImportTarget(nestedValue);
|
|
175
|
+
if (target) {
|
|
176
|
+
return target;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
function getCommonJsNamedExports(specifier, rootDir) {
|
|
182
|
+
const resolvedHostPath = resolvePackageImportPath(specifier, rootDir);
|
|
183
|
+
if (!resolvedHostPath) {
|
|
184
|
+
return [];
|
|
185
|
+
}
|
|
186
|
+
let code;
|
|
187
|
+
try {
|
|
188
|
+
code = fs.readFileSync(resolvedHostPath, "utf-8");
|
|
189
|
+
} catch {
|
|
190
|
+
return [];
|
|
191
|
+
}
|
|
192
|
+
if (detectFormat(resolvedHostPath, code) !== "cjs") {
|
|
193
|
+
return [];
|
|
194
|
+
}
|
|
195
|
+
let moduleExports;
|
|
196
|
+
try {
|
|
197
|
+
moduleExports = createRequire(resolvedHostPath)(resolvedHostPath);
|
|
198
|
+
} catch {
|
|
199
|
+
return [];
|
|
200
|
+
}
|
|
201
|
+
if (moduleExports == null || typeof moduleExports !== "object" && typeof moduleExports !== "function") {
|
|
202
|
+
return [];
|
|
203
|
+
}
|
|
204
|
+
const names = new Set([
|
|
205
|
+
...Object.keys(moduleExports),
|
|
206
|
+
...Object.getOwnPropertyNames(moduleExports)
|
|
207
|
+
]);
|
|
208
|
+
names.delete("default");
|
|
209
|
+
names.delete("__esModule");
|
|
210
|
+
if (typeof moduleExports === "function") {
|
|
211
|
+
for (const name of INVALID_FUNCTION_EXPORT_NAMES) {
|
|
212
|
+
names.delete(name);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return [...names].filter(isValidEsmIdentifier).sort();
|
|
216
|
+
}
|
|
217
|
+
function packageEntryWrapperPlugin(specifier, namedExports) {
|
|
218
|
+
const wrapperId = `${PACKAGE_ENTRY_WRAPPER_PREFIX}${specifier}`;
|
|
219
|
+
return {
|
|
220
|
+
name: "package-entry-wrapper",
|
|
221
|
+
resolveId(source) {
|
|
222
|
+
if (source === wrapperId) {
|
|
223
|
+
return wrapperId;
|
|
224
|
+
}
|
|
225
|
+
return null;
|
|
226
|
+
},
|
|
227
|
+
load(id) {
|
|
228
|
+
if (id !== wrapperId) {
|
|
229
|
+
return null;
|
|
230
|
+
}
|
|
231
|
+
const namedExportLines = namedExports.map((name) => `export const ${name} = __packageDefault.${name};`);
|
|
232
|
+
return [
|
|
233
|
+
`import __packageDefault from ${JSON.stringify(specifier)};`,
|
|
234
|
+
"export default __packageDefault;",
|
|
235
|
+
...namedExportLines
|
|
236
|
+
].join(`
|
|
237
|
+
`);
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
var bundleCache = new Map;
|
|
242
|
+
var bundlesInFlight = new Map;
|
|
243
|
+
function externalizeDepsPlugin(currentPackageName) {
|
|
244
|
+
return {
|
|
245
|
+
name: "externalize-deps",
|
|
246
|
+
resolveId(source, importer) {
|
|
247
|
+
if (!importer)
|
|
248
|
+
return null;
|
|
249
|
+
if (source.startsWith(".") || source.startsWith("/"))
|
|
250
|
+
return null;
|
|
251
|
+
if (isNodeBuiltin(source))
|
|
252
|
+
return null;
|
|
253
|
+
const { packageName } = parseSpecifier(source);
|
|
254
|
+
if (packageName !== currentPackageName) {
|
|
255
|
+
return { id: source, external: true };
|
|
256
|
+
}
|
|
257
|
+
return null;
|
|
258
|
+
}
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
async function bundleSpecifier(specifier, rootDir) {
|
|
262
|
+
const cacheKey = `${specifier}\x00${rootDir}`;
|
|
263
|
+
const cached = bundleCache.get(cacheKey);
|
|
264
|
+
if (cached)
|
|
265
|
+
return cached;
|
|
266
|
+
const inFlight = bundlesInFlight.get(cacheKey);
|
|
267
|
+
if (inFlight)
|
|
268
|
+
return inFlight;
|
|
269
|
+
const promise = doBundleSpecifier(specifier, rootDir);
|
|
270
|
+
bundlesInFlight.set(cacheKey, promise);
|
|
271
|
+
try {
|
|
272
|
+
const result = await promise;
|
|
273
|
+
bundleCache.set(cacheKey, result);
|
|
274
|
+
return result;
|
|
275
|
+
} finally {
|
|
276
|
+
bundlesInFlight.delete(cacheKey);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
async function doBundleSpecifier(specifier, rootDir) {
|
|
280
|
+
const { packageName } = parseSpecifier(specifier);
|
|
281
|
+
const namedExports = getCommonJsNamedExports(specifier, rootDir);
|
|
282
|
+
const input = namedExports.length > 0 ? `${PACKAGE_ENTRY_WRAPPER_PREFIX}${specifier}` : specifier;
|
|
283
|
+
const bundle = await rollup({
|
|
284
|
+
input,
|
|
285
|
+
treeshake: false,
|
|
286
|
+
plugins: [
|
|
287
|
+
packageEntryWrapperPlugin(specifier, namedExports),
|
|
288
|
+
externalizeDepsPlugin(packageName),
|
|
289
|
+
nodeResolve({ browser: true, rootDir }),
|
|
290
|
+
shimNodeBuiltinsPlugin(),
|
|
291
|
+
commonjs(commonjsInteropOptions),
|
|
292
|
+
json(),
|
|
293
|
+
replace({
|
|
294
|
+
preventAssignment: true,
|
|
295
|
+
values: { "process.env.NODE_ENV": JSON.stringify("development") }
|
|
296
|
+
})
|
|
297
|
+
],
|
|
298
|
+
onwarn: (warning, warn) => {
|
|
299
|
+
if (warning.code === "CIRCULAR_DEPENDENCY")
|
|
300
|
+
return;
|
|
301
|
+
if (warning.code === "THIS_IS_UNDEFINED")
|
|
302
|
+
return;
|
|
303
|
+
if (warning.code === "UNUSED_EXTERNAL_IMPORT")
|
|
304
|
+
return;
|
|
305
|
+
if (warning.code === "EMPTY_BUNDLE")
|
|
306
|
+
return;
|
|
307
|
+
if (warning.code === "MISSING_EXPORT" && warning.exporter?.startsWith(NODE_BUILTIN_SHIM_PREFIX))
|
|
308
|
+
return;
|
|
309
|
+
warn(warning);
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
const { output } = await bundle.generate({
|
|
313
|
+
format: "es",
|
|
314
|
+
sourcemap: "inline",
|
|
315
|
+
inlineDynamicImports: true
|
|
316
|
+
});
|
|
317
|
+
await bundle.close();
|
|
318
|
+
const code = output[0].code;
|
|
319
|
+
return { code };
|
|
320
|
+
}
|
|
321
|
+
function externalizeAllBareSpecifiersPlugin() {
|
|
322
|
+
return {
|
|
323
|
+
name: "externalize-all-bare-specifiers",
|
|
324
|
+
resolveId(source, importer) {
|
|
325
|
+
if (!importer)
|
|
326
|
+
return null;
|
|
327
|
+
if (source.startsWith(".") || source.startsWith("/"))
|
|
328
|
+
return null;
|
|
329
|
+
if (isNodeBuiltin(source))
|
|
330
|
+
return null;
|
|
331
|
+
return { id: source, external: true };
|
|
332
|
+
}
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
function stripTypeScriptPlugin() {
|
|
336
|
+
return {
|
|
337
|
+
name: "strip-typescript",
|
|
338
|
+
transform(code, id) {
|
|
339
|
+
if (isTypeScriptFile(id)) {
|
|
340
|
+
return { code: processTypeScript(code, id), map: null };
|
|
341
|
+
}
|
|
342
|
+
return null;
|
|
343
|
+
}
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
var TS_EXTENSIONS = [".ts", ".tsx", ".mts", ".cts"];
|
|
347
|
+
async function bundleHostFile(hostFilePath) {
|
|
348
|
+
const cached = bundleCache.get(hostFilePath);
|
|
349
|
+
if (cached)
|
|
350
|
+
return cached;
|
|
351
|
+
const inFlight = bundlesInFlight.get(hostFilePath);
|
|
352
|
+
if (inFlight)
|
|
353
|
+
return inFlight;
|
|
354
|
+
const promise = doBundleHostFile(hostFilePath);
|
|
355
|
+
bundlesInFlight.set(hostFilePath, promise);
|
|
356
|
+
try {
|
|
357
|
+
const result = await promise;
|
|
358
|
+
bundleCache.set(hostFilePath, result);
|
|
359
|
+
return result;
|
|
360
|
+
} finally {
|
|
361
|
+
bundlesInFlight.delete(hostFilePath);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
async function doBundleHostFile(hostFilePath) {
|
|
365
|
+
const rootDir = path.dirname(hostFilePath);
|
|
366
|
+
const bundle = await rollup({
|
|
367
|
+
input: hostFilePath,
|
|
368
|
+
treeshake: false,
|
|
369
|
+
plugins: [
|
|
370
|
+
externalizeAllBareSpecifiersPlugin(),
|
|
371
|
+
stripTypeScriptPlugin(),
|
|
372
|
+
nodeResolve({
|
|
373
|
+
browser: true,
|
|
374
|
+
rootDir,
|
|
375
|
+
extensions: [".mjs", ".js", ".json", ".node", ...TS_EXTENSIONS]
|
|
376
|
+
}),
|
|
377
|
+
shimNodeBuiltinsPlugin(),
|
|
378
|
+
commonjs(commonjsInteropOptions),
|
|
379
|
+
json(),
|
|
380
|
+
replace({
|
|
381
|
+
preventAssignment: true,
|
|
382
|
+
values: { "process.env.NODE_ENV": JSON.stringify("development") }
|
|
383
|
+
})
|
|
384
|
+
],
|
|
385
|
+
onwarn: (warning, warn) => {
|
|
386
|
+
if (warning.code === "CIRCULAR_DEPENDENCY")
|
|
387
|
+
return;
|
|
388
|
+
if (warning.code === "THIS_IS_UNDEFINED")
|
|
389
|
+
return;
|
|
390
|
+
if (warning.code === "UNUSED_EXTERNAL_IMPORT")
|
|
391
|
+
return;
|
|
392
|
+
if (warning.code === "EMPTY_BUNDLE")
|
|
393
|
+
return;
|
|
394
|
+
if (warning.code === "MISSING_EXPORT" && warning.exporter?.startsWith(NODE_BUILTIN_SHIM_PREFIX))
|
|
395
|
+
return;
|
|
396
|
+
warn(warning);
|
|
397
|
+
}
|
|
398
|
+
});
|
|
399
|
+
const { output } = await bundle.generate({
|
|
400
|
+
format: "es",
|
|
401
|
+
sourcemap: "inline",
|
|
402
|
+
inlineDynamicImports: true
|
|
403
|
+
});
|
|
404
|
+
await bundle.close();
|
|
405
|
+
const code = output[0].code;
|
|
406
|
+
return { code };
|
|
407
|
+
}
|
|
408
|
+
function clearBundleCache() {
|
|
409
|
+
bundleCache.clear();
|
|
410
|
+
}
|
|
411
|
+
export {
|
|
412
|
+
getNodeBuiltinShimCode,
|
|
413
|
+
clearBundleCache,
|
|
414
|
+
bundleSpecifier,
|
|
415
|
+
bundleHostFile
|
|
416
|
+
};
|
|
417
|
+
|
|
418
|
+
//# debugId=331C39AA7511FF7B64756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/internal/module-loader/bundle.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { builtinModules, createRequire } from \"node:module\";\nimport { rollup, type Plugin } from \"rollup\";\nimport * as nodeResolveModule from \"@rollup/plugin-node-resolve\";\nimport * as commonjsModule from \"@rollup/plugin-commonjs\";\nimport * as jsonModule from \"@rollup/plugin-json\";\nimport * as replaceModule from \"@rollup/plugin-replace\";\nimport { detectFormat, parseSpecifier } from \"./resolve.mjs\";\nimport { processTypeScript, isTypeScriptFile } from \"./strip-types.mjs\";\nimport type { RollupCommonJSOptions } from \"@rollup/plugin-commonjs\";\nimport type { RollupJsonOptions } from \"@rollup/plugin-json\";\nimport type { RollupReplaceOptions } from \"@rollup/plugin-replace\";\n\n// Handle CJS default exports\nconst nodeResolve = ((nodeResolveModule as any).default ||\n nodeResolveModule) as (typeof nodeResolveModule)[\"nodeResolve\"];\nconst commonjs = ((commonjsModule as any).default || commonjsModule) as (\n options?: RollupCommonJSOptions\n) => Plugin;\nconst json = ((jsonModule as any).default || jsonModule) as (\n options?: RollupJsonOptions\n) => Plugin;\nconst replace = ((replaceModule as any).default || replaceModule) as (\n options?: RollupReplaceOptions\n) => Plugin;\n\nconst commonjsInteropOptions = {\n // External package imports are resolved by later loader calls as ESM bundles,\n // so CommonJS requires need ESM-aware interop instead of default-import assumptions.\n esmExternals: true,\n requireReturnsDefault: \"auto\",\n} satisfies RollupCommonJSOptions;\n\nconst PACKAGE_ENTRY_WRAPPER_PREFIX = \"\\0package-entry-wrapper:\";\nconst INVALID_FUNCTION_EXPORT_NAMES = new Set([\n \"arguments\",\n \"caller\",\n \"length\",\n \"name\",\n \"prototype\",\n]);\n\n/**\n * Set of Node.js built-in module names (e.g. \"fs\", \"path\", \"crypto\").\n */\nconst nodeBuiltins = new Set(builtinModules);\n\n/**\n * Check if a specifier refers to a Node.js built-in module.\n * Handles bare names (\"fs\"), subpaths (\"fs/promises\"), and node: prefix (\"node:fs\").\n */\nfunction isNodeBuiltin(source: string): boolean {\n const name = source.startsWith(\"node:\") ? source.slice(5) : source;\n const topLevel = name.split(\"/\")[0]!;\n return nodeBuiltins.has(topLevel);\n}\n\nconst NODE_BUILTIN_SHIM_PREFIX = \"\\0node-builtin-shim:\";\n\nexport function getNodeBuiltinShimCode(source: string): string {\n if (source === \"ws\" || source === \"node:ws\") {\n return `\nconst WebSocketShim = globalThis.WebSocket;\n\nif (!WebSocketShim) {\n throw new Error(\"The isolate runtime does not provide a global WebSocket implementation.\");\n}\n\nexport { WebSocketShim as WebSocket };\nexport default WebSocketShim;\n`;\n }\n\n return \"export default {};\\n\";\n}\n\n/**\n * Rollup plugin that provides empty shims for Node.js built-in modules.\n * Place after nodeResolve — acts as a catch-all for builtins that the\n * package's browser field didn't map to false.\n */\nfunction shimNodeBuiltinsPlugin(): Plugin {\n return {\n name: \"shim-node-builtins\",\n resolveId(source) {\n if (isNodeBuiltin(source)) {\n return { id: `${NODE_BUILTIN_SHIM_PREFIX}${source}`, moduleSideEffects: false };\n }\n return null;\n },\n load(id) {\n if (id.startsWith(NODE_BUILTIN_SHIM_PREFIX)) {\n return getNodeBuiltinShimCode(id.slice(NODE_BUILTIN_SHIM_PREFIX.length));\n }\n return null;\n },\n };\n}\n\nfunction isValidEsmIdentifier(name: string): boolean {\n return /^[$A-Z_a-z][$\\w]*$/.test(name);\n}\n\nfunction resolvePackageImportPath(specifier: string, rootDir: string): string | null {\n const resolver = createRequire(path.join(rootDir, \"__isolate_module_loader__.js\"));\n\n let resolvedRequirePath: string;\n try {\n resolvedRequirePath = resolver.resolve(specifier);\n } catch {\n return null;\n }\n\n const { packageName, subpath } = parseSpecifier(specifier);\n const packageJsonPath = findPackageJsonPath(resolvedRequirePath, packageName);\n if (!packageJsonPath) {\n return resolvedRequirePath;\n }\n\n let packageJson: Record<string, unknown>;\n try {\n packageJson = JSON.parse(fs.readFileSync(packageJsonPath, \"utf-8\")) as Record<string, unknown>;\n } catch {\n return resolvedRequirePath;\n }\n\n const packageRoot = path.dirname(packageJsonPath);\n const exportPath = resolveImportEntryFromPackageJson(packageJson, subpath);\n\n if (exportPath) {\n return path.resolve(packageRoot, exportPath);\n }\n\n if (!subpath) {\n const moduleEntry = packageJson.module;\n if (typeof moduleEntry === \"string\") {\n return path.resolve(packageRoot, moduleEntry);\n }\n\n const browserEntry = packageJson.browser;\n if (typeof browserEntry === \"string\") {\n return path.resolve(packageRoot, browserEntry);\n }\n }\n\n return resolvedRequirePath;\n}\n\nfunction findPackageJsonPath(resolvedPath: string, packageName: string): string | null {\n let currentDir = path.dirname(resolvedPath);\n let matchedPackageJsonPath: string | null = null;\n\n while (true) {\n const packageJsonPath = path.join(currentDir, \"package.json\");\n\n if (fs.existsSync(packageJsonPath)) {\n try {\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, \"utf-8\")) as { name?: string };\n if (packageJson.name === packageName) {\n // Keep walking upward: published packages often include nested\n // dist/cjs or dist/mjs package.json files with the same name, but the\n // real package root higher up contains the export map we need.\n matchedPackageJsonPath = packageJsonPath;\n }\n } catch {\n // Keep walking upward if a parent package.json is malformed.\n }\n }\n\n const parentDir = path.dirname(currentDir);\n if (parentDir === currentDir) {\n return matchedPackageJsonPath;\n }\n currentDir = parentDir;\n }\n}\n\nfunction resolveImportEntryFromPackageJson(\n packageJson: Record<string, unknown>,\n subpath: string\n): string | null {\n const exportsField = packageJson.exports;\n if (exportsField === undefined) {\n return null;\n }\n\n const exportKey = subpath ? `.${subpath}` : \".\";\n\n if (isConditionalExportsObject(exportsField)) {\n if (exportKey !== \".\") {\n return null;\n }\n return pickImportTarget(exportsField);\n }\n\n if (typeof exportsField === \"object\" && exportsField !== null && !Array.isArray(exportsField)) {\n const target = (exportsField as Record<string, unknown>)[exportKey];\n return target === undefined ? null : pickImportTarget(target);\n }\n\n return exportKey === \".\" ? pickImportTarget(exportsField) : null;\n}\n\nfunction isConditionalExportsObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\"\n && value !== null\n && !Array.isArray(value)\n && Object.keys(value).every((key) => !key.startsWith(\".\"));\n}\n\nfunction pickImportTarget(value: unknown): string | null {\n if (typeof value === \"string\") {\n return value;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n const target = pickImportTarget(item);\n if (target) {\n return target;\n }\n }\n return null;\n }\n\n if (typeof value !== \"object\" || value === null) {\n return null;\n }\n\n const record = value as Record<string, unknown>;\n\n for (const key of [\"browser\", \"import\", \"module\", \"default\"]) {\n if (key in record) {\n const target = pickImportTarget(record[key]);\n if (target) {\n return target;\n }\n }\n }\n\n for (const nestedValue of Object.values(record)) {\n const target = pickImportTarget(nestedValue);\n if (target) {\n return target;\n }\n }\n\n return null;\n}\n\nfunction getCommonJsNamedExports(specifier: string, rootDir: string): string[] {\n const resolvedHostPath = resolvePackageImportPath(specifier, rootDir);\n if (!resolvedHostPath) {\n return [];\n }\n\n let code: string;\n try {\n code = fs.readFileSync(resolvedHostPath, \"utf-8\");\n } catch {\n return [];\n }\n\n if (detectFormat(resolvedHostPath, code) !== \"cjs\") {\n return [];\n }\n\n let moduleExports: unknown;\n try {\n moduleExports = createRequire(resolvedHostPath)(resolvedHostPath);\n } catch {\n return [];\n }\n\n if (moduleExports == null || (typeof moduleExports !== \"object\" && typeof moduleExports !== \"function\")) {\n return [];\n }\n\n const names = new Set([\n ...Object.keys(moduleExports),\n ...Object.getOwnPropertyNames(moduleExports),\n ]);\n\n names.delete(\"default\");\n names.delete(\"__esModule\");\n\n if (typeof moduleExports === \"function\") {\n for (const name of INVALID_FUNCTION_EXPORT_NAMES) {\n names.delete(name);\n }\n }\n\n return [...names].filter(isValidEsmIdentifier).sort();\n}\n\nfunction packageEntryWrapperPlugin(specifier: string, namedExports: string[]): Plugin {\n const wrapperId = `${PACKAGE_ENTRY_WRAPPER_PREFIX}${specifier}`;\n\n return {\n name: \"package-entry-wrapper\",\n resolveId(source) {\n if (source === wrapperId) {\n return wrapperId;\n }\n return null;\n },\n load(id) {\n if (id !== wrapperId) {\n return null;\n }\n\n const namedExportLines = namedExports.map(\n (name) => `export const ${name} = __packageDefault.${name};`\n );\n\n return [\n `import __packageDefault from ${JSON.stringify(specifier)};`,\n \"export default __packageDefault;\",\n ...namedExportLines,\n ].join(\"\\n\");\n },\n };\n}\n\n/**\n * Cache for bundled npm packages. Key includes specifier + resolution root.\n */\nconst bundleCache = new Map<string, { code: string }>();\n\n/**\n * In-flight bundle promises to avoid duplicate concurrent bundles.\n */\nconst bundlesInFlight = new Map<string, Promise<{ code: string }>>();\n\n/**\n * Create a Rollup plugin that externalizes all bare specifiers that don't\n * belong to the current package. Internal files of the package are inlined;\n * other npm packages remain as import statements.\n */\nfunction externalizeDepsPlugin(currentPackageName: string): Plugin {\n return {\n name: \"externalize-deps\",\n resolveId(source, importer) {\n // Don't externalize the entry point\n if (!importer) return null;\n\n // Don't externalize relative imports (internal to the package)\n if (source.startsWith(\".\") || source.startsWith(\"/\")) return null;\n\n // Don't externalize Node.js builtins — let nodeResolve handle them\n // via the package's browser field (e.g. \"fs\": false → empty module)\n if (isNodeBuiltin(source)) return null;\n\n // Check if this is a different npm package\n const { packageName } = parseSpecifier(source);\n if (packageName !== currentPackageName) {\n return { id: source, external: true };\n }\n\n // Same package — let Rollup resolve it normally\n return null;\n },\n };\n}\n\n/**\n * Bundle a bare specifier (npm package) using Rollup.\n *\n * Each unique bare specifier gets its own bundle with:\n * - node-resolve with browser conditions\n * - commonjs conversion\n * - json support\n * - process.env.NODE_ENV replacement\n * - External deps (other npm packages) left as import statements\n *\n * Results are cached permanently (npm packages are static).\n */\nexport async function bundleSpecifier(\n specifier: string,\n rootDir: string\n): Promise<{ code: string }> {\n const cacheKey = `${specifier}\\0${rootDir}`;\n\n // Check cache\n const cached = bundleCache.get(cacheKey);\n if (cached) return cached;\n\n // Check in-flight\n const inFlight = bundlesInFlight.get(cacheKey);\n if (inFlight) return inFlight;\n\n const promise = doBundleSpecifier(specifier, rootDir);\n bundlesInFlight.set(cacheKey, promise);\n\n try {\n const result = await promise;\n bundleCache.set(cacheKey, result);\n return result;\n } finally {\n bundlesInFlight.delete(cacheKey);\n }\n}\n\nasync function doBundleSpecifier(\n specifier: string,\n rootDir: string\n): Promise<{ code: string }> {\n const { packageName } = parseSpecifier(specifier);\n const namedExports = getCommonJsNamedExports(specifier, rootDir);\n const input = namedExports.length > 0\n ? `${PACKAGE_ENTRY_WRAPPER_PREFIX}${specifier}`\n : specifier;\n\n const bundle = await rollup({\n input,\n // Disable tree-shaking: we're creating a virtual module that must faithfully\n // expose all package exports. We can't predict which ones user code will import.\n // Without this, exports like AWS SDK's ConverseStreamOutput (a namespace with\n // a visit() helper that nothing inside the bundle references) get dropped.\n treeshake: false,\n plugins: [\n packageEntryWrapperPlugin(specifier, namedExports),\n externalizeDepsPlugin(packageName),\n nodeResolve({ browser: true, rootDir }),\n shimNodeBuiltinsPlugin(),\n commonjs(commonjsInteropOptions),\n json(),\n replace({\n preventAssignment: true,\n values: { \"process.env.NODE_ENV\": JSON.stringify(\"development\") },\n }),\n ],\n onwarn: (warning, warn) => {\n if (warning.code === \"CIRCULAR_DEPENDENCY\") return;\n if (warning.code === \"THIS_IS_UNDEFINED\") return;\n if (warning.code === \"UNUSED_EXTERNAL_IMPORT\") return;\n if (warning.code === \"EMPTY_BUNDLE\") return;\n // Suppress warnings about named imports from shimmed Node.js builtins\n if (warning.code === \"MISSING_EXPORT\" && warning.exporter?.startsWith(NODE_BUILTIN_SHIM_PREFIX)) return;\n warn(warning);\n },\n });\n\n const { output } = await bundle.generate({\n format: \"es\",\n sourcemap: \"inline\",\n inlineDynamicImports: true,\n });\n await bundle.close();\n\n const code = output[0]!.code;\n return { code };\n}\n\n/**\n * Create a Rollup plugin that externalizes ALL bare specifiers.\n * Used for module aliases where the host file's relative imports are bundled\n * but npm package dependencies are left as external imports.\n */\nfunction externalizeAllBareSpecifiersPlugin(): Plugin {\n return {\n name: \"externalize-all-bare-specifiers\",\n resolveId(source, importer) {\n if (!importer) return null;\n if (source.startsWith(\".\") || source.startsWith(\"/\")) return null;\n // Don't externalize Node.js builtins — let nodeResolve/shim handle them\n if (isNodeBuiltin(source)) return null;\n return { id: source, external: true };\n },\n };\n}\n\n/**\n * Create a Rollup transform plugin that strips TypeScript types.\n */\nfunction stripTypeScriptPlugin(): Plugin {\n return {\n name: \"strip-typescript\",\n transform(code, id) {\n if (isTypeScriptFile(id)) {\n return { code: processTypeScript(code, id), map: null };\n }\n return null;\n },\n };\n}\n\nconst TS_EXTENSIONS = [\".ts\", \".tsx\", \".mts\", \".cts\"];\n\n/**\n * Bundle a host file using Rollup, inlining its relative imports.\n *\n * - Uses the host file path as Rollup input\n * - Externalizes ALL bare specifiers (npm packages)\n * - Strips TypeScript via processTypeScript\n * - Shares the bundleCache/bundlesInFlight (no key collision since file paths start with `/`)\n *\n * Results are cached permanently.\n */\nexport async function bundleHostFile(\n hostFilePath: string,\n): Promise<{ code: string }> {\n const cached = bundleCache.get(hostFilePath);\n if (cached) return cached;\n\n const inFlight = bundlesInFlight.get(hostFilePath);\n if (inFlight) return inFlight;\n\n const promise = doBundleHostFile(hostFilePath);\n bundlesInFlight.set(hostFilePath, promise);\n\n try {\n const result = await promise;\n bundleCache.set(hostFilePath, result);\n return result;\n } finally {\n bundlesInFlight.delete(hostFilePath);\n }\n}\n\nasync function doBundleHostFile(\n hostFilePath: string,\n): Promise<{ code: string }> {\n const rootDir = path.dirname(hostFilePath);\n\n const bundle = await rollup({\n input: hostFilePath,\n treeshake: false,\n plugins: [\n externalizeAllBareSpecifiersPlugin(),\n stripTypeScriptPlugin(),\n nodeResolve({\n browser: true,\n rootDir,\n extensions: [\".mjs\", \".js\", \".json\", \".node\", ...TS_EXTENSIONS],\n }),\n shimNodeBuiltinsPlugin(),\n commonjs(commonjsInteropOptions),\n json(),\n replace({\n preventAssignment: true,\n values: { \"process.env.NODE_ENV\": JSON.stringify(\"development\") },\n }),\n ],\n onwarn: (warning, warn) => {\n if (warning.code === \"CIRCULAR_DEPENDENCY\") return;\n if (warning.code === \"THIS_IS_UNDEFINED\") return;\n if (warning.code === \"UNUSED_EXTERNAL_IMPORT\") return;\n if (warning.code === \"EMPTY_BUNDLE\") return;\n // Suppress warnings about named imports from shimmed Node.js builtins\n if (warning.code === \"MISSING_EXPORT\" && warning.exporter?.startsWith(NODE_BUILTIN_SHIM_PREFIX)) return;\n warn(warning);\n },\n });\n\n const { output } = await bundle.generate({\n format: \"es\",\n sourcemap: \"inline\",\n inlineDynamicImports: true,\n });\n await bundle.close();\n\n const code = output[0]!.code;\n return { code };\n}\n\n/**\n * Clear the bundle cache. Useful for testing.\n */\nexport function clearBundleCache(): void {\n bundleCache.clear();\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "331C39AA7511FF7B64756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
// src/internal/module-loader/index.ts
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { createRequire } from "node:module";
|
|
5
|
+
import {
|
|
6
|
+
parseMappings,
|
|
7
|
+
virtualToHost,
|
|
8
|
+
findNodeModulesMapping,
|
|
9
|
+
findModuleAlias
|
|
10
|
+
} from "./mappings.mjs";
|
|
11
|
+
import {
|
|
12
|
+
resolveFilePath,
|
|
13
|
+
parseSpecifier,
|
|
14
|
+
isBareSpecifier
|
|
15
|
+
} from "./resolve.mjs";
|
|
16
|
+
import { bundleSpecifier, bundleHostFile } from "./bundle.mjs";
|
|
17
|
+
import { isTypeScriptFile, processTypeScript } from "./strip-types.mjs";
|
|
18
|
+
import { parseMappings as parseMappings2, virtualToHost as virtualToHost2, findNodeModulesMapping as findNodeModulesMapping2, findModuleAlias as findModuleAlias2 } from "./mappings.mjs";
|
|
19
|
+
import { resolveFilePath as resolveFilePath2, detectFormat, parseSpecifier as parseSpecifier2, isBareSpecifier as isBareSpecifier2 } from "./resolve.mjs";
|
|
20
|
+
import { bundleSpecifier as bundleSpecifier2, bundleHostFile as bundleHostFile2, clearBundleCache } from "./bundle.mjs";
|
|
21
|
+
import { isTypeScriptFile as isTypeScriptFile2, processTypeScript as processTypeScript2 } from "./strip-types.mjs";
|
|
22
|
+
function defaultModuleLoader(...paths) {
|
|
23
|
+
const mappings = parseMappings(paths);
|
|
24
|
+
const nodeModulesMapping = findNodeModulesMapping(mappings);
|
|
25
|
+
const importerHostPathByVirtualPath = new Map;
|
|
26
|
+
const loader = async (moduleName, importer) => {
|
|
27
|
+
if (isBareSpecifier(moduleName)) {
|
|
28
|
+
const alias = findModuleAlias(moduleName, mappings);
|
|
29
|
+
if (alias) {
|
|
30
|
+
return handleModuleAlias(alias, importerHostPathByVirtualPath);
|
|
31
|
+
}
|
|
32
|
+
return handleBareSpecifier(moduleName, importer, nodeModulesMapping, mappings, importerHostPathByVirtualPath);
|
|
33
|
+
}
|
|
34
|
+
return handlePathSpecifier(moduleName, importer, mappings, importerHostPathByVirtualPath);
|
|
35
|
+
};
|
|
36
|
+
return loader;
|
|
37
|
+
}
|
|
38
|
+
async function handleBareSpecifier(specifier, importer, nodeModulesMapping, mappings, importerHostPathByVirtualPath) {
|
|
39
|
+
if (!nodeModulesMapping) {
|
|
40
|
+
throw new Error(`Cannot resolve bare specifier "${specifier}": no node_modules mapping configured. ` + `Add a mapping like { from: '/path/to/node_modules', to: '/node_modules' }.`);
|
|
41
|
+
}
|
|
42
|
+
const importerHostPath = resolveImporterHostPath(importer, mappings, importerHostPathByVirtualPath);
|
|
43
|
+
const fallbackImporterHostPath = path.join(path.dirname(nodeModulesMapping.hostBase), "__isolate_module_loader__.js");
|
|
44
|
+
const effectiveImporterHostPath = importerHostPath ?? fallbackImporterHostPath;
|
|
45
|
+
const importerResolutionPath = toRealPath(effectiveImporterHostPath);
|
|
46
|
+
const resolvedHostPath = resolveBareSpecifierWithNode(specifier, importerResolutionPath);
|
|
47
|
+
if (!resolvedHostPath) {
|
|
48
|
+
throw new Error(`Cannot resolve bare specifier "${specifier}" from importer "${importer.path}" ` + `(host importer: ${effectiveImporterHostPath}).`);
|
|
49
|
+
}
|
|
50
|
+
const rootDir = path.dirname(importerResolutionPath);
|
|
51
|
+
const { code } = await bundleSpecifier(specifier, rootDir);
|
|
52
|
+
const { packageName, subpath } = parseSpecifier(specifier);
|
|
53
|
+
const filename = subpath ? `${packageName}${subpath}.bundled.js`.split("/").pop() : `${packageName}.bundled.js`.split("/").pop();
|
|
54
|
+
const result = {
|
|
55
|
+
code,
|
|
56
|
+
filename,
|
|
57
|
+
resolveDir: nodeModulesMapping.virtualMount,
|
|
58
|
+
static: true
|
|
59
|
+
};
|
|
60
|
+
registerImporterHostPath(result, toRealPath(resolvedHostPath), importerHostPathByVirtualPath);
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
async function handleModuleAlias(alias, importerHostPathByVirtualPath) {
|
|
64
|
+
const { code } = await bundleHostFile(alias.hostBase);
|
|
65
|
+
const filename = alias.to.replace(/^@[^/]*\//, "").replace(/[^a-zA-Z0-9_.-]/g, "-") + ".bundled.js";
|
|
66
|
+
const result = {
|
|
67
|
+
code,
|
|
68
|
+
filename,
|
|
69
|
+
resolveDir: "/"
|
|
70
|
+
};
|
|
71
|
+
registerImporterHostPath(result, toRealPath(alias.hostBase), importerHostPathByVirtualPath);
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
async function handlePathSpecifier(specifier, importer, mappings, importerHostPathByVirtualPath) {
|
|
75
|
+
let virtualPath;
|
|
76
|
+
if (specifier.startsWith("/")) {
|
|
77
|
+
virtualPath = specifier;
|
|
78
|
+
} else {
|
|
79
|
+
virtualPath = path.posix.normalize(path.posix.join(importer.resolveDir, specifier));
|
|
80
|
+
}
|
|
81
|
+
const hostBasePath = virtualToHost(virtualPath, mappings);
|
|
82
|
+
if (!hostBasePath) {
|
|
83
|
+
throw new Error(`Cannot resolve "${specifier}" (virtual: ${virtualPath}): no mapping matches this path. ` + `Importer: ${importer.path}`);
|
|
84
|
+
}
|
|
85
|
+
const resolvedHostPath = resolveFilePath(hostBasePath);
|
|
86
|
+
if (!resolvedHostPath) {
|
|
87
|
+
throw new Error(`Cannot resolve "${specifier}" (host: ${hostBasePath}): file not found after extension probing. ` + `Importer: ${importer.path}`);
|
|
88
|
+
}
|
|
89
|
+
let code = fs.readFileSync(resolvedHostPath, "utf-8");
|
|
90
|
+
let resolvedFilename = path.basename(resolvedHostPath);
|
|
91
|
+
if (isTypeScriptFile(resolvedHostPath)) {
|
|
92
|
+
code = processTypeScript(code, resolvedHostPath);
|
|
93
|
+
resolvedFilename = resolvedFilename.replace(/\.(tsx?|mts|cts)$/, ".js");
|
|
94
|
+
}
|
|
95
|
+
const hostDir = path.dirname(resolvedHostPath);
|
|
96
|
+
let virtualDir = null;
|
|
97
|
+
for (const mapping of mappings) {
|
|
98
|
+
if (mapping.isGlob) {
|
|
99
|
+
if (hostDir === mapping.hostBase || hostDir.startsWith(mapping.hostBase + "/")) {
|
|
100
|
+
const relativePart = hostDir.slice(mapping.hostBase.length);
|
|
101
|
+
virtualDir = mapping.virtualMount + relativePart;
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
} else {
|
|
105
|
+
const mappedHostDir = path.dirname(mapping.hostBase);
|
|
106
|
+
if (hostDir === mappedHostDir) {
|
|
107
|
+
virtualDir = path.posix.dirname(mapping.virtualMount);
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (!virtualDir) {
|
|
113
|
+
virtualDir = path.posix.dirname(virtualPath);
|
|
114
|
+
}
|
|
115
|
+
const result = {
|
|
116
|
+
code,
|
|
117
|
+
filename: resolvedFilename,
|
|
118
|
+
resolveDir: virtualDir
|
|
119
|
+
};
|
|
120
|
+
registerImporterHostPath(result, toRealPath(resolvedHostPath), importerHostPathByVirtualPath);
|
|
121
|
+
return result;
|
|
122
|
+
}
|
|
123
|
+
function resolveImporterHostPath(importer, mappings, importerHostPathByVirtualPath) {
|
|
124
|
+
const cached = importerHostPathByVirtualPath.get(importer.path);
|
|
125
|
+
if (cached) {
|
|
126
|
+
return cached;
|
|
127
|
+
}
|
|
128
|
+
const mappedHostPath = virtualToHost(importer.path, mappings);
|
|
129
|
+
if (!mappedHostPath) {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
const resolvedMappedPath = resolveFilePath(mappedHostPath);
|
|
133
|
+
if (resolvedMappedPath) {
|
|
134
|
+
return resolvedMappedPath;
|
|
135
|
+
}
|
|
136
|
+
if (exists(mappedHostPath)) {
|
|
137
|
+
return mappedHostPath;
|
|
138
|
+
}
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
function resolveBareSpecifierWithNode(specifier, importerHostPath) {
|
|
142
|
+
try {
|
|
143
|
+
const req = createRequire(importerHostPath);
|
|
144
|
+
return req.resolve(specifier);
|
|
145
|
+
} catch {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
function registerImporterHostPath(moduleResult, hostPath, importerHostPathByVirtualPath) {
|
|
150
|
+
const virtualModulePath = path.posix.join(moduleResult.resolveDir, moduleResult.filename);
|
|
151
|
+
importerHostPathByVirtualPath.set(virtualModulePath, hostPath);
|
|
152
|
+
}
|
|
153
|
+
function toRealPath(inputPath) {
|
|
154
|
+
try {
|
|
155
|
+
return fs.realpathSync(inputPath);
|
|
156
|
+
} catch {
|
|
157
|
+
return inputPath;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
function exists(filePath) {
|
|
161
|
+
try {
|
|
162
|
+
fs.accessSync(filePath);
|
|
163
|
+
return true;
|
|
164
|
+
} catch {
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
export {
|
|
169
|
+
virtualToHost2 as virtualToHost,
|
|
170
|
+
resolveFilePath2 as resolveFilePath,
|
|
171
|
+
processTypeScript2 as processTypeScript,
|
|
172
|
+
parseSpecifier2 as parseSpecifier,
|
|
173
|
+
parseMappings2 as parseMappings,
|
|
174
|
+
isTypeScriptFile2 as isTypeScriptFile,
|
|
175
|
+
isBareSpecifier2 as isBareSpecifier,
|
|
176
|
+
findNodeModulesMapping2 as findNodeModulesMapping,
|
|
177
|
+
findModuleAlias2 as findModuleAlias,
|
|
178
|
+
detectFormat,
|
|
179
|
+
defaultModuleLoader,
|
|
180
|
+
clearBundleCache,
|
|
181
|
+
bundleSpecifier2 as bundleSpecifier,
|
|
182
|
+
bundleHostFile2 as bundleHostFile
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
//# debugId=A972BA7A2AF38A4964756E2164756E21
|