@distilled.cloud/cloudflare-rolldown-plugin 0.3.0 → 0.4.1-beta.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 +19 -0
- package/dist/factory.d.ts.map +1 -0
- package/dist/factory.js +30 -0
- package/dist/factory.js.map +1 -0
- package/dist/options.d.ts +32 -0
- package/dist/options.d.ts.map +1 -0
- package/dist/options.js +1 -0
- package/dist/options.js.map +1 -0
- package/dist/plugin.d.ts +3 -6
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +10 -11
- package/dist/plugin.js.map +1 -1
- package/dist/plugins/additional-modules.d.ts +11 -2
- package/dist/plugins/additional-modules.d.ts.map +1 -1
- package/dist/plugins/additional-modules.js +68 -54
- package/dist/plugins/additional-modules.js.map +1 -1
- package/dist/plugins/cloudflare-externals.d.ts +1 -2
- package/dist/plugins/cloudflare-externals.d.ts.map +1 -1
- package/dist/plugins/cloudflare-externals.js +37 -15
- package/dist/plugins/cloudflare-externals.js.map +1 -1
- package/dist/plugins/dev.d.ts +2 -0
- package/dist/plugins/dev.d.ts.map +1 -0
- package/dist/plugins/dev.js +1 -0
- package/dist/plugins/dev.js.map +1 -0
- package/dist/plugins/index.d.ts +7 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +7 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/nodejs-als.d.ts +2 -0
- package/dist/plugins/nodejs-als.d.ts.map +1 -0
- package/dist/plugins/nodejs-als.js +32 -0
- package/dist/plugins/nodejs-als.js.map +1 -0
- package/dist/plugins/nodejs-compat.d.ts +9 -3
- package/dist/plugins/nodejs-compat.d.ts.map +1 -1
- package/dist/plugins/nodejs-compat.js +187 -115
- package/dist/plugins/nodejs-compat.js.map +1 -1
- package/dist/plugins/nodejs-import-warning.d.ts +2 -0
- package/dist/plugins/nodejs-import-warning.d.ts.map +1 -0
- package/dist/plugins/nodejs-import-warning.js +62 -0
- package/dist/plugins/nodejs-import-warning.js.map +1 -0
- package/dist/plugins/nodejs-unenv.d.ts +8 -0
- package/dist/plugins/nodejs-unenv.d.ts.map +1 -0
- package/dist/plugins/nodejs-unenv.js +133 -0
- package/dist/plugins/nodejs-unenv.js.map +1 -0
- package/dist/plugins/options.d.ts +1 -5
- package/dist/plugins/options.d.ts.map +1 -1
- package/dist/plugins/options.js +155 -23
- package/dist/plugins/options.js.map +1 -1
- package/dist/plugins/virtual-modules.d.ts +3 -0
- package/dist/plugins/virtual-modules.d.ts.map +1 -0
- package/dist/plugins/virtual-modules.js +126 -0
- package/dist/plugins/virtual-modules.js.map +1 -0
- package/dist/plugins/wasm-init.d.ts +1 -2
- package/dist/plugins/wasm-init.d.ts.map +1 -1
- package/dist/plugins/wasm-init.js +18 -13
- package/dist/plugins/wasm-init.js.map +1 -1
- package/dist/plugins/wasm-init.plugin.d.ts +2 -0
- package/dist/plugins/wasm-init.plugin.d.ts.map +1 -0
- package/dist/plugins/wasm-init.plugin.js +20 -0
- package/dist/plugins/wasm-init.plugin.js.map +1 -0
- package/package.json +16 -1
- package/src/factory.ts +60 -0
- package/src/options.ts +31 -0
- package/src/plugin.ts +22 -18
- package/src/plugins/additional-modules.ts +90 -56
- package/src/plugins/cloudflare-externals.ts +37 -16
- package/src/plugins/index.ts +6 -0
- package/src/plugins/nodejs-compat.ts +206 -140
- package/src/plugins/options.ts +172 -26
- package/src/plugins/virtual-modules.ts +137 -0
- package/src/plugins/wasm-init.ts +18 -14
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type * as rolldown from "rolldown";
|
|
2
|
+
import type * as vite from "vite";
|
|
3
|
+
import type { CloudflarePluginOptions } from "./options.js";
|
|
4
|
+
export interface PluginInput<A = any> {
|
|
5
|
+
shared?: Omit<rolldown.Plugin<A>, "name">;
|
|
6
|
+
rolldown?: Omit<rolldown.Plugin<A>, "name">;
|
|
7
|
+
vite?: Omit<vite.Plugin<A>, "name">;
|
|
8
|
+
}
|
|
9
|
+
export interface NullablePluginOutput<A = any> {
|
|
10
|
+
rolldown: (options: CloudflarePluginOptions) => rolldown.Plugin<A> | null;
|
|
11
|
+
vite: (options: CloudflarePluginOptions) => vite.Plugin<A> | null;
|
|
12
|
+
}
|
|
13
|
+
export interface PluginOutput<A = any> {
|
|
14
|
+
rolldown: (options: CloudflarePluginOptions) => rolldown.Plugin<A>;
|
|
15
|
+
vite: (options: CloudflarePluginOptions) => vite.Plugin<A>;
|
|
16
|
+
}
|
|
17
|
+
export declare function createPlugin<TName extends string, A = any>(pluginName: TName, make: (options: CloudflarePluginOptions) => PluginInput<A>): PluginOutput<A>;
|
|
18
|
+
export declare function createPlugin<TName extends string, A = any>(pluginName: TName, make: (options: CloudflarePluginOptions) => PluginInput<A> | undefined): NullablePluginOutput<A>;
|
|
19
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +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,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE5D,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,uBAAuB,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC1E,IAAI,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CACnE;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,GAAG;IACnC,QAAQ,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnE,IAAI,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CAC5D;AAED,wBAAgB,YAAY,CAAC,KAAK,SAAS,MAAM,EAAE,CAAC,GAAG,GAAG,EACxD,UAAU,EAAE,KAAK,EACjB,IAAI,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,WAAW,CAAC,CAAC,CAAC,GACzD,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,uBAAuB,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,GACrE,oBAAoB,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/factory.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export function createPlugin(pluginName, make) {
|
|
2
|
+
const name = `distilled-cloudflare:${pluginName}`;
|
|
3
|
+
return {
|
|
4
|
+
rolldown: (options) => {
|
|
5
|
+
const plugin = make(options);
|
|
6
|
+
if (!plugin)
|
|
7
|
+
return null;
|
|
8
|
+
return {
|
|
9
|
+
name,
|
|
10
|
+
...plugin.shared,
|
|
11
|
+
...plugin.rolldown,
|
|
12
|
+
};
|
|
13
|
+
},
|
|
14
|
+
vite: (options) => {
|
|
15
|
+
const plugin = make(options);
|
|
16
|
+
if (!plugin)
|
|
17
|
+
return null;
|
|
18
|
+
return {
|
|
19
|
+
name,
|
|
20
|
+
sharedDuringBuild: true,
|
|
21
|
+
applyToEnvironment(environment) {
|
|
22
|
+
return environment.name !== "client";
|
|
23
|
+
},
|
|
24
|
+
...plugin.shared,
|
|
25
|
+
...plugin.vite,
|
|
26
|
+
};
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AA8BA,MAAM,UAAU,YAAY,CAC1B,UAAiB,EACjB,IAAsE;IAEtE,MAAM,IAAI,GAAG,wBAAwB,UAAU,EAAE,CAAC;IAClD,OAAO;QACL,QAAQ,EAAE,CAAC,OAAgC,EAAE,EAAE;YAC7C,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,OAAgC,EAAE,EAAE;YACzC,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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface CloudflarePluginOptions {
|
|
2
|
+
/**
|
|
3
|
+
* The main entry point to use.
|
|
4
|
+
* Defaults to the one from your Rolldown configuration.
|
|
5
|
+
* @default undefined
|
|
6
|
+
*/
|
|
7
|
+
main?: string;
|
|
8
|
+
/**
|
|
9
|
+
* The compatibility date to use. This is optional, but should be defined to avoid unexpected behavior.
|
|
10
|
+
* @default undefined
|
|
11
|
+
*/
|
|
12
|
+
compatibilityDate?: string;
|
|
13
|
+
/**
|
|
14
|
+
* The compatibility flags to enable.
|
|
15
|
+
* @default []
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* cloudflare({ compatibilityDate: "2026-04-01", compatibilityFlags: ["nodejs_compat"] });
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
compatibilityFlags?: Array<string>;
|
|
22
|
+
/**
|
|
23
|
+
* The exports to include in the bundle.
|
|
24
|
+
* By default, all exports are included. However, if you only want to include certain exports, you can use this option.
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* cloudflare({ exports: ["default"] });
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
exports?: Array<string>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACtC;;;;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;CACzB"}
|
package/dist/options.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":""}
|
package/dist/plugin.d.ts
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import type
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
compatibilityFlags?: Array<string>;
|
|
5
|
-
}
|
|
6
|
-
export type CloudflarePlugin = (options?: CloudflarePluginOptions) => RolldownPluginOption;
|
|
1
|
+
import type * as rolldown from "rolldown";
|
|
2
|
+
import type { CloudflarePluginOptions } from "./options.js";
|
|
3
|
+
export type CloudflarePlugin = (options?: CloudflarePluginOptions) => Array<rolldown.Plugin | null>;
|
|
7
4
|
declare const cloudflare: CloudflarePlugin;
|
|
8
5
|
export default cloudflare;
|
|
9
6
|
//# 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,
|
|
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,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAY5D,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,CAAC,EAAE,uBAAuB,KAAK,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAEpG,QAAA,MAAM,UAAU,EAAE,gBAWjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
package/dist/plugin.js
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { makeNodejsCompatPlugin } from "./plugins/nodejs-compat.js";
|
|
4
|
-
import { makeOptionsPlugin } from "./plugins/options.js";
|
|
5
|
-
import { wasmInitPlugin } from "./plugins/wasm-init.js";
|
|
6
|
-
const cloudflare = async (options = {}) => {
|
|
1
|
+
import { additionalModulesPlugin, cloudflareExternalsPlugin, nodejsAlsPlugin, nodejsImportWarningPlugin, nodejsUnenvPlugin, optionsPlugin, virtualModulesPlugin, wasmInitPlugin, } from "./plugins/index.js";
|
|
2
|
+
const cloudflare = (options = {}) => {
|
|
7
3
|
return [
|
|
8
|
-
|
|
9
|
-
cloudflareExternalsPlugin,
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
4
|
+
optionsPlugin.rolldown(options),
|
|
5
|
+
cloudflareExternalsPlugin.rolldown(options),
|
|
6
|
+
nodejsAlsPlugin.rolldown(options),
|
|
7
|
+
nodejsImportWarningPlugin.rolldown(options),
|
|
8
|
+
nodejsUnenvPlugin.rolldown(options),
|
|
9
|
+
virtualModulesPlugin.rolldown(options),
|
|
10
|
+
wasmInitPlugin.rolldown(options),
|
|
11
|
+
additionalModulesPlugin.rolldown(options),
|
|
13
12
|
];
|
|
14
13
|
};
|
|
15
14
|
export default cloudflare;
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"
|
|
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;AAI5B,MAAM,UAAU,GAAqB,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE;IACpD,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,3 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
export declare const MODULE_RULES: readonly [{
|
|
2
|
+
readonly type: "CompiledWasm";
|
|
3
|
+
readonly pattern: RegExp;
|
|
4
|
+
}, {
|
|
5
|
+
readonly type: "Data";
|
|
6
|
+
readonly pattern: RegExp;
|
|
7
|
+
}, {
|
|
8
|
+
readonly type: "Text";
|
|
9
|
+
readonly pattern: RegExp;
|
|
10
|
+
}];
|
|
11
|
+
export declare const additionalModulesPlugin: import("../factory.js").PluginOutput<any>;
|
|
3
12
|
//# sourceMappingURL=additional-modules.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"additional-modules.d.ts","sourceRoot":"","sources":["../../src/plugins/additional-modules.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"additional-modules.d.ts","sourceRoot":"","sources":["../../src/plugins/additional-modules.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,YAAY;;;;;;;;;EAIf,CAAC;AAMX,eAAO,MAAM,uBAAuB,2CAwDlC,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import MagicString from "magic-string";
|
|
1
2
|
import path from "node:path";
|
|
2
|
-
import {
|
|
3
|
+
import { createPlugin } from "../factory.js";
|
|
3
4
|
import { sanitizePath } from "../utils.js";
|
|
4
|
-
const MODULE_RULES = [
|
|
5
|
+
export const MODULE_RULES = [
|
|
5
6
|
{ type: "CompiledWasm", pattern: /\.wasm(\?module)?$/ },
|
|
6
7
|
{ type: "Data", pattern: /\.bin$/ },
|
|
7
8
|
{ type: "Text", pattern: /\.(txt|html|sql)$/ },
|
|
@@ -9,67 +10,80 @@ const MODULE_RULES = [
|
|
|
9
10
|
const MODULE_REFERENCE_PATTERN = `__CLOUDFLARE_MODULE__(${MODULE_RULES.map((rule) => rule.type).join("|")})__(.*?)__CLOUDFLARE_MODULE__`;
|
|
10
11
|
const MODULE_REFERENCE_REGEX = new RegExp(MODULE_REFERENCE_PATTERN);
|
|
11
12
|
const MODULE_REFERENCE_GLOBAL_REGEX = new RegExp(MODULE_REFERENCE_PATTERN, "g");
|
|
12
|
-
export
|
|
13
|
+
export const additionalModulesPlugin = createPlugin("additional-modules", () => {
|
|
13
14
|
const additionalModulePaths = new Set();
|
|
14
15
|
return {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
// hotUpdate(options) {
|
|
22
|
-
// if (additionalModulePaths.has(options.file)) {
|
|
23
|
-
// void options.server.restart();
|
|
24
|
-
// return [];
|
|
25
|
-
// }
|
|
26
|
-
// },
|
|
27
|
-
resolveId: {
|
|
28
|
-
filter: { id: MODULE_RULES.map((rule) => rule.pattern) },
|
|
29
|
-
async handler(source, importer, options) {
|
|
30
|
-
const resolved = await this.resolve(source, importer, options);
|
|
31
|
-
if (!resolved) {
|
|
32
|
-
return;
|
|
16
|
+
vite: {
|
|
17
|
+
enforce: "pre",
|
|
18
|
+
hotUpdate(options) {
|
|
19
|
+
if (additionalModulePaths.has(options.file)) {
|
|
20
|
+
void options.server.restart();
|
|
21
|
+
return [];
|
|
33
22
|
}
|
|
34
|
-
const rule = MODULE_RULES.find((rule) => rule.pattern.test(resolved.id));
|
|
35
|
-
if (!rule) {
|
|
36
|
-
return resolved;
|
|
37
|
-
}
|
|
38
|
-
const filePath = sanitizePath(resolved.id);
|
|
39
|
-
additionalModulePaths.add(filePath);
|
|
40
|
-
return {
|
|
41
|
-
external: true,
|
|
42
|
-
id: moduleReferenceId(rule.type, filePath),
|
|
43
|
-
};
|
|
44
23
|
},
|
|
45
24
|
},
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
25
|
+
shared: {
|
|
26
|
+
resolveId: {
|
|
27
|
+
filter: { id: MODULE_RULES.map((rule) => rule.pattern) },
|
|
28
|
+
async handler(source, importer, options) {
|
|
29
|
+
const resolved = await this.resolve(source, importer, options);
|
|
30
|
+
if (!resolved) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const rule = MODULE_RULES.find((rule) => rule.pattern.test(resolved.id));
|
|
34
|
+
if (!rule) {
|
|
35
|
+
return resolved;
|
|
36
|
+
}
|
|
37
|
+
const filePath = sanitizePath(resolved.id);
|
|
38
|
+
additionalModulePaths.add(filePath);
|
|
39
|
+
return {
|
|
40
|
+
id: moduleReferenceId(rule.type, filePath),
|
|
41
|
+
external: true,
|
|
42
|
+
};
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
renderChunk: {
|
|
46
|
+
filter: { code: { include: MODULE_REFERENCE_REGEX } },
|
|
47
|
+
handler: withMagicString(async function (code, chunk, magicString) {
|
|
48
|
+
const matches = code.matchAll(MODULE_REFERENCE_GLOBAL_REGEX);
|
|
49
|
+
for (const match of matches) {
|
|
50
|
+
const [full, , id] = match;
|
|
51
|
+
const source = await this.fs.readFile(id);
|
|
52
|
+
const referenceId = this.emitFile({
|
|
53
|
+
type: "asset",
|
|
54
|
+
name: path.basename(id),
|
|
55
|
+
source,
|
|
56
|
+
});
|
|
57
|
+
const fileName = this.getFileName(referenceId);
|
|
58
|
+
const relativePath = path.relative(path.dirname(chunk.fileName), fileName);
|
|
59
|
+
const importPath = relativePath.startsWith(".") ? relativePath : `./${relativePath}`;
|
|
60
|
+
magicString.update(match.index, match.index + full.length, importPath);
|
|
61
|
+
}
|
|
62
|
+
}),
|
|
68
63
|
},
|
|
69
64
|
},
|
|
70
65
|
};
|
|
71
|
-
}
|
|
66
|
+
});
|
|
72
67
|
function moduleReferenceId(type, id) {
|
|
73
68
|
return `__CLOUDFLARE_MODULE__${type}__${id}__CLOUDFLARE_MODULE__`;
|
|
74
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Returns a `renderChunk` handler that transforms the chunk using a magic string.
|
|
72
|
+
* Uses Rolldown's native magic string if available, or the `magic-string` library otherwise.
|
|
73
|
+
*/
|
|
74
|
+
function withMagicString(renderChunk) {
|
|
75
|
+
return async function (code, chunk, outputOptions, meta) {
|
|
76
|
+
const magicString = meta.magicString ?? new MagicString(code);
|
|
77
|
+
await renderChunk.call(this, code, chunk, magicString);
|
|
78
|
+
if ("isRolldownMagicString" in magicString && magicString.isRolldownMagicString) {
|
|
79
|
+
return magicString;
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
code: magicString.toString(),
|
|
83
|
+
map: outputOptions.sourcemap
|
|
84
|
+
? magicString.generateMap({ hires: "boundary" })
|
|
85
|
+
: null,
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
}
|
|
75
89
|
//# sourceMappingURL=additional-modules.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"additional-modules.js","sourceRoot":"","sources":["../../src/plugins/additional-modules.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,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":"cloudflare-externals.d.ts","sourceRoot":"","sources":["../../src/plugins/cloudflare-externals.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cloudflare-externals.d.ts","sourceRoot":"","sources":["../../src/plugins/cloudflare-externals.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,yBAAyB,2CAoCpC,CAAC"}
|
|
@@ -1,23 +1,45 @@
|
|
|
1
|
-
|
|
1
|
+
import { createPlugin } from "../factory.js";
|
|
2
|
+
const CLOUDFLARE_BUILT_IN_MODULES = [
|
|
2
3
|
"cloudflare:email",
|
|
3
4
|
"cloudflare:node",
|
|
4
5
|
"cloudflare:sockets",
|
|
5
6
|
"cloudflare:workers",
|
|
6
7
|
"cloudflare:workflows",
|
|
7
8
|
];
|
|
8
|
-
export const cloudflareExternalsPlugin = {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
9
|
+
export const cloudflareExternalsPlugin = createPlugin("cloudflare-externals", () => {
|
|
10
|
+
return {
|
|
11
|
+
rolldown: {
|
|
12
|
+
resolveId: {
|
|
13
|
+
filter: { id: /^cloudflare:/ },
|
|
14
|
+
handler(id) {
|
|
15
|
+
if (!CLOUDFLARE_BUILT_IN_MODULES.includes(id)) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
id,
|
|
20
|
+
external: true,
|
|
21
|
+
};
|
|
22
|
+
},
|
|
23
|
+
},
|
|
20
24
|
},
|
|
21
|
-
|
|
22
|
-
|
|
25
|
+
vite: {
|
|
26
|
+
enforce: "pre",
|
|
27
|
+
configEnvironment(name) {
|
|
28
|
+
if (name === "client") {
|
|
29
|
+
// Some frameworks allow users to mix client and server code in the same file and then extract the server code.
|
|
30
|
+
// As the dependency optimization may happen before the server code is extracted, we should exclude Cloudflare built-ins from client optimization.
|
|
31
|
+
return { optimizeDeps: { exclude: CLOUDFLARE_BUILT_IN_MODULES } };
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
resolve: {
|
|
35
|
+
builtins: CLOUDFLARE_BUILT_IN_MODULES,
|
|
36
|
+
},
|
|
37
|
+
optimizeDeps: {
|
|
38
|
+
exclude: CLOUDFLARE_BUILT_IN_MODULES,
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
});
|
|
23
45
|
//# sourceMappingURL=cloudflare-externals.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare-externals.js","sourceRoot":"","sources":["../../src/plugins/cloudflare-externals.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cloudflare-externals.js","sourceRoot":"","sources":["../../src/plugins/cloudflare-externals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,2BAA2B,GAAG;IAClC,kBAAkB;IAClB,iBAAiB;IACjB,oBAAoB;IACpB,oBAAoB;IACpB,sBAAsB;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,YAAY,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACjF,OAAO;QACL,QAAQ,EAAE;YACR,SAAS,EAAE;gBACT,MAAM,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE;gBAC9B,OAAO,CAAC,EAAE;oBACR,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;wBAC9C,OAAO;oBACT,CAAC;oBAED,OAAO;wBACL,EAAE;wBACF,QAAQ,EAAE,IAAI;qBACf,CAAC;gBACJ,CAAC;aACF;SACF;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,KAAK;YACd,iBAAiB,CAAC,IAAI;gBACpB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACtB,+GAA+G;oBAC/G,kJAAkJ;oBAClJ,OAAO,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE,EAAE,CAAC;gBACpE,CAAC;gBACD,OAAO;oBACL,OAAO,EAAE;wBACP,QAAQ,EAAE,2BAA2B;qBACtC;oBACD,YAAY,EAAE;wBACZ,OAAO,EAAE,2BAA2B;qBACrC;iBACF,CAAC;YACJ,CAAC;SACF;KACF,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/plugins/dev.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=dev.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/plugins/dev.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodejs-als.d.ts","sourceRoot":"","sources":["../../src/plugins/nodejs-als.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,eAAe,mDAyB1B,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { createPlugin } from "../factory.js";
|
|
2
|
+
import { hasNodejsAls } from "../utils.js";
|
|
3
|
+
const ASYNC_HOOKS_REGEXP = /^(node:)?async_hooks$/;
|
|
4
|
+
export const nodejsAlsPlugin = createPlugin("nodejs-als", (options) => {
|
|
5
|
+
if (!hasNodejsAls(options.compatibilityFlags))
|
|
6
|
+
return;
|
|
7
|
+
return {
|
|
8
|
+
rolldown: {
|
|
9
|
+
resolveId: {
|
|
10
|
+
filter: { id: ASYNC_HOOKS_REGEXP },
|
|
11
|
+
handler(id) {
|
|
12
|
+
return { id, external: true };
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
vite: {
|
|
17
|
+
configEnvironment(name) {
|
|
18
|
+
if (name === "client")
|
|
19
|
+
return;
|
|
20
|
+
return {
|
|
21
|
+
resolve: {
|
|
22
|
+
builtins: ["async_hooks", "node:async_hooks"],
|
|
23
|
+
},
|
|
24
|
+
optimizeDeps: {
|
|
25
|
+
exclude: ["async_hooks", "node:async_hooks"],
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=nodejs-als.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodejs-als.js","sourceRoot":"","sources":["../../src/plugins/nodejs-als.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,kBAAkB,GAAG,uBAAuB,CAAC;AAEnD,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE;IACpE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAAE,OAAO;IACtD,OAAO;QACL,QAAQ,EAAE;YACR,SAAS,EAAE;gBACT,MAAM,EAAE,EAAE,EAAE,EAAE,kBAAkB,EAAE;gBAClC,OAAO,CAAC,EAAE;oBACR,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBAChC,CAAC;aACF;SACF;QACD,IAAI,EAAE;YACJ,iBAAiB,CAAC,IAAI;gBACpB,IAAI,IAAI,KAAK,QAAQ;oBAAE,OAAO;gBAC9B,OAAO;oBACL,OAAO,EAAE;wBACP,QAAQ,EAAE,CAAC,aAAa,EAAE,kBAAkB,CAAC;qBAC9C;oBACD,YAAY,EAAE;wBACZ,OAAO,EAAE,CAAC,aAAa,EAAE,kBAAkB,CAAC;qBAC7C;iBACF,CAAC;YACJ,CAAC;SACF;KACF,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
export declare const nodejsAlsPlugin: import("../factory.js").NullablePluginOutput<any>;
|
|
2
|
+
export interface UnenvApi {
|
|
3
|
+
polyfill: ReadonlyArray<string>;
|
|
4
|
+
inject: {
|
|
5
|
+
[injectedName: string]: string;
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
export declare const nodejsUnenvPlugin: import("../factory.js").NullablePluginOutput<UnenvApi>;
|
|
9
|
+
export declare const nodejsImportWarningPlugin: import("../factory.js").NullablePluginOutput<any>;
|
|
4
10
|
//# sourceMappingURL=nodejs-compat.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodejs-compat.d.ts","sourceRoot":"","sources":["../../src/plugins/nodejs-compat.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"nodejs-compat.d.ts","sourceRoot":"","sources":["../../src/plugins/nodejs-compat.ts"],"names":[],"mappings":"AAYA,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,wDAuI7B,CAAC;AAEF,eAAO,MAAM,yBAAyB,mDA0DpC,CAAC"}
|