@bleedingdev/modern-js-app-tools-extensions 3.9.0-ultramodern.2 → 3.9.0-ultramodern.21

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 (217) hide show
  1. package/dist/cjs/backend-federation-build/codegen.js +267 -0
  2. package/dist/cjs/backend-federation-build/config.js +239 -0
  3. package/dist/cjs/backend-federation-build/emit.js +154 -0
  4. package/dist/cjs/backend-federation-build/index.js +53 -0
  5. package/dist/cjs/build-config/build-environment.js +129 -0
  6. package/dist/cjs/build-config/precompress/plugin.js +124 -0
  7. package/dist/cjs/build-config/precompress/types.js +18 -0
  8. package/dist/cjs/build-config/public.js +43 -0
  9. package/dist/cjs/build-config/remote-address.js +58 -0
  10. package/dist/cjs/cloudflare/artifacts.js +8 -19
  11. package/dist/cjs/cloudflare/constants.js +1 -1
  12. package/dist/cjs/cloudflare/delivery-unit.js +23 -42
  13. package/dist/cjs/cloudflare/index.js +10 -2
  14. package/dist/cjs/cloudflare/worker-manifest.js +13 -4
  15. package/dist/cjs/cloudflare/wrangler-config.js +35 -7
  16. package/dist/cjs/cloudflare-builder.js +252 -75
  17. package/dist/cjs/cloudflare-output-contract.js +69 -3
  18. package/dist/cjs/cloudflare-output-verifier/identity.js +29 -27
  19. package/dist/cjs/cloudflare-output-verifier/index.js +10 -0
  20. package/dist/cjs/cloudflare-output-verifier/manifest.js +46 -0
  21. package/dist/cjs/cloudflare-output-verifier/mutation-policy.js +7 -1
  22. package/dist/cjs/cloudflare-output-verifier/worker-bundles.js +14 -6
  23. package/dist/cjs/config.js +34 -1
  24. package/dist/cjs/deploy-output/npmAliases.js +251 -0
  25. package/dist/cjs/deploy-output/plugin.js +97 -0
  26. package/dist/cjs/deploy-output/public-assets.js +146 -0
  27. package/dist/cjs/deploy-output/target.js +104 -0
  28. package/dist/cjs/deploy-output/trace-files.js +90 -0
  29. package/dist/cjs/native-type-checker.js +193 -0
  30. package/dist/cjs/policy-defaults.js +101 -0
  31. package/dist/cjs/release-envelope/framework-output.js +153 -79
  32. package/dist/cjs/release-envelope/index.js +10 -4
  33. package/dist/cjs/release-envelope/plugin.js +18 -13
  34. package/dist/cjs/release-identity.js +5 -6
  35. package/dist/cjs/runtime-package-resolution.js +118 -0
  36. package/dist/cjs/templates/cloudflare-entry.001-bootstrap-security.mjs +0 -3
  37. package/dist/cjs/templates/cloudflare-entry.002-assets-routes.mjs +1 -1
  38. package/dist/cjs/templates/cloudflare-entry.004-rendering-css.mjs +5 -1
  39. package/dist/cjs/templates/cloudflare-entry.005-worker-dispatch.mjs +98 -10
  40. package/dist/cjs/templates/cloudflare-entry.006-fetch-handler.mjs +9 -2
  41. package/dist/cjs/templates/cloudflare-worker-route-data.mjs +1069 -0
  42. package/dist/esm/backend-federation-build/codegen.mjs +216 -0
  43. package/dist/esm/backend-federation-build/config.mjs +163 -0
  44. package/dist/esm/backend-federation-build/emit.mjs +103 -0
  45. package/dist/esm/backend-federation-build/index.mjs +1 -0
  46. package/dist/esm/build-config/build-environment.mjs +88 -0
  47. package/dist/esm/build-config/precompress/plugin.mjs +76 -0
  48. package/dist/esm/build-config/precompress/types.mjs +0 -0
  49. package/dist/esm/build-config/public.mjs +1 -0
  50. package/dist/esm/build-config/remote-address.mjs +20 -0
  51. package/dist/esm/cloudflare/artifacts.mjs +8 -19
  52. package/dist/esm/cloudflare/constants.mjs +1 -1
  53. package/dist/esm/cloudflare/delivery-unit.mjs +17 -36
  54. package/dist/esm/cloudflare/index.mjs +10 -2
  55. package/dist/esm/cloudflare/worker-manifest.mjs +13 -4
  56. package/dist/esm/cloudflare/wrangler-config.mjs +35 -7
  57. package/dist/esm/cloudflare-builder.mjs +246 -75
  58. package/dist/esm/cloudflare-output-contract.mjs +59 -2
  59. package/dist/esm/cloudflare-output-verifier/identity.mjs +27 -25
  60. package/dist/esm/cloudflare-output-verifier/index.mjs +10 -0
  61. package/dist/esm/cloudflare-output-verifier/manifest.mjs +46 -0
  62. package/dist/esm/cloudflare-output-verifier/mutation-policy.mjs +7 -1
  63. package/dist/esm/cloudflare-output-verifier/worker-bundles.mjs +15 -7
  64. package/dist/esm/config.mjs +3 -0
  65. package/dist/esm/deploy-output/npmAliases.mjs +199 -0
  66. package/dist/esm/deploy-output/plugin.mjs +46 -0
  67. package/dist/esm/deploy-output/public-assets.mjs +82 -0
  68. package/dist/esm/deploy-output/target.mjs +57 -0
  69. package/dist/esm/deploy-output/trace-files.mjs +38 -0
  70. package/dist/esm/native-type-checker.mjs +142 -0
  71. package/dist/esm/policy-defaults.mjs +45 -0
  72. package/dist/esm/release-envelope/framework-output.mjs +130 -56
  73. package/dist/esm/release-envelope/index.mjs +10 -4
  74. package/dist/esm/release-envelope/plugin.mjs +18 -13
  75. package/dist/esm/release-identity.mjs +5 -6
  76. package/dist/esm/runtime-package-resolution.mjs +60 -0
  77. package/dist/esm/templates/cloudflare-entry.001-bootstrap-security.mjs +0 -3
  78. package/dist/esm/templates/cloudflare-entry.002-assets-routes.mjs +1 -1
  79. package/dist/esm/templates/cloudflare-entry.004-rendering-css.mjs +5 -1
  80. package/dist/esm/templates/cloudflare-entry.005-worker-dispatch.mjs +98 -10
  81. package/dist/esm/templates/cloudflare-entry.006-fetch-handler.mjs +9 -2
  82. package/dist/esm/templates/cloudflare-worker-route-data.mjs +1069 -0
  83. package/dist/esm-node/backend-federation-build/codegen.mjs +217 -0
  84. package/dist/esm-node/backend-federation-build/config.mjs +164 -0
  85. package/dist/esm-node/backend-federation-build/emit.mjs +104 -0
  86. package/dist/esm-node/backend-federation-build/index.mjs +2 -0
  87. package/dist/esm-node/build-config/build-environment.mjs +89 -0
  88. package/dist/esm-node/build-config/precompress/plugin.mjs +77 -0
  89. package/dist/esm-node/build-config/precompress/types.mjs +1 -0
  90. package/dist/esm-node/build-config/public.mjs +2 -0
  91. package/dist/esm-node/build-config/remote-address.mjs +21 -0
  92. package/dist/esm-node/cloudflare/artifacts.mjs +8 -19
  93. package/dist/esm-node/cloudflare/constants.mjs +1 -1
  94. package/dist/esm-node/cloudflare/delivery-unit.mjs +17 -36
  95. package/dist/esm-node/cloudflare/index.mjs +10 -2
  96. package/dist/esm-node/cloudflare/worker-manifest.mjs +13 -4
  97. package/dist/esm-node/cloudflare/wrangler-config.mjs +35 -7
  98. package/dist/esm-node/cloudflare-builder.mjs +246 -75
  99. package/dist/esm-node/cloudflare-output-contract.mjs +59 -2
  100. package/dist/esm-node/cloudflare-output-verifier/identity.mjs +27 -25
  101. package/dist/esm-node/cloudflare-output-verifier/index.mjs +10 -0
  102. package/dist/esm-node/cloudflare-output-verifier/manifest.mjs +46 -0
  103. package/dist/esm-node/cloudflare-output-verifier/mutation-policy.mjs +7 -1
  104. package/dist/esm-node/cloudflare-output-verifier/worker-bundles.mjs +15 -7
  105. package/dist/esm-node/config.mjs +3 -0
  106. package/dist/esm-node/deploy-output/npmAliases.mjs +200 -0
  107. package/dist/esm-node/deploy-output/plugin.mjs +49 -0
  108. package/dist/esm-node/deploy-output/public-assets.mjs +83 -0
  109. package/dist/esm-node/deploy-output/target.mjs +58 -0
  110. package/dist/esm-node/deploy-output/trace-files.mjs +39 -0
  111. package/dist/esm-node/native-type-checker.mjs +143 -0
  112. package/dist/esm-node/policy-defaults.mjs +46 -0
  113. package/dist/esm-node/release-envelope/framework-output.mjs +130 -56
  114. package/dist/esm-node/release-envelope/index.mjs +10 -4
  115. package/dist/esm-node/release-envelope/plugin.mjs +18 -13
  116. package/dist/esm-node/release-identity.mjs +5 -6
  117. package/dist/esm-node/runtime-package-resolution.mjs +61 -0
  118. package/dist/esm-node/templates/cloudflare-entry.001-bootstrap-security.mjs +0 -3
  119. package/dist/esm-node/templates/cloudflare-entry.002-assets-routes.mjs +1 -1
  120. package/dist/esm-node/templates/cloudflare-entry.004-rendering-css.mjs +5 -1
  121. package/dist/esm-node/templates/cloudflare-entry.005-worker-dispatch.mjs +98 -10
  122. package/dist/esm-node/templates/cloudflare-entry.006-fetch-handler.mjs +9 -2
  123. package/dist/esm-node/templates/cloudflare-worker-route-data.mjs +1069 -0
  124. package/dist/types/backend-federation-build/codegen.d.ts +116 -0
  125. package/dist/types/backend-federation-build/config.d.ts +121 -0
  126. package/dist/types/backend-federation-build/emit.d.ts +21 -0
  127. package/dist/types/backend-federation-build/index.d.ts +2 -0
  128. package/dist/types/build-config/build-environment.d.ts +14 -0
  129. package/dist/types/build-config/precompress/plugin.d.ts +4 -0
  130. package/dist/types/build-config/precompress/types.d.ts +19 -0
  131. package/dist/types/build-config/public.d.ts +2 -0
  132. package/dist/types/build-config/remote-address.d.ts +3 -0
  133. package/dist/types/cloudflare/artifacts.d.ts +7 -6
  134. package/dist/types/cloudflare/constants.d.ts +1 -1
  135. package/dist/types/cloudflare/delivery-unit.d.ts +3 -3
  136. package/dist/types/cloudflare/worker-manifest.d.ts +2 -2
  137. package/dist/types/cloudflare/wrangler-config.d.ts +6 -0
  138. package/dist/types/cloudflare-builder.d.ts +49 -9
  139. package/dist/types/cloudflare-output-contract.d.ts +4 -1
  140. package/dist/types/cloudflare-output-verifier/identity.d.ts +1 -1
  141. package/dist/types/cloudflare-output-verifier/worker-bundles.d.ts +2 -2
  142. package/dist/types/config.d.ts +29 -1
  143. package/dist/types/deploy-output/npmAliases.d.ts +14 -0
  144. package/dist/types/deploy-output/plugin.d.ts +35 -0
  145. package/dist/types/deploy-output/public-assets.d.ts +51 -0
  146. package/dist/types/deploy-output/target.d.ts +29 -0
  147. package/dist/types/deploy-output/trace-files.d.ts +17 -0
  148. package/dist/types/native-type-checker.d.ts +15 -0
  149. package/dist/types/policy-defaults.d.ts +46 -0
  150. package/dist/types/precompress/LICENSE +20 -0
  151. package/dist/types/precompress/index.d.ts +76 -0
  152. package/dist/types/release-envelope/framework-output.d.ts +8 -3
  153. package/dist/types/release-envelope/plugin.d.ts +7 -7
  154. package/dist/types/runtime-package-resolution.d.ts +28 -0
  155. package/dist/types/templates/cloudflare-worker-route-data.d.mts +14 -0
  156. package/package.json +97 -15
  157. package/src/backend-federation-build/codegen.ts +254 -0
  158. package/src/backend-federation-build/config.ts +492 -0
  159. package/src/backend-federation-build/emit.ts +213 -0
  160. package/src/backend-federation-build/index.ts +2 -0
  161. package/src/build-config/build-environment.ts +160 -0
  162. package/src/build-config/precompress/plugin.ts +140 -0
  163. package/src/build-config/precompress/types.ts +26 -0
  164. package/src/build-config/public.ts +5 -0
  165. package/src/build-config/remote-address.ts +33 -0
  166. package/src/cloudflare/artifacts.ts +22 -43
  167. package/src/cloudflare/constants.ts +1 -1
  168. package/src/cloudflare/delivery-unit.ts +42 -53
  169. package/src/cloudflare/index.ts +24 -11
  170. package/src/cloudflare/worker-manifest.ts +20 -3
  171. package/src/cloudflare/wrangler-config.ts +86 -10
  172. package/src/cloudflare-builder.ts +475 -151
  173. package/src/cloudflare-output-contract.ts +70 -0
  174. package/src/cloudflare-output-verifier/identity.ts +5 -1
  175. package/src/cloudflare-output-verifier/index.ts +20 -0
  176. package/src/cloudflare-output-verifier/manifest.ts +77 -0
  177. package/src/cloudflare-output-verifier/mutation-policy.ts +11 -1
  178. package/src/cloudflare-output-verifier/worker-bundles.ts +32 -14
  179. package/src/config.ts +34 -6
  180. package/src/deploy-output/npmAliases.ts +382 -0
  181. package/src/deploy-output/plugin.ts +86 -0
  182. package/src/deploy-output/public-assets.ts +224 -0
  183. package/src/deploy-output/target.ts +106 -0
  184. package/src/deploy-output/trace-files.ts +67 -0
  185. package/src/native-type-checker.ts +183 -0
  186. package/src/policy-defaults.ts +127 -0
  187. package/src/release-envelope/framework-output.ts +346 -94
  188. package/src/release-envelope/index.ts +26 -5
  189. package/src/release-envelope/plugin.ts +43 -40
  190. package/src/release-identity.ts +13 -2
  191. package/src/runtime-package-resolution.ts +115 -0
  192. package/src/templates/cloudflare-entry.001-bootstrap-security.mjs +0 -3
  193. package/src/templates/cloudflare-entry.002-assets-routes.mjs +1 -1
  194. package/src/templates/cloudflare-entry.004-rendering-css.mjs +5 -1
  195. package/src/templates/cloudflare-entry.005-worker-dispatch.mjs +98 -10
  196. package/src/templates/cloudflare-entry.006-fetch-handler.mjs +9 -2
  197. package/src/templates/cloudflare-worker-route-data.mjs +1069 -0
  198. package/dist/cjs/templates/cloudflare-worker-fs-promises.mjs +0 -11
  199. package/dist/cjs/templates/cloudflare-worker-loadable-server.mjs +0 -281
  200. package/dist/cjs/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +0 -14
  201. package/dist/cjs/templates/cloudflare-worker-path.mjs +0 -98
  202. package/dist/esm/templates/cloudflare-worker-fs-promises.mjs +0 -11
  203. package/dist/esm/templates/cloudflare-worker-loadable-server.mjs +0 -281
  204. package/dist/esm/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +0 -14
  205. package/dist/esm/templates/cloudflare-worker-path.mjs +0 -98
  206. package/dist/esm-node/templates/cloudflare-worker-fs-promises.mjs +0 -11
  207. package/dist/esm-node/templates/cloudflare-worker-loadable-server.mjs +0 -281
  208. package/dist/esm-node/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +0 -14
  209. package/dist/esm-node/templates/cloudflare-worker-path.mjs +0 -98
  210. package/dist/types/templates/cloudflare-worker-fs-promises.d.mts +0 -5
  211. package/dist/types/templates/cloudflare-worker-loadable-server.d.mts +0 -48
  212. package/dist/types/templates/cloudflare-worker-mf-ssr-runtime-plugin.d.mts +0 -13
  213. package/dist/types/templates/cloudflare-worker-path.d.mts +0 -21
  214. package/src/templates/cloudflare-worker-fs-promises.mjs +0 -11
  215. package/src/templates/cloudflare-worker-loadable-server.mjs +0 -281
  216. package/src/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +0 -14
  217. package/src/templates/cloudflare-worker-path.mjs +0 -98
