@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.
Files changed (71) hide show
  1. package/dist/factory.d.ts +19 -0
  2. package/dist/factory.d.ts.map +1 -0
  3. package/dist/factory.js +30 -0
  4. package/dist/factory.js.map +1 -0
  5. package/dist/options.d.ts +32 -0
  6. package/dist/options.d.ts.map +1 -0
  7. package/dist/options.js +1 -0
  8. package/dist/options.js.map +1 -0
  9. package/dist/plugin.d.ts +3 -6
  10. package/dist/plugin.d.ts.map +1 -1
  11. package/dist/plugin.js +10 -11
  12. package/dist/plugin.js.map +1 -1
  13. package/dist/plugins/additional-modules.d.ts +11 -2
  14. package/dist/plugins/additional-modules.d.ts.map +1 -1
  15. package/dist/plugins/additional-modules.js +68 -54
  16. package/dist/plugins/additional-modules.js.map +1 -1
  17. package/dist/plugins/cloudflare-externals.d.ts +1 -2
  18. package/dist/plugins/cloudflare-externals.d.ts.map +1 -1
  19. package/dist/plugins/cloudflare-externals.js +37 -15
  20. package/dist/plugins/cloudflare-externals.js.map +1 -1
  21. package/dist/plugins/dev.d.ts +2 -0
  22. package/dist/plugins/dev.d.ts.map +1 -0
  23. package/dist/plugins/dev.js +1 -0
  24. package/dist/plugins/dev.js.map +1 -0
  25. package/dist/plugins/index.d.ts +7 -0
  26. package/dist/plugins/index.d.ts.map +1 -0
  27. package/dist/plugins/index.js +7 -0
  28. package/dist/plugins/index.js.map +1 -0
  29. package/dist/plugins/nodejs-als.d.ts +2 -0
  30. package/dist/plugins/nodejs-als.d.ts.map +1 -0
  31. package/dist/plugins/nodejs-als.js +32 -0
  32. package/dist/plugins/nodejs-als.js.map +1 -0
  33. package/dist/plugins/nodejs-compat.d.ts +9 -3
  34. package/dist/plugins/nodejs-compat.d.ts.map +1 -1
  35. package/dist/plugins/nodejs-compat.js +187 -115
  36. package/dist/plugins/nodejs-compat.js.map +1 -1
  37. package/dist/plugins/nodejs-import-warning.d.ts +2 -0
  38. package/dist/plugins/nodejs-import-warning.d.ts.map +1 -0
  39. package/dist/plugins/nodejs-import-warning.js +62 -0
  40. package/dist/plugins/nodejs-import-warning.js.map +1 -0
  41. package/dist/plugins/nodejs-unenv.d.ts +8 -0
  42. package/dist/plugins/nodejs-unenv.d.ts.map +1 -0
  43. package/dist/plugins/nodejs-unenv.js +133 -0
  44. package/dist/plugins/nodejs-unenv.js.map +1 -0
  45. package/dist/plugins/options.d.ts +1 -5
  46. package/dist/plugins/options.d.ts.map +1 -1
  47. package/dist/plugins/options.js +155 -23
  48. package/dist/plugins/options.js.map +1 -1
  49. package/dist/plugins/virtual-modules.d.ts +3 -0
  50. package/dist/plugins/virtual-modules.d.ts.map +1 -0
  51. package/dist/plugins/virtual-modules.js +126 -0
  52. package/dist/plugins/virtual-modules.js.map +1 -0
  53. package/dist/plugins/wasm-init.d.ts +1 -2
  54. package/dist/plugins/wasm-init.d.ts.map +1 -1
  55. package/dist/plugins/wasm-init.js +18 -13
  56. package/dist/plugins/wasm-init.js.map +1 -1
  57. package/dist/plugins/wasm-init.plugin.d.ts +2 -0
  58. package/dist/plugins/wasm-init.plugin.d.ts.map +1 -0
  59. package/dist/plugins/wasm-init.plugin.js +20 -0
  60. package/dist/plugins/wasm-init.plugin.js.map +1 -0
  61. package/package.json +16 -1
  62. package/src/factory.ts +60 -0
  63. package/src/options.ts +31 -0
  64. package/src/plugin.ts +22 -18
  65. package/src/plugins/additional-modules.ts +90 -56
  66. package/src/plugins/cloudflare-externals.ts +37 -16
  67. package/src/plugins/index.ts +6 -0
  68. package/src/plugins/nodejs-compat.ts +206 -140
  69. package/src/plugins/options.ts +172 -26
  70. package/src/plugins/virtual-modules.ts +137 -0
  71. package/src/plugins/wasm-init.ts +18 -14
