@distilled.cloud/cloudflare-rolldown-plugin 0.11.3 → 0.12.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/dist/factory.d.ts +7 -7
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js.map +1 -1
- package/dist/options.d.ts +18 -1
- package/dist/options.d.ts.map +1 -1
- package/dist/options.js +19 -0
- package/dist/options.js.map +1 -1
- package/dist/plugin.d.ts +4 -3
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js.map +1 -1
- package/dist/plugins/additional-modules.js +2 -2
- package/dist/plugins/additional-modules.js.map +1 -1
- package/dist/plugins/nodejs-compat.d.ts.map +1 -1
- package/dist/plugins/nodejs-compat.js +2 -2
- package/dist/plugins/nodejs-compat.js.map +1 -1
- package/dist/plugins/options.d.ts.map +1 -1
- package/dist/plugins/options.js +129 -77
- package/dist/plugins/options.js.map +1 -1
- package/dist/plugins/wasm-init.js +2 -2
- package/dist/plugins/wasm-init.js.map +1 -1
- package/dist/utils.d.ts +6 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +8 -0
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/factory.ts +10 -10
- package/src/options.ts +43 -1
- package/src/plugin.ts +5 -3
- package/src/plugins/additional-modules.ts +2 -2
- package/src/plugins/nodejs-compat.ts +3 -2
- package/src/plugins/options.ts +141 -78
- package/src/plugins/wasm-init.ts +2 -2
- package/src/utils.ts +9 -0
package/dist/factory.d.ts
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import type * as rolldown from "rolldown";
|
|
2
2
|
import type * as vite from "vite";
|
|
3
|
-
import type {
|
|
3
|
+
import type { BasePluginOptions } from "./options.js";
|
|
4
4
|
export interface PluginInput<A = any> {
|
|
5
5
|
shared?: Omit<rolldown.Plugin<A>, "name">;
|
|
6
6
|
rolldown?: Omit<rolldown.Plugin<A>, "name">;
|
|
7
7
|
vite?: Omit<vite.Plugin<A>, "name">;
|
|
8
8
|
}
|
|
9
9
|
export interface NullablePluginOutput<A = any> {
|
|
10
|
-
rolldown: (options:
|
|
11
|
-
vite: (options:
|
|
10
|
+
rolldown: (options: BasePluginOptions) => rolldown.Plugin<A> | null;
|
|
11
|
+
vite: (options: BasePluginOptions) => vite.Plugin<A> | null;
|
|
12
12
|
}
|
|
13
13
|
export interface PluginOutput<A = any> {
|
|
14
|
-
rolldown: (options:
|
|
15
|
-
vite: (options:
|
|
14
|
+
rolldown: (options: BasePluginOptions) => rolldown.Plugin<A>;
|
|
15
|
+
vite: (options: BasePluginOptions) => vite.Plugin<A>;
|
|
16
16
|
}
|
|
17
|
-
export declare function createPlugin<TName extends string, A = any>(pluginName: TName, make: (options:
|
|
18
|
-
export declare function createPlugin<TName extends string, A = any>(pluginName: TName, make: (options:
|
|
17
|
+
export declare function createPlugin<TName extends string, A = any>(pluginName: TName, make: (options: BasePluginOptions) => PluginInput<A>): PluginOutput<A>;
|
|
18
|
+
export declare function createPlugin<TName extends string, A = any>(pluginName: TName, make: (options: BasePluginOptions) => PluginInput<A> | undefined): NullablePluginOutput<A>;
|
|
19
19
|
//# sourceMappingURL=factory.d.ts.map
|
package/dist/factory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,QAAQ,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,KAAK,IAAI,MAAM,MAAM,CAAC;AAClC,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,QAAQ,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,KAAK,IAAI,MAAM,MAAM,CAAC;AAClC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,oBAAoB,CAAC,CAAC,GAAG,GAAG;IAC3C,QAAQ,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACpE,IAAI,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAC7D;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,GAAG;IACnC,QAAQ,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7D,IAAI,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACtD;AAED,wBAAgB,YAAY,CAAC,KAAK,SAAS,MAAM,EAAE,CAAC,GAAG,GAAG,EACxD,UAAU,EAAE,KAAK,EACjB,IAAI,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,WAAW,CAAC,CAAC,CAAC,GACnD,YAAY,CAAC,CAAC,CAAC,CAAC;AAEnB,wBAAgB,YAAY,CAAC,KAAK,SAAS,MAAM,EAAE,CAAC,GAAG,GAAG,EACxD,UAAU,EAAE,KAAK,EACjB,IAAI,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,GAC/D,oBAAoB,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/factory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AA8BA,MAAM,UAAU,YAAY,CAC1B,UAAiB,EACjB,
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AA8BA,MAAM,UAAU,YAAY,CAC1B,UAAiB,EACjB,IAAgE;IAEhE,MAAM,IAAI,GAAG,wBAAwB,UAAU,EAAE,CAAC;IAClD,OAAO;QACL,QAAQ,EAAE,CAAC,OAA0B,EAAE,EAAE;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC;YACzB,OAAO;gBACL,IAAI;gBACJ,GAAG,MAAM,CAAC,MAAM;gBAChB,GAAG,MAAM,CAAC,QAAQ;aACnB,CAAC;QACJ,CAAC;QACD,IAAI,EAAE,CAAC,OAA0B,EAAE,EAAE;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC;YACzB,OAAO;gBACL,IAAI;gBACJ,iBAAiB,EAAE,IAAI;gBACvB,kBAAkB,CAAC,WAAW;oBAC5B,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC;gBACvC,CAAC;gBACD,GAAG,MAAM,CAAC,MAAM;gBAChB,GAAG,MAAM,CAAC,IAAI;aACA,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/options.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export interface
|
|
1
|
+
export interface BasePluginOptions {
|
|
2
2
|
/**
|
|
3
3
|
* The main entry point to use.
|
|
4
4
|
* Defaults to the one from your Rolldown configuration.
|
|
@@ -28,5 +28,22 @@ export interface CloudflarePluginOptions {
|
|
|
28
28
|
* ```
|
|
29
29
|
*/
|
|
30
30
|
exports?: Array<string>;
|
|
31
|
+
/**
|
|
32
|
+
* Which Vite environment hosts the Worker, and any child environments it
|
|
33
|
+
* loads at runtime. Defaults to the single `ssr` environment.
|
|
34
|
+
*
|
|
35
|
+
* `@vitejs/plugin-rsc` apps run the Worker in the `rsc` environment (resolved
|
|
36
|
+
* with the `react-server` condition) and load the `ssr` environment from it,
|
|
37
|
+
* so they set `{ name: "rsc", childEnvironments: ["ssr"] }`. Every named
|
|
38
|
+
* environment is given the Worker treatment (workerd resolve conditions,
|
|
39
|
+
* dependency pre-bundling) and a module runner in dev.
|
|
40
|
+
*
|
|
41
|
+
* @default { entry: "ssr", children: [] }
|
|
42
|
+
*/
|
|
43
|
+
viteEnvironments?: {
|
|
44
|
+
entry?: string;
|
|
45
|
+
children?: Array<string>;
|
|
46
|
+
};
|
|
31
47
|
}
|
|
48
|
+
export declare const parseViteEnvironments: (options: BasePluginOptions) => [string, ...Array<string>];
|
|
32
49
|
//# sourceMappingURL=options.d.ts.map
|
package/dist/options.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACnC;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxB;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KAC1B,CAAC;CACH;AAED,eAAO,MAAM,qBAAqB,GAAI,SAAS,iBAAiB,KAAG,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAwB3F,CAAC"}
|
package/dist/options.js
CHANGED
|
@@ -1 +1,20 @@
|
|
|
1
|
+
export const parseViteEnvironments = (options) => {
|
|
2
|
+
const entry = options.viteEnvironments?.entry ?? "ssr";
|
|
3
|
+
if (entry === "client") {
|
|
4
|
+
throw new Error('The "client" environment cannot be used as a worker environment because it is reserved for the browser.');
|
|
5
|
+
}
|
|
6
|
+
const children = (options.viteEnvironments?.children ?? []).map((name, index, self) => {
|
|
7
|
+
if (name === "client") {
|
|
8
|
+
throw new Error('The "client" environment cannot be used as a worker environment because it is reserved for the browser.');
|
|
9
|
+
}
|
|
10
|
+
else if (self.indexOf(name) !== index) {
|
|
11
|
+
throw new Error(`The name "${name}" appears more than once in the Vite environment list. Worker environment names must be unique.`);
|
|
12
|
+
}
|
|
13
|
+
else if (name === entry) {
|
|
14
|
+
throw new Error(`The child environment "${name}" cannot have the same name as the entry environment "${entry}".`);
|
|
15
|
+
}
|
|
16
|
+
return name;
|
|
17
|
+
});
|
|
18
|
+
return [entry, ...children];
|
|
19
|
+
};
|
|
1
20
|
//# sourceMappingURL=options.js.map
|
package/dist/options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAgDA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,OAA0B,EAA8B,EAAE;IAC9F,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,EAAE,KAAK,IAAI,KAAK,CAAC;IACvD,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,yGAAyG,CAC1G,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,gBAAgB,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACpF,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,yGAAyG,CAC1G,CAAC;QACJ,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,aAAa,IAAI,iGAAiG,CACnH,CAAC;QACJ,CAAC;aAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,0BAA0B,IAAI,yDAAyD,KAAK,IAAI,CACjG,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC;AAC9B,CAAC,CAAC"}
|
package/dist/plugin.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type * as rolldown from "rolldown";
|
|
2
|
-
import type {
|
|
3
|
-
export type
|
|
4
|
-
|
|
2
|
+
import type { BasePluginOptions } from "./options.js";
|
|
3
|
+
export type RolldownPluginOptions = Omit<BasePluginOptions, "viteEnvironment">;
|
|
4
|
+
export type RolldownPlugin = (options?: RolldownPluginOptions) => Array<rolldown.Plugin | null>;
|
|
5
|
+
declare const cloudflare: RolldownPlugin;
|
|
5
6
|
export default cloudflare;
|
|
6
7
|
//# sourceMappingURL=plugin.d.ts.map
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,QAAQ,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,QAAQ,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAYtD,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;AAE/E,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,CAAC,EAAE,qBAAqB,KAAK,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAEhG,QAAA,MAAM,UAAU,EAAE,cAWjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,eAAe,EACf,yBAAyB,EACzB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,cAAc,GACf,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,eAAe,EACf,yBAAyB,EACzB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAM5B,MAAM,UAAU,GAAmB,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE;IAClD,OAAO;QACL,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC/B,yBAAyB,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC3C,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC;QACjC,yBAAyB,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC3C,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC;QAChC,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC;KAC1C,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import MagicString from "magic-string";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { createPlugin } from "../factory.js";
|
|
4
|
-
import { sanitizePath } from "../utils.js";
|
|
4
|
+
import { sanitizePath, toPosixPath } from "../utils.js";
|
|
5
5
|
export const MODULE_RULES = [
|
|
6
6
|
{ type: "CompiledWasm", pattern: /\.wasm(\?module)?$/ },
|
|
7
7
|
{ type: "Data", pattern: /\.bin$/ },
|
|
@@ -55,7 +55,7 @@ export const additionalModulesPlugin = createPlugin("additional-modules", () =>
|
|
|
55
55
|
source,
|
|
56
56
|
});
|
|
57
57
|
const fileName = this.getFileName(referenceId);
|
|
58
|
-
const relativePath = path.relative(path.dirname(chunk.fileName), fileName);
|
|
58
|
+
const relativePath = toPosixPath(path.relative(path.dirname(chunk.fileName), fileName));
|
|
59
59
|
const importPath = relativePath.startsWith(".") ? relativePath : `./${relativePath}`;
|
|
60
60
|
magicString.update(match.index, match.index + full.length, importPath);
|
|
61
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"additional-modules.js","sourceRoot":"","sources":["../../src/plugins/additional-modules.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAQ7B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"additional-modules.js","sourceRoot":"","sources":["../../src/plugins/additional-modules.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodejs-compat.d.ts","sourceRoot":"","sources":["../../src/plugins/nodejs-compat.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,eAAe,mDA0B1B,CAAC;AAEH,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE;QAAE,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CAC5C;AAED,eAAO,MAAM,iBAAiB,wDAuJ7B,CAAC;AAEF,eAAO,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"nodejs-compat.d.ts","sourceRoot":"","sources":["../../src/plugins/nodejs-compat.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,eAAe,mDA0B1B,CAAC;AAEH,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE;QAAE,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CAC5C;AAED,eAAO,MAAM,iBAAiB,wDAuJ7B,CAAC;AAEF,eAAO,MAAM,yBAAyB,mDA2DpC,CAAC"}
|
|
@@ -4,7 +4,7 @@ import { createRequire } from "node:module";
|
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { defineEnv } from "unenv";
|
|
6
6
|
import { createPlugin } from "../factory.js";
|
|
7
|
-
import { hasNodejsAls, hasNodejsCompat } from "../utils.js";
|
|
7
|
+
import { hasNodejsAls, hasNodejsCompat, toPosixPath } from "../utils.js";
|
|
8
8
|
const ASYNC_HOOKS_REGEXP = /^(node:)?async_hooks$/;
|
|
9
9
|
const NODE_BUILTIN_MODULES_REGEXP = new RegExp(`^(${nonPrefixedNodeModules.join("|")}|node:.+)$`);
|
|
10
10
|
export const nodejsAlsPlugin = createPlugin("nodejs-als", (options) => {
|
|
@@ -236,7 +236,7 @@ export const nodejsImportWarningPlugin = createPlugin("nodejs-import-warning", (
|
|
|
236
236
|
"Unexpected Node.js imports. ",
|
|
237
237
|
'Do you need to enable the "nodejs_compat" compatibility flag? ',
|
|
238
238
|
"Refer to https://developers.cloudflare.com/workers/runtime-apis/nodejs/ for more details.\n",
|
|
239
|
-
...filteredImports.map(({ id, importer }) => ` - "${id}" imported from "${path.relative(root, importer)}"\n`),
|
|
239
|
+
...filteredImports.map(({ id, importer }) => ` - "${id}" imported from "${toPosixPath(path.relative(root, importer))}"\n`),
|
|
240
240
|
].join("");
|
|
241
241
|
this.warn(message);
|
|
242
242
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodejs-compat.js","sourceRoot":"","sources":["../../src/plugins/nodejs-compat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"nodejs-compat.js","sourceRoot":"","sources":["../../src/plugins/nodejs-compat.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/plugins/options.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/plugins/options.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,eAAO,MAAM,aAAa,kDAsKxB,CAAC"}
|
package/dist/plugins/options.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { createPlugin } from "../factory.js";
|
|
3
|
+
import { parseViteEnvironments } from "../options.js";
|
|
3
4
|
import { hasNodejsCompat } from "../utils.js";
|
|
4
5
|
import { WORKER_ENTRY_PREFIX } from "./virtual-modules.js";
|
|
5
6
|
const DEFAULT_RESOLVE_CONDITION_NAMES = ["workerd", "worker", "module", "browser"];
|
|
@@ -46,104 +47,144 @@ export const optionsPlugin = createPlugin("options", (pluginOptions) => {
|
|
|
46
47
|
async config(userConfig) {
|
|
47
48
|
const vite = await import("vite");
|
|
48
49
|
const isRolldown = "rolldownVersion" in this.meta;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
userConfig.environments?.ssr?.build?.rollupOptions?.input ??
|
|
52
|
-
{});
|
|
50
|
+
const environmentNames = parseViteEnvironments(pluginOptions);
|
|
51
|
+
input = normalizeInput(pluginOptions.main ?? defaultEnvironmentEntries(environmentNames[0], userConfig) ?? {});
|
|
53
52
|
const rollupOptions = {
|
|
54
53
|
input: wrapInput(input),
|
|
55
54
|
preserveEntrySignatures: "strict",
|
|
56
55
|
};
|
|
57
56
|
const define = getDefine(pluginOptions, process.env.NODE_ENV || userConfig.mode || "production");
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
57
|
+
const makeEnvironment = ({ name, isEntry, }) => {
|
|
58
|
+
const entries = isEntry
|
|
59
|
+
? (pluginOptions.main ?? defaultEnvironmentEntries(name, userConfig))
|
|
60
|
+
: (defaultEnvironmentEntries(name, userConfig) ?? pluginOptions.main);
|
|
61
|
+
return {
|
|
62
|
+
// Bake `process.env.NODE_ENV` (and friends) into the worker build.
|
|
63
|
+
// workerd has no value for it at runtime, so without this libraries
|
|
64
|
+
// like React fall back to their development builds. Setting `define`
|
|
65
|
+
// at the environment level applies it even though `keepProcessEnv`
|
|
66
|
+
// stays `true` (so other `process.env` access is preserved at
|
|
67
|
+
// runtime for `nodejs_compat`).
|
|
68
|
+
define,
|
|
63
69
|
resolve: {
|
|
70
|
+
noExternal: true,
|
|
64
71
|
conditions: [...DEFAULT_RESOLVE_CONDITION_NAMES, "development|production"],
|
|
65
72
|
},
|
|
66
|
-
|
|
73
|
+
optimizeDeps: {
|
|
74
|
+
noDiscovery: false,
|
|
75
|
+
ignoreOutdatedRequests: true,
|
|
76
|
+
entries: asArray(entries)?.map(vite.normalizePath),
|
|
77
|
+
...(isRolldown
|
|
78
|
+
? {
|
|
79
|
+
rolldownOptions: {
|
|
80
|
+
platform: "neutral",
|
|
81
|
+
resolve: {
|
|
82
|
+
conditionNames: [
|
|
83
|
+
...DEFAULT_RESOLVE_CONDITION_NAMES,
|
|
84
|
+
"development|production",
|
|
85
|
+
],
|
|
86
|
+
mainFields: DEFAULT_RESOLVE_MAIN_FIELDS,
|
|
87
|
+
extensions: DEFAULT_RESOLVE_EXTENSIONS,
|
|
88
|
+
},
|
|
89
|
+
transform: {
|
|
90
|
+
target: TARGET,
|
|
91
|
+
define,
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
}
|
|
95
|
+
: {
|
|
96
|
+
esbuildOptions: {
|
|
97
|
+
platform: "neutral",
|
|
98
|
+
conditions: [...DEFAULT_RESOLVE_CONDITION_NAMES, "development|production"],
|
|
99
|
+
resolveExtensions: DEFAULT_RESOLVE_EXTENSIONS,
|
|
100
|
+
mainFields: DEFAULT_RESOLVE_MAIN_FIELDS,
|
|
101
|
+
target: TARGET,
|
|
102
|
+
define,
|
|
103
|
+
},
|
|
104
|
+
}),
|
|
105
|
+
},
|
|
106
|
+
keepProcessEnv: true,
|
|
107
|
+
// The entry environment owns the Worker's build input and server
|
|
108
|
+
// output directory; children (e.g. `ssr`) keep their own build config
|
|
109
|
+
// from the framework plugin (`@vitejs/plugin-rsc`).
|
|
110
|
+
...(isEntry
|
|
111
|
+
? {
|
|
112
|
+
build: {
|
|
113
|
+
ssr: true,
|
|
114
|
+
target: TARGET,
|
|
115
|
+
emitAssets: true,
|
|
116
|
+
copyPublicDir: false,
|
|
117
|
+
outDir: getOutputDirectory(userConfig, name),
|
|
118
|
+
...(isRolldown
|
|
119
|
+
? {
|
|
120
|
+
rolldownOptions: {
|
|
121
|
+
...rollupOptions,
|
|
122
|
+
platform: "neutral",
|
|
123
|
+
resolve: {
|
|
124
|
+
mainFields: DEFAULT_RESOLVE_MAIN_FIELDS,
|
|
125
|
+
extensions: DEFAULT_RESOLVE_EXTENSIONS,
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
}
|
|
129
|
+
: { rollupOptions }),
|
|
130
|
+
},
|
|
131
|
+
}
|
|
132
|
+
: {}),
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
const appType = userConfig.appType ?? (Object.keys(input).length === 0 ? "spa" : "custom");
|
|
136
|
+
return {
|
|
137
|
+
appType,
|
|
67
138
|
builder: appType === "spa"
|
|
68
139
|
? undefined
|
|
69
140
|
: {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
141
|
+
// We need to include this for `builder.buildApp()` to work
|
|
142
|
+
// because not all frameworks provide it...
|
|
143
|
+
buildApp: async (builder) => {
|
|
144
|
+
for (const environment of Object.values(builder.environments)) {
|
|
145
|
+
// ...however, if your framework does provide a `buildApp` hook,
|
|
146
|
+
// this check prevents us from building the environment twice.
|
|
147
|
+
if (environment.isBuilt)
|
|
148
|
+
continue;
|
|
149
|
+
await builder.build(environment);
|
|
73
150
|
}
|
|
74
151
|
},
|
|
75
152
|
},
|
|
153
|
+
ssr: {
|
|
154
|
+
noExternal: true,
|
|
155
|
+
resolve: {
|
|
156
|
+
conditions: [...DEFAULT_RESOLVE_CONDITION_NAMES, "development|production"],
|
|
157
|
+
},
|
|
158
|
+
},
|
|
76
159
|
environments: {
|
|
77
160
|
client: {
|
|
78
161
|
build: {
|
|
79
162
|
outDir: getOutputDirectory(userConfig, "client"),
|
|
80
163
|
},
|
|
81
164
|
},
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
},
|
|
87
|
-
build: {
|
|
88
|
-
ssr: true,
|
|
89
|
-
target: TARGET,
|
|
90
|
-
emitAssets: true,
|
|
91
|
-
copyPublicDir: false,
|
|
92
|
-
outDir: getOutputDirectory(userConfig, "server"),
|
|
93
|
-
...(isRolldown
|
|
94
|
-
? {
|
|
95
|
-
rolldownOptions: {
|
|
96
|
-
...rollupOptions,
|
|
97
|
-
platform: "neutral",
|
|
98
|
-
resolve: {
|
|
99
|
-
mainFields: DEFAULT_RESOLVE_MAIN_FIELDS,
|
|
100
|
-
extensions: DEFAULT_RESOLVE_EXTENSIONS,
|
|
101
|
-
},
|
|
102
|
-
},
|
|
103
|
-
}
|
|
104
|
-
: { rollupOptions }),
|
|
105
|
-
},
|
|
106
|
-
optimizeDeps: {
|
|
107
|
-
noDiscovery: false,
|
|
108
|
-
ignoreOutdatedRequests: true,
|
|
109
|
-
entries: pluginOptions.main ? vite.normalizePath(pluginOptions.main) : undefined,
|
|
110
|
-
...(isRolldown
|
|
111
|
-
? {
|
|
112
|
-
rolldownOptions: {
|
|
113
|
-
platform: "neutral",
|
|
114
|
-
resolve: {
|
|
115
|
-
conditionNames: [
|
|
116
|
-
...DEFAULT_RESOLVE_CONDITION_NAMES,
|
|
117
|
-
"development|production",
|
|
118
|
-
],
|
|
119
|
-
mainFields: DEFAULT_RESOLVE_MAIN_FIELDS,
|
|
120
|
-
extensions: DEFAULT_RESOLVE_EXTENSIONS,
|
|
121
|
-
},
|
|
122
|
-
transform: {
|
|
123
|
-
target: TARGET,
|
|
124
|
-
define,
|
|
125
|
-
},
|
|
126
|
-
},
|
|
127
|
-
}
|
|
128
|
-
: {
|
|
129
|
-
esbuildOptions: {
|
|
130
|
-
platform: "neutral",
|
|
131
|
-
conditions: [...DEFAULT_RESOLVE_CONDITION_NAMES, "development|production"],
|
|
132
|
-
resolveExtensions: DEFAULT_RESOLVE_EXTENSIONS,
|
|
133
|
-
mainFields: DEFAULT_RESOLVE_MAIN_FIELDS,
|
|
134
|
-
target: TARGET,
|
|
135
|
-
define,
|
|
136
|
-
},
|
|
137
|
-
}),
|
|
138
|
-
},
|
|
139
|
-
keepProcessEnv: true,
|
|
140
|
-
},
|
|
165
|
+
...Object.fromEntries(environmentNames.map((name, index) => [
|
|
166
|
+
name,
|
|
167
|
+
makeEnvironment({ name, isEntry: index === 0 }),
|
|
168
|
+
])),
|
|
141
169
|
},
|
|
142
170
|
};
|
|
143
171
|
},
|
|
144
172
|
},
|
|
145
173
|
};
|
|
146
174
|
});
|
|
175
|
+
const defaultEnvironmentEntries = (environmentName, userConfig) => {
|
|
176
|
+
const environment = userConfig.environments?.[environmentName];
|
|
177
|
+
return environment?.build?.rolldownOptions?.input ?? environment?.build?.rollupOptions?.input;
|
|
178
|
+
};
|
|
179
|
+
const asArray = (input) => {
|
|
180
|
+
if (!input)
|
|
181
|
+
return;
|
|
182
|
+
if (typeof input === "string")
|
|
183
|
+
return [input];
|
|
184
|
+
if (Array.isArray(input) && input.length > 0)
|
|
185
|
+
return input;
|
|
186
|
+
return Object.values(input);
|
|
187
|
+
};
|
|
147
188
|
const normalizeInput = (input) => {
|
|
148
189
|
if (typeof input === "string") {
|
|
149
190
|
return { [path.parse(input).name || "index"]: input };
|
|
@@ -155,8 +196,19 @@ const normalizeInput = (input) => {
|
|
|
155
196
|
return input;
|
|
156
197
|
}
|
|
157
198
|
};
|
|
158
|
-
|
|
159
|
-
|
|
199
|
+
// Worker entry ids are embedded into synthetic `\0distilled:worker-entry:` module
|
|
200
|
+
// specifiers and round-tripped through Rolldown/Vite id handling, which expects
|
|
201
|
+
// POSIX-style separators. On Windows the input is an absolute path with `\`
|
|
202
|
+
// separators (e.g. `D:\app\entry-server.ts`), which corrupts the virtual id and
|
|
203
|
+
// breaks resolution (`\0distilled:user-entry:D:\app\…` fails to resolve).
|
|
204
|
+
// Normalize to forward slashes so the virtual id stays valid on every platform —
|
|
205
|
+
// a no-op on POSIX, where ids already use `/`.
|
|
206
|
+
const normalizeEntryId = (id) => id.replace(/\\/g, "/");
|
|
207
|
+
const wrapInput = (input) => Object.fromEntries(Object.entries(input).map(([key, id]) => [
|
|
208
|
+
key,
|
|
209
|
+
`${WORKER_ENTRY_PREFIX}${normalizeEntryId(id)}`,
|
|
210
|
+
]));
|
|
211
|
+
const getDefine = (options, nodeEnv) => {
|
|
160
212
|
return {
|
|
161
213
|
"process.env.NODE_ENV": JSON.stringify(nodeEnv),
|
|
162
214
|
"global.process.env.NODE_ENV": JSON.stringify(nodeEnv),
|
|
@@ -179,10 +231,10 @@ function getDefine(options, nodeEnv) {
|
|
|
179
231
|
}
|
|
180
232
|
: {}),
|
|
181
233
|
};
|
|
182
|
-
}
|
|
183
|
-
|
|
234
|
+
};
|
|
235
|
+
const getOutputDirectory = (userConfig, environmentName) => {
|
|
184
236
|
const rootOutputDirectory = userConfig.build?.outDir ?? "dist";
|
|
185
237
|
return (userConfig.environments?.[environmentName]?.build?.outDir ??
|
|
186
238
|
path.join(rootOutputDirectory, environmentName));
|
|
187
|
-
}
|
|
239
|
+
};
|
|
188
240
|
//# sourceMappingURL=options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/plugins/options.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/plugins/options.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createPlugin } from "../factory.js";
|
|
2
|
-
import { sanitizePath } from "../utils.js";
|
|
2
|
+
import { sanitizePath, toPosixPath } from "../utils.js";
|
|
3
3
|
const WASM_INIT_QUERY = /\.wasm\?init$/;
|
|
4
4
|
export const wasmInitPlugin = createPlugin("wasm-init", () => ({
|
|
5
5
|
vite: {
|
|
@@ -10,7 +10,7 @@ export const wasmInitPlugin = createPlugin("wasm-init", () => ({
|
|
|
10
10
|
filter: { id: WASM_INIT_QUERY },
|
|
11
11
|
handler(id) {
|
|
12
12
|
return [
|
|
13
|
-
`import wasmModule from "${sanitizePath(id)}";`,
|
|
13
|
+
`import wasmModule from "${toPosixPath(sanitizePath(id))}";`,
|
|
14
14
|
`export default async (imports) => {`,
|
|
15
15
|
` const result = await WebAssembly.instantiate(wasmModule, imports);`,
|
|
16
16
|
` return "instance" in result ? result.instance : result;`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasm-init.js","sourceRoot":"","sources":["../../src/plugins/wasm-init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"wasm-init.js","sourceRoot":"","sources":["../../src/plugins/wasm-init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,eAAe,GAAG,eAAe,CAAC;AAExC,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7D,IAAI,EAAE;QACJ,OAAO,EAAE,KAAK;KACf;IACD,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,MAAM,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE;YAC/B,OAAO,CAAC,EAAE;gBACR,OAAO;oBACL,2BAA2B,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI;oBAC5D,qCAAqC;oBACrC,sEAAsE;oBACtE,2DAA2D;oBAC3D,IAAI;iBACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACf,CAAC;SACF;KACF;CACF,CAAC,CAAC,CAAC"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
export declare function sanitizePath(path: string): string;
|
|
2
|
+
/**
|
|
3
|
+
* Normalizes a path to use forward slashes. This ensures paths are valid
|
|
4
|
+
* module specifiers and produce consistent output across platforms (e.g. Windows,
|
|
5
|
+
* where `path` APIs return backslash-separated paths).
|
|
6
|
+
*/
|
|
7
|
+
export declare function toPosixPath(path: string): string;
|
|
2
8
|
export declare function hasNodejsCompat(flags?: ReadonlyArray<string>): boolean;
|
|
3
9
|
export declare function hasNodejsAls(flags?: ReadonlyArray<string>): boolean;
|
|
4
10
|
export declare function resolvePluginApi<Api>(plugins: ReadonlyArray<unknown>, name: string): Api | undefined;
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAEtE;AAED,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAEnE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,mBAKlF"}
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAEtE;AAED,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAEnE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,mBAKlF"}
|
package/dist/utils.js
CHANGED
|
@@ -2,6 +2,14 @@ const POSTFIX_REGEX = /[?#].*$/;
|
|
|
2
2
|
export function sanitizePath(path) {
|
|
3
3
|
return path.replace(POSTFIX_REGEX, "");
|
|
4
4
|
}
|
|
5
|
+
/**
|
|
6
|
+
* Normalizes a path to use forward slashes. This ensures paths are valid
|
|
7
|
+
* module specifiers and produce consistent output across platforms (e.g. Windows,
|
|
8
|
+
* where `path` APIs return backslash-separated paths).
|
|
9
|
+
*/
|
|
10
|
+
export function toPosixPath(path) {
|
|
11
|
+
return path.replace(/\\/g, "/");
|
|
12
|
+
}
|
|
5
13
|
export function hasNodejsCompat(flags) {
|
|
6
14
|
return flags?.some((flag) => flag === "nodejs_compat" || flag === "nodejs_compat_v2") ?? false;
|
|
7
15
|
}
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,SAAS,CAAC;AAEhC,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAA6B;IAC3D,OAAO,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,eAAe,IAAI,IAAI,KAAK,kBAAkB,CAAC,IAAI,KAAK,CAAC;AACjG,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAA6B;IACxD,OAAO,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,KAAK,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAM,OAA+B,EAAE,IAAY;IACjF,OAAO,OAAO,CAAC,IAAI,CACjB,CAAC,MAAM,EAAwC,EAAE,CAC/C,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAC5F,EAAE,GAAG,CAAC;AACT,CAAC"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,SAAS,CAAC;AAEhC,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAA6B;IAC3D,OAAO,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,eAAe,IAAI,IAAI,KAAK,kBAAkB,CAAC,IAAI,KAAK,CAAC;AACjG,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAA6B;IACxD,OAAO,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,KAAK,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAM,OAA+B,EAAE,IAAY;IACjF,OAAO,OAAO,CAAC,IAAI,CACjB,CAAC,MAAM,EAAwC,EAAE,CAC/C,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAC5F,EAAE,GAAG,CAAC;AACT,CAAC"}
|
package/package.json
CHANGED
package/src/factory.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type * as rolldown from "rolldown";
|
|
2
2
|
import type * as vite from "vite";
|
|
3
|
-
import type {
|
|
3
|
+
import type { BasePluginOptions } from "./options.js";
|
|
4
4
|
|
|
5
5
|
export interface PluginInput<A = any> {
|
|
6
6
|
shared?: Omit<rolldown.Plugin<A>, "name">;
|
|
@@ -9,32 +9,32 @@ export interface PluginInput<A = any> {
|
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
export interface NullablePluginOutput<A = any> {
|
|
12
|
-
rolldown: (options:
|
|
13
|
-
vite: (options:
|
|
12
|
+
rolldown: (options: BasePluginOptions) => rolldown.Plugin<A> | null;
|
|
13
|
+
vite: (options: BasePluginOptions) => vite.Plugin<A> | null;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
export interface PluginOutput<A = any> {
|
|
17
|
-
rolldown: (options:
|
|
18
|
-
vite: (options:
|
|
17
|
+
rolldown: (options: BasePluginOptions) => rolldown.Plugin<A>;
|
|
18
|
+
vite: (options: BasePluginOptions) => vite.Plugin<A>;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
export function createPlugin<TName extends string, A = any>(
|
|
22
22
|
pluginName: TName,
|
|
23
|
-
make: (options:
|
|
23
|
+
make: (options: BasePluginOptions) => PluginInput<A>,
|
|
24
24
|
): PluginOutput<A>;
|
|
25
25
|
|
|
26
26
|
export function createPlugin<TName extends string, A = any>(
|
|
27
27
|
pluginName: TName,
|
|
28
|
-
make: (options:
|
|
28
|
+
make: (options: BasePluginOptions) => PluginInput<A> | undefined,
|
|
29
29
|
): NullablePluginOutput<A>;
|
|
30
30
|
|
|
31
31
|
export function createPlugin<TName extends string, A = any>(
|
|
32
32
|
pluginName: TName,
|
|
33
|
-
make: (options:
|
|
33
|
+
make: (options: BasePluginOptions) => PluginInput<A> | undefined,
|
|
34
34
|
): PluginOutput<A> | NullablePluginOutput<A> {
|
|
35
35
|
const name = `distilled-cloudflare:${pluginName}`;
|
|
36
36
|
return {
|
|
37
|
-
rolldown: (options:
|
|
37
|
+
rolldown: (options: BasePluginOptions) => {
|
|
38
38
|
const plugin = make(options);
|
|
39
39
|
if (!plugin) return null;
|
|
40
40
|
return {
|
|
@@ -43,7 +43,7 @@ export function createPlugin<TName extends string, A = any>(
|
|
|
43
43
|
...plugin.rolldown,
|
|
44
44
|
};
|
|
45
45
|
},
|
|
46
|
-
vite: (options:
|
|
46
|
+
vite: (options: BasePluginOptions) => {
|
|
47
47
|
const plugin = make(options);
|
|
48
48
|
if (!plugin) return null;
|
|
49
49
|
return {
|
package/src/options.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export interface
|
|
1
|
+
export interface BasePluginOptions {
|
|
2
2
|
/**
|
|
3
3
|
* The main entry point to use.
|
|
4
4
|
* Defaults to the one from your Rolldown configuration.
|
|
@@ -28,4 +28,46 @@ export interface CloudflarePluginOptions {
|
|
|
28
28
|
* ```
|
|
29
29
|
*/
|
|
30
30
|
exports?: Array<string>;
|
|
31
|
+
/**
|
|
32
|
+
* Which Vite environment hosts the Worker, and any child environments it
|
|
33
|
+
* loads at runtime. Defaults to the single `ssr` environment.
|
|
34
|
+
*
|
|
35
|
+
* `@vitejs/plugin-rsc` apps run the Worker in the `rsc` environment (resolved
|
|
36
|
+
* with the `react-server` condition) and load the `ssr` environment from it,
|
|
37
|
+
* so they set `{ name: "rsc", childEnvironments: ["ssr"] }`. Every named
|
|
38
|
+
* environment is given the Worker treatment (workerd resolve conditions,
|
|
39
|
+
* dependency pre-bundling) and a module runner in dev.
|
|
40
|
+
*
|
|
41
|
+
* @default { entry: "ssr", children: [] }
|
|
42
|
+
*/
|
|
43
|
+
viteEnvironments?: {
|
|
44
|
+
entry?: string;
|
|
45
|
+
children?: Array<string>;
|
|
46
|
+
};
|
|
31
47
|
}
|
|
48
|
+
|
|
49
|
+
export const parseViteEnvironments = (options: BasePluginOptions): [string, ...Array<string>] => {
|
|
50
|
+
const entry = options.viteEnvironments?.entry ?? "ssr";
|
|
51
|
+
if (entry === "client") {
|
|
52
|
+
throw new Error(
|
|
53
|
+
'The "client" environment cannot be used as a worker environment because it is reserved for the browser.',
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
const children = (options.viteEnvironments?.children ?? []).map((name, index, self) => {
|
|
57
|
+
if (name === "client") {
|
|
58
|
+
throw new Error(
|
|
59
|
+
'The "client" environment cannot be used as a worker environment because it is reserved for the browser.',
|
|
60
|
+
);
|
|
61
|
+
} else if (self.indexOf(name) !== index) {
|
|
62
|
+
throw new Error(
|
|
63
|
+
`The name "${name}" appears more than once in the Vite environment list. Worker environment names must be unique.`,
|
|
64
|
+
);
|
|
65
|
+
} else if (name === entry) {
|
|
66
|
+
throw new Error(
|
|
67
|
+
`The child environment "${name}" cannot have the same name as the entry environment "${entry}".`,
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
return name;
|
|
71
|
+
});
|
|
72
|
+
return [entry, ...children];
|
|
73
|
+
};
|
package/src/plugin.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type * as rolldown from "rolldown";
|
|
2
|
-
import type {
|
|
2
|
+
import type { BasePluginOptions } from "./options.js";
|
|
3
3
|
import {
|
|
4
4
|
additionalModulesPlugin,
|
|
5
5
|
cloudflareExternalsPlugin,
|
|
@@ -11,9 +11,11 @@ import {
|
|
|
11
11
|
wasmInitPlugin,
|
|
12
12
|
} from "./plugins/index.js";
|
|
13
13
|
|
|
14
|
-
export type
|
|
14
|
+
export type RolldownPluginOptions = Omit<BasePluginOptions, "viteEnvironment">;
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
export type RolldownPlugin = (options?: RolldownPluginOptions) => Array<rolldown.Plugin | null>;
|
|
17
|
+
|
|
18
|
+
const cloudflare: RolldownPlugin = (options = {}) => {
|
|
17
19
|
return [
|
|
18
20
|
optionsPlugin.rolldown(options),
|
|
19
21
|
cloudflareExternalsPlugin.rolldown(options),
|
|
@@ -8,7 +8,7 @@ import type {
|
|
|
8
8
|
SourceMap,
|
|
9
9
|
} from "rolldown";
|
|
10
10
|
import { createPlugin } from "../factory.js";
|
|
11
|
-
import { sanitizePath } from "../utils.js";
|
|
11
|
+
import { sanitizePath, toPosixPath } from "../utils.js";
|
|
12
12
|
|
|
13
13
|
export const MODULE_RULES = [
|
|
14
14
|
{ type: "CompiledWasm", pattern: /\.wasm(\?module)?$/ },
|
|
@@ -68,7 +68,7 @@ export const additionalModulesPlugin = createPlugin("additional-modules", () =>
|
|
|
68
68
|
source,
|
|
69
69
|
});
|
|
70
70
|
const fileName = this.getFileName(referenceId);
|
|
71
|
-
const relativePath = path.relative(path.dirname(chunk.fileName), fileName);
|
|
71
|
+
const relativePath = toPosixPath(path.relative(path.dirname(chunk.fileName), fileName));
|
|
72
72
|
const importPath = relativePath.startsWith(".") ? relativePath : `./${relativePath}`;
|
|
73
73
|
magicString.update(match.index, match.index + full.length, importPath);
|
|
74
74
|
}
|
|
@@ -4,7 +4,7 @@ import { createRequire } from "node:module";
|
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { defineEnv } from "unenv";
|
|
6
6
|
import { createPlugin } from "../factory.js";
|
|
7
|
-
import { hasNodejsAls, hasNodejsCompat } from "../utils.js";
|
|
7
|
+
import { hasNodejsAls, hasNodejsCompat, toPosixPath } from "../utils.js";
|
|
8
8
|
|
|
9
9
|
const ASYNC_HOOKS_REGEXP = /^(node:)?async_hooks$/;
|
|
10
10
|
const NODE_BUILTIN_MODULES_REGEXP = new RegExp(`^(${nonPrefixedNodeModules.join("|")}|node:.+)$`);
|
|
@@ -245,7 +245,8 @@ export const nodejsImportWarningPlugin = createPlugin("nodejs-import-warning", (
|
|
|
245
245
|
'Do you need to enable the "nodejs_compat" compatibility flag? ',
|
|
246
246
|
"Refer to https://developers.cloudflare.com/workers/runtime-apis/nodejs/ for more details.\n",
|
|
247
247
|
...filteredImports.map(
|
|
248
|
-
({ id, importer }) =>
|
|
248
|
+
({ id, importer }) =>
|
|
249
|
+
` - "${id}" imported from "${toPosixPath(path.relative(root, importer))}"\n`,
|
|
249
250
|
),
|
|
250
251
|
].join("");
|
|
251
252
|
this.warn(message);
|
package/src/plugins/options.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import type * as vite from "vite";
|
|
3
3
|
import { createPlugin } from "../factory.js";
|
|
4
|
-
import type
|
|
4
|
+
import { parseViteEnvironments, type BasePluginOptions } from "../options.js";
|
|
5
5
|
import { hasNodejsCompat } from "../utils.js";
|
|
6
6
|
import { WORKER_ENTRY_PREFIX } from "./virtual-modules.js";
|
|
7
7
|
|
|
@@ -55,11 +55,9 @@ export const optionsPlugin = createPlugin<"options", OptionsApi>("options", (plu
|
|
|
55
55
|
async config(userConfig) {
|
|
56
56
|
const vite = await import("vite");
|
|
57
57
|
const isRolldown = "rolldownVersion" in this.meta;
|
|
58
|
+
const environmentNames = parseViteEnvironments(pluginOptions);
|
|
58
59
|
input = normalizeInput(
|
|
59
|
-
pluginOptions.main ??
|
|
60
|
-
userConfig.environments?.ssr?.build?.rolldownOptions?.input ??
|
|
61
|
-
userConfig.environments?.ssr?.build?.rollupOptions?.input ??
|
|
62
|
-
{},
|
|
60
|
+
pluginOptions.main ?? defaultEnvironmentEntries(environmentNames[0], userConfig) ?? {},
|
|
63
61
|
);
|
|
64
62
|
const rollupOptions: vite.Rollup.RollupOptions = {
|
|
65
63
|
input: wrapInput(input),
|
|
@@ -69,90 +67,126 @@ export const optionsPlugin = createPlugin<"options", OptionsApi>("options", (plu
|
|
|
69
67
|
pluginOptions,
|
|
70
68
|
process.env.NODE_ENV || userConfig.mode || "production",
|
|
71
69
|
);
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
70
|
+
const makeEnvironment = ({
|
|
71
|
+
name,
|
|
72
|
+
isEntry,
|
|
73
|
+
}: {
|
|
74
|
+
name: string;
|
|
75
|
+
isEntry: boolean;
|
|
76
|
+
}): vite.EnvironmentOptions => {
|
|
77
|
+
const entries = isEntry
|
|
78
|
+
? (pluginOptions.main ?? defaultEnvironmentEntries(name, userConfig))
|
|
79
|
+
: (defaultEnvironmentEntries(name, userConfig) ?? pluginOptions.main);
|
|
80
|
+
return {
|
|
81
|
+
// Bake `process.env.NODE_ENV` (and friends) into the worker build.
|
|
82
|
+
// workerd has no value for it at runtime, so without this libraries
|
|
83
|
+
// like React fall back to their development builds. Setting `define`
|
|
84
|
+
// at the environment level applies it even though `keepProcessEnv`
|
|
85
|
+
// stays `true` (so other `process.env` access is preserved at
|
|
86
|
+
// runtime for `nodejs_compat`).
|
|
87
|
+
define,
|
|
77
88
|
resolve: {
|
|
89
|
+
noExternal: true,
|
|
78
90
|
conditions: [...DEFAULT_RESOLVE_CONDITION_NAMES, "development|production"],
|
|
79
91
|
},
|
|
80
|
-
|
|
92
|
+
optimizeDeps: {
|
|
93
|
+
noDiscovery: false,
|
|
94
|
+
ignoreOutdatedRequests: true,
|
|
95
|
+
entries: asArray(entries)?.map(vite.normalizePath),
|
|
96
|
+
...(isRolldown
|
|
97
|
+
? {
|
|
98
|
+
rolldownOptions: {
|
|
99
|
+
platform: "neutral",
|
|
100
|
+
resolve: {
|
|
101
|
+
conditionNames: [
|
|
102
|
+
...DEFAULT_RESOLVE_CONDITION_NAMES,
|
|
103
|
+
"development|production",
|
|
104
|
+
],
|
|
105
|
+
mainFields: DEFAULT_RESOLVE_MAIN_FIELDS,
|
|
106
|
+
extensions: DEFAULT_RESOLVE_EXTENSIONS,
|
|
107
|
+
},
|
|
108
|
+
transform: {
|
|
109
|
+
target: TARGET,
|
|
110
|
+
define,
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
}
|
|
114
|
+
: {
|
|
115
|
+
esbuildOptions: {
|
|
116
|
+
platform: "neutral",
|
|
117
|
+
conditions: [...DEFAULT_RESOLVE_CONDITION_NAMES, "development|production"],
|
|
118
|
+
resolveExtensions: DEFAULT_RESOLVE_EXTENSIONS,
|
|
119
|
+
mainFields: DEFAULT_RESOLVE_MAIN_FIELDS,
|
|
120
|
+
target: TARGET,
|
|
121
|
+
define,
|
|
122
|
+
},
|
|
123
|
+
}),
|
|
124
|
+
},
|
|
125
|
+
keepProcessEnv: true,
|
|
126
|
+
// The entry environment owns the Worker's build input and server
|
|
127
|
+
// output directory; children (e.g. `ssr`) keep their own build config
|
|
128
|
+
// from the framework plugin (`@vitejs/plugin-rsc`).
|
|
129
|
+
...(isEntry
|
|
130
|
+
? {
|
|
131
|
+
build: {
|
|
132
|
+
ssr: true,
|
|
133
|
+
target: TARGET,
|
|
134
|
+
emitAssets: true,
|
|
135
|
+
copyPublicDir: false,
|
|
136
|
+
outDir: getOutputDirectory(userConfig, name),
|
|
137
|
+
...(isRolldown
|
|
138
|
+
? {
|
|
139
|
+
rolldownOptions: {
|
|
140
|
+
...rollupOptions,
|
|
141
|
+
platform: "neutral",
|
|
142
|
+
resolve: {
|
|
143
|
+
mainFields: DEFAULT_RESOLVE_MAIN_FIELDS,
|
|
144
|
+
extensions: DEFAULT_RESOLVE_EXTENSIONS,
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
}
|
|
148
|
+
: { rollupOptions }),
|
|
149
|
+
},
|
|
150
|
+
}
|
|
151
|
+
: {}),
|
|
152
|
+
};
|
|
153
|
+
};
|
|
154
|
+
const appType = userConfig.appType ?? (Object.keys(input).length === 0 ? "spa" : "custom");
|
|
155
|
+
return {
|
|
156
|
+
appType,
|
|
81
157
|
builder:
|
|
82
158
|
appType === "spa"
|
|
83
159
|
? undefined
|
|
84
160
|
: {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
161
|
+
// We need to include this for `builder.buildApp()` to work
|
|
162
|
+
// because not all frameworks provide it...
|
|
163
|
+
buildApp: async (builder) => {
|
|
164
|
+
for (const environment of Object.values(builder.environments)) {
|
|
165
|
+
// ...however, if your framework does provide a `buildApp` hook,
|
|
166
|
+
// this check prevents us from building the environment twice.
|
|
167
|
+
if (environment.isBuilt) continue;
|
|
168
|
+
await builder.build(environment);
|
|
88
169
|
}
|
|
89
170
|
},
|
|
90
171
|
},
|
|
172
|
+
ssr: {
|
|
173
|
+
noExternal: true,
|
|
174
|
+
resolve: {
|
|
175
|
+
conditions: [...DEFAULT_RESOLVE_CONDITION_NAMES, "development|production"],
|
|
176
|
+
},
|
|
177
|
+
},
|
|
91
178
|
environments: {
|
|
92
179
|
client: {
|
|
93
180
|
build: {
|
|
94
181
|
outDir: getOutputDirectory(userConfig, "client"),
|
|
95
182
|
},
|
|
96
183
|
},
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
ssr: true,
|
|
104
|
-
target: TARGET,
|
|
105
|
-
emitAssets: true,
|
|
106
|
-
copyPublicDir: false,
|
|
107
|
-
outDir: getOutputDirectory(userConfig, "server"),
|
|
108
|
-
...(isRolldown
|
|
109
|
-
? {
|
|
110
|
-
rolldownOptions: {
|
|
111
|
-
...rollupOptions,
|
|
112
|
-
platform: "neutral",
|
|
113
|
-
resolve: {
|
|
114
|
-
mainFields: DEFAULT_RESOLVE_MAIN_FIELDS,
|
|
115
|
-
extensions: DEFAULT_RESOLVE_EXTENSIONS,
|
|
116
|
-
},
|
|
117
|
-
},
|
|
118
|
-
}
|
|
119
|
-
: { rollupOptions }),
|
|
120
|
-
},
|
|
121
|
-
optimizeDeps: {
|
|
122
|
-
noDiscovery: false,
|
|
123
|
-
ignoreOutdatedRequests: true,
|
|
124
|
-
entries: pluginOptions.main ? vite.normalizePath(pluginOptions.main) : undefined,
|
|
125
|
-
...(isRolldown
|
|
126
|
-
? {
|
|
127
|
-
rolldownOptions: {
|
|
128
|
-
platform: "neutral",
|
|
129
|
-
resolve: {
|
|
130
|
-
conditionNames: [
|
|
131
|
-
...DEFAULT_RESOLVE_CONDITION_NAMES,
|
|
132
|
-
"development|production",
|
|
133
|
-
],
|
|
134
|
-
mainFields: DEFAULT_RESOLVE_MAIN_FIELDS,
|
|
135
|
-
extensions: DEFAULT_RESOLVE_EXTENSIONS,
|
|
136
|
-
},
|
|
137
|
-
transform: {
|
|
138
|
-
target: TARGET,
|
|
139
|
-
define,
|
|
140
|
-
},
|
|
141
|
-
},
|
|
142
|
-
}
|
|
143
|
-
: {
|
|
144
|
-
esbuildOptions: {
|
|
145
|
-
platform: "neutral",
|
|
146
|
-
conditions: [...DEFAULT_RESOLVE_CONDITION_NAMES, "development|production"],
|
|
147
|
-
resolveExtensions: DEFAULT_RESOLVE_EXTENSIONS,
|
|
148
|
-
mainFields: DEFAULT_RESOLVE_MAIN_FIELDS,
|
|
149
|
-
target: TARGET,
|
|
150
|
-
define,
|
|
151
|
-
},
|
|
152
|
-
}),
|
|
153
|
-
},
|
|
154
|
-
keepProcessEnv: true,
|
|
155
|
-
},
|
|
184
|
+
...Object.fromEntries(
|
|
185
|
+
environmentNames.map((name, index) => [
|
|
186
|
+
name,
|
|
187
|
+
makeEnvironment({ name, isEntry: index === 0 }),
|
|
188
|
+
]),
|
|
189
|
+
),
|
|
156
190
|
},
|
|
157
191
|
};
|
|
158
192
|
},
|
|
@@ -160,6 +194,23 @@ export const optionsPlugin = createPlugin<"options", OptionsApi>("options", (plu
|
|
|
160
194
|
};
|
|
161
195
|
});
|
|
162
196
|
|
|
197
|
+
const defaultEnvironmentEntries = (
|
|
198
|
+
environmentName: string,
|
|
199
|
+
userConfig: vite.UserConfig,
|
|
200
|
+
): vite.Rolldown.InputOption | undefined => {
|
|
201
|
+
const environment = userConfig.environments?.[environmentName];
|
|
202
|
+
return environment?.build?.rolldownOptions?.input ?? environment?.build?.rollupOptions?.input;
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
const asArray = (
|
|
206
|
+
input: string | Array<string> | Record<string, string> | undefined,
|
|
207
|
+
): Array<string> | undefined => {
|
|
208
|
+
if (!input) return;
|
|
209
|
+
if (typeof input === "string") return [input];
|
|
210
|
+
if (Array.isArray(input) && input.length > 0) return input;
|
|
211
|
+
return Object.values(input);
|
|
212
|
+
};
|
|
213
|
+
|
|
163
214
|
const normalizeInput = (
|
|
164
215
|
input: string | Array<string> | Record<string, string>,
|
|
165
216
|
): Record<string, string> => {
|
|
@@ -172,12 +223,24 @@ const normalizeInput = (
|
|
|
172
223
|
}
|
|
173
224
|
};
|
|
174
225
|
|
|
226
|
+
// Worker entry ids are embedded into synthetic `\0distilled:worker-entry:` module
|
|
227
|
+
// specifiers and round-tripped through Rolldown/Vite id handling, which expects
|
|
228
|
+
// POSIX-style separators. On Windows the input is an absolute path with `\`
|
|
229
|
+
// separators (e.g. `D:\app\entry-server.ts`), which corrupts the virtual id and
|
|
230
|
+
// breaks resolution (`\0distilled:user-entry:D:\app\…` fails to resolve).
|
|
231
|
+
// Normalize to forward slashes so the virtual id stays valid on every platform —
|
|
232
|
+
// a no-op on POSIX, where ids already use `/`.
|
|
233
|
+
const normalizeEntryId = (id: string): string => id.replace(/\\/g, "/");
|
|
234
|
+
|
|
175
235
|
const wrapInput = (input: Record<string, string>) =>
|
|
176
236
|
Object.fromEntries(
|
|
177
|
-
Object.entries(input).map(([key, id]) => [
|
|
237
|
+
Object.entries(input).map(([key, id]) => [
|
|
238
|
+
key,
|
|
239
|
+
`${WORKER_ENTRY_PREFIX}${normalizeEntryId(id)}` as const,
|
|
240
|
+
]),
|
|
178
241
|
);
|
|
179
242
|
|
|
180
|
-
|
|
243
|
+
const getDefine = (options: BasePluginOptions, nodeEnv: string): Record<string, string> => {
|
|
181
244
|
return {
|
|
182
245
|
"process.env.NODE_ENV": JSON.stringify(nodeEnv),
|
|
183
246
|
"global.process.env.NODE_ENV": JSON.stringify(nodeEnv),
|
|
@@ -200,13 +263,13 @@ function getDefine(options: CloudflarePluginOptions, nodeEnv: string): Record<st
|
|
|
200
263
|
}
|
|
201
264
|
: {}),
|
|
202
265
|
};
|
|
203
|
-
}
|
|
266
|
+
};
|
|
204
267
|
|
|
205
|
-
|
|
268
|
+
const getOutputDirectory = (userConfig: vite.UserConfig, environmentName: string) => {
|
|
206
269
|
const rootOutputDirectory = userConfig.build?.outDir ?? "dist";
|
|
207
270
|
|
|
208
271
|
return (
|
|
209
272
|
userConfig.environments?.[environmentName]?.build?.outDir ??
|
|
210
273
|
path.join(rootOutputDirectory, environmentName)
|
|
211
274
|
);
|
|
212
|
-
}
|
|
275
|
+
};
|
package/src/plugins/wasm-init.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createPlugin } from "../factory.js";
|
|
2
|
-
import { sanitizePath } from "../utils.js";
|
|
2
|
+
import { sanitizePath, toPosixPath } from "../utils.js";
|
|
3
3
|
|
|
4
4
|
const WASM_INIT_QUERY = /\.wasm\?init$/;
|
|
5
5
|
|
|
@@ -12,7 +12,7 @@ export const wasmInitPlugin = createPlugin("wasm-init", () => ({
|
|
|
12
12
|
filter: { id: WASM_INIT_QUERY },
|
|
13
13
|
handler(id) {
|
|
14
14
|
return [
|
|
15
|
-
`import wasmModule from "${sanitizePath(id)}";`,
|
|
15
|
+
`import wasmModule from "${toPosixPath(sanitizePath(id))}";`,
|
|
16
16
|
`export default async (imports) => {`,
|
|
17
17
|
` const result = await WebAssembly.instantiate(wasmModule, imports);`,
|
|
18
18
|
` return "instance" in result ? result.instance : result;`,
|
package/src/utils.ts
CHANGED
|
@@ -4,6 +4,15 @@ export function sanitizePath(path: string): string {
|
|
|
4
4
|
return path.replace(POSTFIX_REGEX, "");
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Normalizes a path to use forward slashes. This ensures paths are valid
|
|
9
|
+
* module specifiers and produce consistent output across platforms (e.g. Windows,
|
|
10
|
+
* where `path` APIs return backslash-separated paths).
|
|
11
|
+
*/
|
|
12
|
+
export function toPosixPath(path: string): string {
|
|
13
|
+
return path.replace(/\\/g, "/");
|
|
14
|
+
}
|
|
15
|
+
|
|
7
16
|
export function hasNodejsCompat(flags?: ReadonlyArray<string>): boolean {
|
|
8
17
|
return flags?.some((flag) => flag === "nodejs_compat" || flag === "nodejs_compat_v2") ?? false;
|
|
9
18
|
}
|