@@ -46,6 +46,7 @@ __webpack_require__.d(__webpack_exports__, {
46
46
  const external_node_path_namespaceObject = require("node:path");
47
47
  var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
48
48
  const utils_namespaceObject = require("@modern-js/utils");
49
+ const external_cloudflare_output_contract_js_namespaceObject = require("../cloudflare-output-contract.js");
49
50
  const external_artifacts_js_namespaceObject = require("./artifacts.js");
50
51
  const external_constants_js_namespaceObject = require("./constants.js");
51
52
  const external_i18n_worker_js_namespaceObject = require("./i18n-worker.js");
@@ -111,13 +112,18 @@ const createWorkerManifest = async (outputDirectory, modernConfig, appContext, d
111
112
  const routeSpec = await (0, external_artifacts_js_namespaceObject.readRouteSpec)(outputDirectory);
112
113
  const routes = await Promise.all(routeSpec.routes.map(async (route)=>{
113
114
  const worker = 'string' == typeof route.worker ? route.worker : void 0;
115
+ const routeDataWorker = route.isSSR && 'string' == typeof route.entryName ? `${external_constants_js_namespaceObject.WORKER_BUNDLE_DIRECTORY}/${(0, external_cloudflare_output_contract_js_namespaceObject.getCloudflareWorkerRouteDataEntryName)(route.entryName)}.js` : void 0;
116
+ const hasRouteDataWorker = routeDataWorker ? await utils_namespaceObject.fs.pathExists(external_node_path_default().join(outputDirectory, routeDataWorker)) : false;
114
117
  return {
115
118
  urlPath: route.urlPath,
116
119
  entryName: route.entryName,
117
120
  entryPath: route.entryPath,
118
121
  isSSR: Boolean(route.isSSR),
119
122
  worker,
120
- workerExists: worker ? await utils_namespaceObject.fs.pathExists(external_node_path_default().join(outputDirectory, worker)) : false
123
+ workerExists: worker ? await utils_namespaceObject.fs.pathExists(external_node_path_default().join(outputDirectory, worker)) : false,
124
+ ...hasRouteDataWorker ? {
125
+ routeDataWorker
126
+ } : {}
121
127
  };
122
128
  }));
123
129
  const bffPrefix = modernConfig.bff?.prefix;
@@ -177,9 +183,12 @@ const createWorkerManifest = async (outputDirectory, modernConfig, appContext, d
177
183
  };
178
184
  const createWorkerModuleLoaders = (manifest)=>{
179
185
  const imports = new Map();
180
- for (const route of manifest.routeSpec.routes)if (route.worker && route.workerExists) {
181
- const importPath = `../${String(route.worker).replace(/^\/+/u, '')}`;
182
- imports.set(route.worker, `() => import(${JSON.stringify(importPath)})`);
186
+ for (const route of manifest.routeSpec.routes)for (const worker of [
187
+ route.workerExists ? route.worker : void 0,
188
+ route.routeDataWorker
189
+ ])if (worker) {
190
+ const importPath = `../${String(worker).replace(/^\/+/u, '')}`;
191
+ imports.set(worker, `() => import(${JSON.stringify(importPath)})`);
183
192
  }
184
193
  if (manifest.bff?.worker) {
185
194
  const importPath = `../${String(manifest.bff.worker).replace(/^\/+/u, '')}`;
@@ -45,12 +45,16 @@ const external_node_path_namespaceObject = require("node:path");
45
45
  var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
46
46
  const external_constants_js_namespaceObject = require("./constants.js");
47
47
  const external_utils_js_namespaceObject = require("./utils.js");
48
- const getCompatibilityDate = (modernConfig)=>{
49
- const configuredDate = modernConfig.deploy?.worker?.compatibilityDate?.trim();
50
- const compatibilityDate = configuredDate || external_constants_js_namespaceObject.DEFAULT_COMPATIBILITY_DATE;
51
- if (!external_constants_js_namespaceObject.COMPATIBILITY_DATE_PATTERN.test(compatibilityDate)) throw new Error(`deploy.worker.compatibilityDate must use YYYY-MM-DD, received ${JSON.stringify(compatibilityDate)}.`);
48
+ const assertSupportedCompatibilityDate = (compatibilityDate, label)=>{
49
+ if ('string' != typeof compatibilityDate) throw new Error(`${label} must be a YYYY-MM-DD string.`);
50
+ if (!external_constants_js_namespaceObject.COMPATIBILITY_DATE_PATTERN.test(compatibilityDate)) throw new Error(`${label} must use YYYY-MM-DD, received ${JSON.stringify(compatibilityDate)}.`);
51
+ if (compatibilityDate < external_constants_js_namespaceObject.DEFAULT_COMPATIBILITY_DATE) throw new Error(`${label} must be ${external_constants_js_namespaceObject.DEFAULT_COMPATIBILITY_DATE} or later, the date the Cloudflare worker Node.js built-in contract is verified against; received ${JSON.stringify(compatibilityDate)}.`);
52
52
  return compatibilityDate;
53
53
  };
54
+ const getCompatibilityDate = (modernConfig, wranglerCompatibilityDate)=>{
55
+ if (void 0 !== wranglerCompatibilityDate) return assertSupportedCompatibilityDate(wranglerCompatibilityDate, 'deploy.worker.wrangler.compatibility_date');
56
+ return assertSupportedCompatibilityDate(modernConfig.deploy?.worker?.compatibilityDate?.trim() || external_constants_js_namespaceObject.DEFAULT_COMPATIBILITY_DATE, 'deploy.worker.compatibilityDate');
57
+ };
54
58
  const getWorkerName = (appDirectory)=>{
55
59
  const basename = external_node_path_default().basename(appDirectory);
56
60
  return basename.replace(/[^a-zA-Z0-9-_]/g, '-') || 'modern-cloudflare-worker';
@@ -65,11 +69,11 @@ const getConfiguredWrangler = (modernConfig)=>{
65
69
  if (!(0, external_utils_js_namespaceObject.isJsonRecord)(wrangler)) throw new Error('deploy.worker.wrangler must be a JSON object.');
66
70
  return wrangler;
67
71
  };
68
- const createWranglerCompatibilityFlags = (configuredFlags)=>{
72
+ const createWranglerCompatibilityFlags = (configuredFlags, label = 'deploy.worker.wrangler.compatibility_flags')=>{
69
73
  if (void 0 === configuredFlags) return [
70
74
  ...external_constants_js_namespaceObject.REQUIRED_COMPATIBILITY_FLAGS
71
75
  ];
72
- if (!Array.isArray(configuredFlags) || configuredFlags.some((flag)=>'string' != typeof flag)) throw new Error('deploy.worker.wrangler.compatibility_flags must be an array of strings.');
76
+ if (!Array.isArray(configuredFlags) || configuredFlags.some((flag)=>'string' != typeof flag)) throw new Error(`${label} must be an array of strings.`);
73
77
  return [
74
78
  ...new Set([
75
79
  ...configuredFlags,
@@ -77,6 +81,26 @@ const createWranglerCompatibilityFlags = (configuredFlags)=>{
77
81
  ])
78
82
  ];
79
83
  };
84
+ const createWranglerEnvironments = (wranglerEnv)=>{
85
+ if (void 0 === wranglerEnv) return;
86
+ if (!(0, external_utils_js_namespaceObject.isJsonRecord)(wranglerEnv)) throw new Error('deploy.worker.wrangler.env must be an object.');
87
+ return Object.fromEntries(Object.entries(wranglerEnv).map(([name, environment])=>{
88
+ const label = `deploy.worker.wrangler.env.${name}`;
89
+ if (!(0, external_utils_js_namespaceObject.isJsonRecord)(environment)) throw new Error(`${label} must be an object.`);
90
+ return [
91
+ name,
92
+ {
93
+ ...environment,
94
+ ...void 0 === environment.compatibility_date ? {} : {
95
+ compatibility_date: assertSupportedCompatibilityDate(environment.compatibility_date, `${label}.compatibility_date`)
96
+ },
97
+ ...void 0 === environment.compatibility_flags ? {} : {
98
+ compatibility_flags: createWranglerCompatibilityFlags(environment.compatibility_flags, `${label}.compatibility_flags`)
99
+ }
100
+ }
101
+ ];
102
+ }));
103
+ };
80
104
  const createWranglerAssetsConfig = (configuredAssets)=>{
81
105
  if (void 0 !== configuredAssets && !(0, external_utils_js_namespaceObject.isJsonRecord)(configuredAssets)) throw new Error('deploy.worker.wrangler.assets must be an object.');
82
106
  return {
@@ -173,17 +197,21 @@ const createWorkerManifestServiceBindings = (serviceBindings)=>{
173
197
  };
174
198
  const createWranglerConfig = (appDirectory, modernConfig)=>{
175
199
  const wrangler = getConfiguredWrangler(modernConfig);
200
+ const environments = createWranglerEnvironments(wrangler.env);
176
201
  const d1Databases = createWranglerD1Databases(modernConfig, wrangler.d1_databases);
177
202
  const serviceBindings = createWorkerServiceBindings(modernConfig, wrangler.services);
178
203
  const wranglerServices = createWranglerServices(serviceBindings);
179
204
  return {
180
205
  $schema: 'node_modules/wrangler/config-schema.json',
181
206
  name: getConfiguredWorkerName(appDirectory, modernConfig),
182
- compatibility_date: getCompatibilityDate(modernConfig),
183
207
  ...wrangler,
208
+ compatibility_date: getCompatibilityDate(modernConfig, wrangler.compatibility_date),
184
209
  main: external_constants_js_namespaceObject.WORKER_ENTRY,
185
210
  compatibility_flags: createWranglerCompatibilityFlags(wrangler.compatibility_flags),
186
211
  assets: createWranglerAssetsConfig(wrangler.assets),
212
+ ...void 0 === environments ? {} : {
213
+ env: environments
214
+ },
187
215
  ...void 0 === d1Databases ? {} : {
188
216
  d1_databases: d1Databases
189
217
  },
@@ -41,9 +41,11 @@ var __webpack_exports__ = {};
41
41
  __webpack_require__.r(__webpack_exports__);
42
42
  __webpack_require__.d(__webpack_exports__, {
43
43
  applyCloudflareBuilderEnvironments: ()=>applyCloudflareBuilderEnvironments,
44
- applyCloudflareWorkerMfRuntimeBoundary: ()=>applyCloudflareWorkerMfRuntimeBoundary,
45
44
  applyCloudflareWorkerRspackConfig: ()=>applyCloudflareWorkerRspackConfig,
45
+ claimsByFunctionExternal: ()=>claimsByFunctionExternal,
46
+ createAbsentOptionalDependencyFilter: ()=>createAbsentOptionalDependencyFilter,
46
47
  createCloudflareBuilderPlugin: ()=>createCloudflareBuilderPlugin,
48
+ createRequestRedirectMatcher: ()=>createRequestRedirectMatcher,
47
49
  getCloudflareBuilderEnvironments: ()=>getCloudflareBuilderEnvironments,
48
50
  getCloudflareWorkerRspackConfig: ()=>getCloudflareWorkerRspackConfig
49
51
  });
@@ -54,14 +56,50 @@ const external_node_path_namespaceObject = require("node:path");
54
56
  var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
55
57
  const builder_namespaceObject = require("@modern-js/builder");
56
58
  const utils_namespaceObject = require("@modern-js/utils");
57
- const external_std_env_namespaceObject = require("std-env");
58
59
  const external_cloudflare_output_contract_js_namespaceObject = require("./cloudflare-output-contract.js");
59
60
  const external_read_template_js_namespaceObject = require("./read-template.js");
60
61
  const moduleRequire = (0, external_node_module_namespaceObject.createRequire)(__rslib_import_meta_url__);
61
62
  const BFF_EFFECT_WORKER_ENTRY_NAME = '__modern_bff_effect';
62
63
  const BFF_EFFECT_WORKER_RUNTIME_QUERY = 'modern-bff-runtime';
63
- const MF_SSR_DATA_FETCH_RUNTIME_PLUGIN = '@module-federation/modern-js-v3/ssr-inject-data-fetch-function-plugin';
64
- const MF_SSR_DEV_RUNTIME_PLUGIN = '@module-federation/modern-js-v3/ssr-dev-plugin';
64
+ const SERVER_LOADER_COMBINED_FILE = 'server-loader-combined.js';
65
+ const ROUTE_SERVER_LOADERS_FILE = 'route-server-loaders.js';
66
+ const WORKER_ROUTE_DATA_FILE = 'cloudflare-worker-route-data.js';
67
+ const WORKER_ROUTE_DATA_TEMPLATE = 'cloudflare-worker-route-data.mjs';
68
+ const DATA_LOADER_CLIENT_TRANSFORM = /plugin-data-loader[\\/](?:.+[\\/])?loader\.[cm]?js$/u;
69
+ const WORKER_DEPENDENCY_CONDITIONS = [
70
+ [
71
+ 'esm',
72
+ 'import'
73
+ ],
74
+ [
75
+ 'wasm',
76
+ 'import'
77
+ ],
78
+ [
79
+ 'loaderImport',
80
+ 'import'
81
+ ],
82
+ [
83
+ 'worker',
84
+ 'import'
85
+ ],
86
+ [
87
+ 'commonjs',
88
+ 'require'
89
+ ],
90
+ [
91
+ 'amd',
92
+ 'require'
93
+ ],
94
+ [
95
+ 'loader',
96
+ 'require'
97
+ ],
98
+ [
99
+ 'unknown',
100
+ 'require'
101
+ ]
102
+ ];
65
103
  const JS_OR_TS_EXTENSIONS = new Set([
66
104
  '.js',
67
105
  '.jsx',
@@ -121,19 +159,154 @@ const resolvePackageFile = (packageName, filePath, paths)=>{
121
159
  const setAliasIfPresent = (alias, name, value)=>{
122
160
  if (value) alias.set(name, value);
123
161
  };
124
- const getCloudflareWorkerNodeExternals = ()=>Object.fromEntries(external_cloudflare_output_contract_js_namespaceObject.CLOUDFLARE_WORKER_NODE_BUILTINS.flatMap((builtin)=>{
125
- const nodeBuiltin = `node:${builtin}`;
162
+ const getCloudflareWorkerNodeExternals = ()=>Object.fromEntries([
163
+ ...external_cloudflare_output_contract_js_namespaceObject.CLOUDFLARE_WORKER_NODE_BUILTINS.flatMap((builtin)=>{
164
+ const nodeBuiltin = `node:${builtin}`;
165
+ const external = `module-import ${nodeBuiltin}`;
166
+ return (0, external_node_module_namespaceObject.isBuiltin)(builtin) ? [
167
+ [
168
+ builtin,
169
+ external
170
+ ],
171
+ [
172
+ nodeBuiltin,
173
+ external
174
+ ]
175
+ ] : [
176
+ [
177
+ nodeBuiltin,
178
+ external
179
+ ]
180
+ ];
181
+ }),
182
+ ...external_cloudflare_output_contract_js_namespaceObject.CLOUDFLARE_WORKER_PLATFORM_MODULES.map((platformModule)=>[
183
+ platformModule,
184
+ `module-import ${platformModule}`
185
+ ])
186
+ ]);
187
+ const getPackageNameFromRequest = (request)=>{
188
+ if (request.startsWith('.') || request.startsWith('/') || request.includes(':') || external_node_path_default().isAbsolute(request)) return;
189
+ const segments = request.split('/');
190
+ return request.startsWith('@') ? segments.length > 1 ? `${segments[0]}/${segments[1]}` : void 0 : segments[0];
191
+ };
192
+ const isRedirectedByAliasField = (manifest, aliasFields, request)=>aliasFields.some((field)=>{
193
+ let value = manifest;
194
+ for (const key of 'string' == typeof field ? [
195
+ field
196
+ ] : field)value = value && 'object' == typeof value ? value[key] : void 0;
197
+ return 'object' == typeof value && null !== value && Object.hasOwn(value, request);
198
+ });
199
+ const findOwningPackageManifest = (directory, cache)=>{
200
+ if (cache.has(directory)) return cache.get(directory);
201
+ let manifest;
202
+ const packageJsonPath = external_node_path_default().join(directory, 'package.json');
203
+ if (external_node_fs_default().existsSync(packageJsonPath)) try {
204
+ manifest = JSON.parse(external_node_fs_default().readFileSync(packageJsonPath, 'utf-8'));
205
+ } catch {
206
+ manifest = void 0;
207
+ }
208
+ else if (external_node_path_default().dirname(directory) !== directory) manifest = findOwningPackageManifest(external_node_path_default().dirname(directory), cache);
209
+ cache.set(directory, manifest);
210
+ return manifest;
211
+ };
212
+ const isPackageInstalled = (packageName, directory, moduleDirectories)=>moduleDirectories.some((moduleDirectory)=>{
213
+ if (external_node_path_default().isAbsolute(moduleDirectory)) return external_node_fs_default().existsSync(external_node_path_default().join(moduleDirectory, packageName));
214
+ let current = directory;
215
+ while(true){
216
+ if (external_node_fs_default().existsSync(external_node_path_default().join(current, moduleDirectory, packageName))) return true;
217
+ const parent = external_node_path_default().dirname(current);
218
+ if (parent === current) return false;
219
+ current = parent;
220
+ }
221
+ });
222
+ const createAbsentOptionalDependencyFilter = (isRedirected = ()=>false, moduleDirectories = [
223
+ 'node_modules'
224
+ ], aliasFields = [])=>{
225
+ const manifests = new Map();
226
+ return (request, context)=>{
227
+ const packageName = getPackageNameFromRequest(request);
228
+ if (!packageName || !context || isRedirected(request)) return false;
229
+ const manifest = findOwningPackageManifest(context, manifests);
230
+ if (!manifest) return false;
231
+ const optional = manifest.peerDependenciesMeta?.[packageName]?.optional === true || Object.hasOwn(manifest.optionalDependencies ?? {}, packageName);
232
+ return optional && !isRedirectedByAliasField(manifest, aliasFields, request) && !isPackageInstalled(packageName, context, moduleDirectories);
233
+ };
234
+ };
235
+ const getAliasNames = (alias)=>alias ? Array.isArray(alias) ? alias.map((entry)=>entry.onlyModule ? `${entry.name}$` : entry.name) : Object.keys(alias) : [];
236
+ const getExternalMatchers = (externals)=>{
237
+ if (Array.isArray(externals)) return externals.flatMap(getExternalMatchers);
238
+ if ('string' == typeof externals) return [
239
+ (request)=>request === externals
240
+ ];
241
+ if (externals instanceof RegExp) return [
242
+ (request)=>{
243
+ externals.lastIndex = 0;
244
+ return externals.test(request);
245
+ }
246
+ ];
247
+ if (externals && 'object' == typeof externals) {
248
+ const names = new Set(Object.entries(externals).filter(([, value])=>false !== value).map(([name])=>name));
126
249
  return [
127
- [
128
- builtin,
129
- `module-import ${nodeBuiltin}`
130
- ],
131
- [
132
- nodeBuiltin,
133
- `module-import ${nodeBuiltin}`
134
- ]
250
+ (request)=>names.has(request)
135
251
  ];
136
- }));
252
+ }
253
+ return [];
254
+ };
255
+ const createRequestRedirectMatcher = (options)=>{
256
+ const aliasNames = [
257
+ ...getAliasNames(options.resolve?.alias),
258
+ ...getAliasNames(options.resolve?.fallback)
259
+ ];
260
+ const externalMatchers = getExternalMatchers(options.externals);
261
+ return (request)=>externalMatchers.some((matches)=>matches(request)) || aliasNames.some((name)=>name.endsWith('$') ? request === name.slice(0, -1) : request === name || request.startsWith(`${name}/`));
262
+ };
263
+ const getFunctionExternals = (externals)=>Array.isArray(externals) ? externals.flatMap(getFunctionExternals) : 'function' == typeof externals ? [
264
+ externals
265
+ ] : [];
266
+ const callFunctionExternal = (external, data)=>new Promise((resolve, reject)=>{
267
+ const returned = external(data, (error, result)=>error ? reject(error) : resolve(result));
268
+ if (null !== returned && 'object' == typeof returned && 'function' == typeof returned.then) returned.then(resolve, reject);
269
+ else if (1 === external.length) resolve(returned);
270
+ });
271
+ const claimsByFunctionExternal = async (externals, data)=>{
272
+ for (const external of externals)try {
273
+ const result = await callFunctionExternal(external, data);
274
+ if (null != result && false !== result) return true;
275
+ } catch {
276
+ return true;
277
+ }
278
+ return false;
279
+ };
280
+ const PLUGIN_NAME = 'AbsentOptionalDependencyPlugin';
281
+ class AbsentOptionalDependencyPlugin {
282
+ apply(compiler) {
283
+ const isAbsent = createAbsentOptionalDependencyFilter(createRequestRedirectMatcher(compiler.options), compiler.options.resolve.modules, compiler.options.resolve.aliasFields);
284
+ const functionExternals = getFunctionExternals(compiler.options.externals);
285
+ compiler.hooks.normalModuleFactory.tap(PLUGIN_NAME, (factory)=>{
286
+ factory.hooks.beforeResolve.tapPromise(PLUGIN_NAME, async (data)=>{
287
+ if (!isAbsent(data.request, data.context)) return;
288
+ const claimed = await claimsByFunctionExternal(functionExternals, {
289
+ context: data.context,
290
+ contextInfo: {
291
+ issuer: data.contextInfo.issuer,
292
+ issuerLayer: data.contextInfo.issuerLayer ?? null
293
+ },
294
+ getResolve: (options)=>{
295
+ const resolver = factory.getResolver('normal', options ?? {});
296
+ return (context, request, callback)=>{
297
+ if (callback) return void resolver.resolve({}, context, request, {}, callback);
298
+ return new Promise((resolve, reject)=>{
299
+ resolver.resolve({}, context, request, {}, (error, result)=>error ? reject(error) : resolve(result || void 0));
300
+ });
301
+ };
302
+ },
303
+ request: data.request
304
+ });
305
+ return claimed ? void 0 : false;
306
+ });
307
+ });
308
+ }
309
+ }
137
310
  const normalizeWorkerOutputName = (name)=>external_node_path_default().posix.normalize(name.replace(/\\/gu, '/')).toLowerCase();
138
311
  const reserveWorkerChunkName = (baseName, reservedOutputNames)=>{
139
312
  let name = baseName;
@@ -183,11 +356,8 @@ function applyCloudflareWorkerRspackConfig(chain, workerEntryNames) {
183
356
  chain.optimization.runtimeChunk(config.optimization.runtimeChunk);
184
357
  chain.optimization.splitChunks(config.optimization.splitChunks);
185
358
  }
186
- function applyCloudflareWorkerMfRuntimeBoundary(chain) {
187
- const runtimePlugin = (0, external_read_template_js_namespaceObject.getTemplatePath)('cloudflare-worker-mf-ssr-runtime-plugin.mjs');
188
- chain.plugins.delete('plugin-module-federation');
189
- chain.resolve.alias.set(`${MF_SSR_DATA_FETCH_RUNTIME_PLUGIN}$`, runtimePlugin);
190
- chain.resolve.alias.set(`${MF_SSR_DEV_RUNTIME_PLUGIN}$`, runtimePlugin);
359
+ function removeCloudflareWorkerDataLoaderClientTransform(chain) {
360
+ for (const [name, rule] of Object.entries(chain.module.rules.entries() ?? {}))if (rule.uses.values().some((use)=>DATA_LOADER_CLIENT_TRANSFORM.test(String(use.get('loader'))))) chain.module.rules.delete(name);
191
361
  }
192
362
  const getEffectBffEntry = (normalizedConfig, appContext)=>{
193
363
  if (!normalizedConfig.bff || 'hono' === normalizedConfig.bff.runtimeFramework) return;
@@ -198,18 +368,6 @@ const getEffectBffEntry = (normalizedConfig, appContext)=>{
198
368
  }
199
369
  return resolveJsOrTsEntry(external_node_path_default().resolve(appContext.apiDirectory, 'index'));
200
370
  };
201
- const CLOUDFLARE_DEPLOY_PROVIDERS = new Set([
202
- 'cloudflare',
203
- 'cloudflare_pages',
204
- 'cloudflare_workers'
205
- ]);
206
- const resolveStdEnvDeployProvider = ()=>external_std_env_namespaceObject.provider;
207
- const isCloudflareWorkerDeploy = (normalizedConfig, resolveDeployProvider)=>{
208
- const explicitTarget = normalizedConfig.deploy?.target || process.env.MODERNJS_DEPLOY;
209
- if (explicitTarget) return 'cloudflare' === explicitTarget;
210
- const detectedProvider = resolveDeployProvider();
211
- return detectedProvider ? CLOUDFLARE_DEPLOY_PROVIDERS.has(detectedProvider) : false;
212
- };
213
371
  const rewriteWorkerEntryPath = (entry)=>entry.replace('index.jsx', 'index.server.jsx').replace('bootstrap.server.jsx', 'index.server.jsx').replace('bootstrap.jsx', 'index.server.jsx');
214
372
  const rewriteWorkerEntryDescription = (description)=>{
215
373
  const entryImport = description.import;
@@ -254,11 +412,40 @@ const prependBundlerChain = (environment, handler)=>{
254
412
  }
255
413
  };
256
414
  };
415
+ const createWorkerRouteDataModule = ()=>[
416
+ `import { routes } from './${ROUTE_SERVER_LOADERS_FILE}';`,
417
+ `import { createRouteDataRequestHandler } from ${JSON.stringify((0, external_read_template_js_namespaceObject.getTemplatePath)(WORKER_ROUTE_DATA_TEMPLATE))};`,
418
+ '',
419
+ `export const ${external_cloudflare_output_contract_js_namespaceObject.CLOUDFLARE_ROUTE_DATA_HANDLER_EXPORT} =`,
420
+ ' createRouteDataRequestHandler(routes);',
421
+ ''
422
+ ].join('\n');
423
+ const getWorkerRouteDataEntries = (appContext)=>{
424
+ const { entrypoints, internalDirectory } = appContext;
425
+ if (!entrypoints || !internalDirectory) return {};
426
+ return Object.fromEntries(entrypoints.flatMap(({ entryName })=>{
427
+ const entryDirectory = external_node_path_default().join(internalDirectory, entryName);
428
+ if (!external_node_fs_default().existsSync(external_node_path_default().join(entryDirectory, SERVER_LOADER_COMBINED_FILE)) || !external_node_fs_default().existsSync(external_node_path_default().join(entryDirectory, ROUTE_SERVER_LOADERS_FILE))) return [];
429
+ const routeDataFile = external_node_path_default().join(entryDirectory, WORKER_ROUTE_DATA_FILE);
430
+ external_node_fs_default().writeFileSync(routeDataFile, createWorkerRouteDataModule());
431
+ return [
432
+ [
433
+ (0, external_cloudflare_output_contract_js_namespaceObject.getCloudflareWorkerRouteDataEntryName)(entryName),
434
+ [
435
+ routeDataFile
436
+ ]
437
+ ]
438
+ ];
439
+ }));
440
+ };
257
441
  const getWorkerEntries = (environment, normalizedConfig, appContext)=>{
258
442
  const configuredEntries = environment.source?.entry;
259
- if (!configuredEntries) return;
260
- const entries = rewriteWorkerEntries(configuredEntries);
261
443
  const effectApiEntry = getEffectBffEntry(normalizedConfig, appContext);
444
+ if (!configuredEntries && !effectApiEntry) return;
445
+ const entries = configuredEntries ? {
446
+ ...rewriteWorkerEntries(configuredEntries),
447
+ ...getWorkerRouteDataEntries(appContext)
448
+ } : {};
262
449
  return effectApiEntry ? {
263
450
  ...entries,
264
451
  [BFF_EFFECT_WORKER_ENTRY_NAME]: [
@@ -271,9 +458,6 @@ const createCloudflareBundlerChain = (appContext, workerEntryNames)=>{
271
458
  appContext.appDirectory,
272
459
  process.cwd()
273
460
  ];
274
- const tanstackRouterSsrServerFile = resolvePackageFile('@tanstack/router-core', 'dist/esm/ssr/ssr-server.js', resolvePaths);
275
- const runtimeRscWorkerFile = resolvePackageFile('@modern-js/runtime', 'dist/esm/rsc/server.worker.mjs', resolvePaths);
276
- const renderRscWorkerFile = resolvePackageFile('@modern-js/render', 'dist/esm/rscWorker.mjs', resolvePaths);
277
461
  const reactFile = resolvePackageFile('react', 'index.js', resolvePaths);
278
462
  const reactJsxRuntimeFile = resolvePackageFile('react', 'jsx-runtime.js', resolvePaths);
279
463
  const reactJsxDevRuntimeFile = resolvePackageFile('react', 'jsx-dev-runtime.js', resolvePaths);
@@ -283,62 +467,49 @@ const createCloudflareBundlerChain = (appContext, workerEntryNames)=>{
283
467
  ...resolvePaths,
284
468
  (0, external_read_template_js_namespaceObject.getTemplatePath)('')
285
469
  ]);
286
- const loadableServerWorkerFile = (0, external_read_template_js_namespaceObject.getTemplatePath)('cloudflare-worker-loadable-server.mjs');
287
- const fsPromisesWorkerFile = (0, external_read_template_js_namespaceObject.getTemplatePath)('cloudflare-worker-fs-promises.mjs');
288
- const pathWorkerFile = (0, external_read_template_js_namespaceObject.getTemplatePath)('cloudflare-worker-path.mjs');
289
470
  const entryNames = [
290
471
  ...workerEntryNames
291
472
  ];
292
473
  return (chain)=>{
293
474
  applyCloudflareWorkerRspackConfig(chain, entryNames);
475
+ removeCloudflareWorkerDataLoaderClientTransform(chain);
294
476
  chain.output.module(true).library({
295
477
  type: 'module'
296
478
  }).publicPath('/').chunkFormat('module').chunkLoading('import').workerChunkLoading('import');
479
+ chain.node.set('__dirname', 'mock').set('__filename', 'mock');
297
480
  for (const condition of [
298
481
  'workerd',
299
482
  'worker',
300
483
  'webpack',
301
484
  (0, utils_namespaceObject.isProd)() ? 'production' : 'development',
302
- 'import',
303
- 'require',
304
485
  'module'
305
486
  ])chain.resolve.conditionNames.add(condition);
306
- applyCloudflareWorkerMfRuntimeBoundary(chain);
307
- if (tanstackRouterSsrServerFile) {
308
- chain.resolve.alias.set('@tanstack/router-core/ssr/server$', tanstackRouterSsrServerFile);
309
- chain.resolve.alias.set('@tanstack/router-core/ssr/server', tanstackRouterSsrServerFile);
310
- }
311
- if (runtimeRscWorkerFile) {
312
- chain.resolve.alias.set('@modern-js/runtime/rsc/server$', runtimeRscWorkerFile);
313
- chain.resolve.alias.set('@modern-js/runtime/rsc/server', runtimeRscWorkerFile);
314
- }
315
- if (renderRscWorkerFile) {
316
- chain.resolve.alias.set('@modern-js/render/rsc$', renderRscWorkerFile);
317
- chain.resolve.alias.set('@modern-js/render/rsc', renderRscWorkerFile);
318
- chain.resolve.alias.set('@modern-js/render/rsc-worker$', renderRscWorkerFile);
319
- }
487
+ for (const [dependencyType, condition] of WORKER_DEPENDENCY_CONDITIONS)chain.resolve.byDependency.set(dependencyType, {
488
+ conditionNames: [
489
+ condition,
490
+ '...'
491
+ ]
492
+ });
493
+ chain.plugin('cloudflare-worker-absent-optional-dependencies').use(AbsentOptionalDependencyPlugin);
494
+ chain.plugins.delete('plugin-module-federation');
320
495
  setAliasIfPresent(chain.resolve.alias, 'react$', reactFile);
321
496
  setAliasIfPresent(chain.resolve.alias, 'react/jsx-runtime$', reactJsxRuntimeFile);
322
497
  setAliasIfPresent(chain.resolve.alias, 'react/jsx-dev-runtime$', reactJsxDevRuntimeFile);
323
498
  setAliasIfPresent(chain.resolve.alias, 'react-dom$', reactDomFile);
324
499
  setAliasIfPresent(chain.resolve.alias, 'react-dom/server.edge$', reactDomServerEdgeFile);
325
500
  setAliasIfPresent(chain.resolve.alias, '@loadable/component$', loadableComponentFile);
326
- setAliasIfPresent(chain.resolve.alias, '@loadable/server$', loadableServerWorkerFile);
327
- setAliasIfPresent(chain.resolve.alias, 'fs/promises$', fsPromisesWorkerFile);
328
- setAliasIfPresent(chain.resolve.alias, 'node:fs/promises$', fsPromisesWorkerFile);
329
- setAliasIfPresent(chain.resolve.alias, 'path$', pathWorkerFile);
330
- setAliasIfPresent(chain.resolve.alias, 'node:path$', pathWorkerFile);
331
- chain.resolve.alias.set('react-server-dom-rspack/server.node$', 'react-server-dom-rspack/server.edge');
332
- chain.resolve.alias.set('react-server-dom-rspack/server.node', 'react-server-dom-rspack/server.edge');
333
- chain.resolve.alias.set('react-server-dom-rspack/client.node$', 'react-server-dom-rspack/client.edge');
334
- chain.resolve.alias.set('react-server-dom-rspack/client.node', 'react-server-dom-rspack/client.edge');
335
- chain.resolve.fallback.set('fs', false);
336
- chain.resolve.fallback.set('node:fs', false);
337
501
  };
338
502
  };
339
- function getCloudflareBuilderEnvironments({ appContext, environments, normalizedConfig, resolveDeployProvider = resolveStdEnvDeployProvider }) {
340
- if (!isCloudflareWorkerDeploy(normalizedConfig, resolveDeployProvider)) return environments;
341
- const workerEnvironment = environments[builder_namespaceObject.SERVICE_WORKER_ENVIRONMENT_NAME];
503
+ function getCloudflareBuilderEnvironments({ appContext, environments, normalizedConfig }) {
504
+ if (appContext.deployTarget?.target !== 'cloudflare') return environments;
505
+ const workerEnvironment = environments[builder_namespaceObject.SERVICE_WORKER_ENVIRONMENT_NAME] ?? (appContext.apiOnly ? {
506
+ output: {
507
+ target: 'web-worker'
508
+ },
509
+ source: {
510
+ entry: {}
511
+ }
512
+ } : void 0);
342
513
  if (!workerEnvironment) return environments;
343
514
  const workerEntries = getWorkerEntries(workerEnvironment, normalizedConfig, appContext);
344
515
  if (!workerEntries) return environments;
@@ -354,6 +525,9 @@ function getCloudflareBuilderEnvironments({ appContext, environments, normalized
354
525
  entry: workerEntries
355
526
  }
356
527
  }, createCloudflareBundlerChain(appContext, Object.keys(workerEntries)));
528
+ if (appContext.apiOnly) return {
529
+ [builder_namespaceObject.SERVICE_WORKER_ENVIRONMENT_NAME]: cloudflareWorkerEnvironment
530
+ };
357
531
  return {
358
532
  ...environments,
359
533
  [builder_namespaceObject.SERVICE_WORKER_ENVIRONMENT_NAME]: cloudflareWorkerEnvironment
@@ -364,28 +538,31 @@ function applyCloudflareBuilderEnvironments(options) {
364
538
  environments: getCloudflareBuilderEnvironments(options)
365
539
  };
366
540
  }
367
- const createCloudflareBuilderPlugin = (resolveDeployProvider = resolveStdEnvDeployProvider)=>({
541
+ const createCloudflareBuilderPlugin = ()=>({
368
542
  name: '@modern-js/cloudflare-builder',
369
543
  setup (api) {
370
544
  api.modifyBuilderEnvironments(({ environments })=>applyCloudflareBuilderEnvironments({
371
545
  appContext: api.getAppContext(),
372
546
  environments,
373
- normalizedConfig: api.getNormalizedConfig(),
374
- resolveDeployProvider
547
+ normalizedConfig: api.getNormalizedConfig()
375
548
  }));
376
549
  }
377
550
  });
378
551
  exports.applyCloudflareBuilderEnvironments = __webpack_exports__.applyCloudflareBuilderEnvironments;
379
- exports.applyCloudflareWorkerMfRuntimeBoundary = __webpack_exports__.applyCloudflareWorkerMfRuntimeBoundary;
380
552
  exports.applyCloudflareWorkerRspackConfig = __webpack_exports__.applyCloudflareWorkerRspackConfig;
553
+ exports.claimsByFunctionExternal = __webpack_exports__.claimsByFunctionExternal;
554
+ exports.createAbsentOptionalDependencyFilter = __webpack_exports__.createAbsentOptionalDependencyFilter;
381
555
  exports.createCloudflareBuilderPlugin = __webpack_exports__.createCloudflareBuilderPlugin;
556
+ exports.createRequestRedirectMatcher = __webpack_exports__.createRequestRedirectMatcher;
382
557
  exports.getCloudflareBuilderEnvironments = __webpack_exports__.getCloudflareBuilderEnvironments;
383
558
  exports.getCloudflareWorkerRspackConfig = __webpack_exports__.getCloudflareWorkerRspackConfig;
384
559
  for(var __rspack_i in __webpack_exports__)if (-1 === [
385
560
  "applyCloudflareBuilderEnvironments",
386
- "applyCloudflareWorkerMfRuntimeBoundary",
387
561
  "applyCloudflareWorkerRspackConfig",
562
+ "claimsByFunctionExternal",
563
+ "createAbsentOptionalDependencyFilter",
388
564
  "createCloudflareBuilderPlugin",
565
+ "createRequestRedirectMatcher",
389
566
  "getCloudflareBuilderEnvironments",
390
567
  "getCloudflareWorkerRspackConfig"
391
568
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];