@@ -4,19 +4,42 @@ import { createRequire } from "node:module";
4
4
  import path from "node:path";
5
5
  import { esmExternalRequirePlugin } from "rolldown/plugins";
6
6
  import { defineEnv } from "unenv";
7
+ import { createPlugin } from "../factory.js";
7
8
  import { hasNodejsAls, hasNodejsCompat } from "../utils.js";
9
+ const ASYNC_HOOKS_REGEXP = /^(node:)?async_hooks$/;
8
10
  const NODE_BUILTIN_MODULES_REGEXP = new RegExp(`^(${nonPrefixedNodeModules.join("|")}|node:.+)$`);
9
- const VIRTUAL_MODULE_ID_REGEXP = /^virtual:nodejs-global-inject\/.+$/;
10
- export function makeNodejsCompatPlugin(options) {
11
- if (hasNodejsCompat(options.compatibilityFlags)) {
12
- return makeUnenvPlugin(options);
13
- }
14
- if (hasNodejsAls(options.compatibilityFlags)) {
15
- return makeNodeJsAlsPlugin();
16
- }
17
- return makeNodeJsImportWarningPlugin();
18
- }
19
- function makeUnenvPlugin(options) {
11
+ export const nodejsAlsPlugin = createPlugin("nodejs-als", (options) => {
12
+ if (!hasNodejsAls(options.compatibilityFlags))
13
+ return;
14
+ return {
15
+ rolldown: {
16
+ resolveId: {
17
+ filter: { id: ASYNC_HOOKS_REGEXP },
18
+ handler(id) {
19
+ return { id, external: true };
20
+ },
21
+ },
22
+ },
23
+ vite: {
24
+ enforce: "pre",
25
+ configEnvironment(name) {
26
+ if (name === "client")
27
+ return;
28
+ return {
29
+ resolve: {
30
+ builtins: ["async_hooks", "node:async_hooks"],
31
+ },
32
+ optimizeDeps: {
33
+ exclude: ["async_hooks", "node:async_hooks"],
34
+ },
35
+ };
36
+ },
37
+ },
38
+ };
39
+ });
40
+ export const nodejsUnenvPlugin = createPlugin("nodejs-unenv", (options) => {
41
+ if (!hasNodejsCompat(options.compatibilityFlags))
42
+ return;
20
43
  const { alias, inject, external, polyfill } = defineEnv({
21
44
  presets: [
22
45
  getCloudflarePreset({
@@ -25,136 +48,185 @@ function makeUnenvPlugin(options) {
25
48
  }),
26
49
  ],
27
50
  }).env;
28
- const injectVirtualModules = makeInjectVirtualModules(inject);
51
+ const entries = new Set(Object.values(alias));
52
+ for (const globalInject of Object.values(inject)) {
53
+ if (typeof globalInject === "string") {
54
+ entries.add(globalInject);
55
+ }
56
+ else {
57
+ entries.add(globalInject[0]);
58
+ }
59
+ }
60
+ polyfill.forEach((module) => entries.add(module));
61
+ external.forEach((module) => entries.delete(module));
29
62
  const require = createRequire(import.meta.url);
30
- return [
31
- esmExternalRequirePlugin({
32
- external: [...external],
33
- skipDuplicateCheck: true,
34
- }),
35
- {
36
- name: "rolldown-plugin-cloudflare:nodejs-compat:injects",
37
- resolveId: {
38
- filter: { id: VIRTUAL_MODULE_ID_REGEXP },
39
- handler(id) {
40
- if (injectVirtualModules.has(id)) {
41
- return { id };
42
- }
43
- },
44
- },
45
- load: {
46
- filter: { id: VIRTUAL_MODULE_ID_REGEXP },
47
- handler(id) {
48
- return injectVirtualModules.get(id);
49
- },
63
+ const resolve = (id) => {
64
+ if (alias[id] && !external.includes(alias[id])) {
65
+ return require.resolve(alias[id]);
66
+ }
67
+ if (entries.has(id)) {
68
+ return require.resolve(id);
69
+ }
70
+ };
71
+ const RESOLVE_ID_FILTER = {
72
+ id: [NODE_BUILTIN_MODULES_REGEXP, /^unenv\//, /^@cloudflare\/unenv-preset\//],
73
+ };
74
+ return {
75
+ shared: {
76
+ api: {
77
+ polyfill,
78
+ inject: Object.fromEntries(Object.entries(inject).map(([injectedName, moduleSpecifier]) => {
79
+ assert(typeof moduleSpecifier === "string", `expected moduleSpecifier to be a string`);
80
+ return [injectedName, moduleSpecifier];
81
+ })),
50
82
  },
51
83
  },
52
- {
53
- name: "rolldown-plugin-cloudflare:nodejs-compat:unenv-preset-imports",
84
+ rolldown: {
85
+ async options(options) {
86
+ options.plugins = [
87
+ esmExternalRequirePlugin({
88
+ external: [...external],
89
+ skipDuplicateCheck: true,
90
+ }),
91
+ options.plugins,
92
+ ];
93
+ return options;
94
+ },
54
95
  resolveId: {
55
- filter: { id: /^@cloudflare\/unenv-preset\// },
56
- async handler(id, importer, options) {
57
- const resolved = await this.resolve(id, importer, options);
58
- if (resolved)
59
- return resolved;
60
- return { id: require.resolve(id) };
96
+ filter: RESOLVE_ID_FILTER,
97
+ handler(source, importer, options) {
98
+ const resolved = resolve(source);
99
+ if (!resolved)
100
+ return;
101
+ return this.resolve(resolved, importer, options);
61
102
  },
62
103
  },
63
104
  },
64
- {
65
- name: "rolldown-plugin-cloudflare:nodejs-compat",
105
+ vite: {
106
+ enforce: "pre",
107
+ async configEnvironment(name) {
108
+ if (name === "client")
109
+ return;
110
+ return {
111
+ resolve: {
112
+ builtins: [...external],
113
+ },
114
+ ...(this.meta.rolldownVersion
115
+ ? {
116
+ build: {
117
+ rolldownOptions: {
118
+ plugins: [
119
+ esmExternalRequirePlugin({
120
+ external: [...external],
121
+ skipDuplicateCheck: true,
122
+ }),
123
+ ],
124
+ },
125
+ },
126
+ }
127
+ : {}),
128
+ optimizeDeps: {
129
+ exclude: [
130
+ ...nonPrefixedNodeModules,
131
+ ...nonPrefixedNodeModules.map((module) => `node:${module}`),
132
+ // New Node.js built-in modules are only published with the `node:` prefix.
133
+ ...["node:sea", "node:sqlite", "node:test", "node:test/reporters"],
134
+ ],
135
+ },
136
+ };
137
+ },
138
+ async configureServer(server) {
139
+ await Promise.all(Object.values(server.environments).flatMap(async (environment) => {
140
+ const depsOptimizer = environment.depsOptimizer;
141
+ if (!depsOptimizer)
142
+ return;
143
+ await depsOptimizer.init();
144
+ return Array.from(entries).map((entry) => {
145
+ const resolved = resolve(entry);
146
+ if (!resolved)
147
+ return;
148
+ const registration = depsOptimizer.registerMissingImport(entry, resolved);
149
+ return registration?.processing;
150
+ });
151
+ }));
152
+ },
66
153
  resolveId: {
67
- filter: { id: NODE_BUILTIN_MODULES_REGEXP },
154
+ filter: RESOLVE_ID_FILTER,
68
155
  handler(source, importer, options) {
69
- const aliased = alias[source];
70
- if (!aliased) {
156
+ const resolved = resolve(source);
157
+ if (!resolved)
71
158
  return;
159
+ if (this.environment.mode === "dev" && this.environment.depsOptimizer) {
160
+ // We are in dev mode (rather than build).
161
+ // So let's pre-bundle this polyfill entry-point using the dependency optimizer.
162
+ const { id } = this.environment.depsOptimizer.registerMissingImport(source, resolved);
163
+ // We use the unresolved path to the polyfill and let the dependency optimizer's
164
+ // resolver find the resolved path to the bundled version.
165
+ return this.resolve(id, importer, options);
72
166
  }
73
- if (external.includes(aliased)) {
74
- return {
75
- id: aliased,
76
- external: true,
77
- };
78
- }
79
- return this.resolve(aliased, importer, options);
167
+ return this.resolve(resolved, importer, options);
80
168
  },
81
169
  },
82
- transform(code, id) {
83
- const info = this.getModuleInfo(id);
84
- if (!info?.isEntry) {
85
- return;
86
- }
87
- return [
88
- ...polyfill.map((module) => `import "${module}";`),
89
- ...Array.from(injectVirtualModules.keys()).map((module) => `import "${module}";`),
90
- code,
91
- ].join("\n");
92
- },
93
- },
94
- ];
95
- }
96
- function makeNodeJsAlsPlugin() {
97
- return {
98
- name: "rolldown-plugin-cloudflare:nodejs-als",
99
- resolveId: {
100
- filter: { id: /^(node:)?async_hooks$/ },
101
- handler(id) {
102
- return { id, external: true };
103
- },
104
170
  },
105
171
  };
106
- }
107
- function makeNodeJsImportWarningPlugin() {
172
+ });
173
+ export const nodejsImportWarningPlugin = createPlugin("nodejs-import-warning", (options) => {
174
+ if (hasNodejsCompat(options.compatibilityFlags))
175
+ return;
108
176
  const imports = new Map();
109
177
  let root = process.cwd();
110
178
  return {
111
- name: "rolldown-plugin-cloudflare:nodejs-import-warnings",
112
- options(options) {
113
- if (options.cwd) {
114
- root = options.cwd;
115
- }
116
- },
117
- resolveId: {
118
- filter: { id: NODE_BUILTIN_MODULES_REGEXP },
119
- async handler(id, importer) {
120
- if (importer) {
121
- if (!imports.has(id)) {
122
- imports.set(id, new Set());
123
- }
124
- imports.get(id)?.add(importer);
179
+ rolldown: {
180
+ options(options) {
181
+ if (options.cwd) {
182
+ root = options.cwd;
125
183
  }
126
- return { id, external: true };
127
184
  },
128
185
  },
129
- buildStart() {
130
- imports.clear();
186
+ vite: {
187
+ enforce: "pre",
188
+ configResolved(config) {
189
+ root = config.root;
190
+ },
131
191
  },
132
- buildEnd() {
133
- if (imports.size > 0) {
134
- let message = `Unexpected Node.js imports. ` +
135
- `Do you need to enable the "nodejs_compat" compatibility flag? ` +
136
- "Refer to https://developers.cloudflare.com/workers/runtime-apis/nodejs/ for more details.\n";
192
+ shared: {
193
+ buildStart() {
194
+ imports.clear();
195
+ },
196
+ resolveId: {
197
+ filter: { id: NODE_BUILTIN_MODULES_REGEXP },
198
+ async handler(id, importer) {
199
+ if (hasNodejsAls(options.compatibilityFlags) && ASYNC_HOOKS_REGEXP.test(id))
200
+ return;
201
+ if (importer) {
202
+ if (!imports.has(id)) {
203
+ imports.set(id, new Set());
204
+ }
205
+ imports.get(id)?.add(importer);
206
+ }
207
+ return { id, external: true };
208
+ },
209
+ },
210
+ buildEnd() {
211
+ const filteredImports = [];
137
212
  for (const [id, importers] of imports.entries()) {
138
213
  for (const importer of importers) {
139
- message += ` - "${id}" imported from "${path.relative(root, importer)}"\n`;
214
+ if (this.getModuleInfo(importer)) {
215
+ filteredImports.push({ id, importer });
216
+ }
140
217
  }
141
218
  }
142
- this.warn(message);
143
- }
219
+ if (filteredImports.length > 0) {
220
+ const message = [
221
+ "Unexpected Node.js imports. ",
222
+ 'Do you need to enable the "nodejs_compat" compatibility flag? ',
223
+ "Refer to https://developers.cloudflare.com/workers/runtime-apis/nodejs/ for more details.\n",
224
+ ...filteredImports.map(({ id, importer }) => ` - "${id}" imported from "${path.relative(root, importer)}"\n`),
225
+ ].join("");
226
+ this.warn(message);
227
+ }
228
+ },
144
229
  },
145
230
  };
146
- }
147
- function makeInjectVirtualModules(inject) {
148
- const virtualModules = new Map();
149
- for (const [injectedName, moduleSpecifier] of Object.entries(inject)) {
150
- // The type from unenv is string | string[], but the Cloudflare preset only uses string.
151
- // This indicates a default export that we set on globalThis.
152
- assert(typeof moduleSpecifier === "string", `expected moduleSpecifier to be a string`);
153
- virtualModules.set(injectVirtualModuleId(injectedName), `import virtualModule from "${moduleSpecifier}"; globalThis.${injectedName} = virtualModule;`);
154
- }
155
- return virtualModules;
156
- }
157
- function injectVirtualModuleId(module) {
158
- return `virtual:nodejs-global-inject/${module}`;
159
- }
231
+ });
160
232
  //# sourceMappingURL=nodejs-compat.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nodejs-compat.js","sourceRoot":"","sources":["../../src/plugins/nodejs-compat.ts"],"names":[],"mappings":"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"}
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,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,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;AAE5D,MAAM,kBAAkB,GAAG,uBAAuB,CAAC;AACnD,MAAM,2BAA2B,GAAG,IAAI,MAAM,CAAC,KAAK,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAElG,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,OAAO,EAAE,KAAK;YACd,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;AAOH,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAY,CAC3C,cAAc,EACd,CAAC,OAAO,EAAE,EAAE;IACV,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAAE,OAAO;IACzD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;QACtD,OAAO,EAAE;YACP,mBAAmB,CAAC;gBAClB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;gBAC5C,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;aAC/C,CAAC;SACH;KACF,CAAC,CAAC,GAAG,CAAC;IACP,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACjD,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAClD,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,EAAE;QAC7B,IAAI,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC/C,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACpB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC;IACF,MAAM,iBAAiB,GAAG;QACxB,EAAE,EAAE,CAAC,2BAA2B,EAAE,UAAU,EAAE,8BAA8B,CAAC;KAC9E,CAAC;IACF,OAAO;QACL,MAAM,EAAE;YACN,GAAG,EAAE;gBACH,QAAQ;gBACR,MAAM,EAAE,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,eAAe,CAAC,EAAE,EAAE;oBAC7D,MAAM,CACJ,OAAO,eAAe,KAAK,QAAQ,EACnC,yCAAyC,CAC1C,CAAC;oBACF,OAAO,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;gBACzC,CAAC,CAAC,CACH;aACF;SACF;QACD,QAAQ,EAAE;YACR,KAAK,CAAC,OAAO,CAAC,OAAO;gBACnB,OAAO,CAAC,OAAO,GAAG;oBAChB,wBAAwB,CAAC;wBACvB,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC;wBACvB,kBAAkB,EAAE,IAAI;qBACzB,CAAC;oBACF,OAAO,CAAC,OAAO;iBAChB,CAAC;gBACF,OAAO,OAAO,CAAC;YACjB,CAAC;YACD,SAAS,EAAE;gBACT,MAAM,EAAE,iBAAiB;gBACzB,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO;oBAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;oBACjC,IAAI,CAAC,QAAQ;wBAAE,OAAO;oBACtB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnD,CAAC;aACF;SACF;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,KAAK;YACd,KAAK,CAAC,iBAAiB,CAAC,IAAI;gBAC1B,IAAI,IAAI,KAAK,QAAQ;oBAAE,OAAO;gBAC9B,OAAO;oBACL,OAAO,EAAE;wBACP,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC;qBACxB;oBACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe;wBAC3B,CAAC,CAAC;4BACE,KAAK,EAAE;gCACL,eAAe,EAAE;oCACf,OAAO,EAAE;wCACP,wBAAwB,CAAC;4CACvB,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC;4CACvB,kBAAkB,EAAE,IAAI;yCACzB,CAAC;qCACH;iCACF;6BACF;yBACF;wBACH,CAAC,CAAC,EAAE,CAAC;oBACP,YAAY,EAAE;wBACZ,OAAO,EAAE;4BACP,GAAG,sBAAsB;4BACzB,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,MAAM,EAAE,CAAC;4BAC3D,2EAA2E;4BAC3E,GAAG,CAAC,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,qBAAqB,CAAC;yBACnE;qBACF;iBACF,CAAC;YACJ,CAAC;YACD,KAAK,CAAC,eAAe,CAAC,MAAM;gBAC1B,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;oBAC/D,MAAM,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC;oBAChD,IAAI,CAAC,aAAa;wBAAE,OAAO;oBAC3B,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;oBAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;wBACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;wBAChC,IAAI,CAAC,QAAQ;4BAAE,OAAO;wBACtB,MAAM,YAAY,GAAG,aAAa,CAAC,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;wBAC1E,OAAO,YAAY,EAAE,UAAU,CAAC;oBAClC,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CACH,CAAC;YACJ,CAAC;YACD,SAAS,EAAE;gBACT,MAAM,EAAE,iBAAiB;gBACzB,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO;oBAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;oBACjC,IAAI,CAAC,QAAQ;wBAAE,OAAO;oBACtB,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;wBACtE,0CAA0C;wBAC1C,gFAAgF;wBAChF,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;wBACtF,gFAAgF;wBAChF,0DAA0D;wBAC1D,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;oBAC7C,CAAC;oBACD,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnD,CAAC;aACF;SACF;KACF,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,YAAY,CAAC,uBAAuB,EAAE,CAAC,OAAO,EAAE,EAAE;IACzF,IAAI,eAAe,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAAE,OAAO;IACxD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC/C,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACzB,OAAO;QACL,QAAQ,EAAE;YACR,OAAO,CAAC,OAAO;gBACb,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;oBAChB,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC;gBACrB,CAAC;YACH,CAAC;SACF;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,KAAK;YACd,cAAc,CAAC,MAAM;gBACnB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YACrB,CAAC;SACF;QACD,MAAM,EAAE;YACN,UAAU;gBACR,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,CAAC;YACD,SAAS,EAAE;gBACT,MAAM,EAAE,EAAE,EAAE,EAAE,2BAA2B,EAAE;gBAC3C,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ;oBACxB,IAAI,YAAY,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;wBAAE,OAAO;oBACpF,IAAI,QAAQ,EAAE,CAAC;wBACb,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;4BACrB,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;wBAC7B,CAAC;wBACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;oBACjC,CAAC;oBACD,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBAChC,CAAC;aACF;YACD,QAAQ;gBACN,MAAM,eAAe,GAA4C,EAAE,CAAC;gBACpE,KAAK,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;oBAChD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;wBACjC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;4BACjC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;wBACzC,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/B,MAAM,OAAO,GAAG;wBACd,8BAA8B;wBAC9B,gEAAgE;wBAChE,6FAA6F;wBAC7F,GAAG,eAAe,CAAC,GAAG,CACpB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,oBAAoB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CACtF;qBACF,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACX,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;SACF;KACF,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const nodejsImportWarningPlugin: import("../factory").NullablePluginOutput<any>;
2
+ //# sourceMappingURL=nodejs-import-warning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodejs-import-warning.d.ts","sourceRoot":"","sources":["../../src/plugins/nodejs-import-warning.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,yBAAyB,gDAwDpC,CAAC"}
@@ -0,0 +1,62 @@
1
+ import { nonPrefixedNodeModules } from "@cloudflare/unenv-preset";
2
+ import path from "node:path";
3
+ import { createPlugin } from "../factory";
4
+ import { hasNodejsCompat } from "../utils";
5
+ const NODE_BUILTIN_MODULES_REGEXP = new RegExp(`^(${nonPrefixedNodeModules.join("|")}|node:.+)$`);
6
+ export const nodejsImportWarningPlugin = createPlugin("nodejs-import-warning", (options) => {
7
+ if (hasNodejsCompat(options.compatibilityFlags))
8
+ return;
9
+ const imports = new Map();
10
+ let root = process.cwd();
11
+ return {
12
+ rolldown: {
13
+ options(options) {
14
+ if (options.cwd) {
15
+ root = options.cwd;
16
+ }
17
+ },
18
+ },
19
+ vite: {
20
+ configResolved(config) {
21
+ root = config.root;
22
+ },
23
+ },
24
+ shared: {
25
+ buildStart() {
26
+ imports.clear();
27
+ },
28
+ resolveId: {
29
+ filter: { id: NODE_BUILTIN_MODULES_REGEXP },
30
+ async handler(id, importer) {
31
+ if (importer) {
32
+ if (!imports.has(id)) {
33
+ imports.set(id, new Set());
34
+ }
35
+ imports.get(id)?.add(importer);
36
+ }
37
+ return { id, external: true };
38
+ },
39
+ },
40
+ buildEnd() {
41
+ const filteredImports = [];
42
+ for (const [id, importers] of imports.entries()) {
43
+ for (const importer of importers) {
44
+ if (this.getModuleInfo(importer)) {
45
+ filteredImports.push({ id, importer });
46
+ }
47
+ }
48
+ }
49
+ if (filteredImports.length > 0) {
50
+ const message = [
51
+ "Unexpected Node.js imports. ",
52
+ 'Do you need to enable the "nodejs_compat" compatibility flag? ',
53
+ "Refer to https://developers.cloudflare.com/workers/runtime-apis/nodejs/ for more details.\n",
54
+ ...filteredImports.map(({ id, importer }) => ` - "${id}" imported from "${path.relative(root, importer)}"\n`),
55
+ ].join("");
56
+ this.warn(message);
57
+ }
58
+ },
59
+ },
60
+ };
61
+ });
62
+ //# sourceMappingURL=nodejs-import-warning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodejs-import-warning.js","sourceRoot":"","sources":["../../src/plugins/nodejs-import-warning.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,2BAA2B,GAAG,IAAI,MAAM,CAAC,KAAK,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAElG,MAAM,CAAC,MAAM,yBAAyB,GAAG,YAAY,CAAC,uBAAuB,EAAE,CAAC,OAAO,EAAE,EAAE;IACzF,IAAI,eAAe,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAAE,OAAO;IACxD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC/C,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACzB,OAAO;QACL,QAAQ,EAAE;YACR,OAAO,CAAC,OAAO;gBACb,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;oBAChB,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC;gBACrB,CAAC;YACH,CAAC;SACF;QACD,IAAI,EAAE;YACJ,cAAc,CAAC,MAAM;gBACnB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YACrB,CAAC;SACF;QACD,MAAM,EAAE;YACN,UAAU;gBACR,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,CAAC;YACD,SAAS,EAAE;gBACT,MAAM,EAAE,EAAE,EAAE,EAAE,2BAA2B,EAAE;gBAC3C,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ;oBACxB,IAAI,QAAQ,EAAE,CAAC;wBACb,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;4BACrB,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;wBAC7B,CAAC;wBACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;oBACjC,CAAC;oBACD,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBAChC,CAAC;aACF;YACD,QAAQ;gBACN,MAAM,eAAe,GAA4C,EAAE,CAAC;gBACpE,KAAK,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;oBAChD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;wBACjC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;4BACjC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;wBACzC,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/B,MAAM,OAAO,GAAG;wBACd,8BAA8B;wBAC9B,gEAAgE;wBAChE,6FAA6F;wBAC7F,GAAG,eAAe,CAAC,GAAG,CACpB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,oBAAoB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CACtF;qBACF,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACX,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;SACF;KACF,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface UnenvApi {
2
+ polyfill: ReadonlyArray<string>;
3
+ inject: {
4
+ [injectedName: string]: string;
5
+ };
6
+ }
7
+ export declare const nodejsUnenvPlugin: import("../factory.js").NullablePluginOutput<UnenvApi>;
8
+ //# sourceMappingURL=nodejs-unenv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodejs-unenv.d.ts","sourceRoot":"","sources":["../../src/plugins/nodejs-unenv.ts"],"names":[],"mappings":"AAUA,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,wDA8H7B,CAAC"}
@@ -0,0 +1,133 @@
1
+ import { getCloudflarePreset, nonPrefixedNodeModules } from "@cloudflare/unenv-preset";
2
+ import assert from "node:assert";
3
+ import { createRequire } from "node:module";
4
+ import { esmExternalRequirePlugin } from "rolldown/plugins";
5
+ import { defineEnv } from "unenv";
6
+ import { createPlugin } from "../factory.js";
7
+ import { hasNodejsCompat } from "../utils.js";
8
+ const NODE_BUILTIN_MODULES_REGEXP = new RegExp(`^(${nonPrefixedNodeModules.join("|")}|node:.+)$`);
9
+ export const nodejsUnenvPlugin = createPlugin("nodejs-unenv", (options) => {
10
+ if (!hasNodejsCompat(options.compatibilityFlags))
11
+ return;
12
+ const { alias, inject, external, polyfill } = defineEnv({
13
+ presets: [
14
+ getCloudflarePreset({
15
+ compatibilityDate: options.compatibilityDate,
16
+ compatibilityFlags: options.compatibilityFlags,
17
+ }),
18
+ ],
19
+ }).env;
20
+ const entries = new Set(Object.values(alias));
21
+ for (const globalInject of Object.values(inject)) {
22
+ if (typeof globalInject === "string") {
23
+ entries.add(globalInject);
24
+ }
25
+ else {
26
+ entries.add(globalInject[0]);
27
+ }
28
+ }
29
+ polyfill.forEach((module) => entries.add(module));
30
+ external.forEach((module) => entries.delete(module));
31
+ const require = createRequire(import.meta.url);
32
+ const resolve = (id) => {
33
+ if (alias[id] && !external.includes(alias[id])) {
34
+ return require.resolve(alias[id]);
35
+ }
36
+ if (entries.has(id)) {
37
+ return require.resolve(id);
38
+ }
39
+ };
40
+ const RESOLVE_ID_FILTER = {
41
+ id: [NODE_BUILTIN_MODULES_REGEXP, /^unenv\//, /^@cloudflare\/unenv-preset\//],
42
+ };
43
+ return {
44
+ shared: {
45
+ api: {
46
+ polyfill,
47
+ inject: Object.fromEntries(Object.entries(inject).map(([injectedName, moduleSpecifier]) => {
48
+ assert(typeof moduleSpecifier === "string", `expected moduleSpecifier to be a string`);
49
+ return [injectedName, moduleSpecifier];
50
+ })),
51
+ },
52
+ },
53
+ rolldown: {
54
+ async options(options) {
55
+ options.plugins = [
56
+ esmExternalRequirePlugin({
57
+ external: [...external],
58
+ skipDuplicateCheck: true,
59
+ }),
60
+ options.plugins,
61
+ ];
62
+ return options;
63
+ },
64
+ resolveId: {
65
+ filter: RESOLVE_ID_FILTER,
66
+ handler(source, importer, options) {
67
+ const resolved = resolve(source);
68
+ if (!resolved)
69
+ return;
70
+ return this.resolve(resolved, importer, options);
71
+ },
72
+ },
73
+ },
74
+ vite: {
75
+ async configEnvironment(name) {
76
+ if (name === "client")
77
+ return;
78
+ return {
79
+ resolve: {
80
+ builtins: [...external],
81
+ },
82
+ ...(this.meta.rolldownVersion
83
+ ? {
84
+ build: {
85
+ rolldownOptions: {
86
+ plugins: [
87
+ esmExternalRequirePlugin({
88
+ external: [...external],
89
+ skipDuplicateCheck: true,
90
+ }),
91
+ ],
92
+ },
93
+ },
94
+ }
95
+ : {}),
96
+ };
97
+ },
98
+ async configureServer(server) {
99
+ await Promise.all(Object.values(server.environments).flatMap(async (environment) => {
100
+ const depsOptimizer = environment.depsOptimizer;
101
+ if (!depsOptimizer)
102
+ return;
103
+ await depsOptimizer.init();
104
+ return Array.from(entries).map((entry) => {
105
+ const resolved = resolve(entry);
106
+ if (!resolved)
107
+ return;
108
+ const registration = depsOptimizer.registerMissingImport(entry, resolved);
109
+ return registration?.processing;
110
+ });
111
+ }));
112
+ },
113
+ resolveId: {
114
+ filter: RESOLVE_ID_FILTER,
115
+ handler(source, importer, options) {
116
+ const resolved = resolve(source);
117
+ if (!resolved)
118
+ return;
119
+ if (this.environment.mode === "dev" && this.environment.depsOptimizer) {
120
+ // We are in dev mode (rather than build).
121
+ // So let's pre-bundle this polyfill entry-point using the dependency optimizer.
122
+ const { id } = this.environment.depsOptimizer.registerMissingImport(source, resolved);
123
+ // We use the unresolved path to the polyfill and let the dependency optimizer's
124
+ // resolver find the resolved path to the bundled version.
125
+ return this.resolve(id, importer, options);
126
+ }
127
+ return this.resolve(resolved, importer, options);
128
+ },
129
+ },
130
+ },
131
+ };
132
+ });
133
+ //# sourceMappingURL=nodejs-unenv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodejs-unenv.js","sourceRoot":"","sources":["../../src/plugins/nodejs-unenv.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,2 @@
1
- import type { CloudflarePluginOptions } from "../plugin.js";
2
- export declare function makeOptionsPlugin(pluginOptions: CloudflarePluginOptions): {
3
- name: string;
4
- options(this: import("rolldown").MinimalPluginContext, options: import("rolldown").InputOptions): import("rolldown").InputOptions;
5
- };
1
+ export declare const optionsPlugin: import("../factory.js").PluginOutput<any>;
6
2
  //# sourceMappingURL=options.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/plugins/options.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAkB5D,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,uBAAuB;;;EA+BvE"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/plugins/options.ts"],"names":[],"mappings":"AAkCA,eAAO,MAAM,aAAa,2CAmHvB,CAAC"}