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

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 (275) hide show
  1. package/README.md +23 -0
  2. package/dist/cjs/backend-federation-build/codegen.js +29 -18
  3. package/dist/cjs/backend-federation-build/config.js +84 -45
  4. package/dist/cjs/backend-federation-build/emit.js +63 -22
  5. package/dist/cjs/build-config/build-environment.js +25 -162
  6. package/dist/cjs/build-config/internal-effect-discovery.js +143 -0
  7. package/dist/cjs/build-config/public.js +2 -5
  8. package/dist/cjs/build-config/remote-address.js +58 -0
  9. package/dist/cjs/cloudflare/artifacts.js +8 -19
  10. package/dist/cjs/cloudflare/delivery-unit.js +125 -43
  11. package/dist/cjs/cloudflare/index.js +14 -4
  12. package/dist/cjs/cloudflare/native-renderer.js +100 -0
  13. package/dist/cjs/cloudflare/renderer-identity.js +106 -0
  14. package/dist/cjs/cloudflare/worker-manifest.js +54 -13
  15. package/dist/cjs/cloudflare/worker-options.js +48 -0
  16. package/dist/cjs/cloudflare/wrangler-config.js +210 -13
  17. package/dist/cjs/cloudflare-builder.js +307 -89
  18. package/dist/cjs/cloudflare-output-contract.js +36 -4
  19. package/dist/cjs/cloudflare-output-verifier/identity.js +112 -23
  20. package/dist/cjs/cloudflare-output-verifier/index.js +10 -0
  21. package/dist/cjs/cloudflare-output-verifier/manifest.js +46 -0
  22. package/dist/cjs/cloudflare-output-verifier/mutation-policy.js +7 -1
  23. package/dist/cjs/cloudflare-output-verifier/worker-bundles.js +10 -5
  24. package/dist/cjs/config.js +10 -5
  25. package/dist/cjs/deploy-output/npmAliases.js +92 -6
  26. package/dist/cjs/deploy-output/plugin.js +27 -6
  27. package/dist/cjs/deploy-output/public-assets.js +146 -0
  28. package/dist/cjs/deploy-output/target.js +57 -1
  29. package/dist/cjs/deploy-output/trace-files.js +99 -0
  30. package/dist/cjs/module-federation-config/exposes.js +70 -0
  31. package/dist/cjs/module-federation-config/index.js +73 -0
  32. package/dist/cjs/module-federation-config/inspect.js +103 -0
  33. package/dist/cjs/module-federation-config/object-literal.js +87 -0
  34. package/dist/cjs/module-federation-config/syntax.js +151 -0
  35. package/dist/cjs/module-federation-config/types.js +18 -0
  36. package/dist/cjs/native-type-checker.js +130 -13
  37. package/dist/cjs/policy-defaults.js +38 -29
  38. package/dist/cjs/release-envelope/canonical.js +2 -9
  39. package/dist/cjs/release-envelope/contract.js +68 -0
  40. package/dist/cjs/release-envelope/framework-output.js +296 -105
  41. package/dist/cjs/release-envelope/index.js +150 -36
  42. package/dist/cjs/release-envelope/plugin.js +24 -15
  43. package/dist/cjs/release-envelope/renderer-output-stamp.js +170 -0
  44. package/dist/cjs/release-envelope/types.js +10 -8
  45. package/dist/cjs/release-identity.js +8 -5
  46. package/dist/cjs/renderer-build-identity.js +134 -0
  47. package/dist/cjs/templates/cloudflare-entry.001-bootstrap-security.mjs +14 -6
  48. package/dist/cjs/templates/cloudflare-entry.002-assets-routes.mjs +10 -2
  49. package/dist/cjs/templates/cloudflare-entry.004-rendering-css.mjs +403 -96
  50. package/dist/cjs/templates/cloudflare-entry.005-worker-dispatch.mjs +530 -103
  51. package/dist/cjs/templates/cloudflare-entry.006-fetch-handler.mjs +26 -7
  52. package/dist/cjs/templates/cloudflare-worker-route-data.mjs +1069 -0
  53. package/dist/cjs/workspace-topology.js +84 -0
  54. package/dist/esm/backend-federation-build/codegen.mjs +29 -18
  55. package/dist/esm/backend-federation-build/config.mjs +74 -38
  56. package/dist/esm/backend-federation-build/emit.mjs +64 -23
  57. package/dist/esm/build-config/build-environment.mjs +26 -160
  58. package/dist/esm/build-config/internal-effect-discovery.mjs +102 -0
  59. package/dist/esm/build-config/public.mjs +1 -1
  60. package/dist/esm/build-config/remote-address.mjs +20 -0
  61. package/dist/esm/cloudflare/artifacts.mjs +8 -19
  62. package/dist/esm/cloudflare/delivery-unit.mjs +124 -45
  63. package/dist/esm/cloudflare/index.mjs +15 -5
  64. package/dist/esm/cloudflare/native-renderer.mjs +48 -0
  65. package/dist/esm/cloudflare/renderer-identity.mjs +57 -0
  66. package/dist/esm/cloudflare/worker-manifest.mjs +55 -14
  67. package/dist/esm/cloudflare/worker-options.mjs +10 -0
  68. package/dist/esm/cloudflare/wrangler-config.mjs +203 -12
  69. package/dist/esm/cloudflare-builder.mjs +301 -89
  70. package/dist/esm/cloudflare-output-contract.mjs +29 -3
  71. package/dist/esm/cloudflare-output-verifier/identity.mjs +113 -24
  72. package/dist/esm/cloudflare-output-verifier/index.mjs +10 -0
  73. package/dist/esm/cloudflare-output-verifier/manifest.mjs +46 -0
  74. package/dist/esm/cloudflare-output-verifier/mutation-policy.mjs +7 -1
  75. package/dist/esm/cloudflare-output-verifier/worker-bundles.mjs +11 -6
  76. package/dist/esm/config.mjs +3 -1
  77. package/dist/esm/deploy-output/npmAliases.mjs +92 -6
  78. package/dist/esm/deploy-output/plugin.mjs +24 -6
  79. package/dist/esm/deploy-output/public-assets.mjs +82 -0
  80. package/dist/esm/deploy-output/target.mjs +50 -3
  81. package/dist/esm/deploy-output/trace-files.mjs +47 -0
  82. package/dist/esm/module-federation-config/exposes.mjs +18 -0
  83. package/dist/esm/module-federation-config/index.mjs +4 -0
  84. package/dist/esm/module-federation-config/inspect.mjs +65 -0
  85. package/dist/esm/module-federation-config/object-literal.mjs +43 -0
  86. package/dist/esm/module-federation-config/syntax.mjs +101 -0
  87. package/dist/esm/module-federation-config/types.mjs +0 -0
  88. package/dist/esm/native-type-checker.mjs +124 -13
  89. package/dist/esm/policy-defaults.mjs +36 -30
  90. package/dist/esm/release-envelope/canonical.mjs +2 -9
  91. package/dist/esm/release-envelope/contract.mjs +21 -0
  92. package/dist/esm/release-envelope/framework-output.mjs +297 -106
  93. package/dist/esm/release-envelope/index.mjs +149 -38
  94. package/dist/esm/release-envelope/plugin.mjs +24 -15
  95. package/dist/esm/release-envelope/renderer-output-stamp.mjs +112 -0
  96. package/dist/esm/release-envelope/types.mjs +2 -3
  97. package/dist/esm/release-identity.mjs +8 -5
  98. package/dist/esm/renderer-build-identity.mjs +82 -0
  99. package/dist/esm/templates/cloudflare-entry.001-bootstrap-security.mjs +14 -6
  100. package/dist/esm/templates/cloudflare-entry.002-assets-routes.mjs +10 -2
  101. package/dist/esm/templates/cloudflare-entry.004-rendering-css.mjs +403 -96
  102. package/dist/esm/templates/cloudflare-entry.005-worker-dispatch.mjs +530 -103
  103. package/dist/esm/templates/cloudflare-entry.006-fetch-handler.mjs +26 -7
  104. package/dist/esm/templates/cloudflare-worker-route-data.mjs +1069 -0
  105. package/dist/esm/workspace-topology.mjs +21 -0
  106. package/dist/esm-node/backend-federation-build/codegen.mjs +29 -18
  107. package/dist/esm-node/backend-federation-build/config.mjs +74 -38
  108. package/dist/esm-node/backend-federation-build/emit.mjs +64 -23
  109. package/dist/esm-node/build-config/build-environment.mjs +26 -160
  110. package/dist/esm-node/build-config/internal-effect-discovery.mjs +103 -0
  111. package/dist/esm-node/build-config/public.mjs +1 -1
  112. package/dist/esm-node/build-config/remote-address.mjs +21 -0
  113. package/dist/esm-node/cloudflare/artifacts.mjs +8 -19
  114. package/dist/esm-node/cloudflare/delivery-unit.mjs +124 -45
  115. package/dist/esm-node/cloudflare/index.mjs +15 -5
  116. package/dist/esm-node/cloudflare/native-renderer.mjs +49 -0
  117. package/dist/esm-node/cloudflare/renderer-identity.mjs +58 -0
  118. package/dist/esm-node/cloudflare/worker-manifest.mjs +55 -14
  119. package/dist/esm-node/cloudflare/worker-options.mjs +11 -0
  120. package/dist/esm-node/cloudflare/wrangler-config.mjs +203 -12
  121. package/dist/esm-node/cloudflare-builder.mjs +301 -89
  122. package/dist/esm-node/cloudflare-output-contract.mjs +29 -3
  123. package/dist/esm-node/cloudflare-output-verifier/identity.mjs +113 -24
  124. package/dist/esm-node/cloudflare-output-verifier/index.mjs +10 -0
  125. package/dist/esm-node/cloudflare-output-verifier/manifest.mjs +46 -0
  126. package/dist/esm-node/cloudflare-output-verifier/mutation-policy.mjs +7 -1
  127. package/dist/esm-node/cloudflare-output-verifier/worker-bundles.mjs +11 -6
  128. package/dist/esm-node/config.mjs +3 -1
  129. package/dist/esm-node/deploy-output/npmAliases.mjs +92 -6
  130. package/dist/esm-node/deploy-output/plugin.mjs +24 -6
  131. package/dist/esm-node/deploy-output/public-assets.mjs +83 -0
  132. package/dist/esm-node/deploy-output/target.mjs +50 -3
  133. package/dist/esm-node/deploy-output/trace-files.mjs +48 -0
  134. package/dist/esm-node/module-federation-config/exposes.mjs +19 -0
  135. package/dist/esm-node/module-federation-config/index.mjs +5 -0
  136. package/dist/esm-node/module-federation-config/inspect.mjs +66 -0
  137. package/dist/esm-node/module-federation-config/object-literal.mjs +44 -0
  138. package/dist/esm-node/module-federation-config/syntax.mjs +102 -0
  139. package/dist/esm-node/module-federation-config/types.mjs +1 -0
  140. package/dist/esm-node/native-type-checker.mjs +124 -13
  141. package/dist/esm-node/policy-defaults.mjs +36 -30
  142. package/dist/esm-node/release-envelope/canonical.mjs +2 -9
  143. package/dist/esm-node/release-envelope/contract.mjs +22 -0
  144. package/dist/esm-node/release-envelope/framework-output.mjs +297 -106
  145. package/dist/esm-node/release-envelope/index.mjs +149 -38
  146. package/dist/esm-node/release-envelope/plugin.mjs +24 -15
  147. package/dist/esm-node/release-envelope/renderer-output-stamp.mjs +113 -0
  148. package/dist/esm-node/release-envelope/types.mjs +2 -3
  149. package/dist/esm-node/release-identity.mjs +8 -5
  150. package/dist/esm-node/renderer-build-identity.mjs +83 -0
  151. package/dist/esm-node/templates/cloudflare-entry.001-bootstrap-security.mjs +14 -6
  152. package/dist/esm-node/templates/cloudflare-entry.002-assets-routes.mjs +10 -2
  153. package/dist/esm-node/templates/cloudflare-entry.004-rendering-css.mjs +403 -96
  154. package/dist/esm-node/templates/cloudflare-entry.005-worker-dispatch.mjs +530 -103
  155. package/dist/esm-node/templates/cloudflare-entry.006-fetch-handler.mjs +26 -7
  156. package/dist/esm-node/templates/cloudflare-worker-route-data.mjs +1069 -0
  157. package/dist/esm-node/workspace-topology.mjs +22 -0
  158. package/dist/types/backend-federation-build/codegen.d.ts +30 -0
  159. package/dist/types/backend-federation-build/config.d.ts +10 -57
  160. package/dist/types/backend-federation-build/emit.d.ts +12 -2
  161. package/dist/types/backend-federation-build/index.d.ts +1 -1
  162. package/dist/types/build-config/build-environment.d.ts +1 -9
  163. package/dist/types/build-config/internal-effect-discovery.d.ts +4 -0
  164. package/dist/types/build-config/public.d.ts +1 -1
  165. package/dist/types/build-config/remote-address.d.ts +3 -0
  166. package/dist/types/cloudflare/artifacts.d.ts +7 -6
  167. package/dist/types/cloudflare/constants.d.ts +1 -1
  168. package/dist/types/cloudflare/delivery-unit.d.ts +38 -7
  169. package/dist/types/cloudflare/native-renderer.d.ts +30 -0
  170. package/dist/types/cloudflare/renderer-identity.d.ts +25 -0
  171. package/dist/types/cloudflare/worker-manifest.d.ts +17 -2
  172. package/dist/types/cloudflare/worker-options.d.ts +20 -0
  173. package/dist/types/cloudflare/wrangler-config.d.ts +55 -2
  174. package/dist/types/cloudflare-builder.d.ts +51 -8
  175. package/dist/types/cloudflare-output-contract.d.ts +5 -3
  176. package/dist/types/cloudflare-output-verifier/identity.d.ts +7 -3
  177. package/dist/types/cloudflare-output-verifier/worker-bundles.d.ts +2 -2
  178. package/dist/types/config.d.ts +98 -13
  179. package/dist/types/deploy-output/plugin.d.ts +29 -9
  180. package/dist/types/deploy-output/public-assets.d.ts +51 -0
  181. package/dist/types/deploy-output/target.d.ts +28 -5
  182. package/dist/types/deploy-output/trace-files.d.ts +17 -0
  183. package/dist/types/module-federation-config/exposes.d.ts +11 -0
  184. package/dist/types/module-federation-config/index.d.ts +5 -0
  185. package/dist/types/module-federation-config/inspect.d.ts +2 -0
  186. package/dist/types/module-federation-config/object-literal.d.ts +4 -0
  187. package/dist/types/module-federation-config/syntax.d.ts +7 -0
  188. package/dist/types/module-federation-config/types.d.ts +20 -0
  189. package/dist/types/native-type-checker.d.ts +26 -3
  190. package/dist/types/policy-defaults.d.ts +12 -2
  191. package/dist/types/release-envelope/canonical.d.ts +5 -5
  192. package/dist/types/release-envelope/contract.d.mts +8 -0
  193. package/dist/types/release-envelope/framework-output.d.ts +23 -13
  194. package/dist/types/release-envelope/index.d.ts +17 -5
  195. package/dist/types/release-envelope/plugin.d.ts +10 -6
  196. package/dist/types/release-envelope/renderer-output-stamp.d.ts +34 -0
  197. package/dist/types/release-envelope/types.d.ts +42 -4
  198. package/dist/types/release-identity.d.ts +3 -2
  199. package/dist/types/renderer-build-identity.d.ts +30 -0
  200. package/dist/types/templates/cloudflare-worker-route-data.d.mts +14 -0
  201. package/dist/types/workspace-topology.d.ts +91 -0
  202. package/package.json +87 -27
  203. package/src/backend-federation-build/codegen.ts +28 -19
  204. package/src/backend-federation-build/config.ts +189 -123
  205. package/src/backend-federation-build/emit.ts +119 -38
  206. package/src/backend-federation-build/index.ts +4 -1
  207. package/src/build-config/build-environment.ts +59 -285
  208. package/src/build-config/internal-effect-discovery.ts +239 -0
  209. package/src/build-config/public.ts +0 -1
  210. package/src/build-config/remote-address.ts +33 -0
  211. package/src/cloudflare/artifacts.ts +22 -43
  212. package/src/cloudflare/delivery-unit.ts +283 -60
  213. package/src/cloudflare/index.ts +35 -19
  214. package/src/cloudflare/native-renderer.ts +117 -0
  215. package/src/cloudflare/renderer-identity.ts +171 -0
  216. package/src/cloudflare/worker-manifest.ts +108 -10
  217. package/src/cloudflare/worker-options.ts +60 -0
  218. package/src/cloudflare/wrangler-config.ts +390 -14
  219. package/src/cloudflare-builder.ts +543 -170
  220. package/src/cloudflare-output-contract.ts +45 -2
  221. package/src/cloudflare-output-verifier/identity.ts +138 -7
  222. package/src/cloudflare-output-verifier/index.ts +20 -0
  223. package/src/cloudflare-output-verifier/manifest.ts +77 -0
  224. package/src/cloudflare-output-verifier/mutation-policy.ts +11 -1
  225. package/src/cloudflare-output-verifier/worker-bundles.ts +27 -11
  226. package/src/config.ts +101 -19
  227. package/src/deploy-output/npmAliases.ts +141 -4
  228. package/src/deploy-output/plugin.ts +55 -18
  229. package/src/deploy-output/public-assets.ts +224 -0
  230. package/src/deploy-output/target.ts +97 -14
  231. package/src/deploy-output/trace-files.ts +80 -0
  232. package/src/module-federation-config/exposes.ts +46 -0
  233. package/src/module-federation-config/index.ts +22 -0
  234. package/src/module-federation-config/inspect.ts +157 -0
  235. package/src/module-federation-config/object-literal.ts +76 -0
  236. package/src/module-federation-config/syntax.ts +212 -0
  237. package/src/module-federation-config/types.ts +22 -0
  238. package/src/native-type-checker.ts +233 -20
  239. package/src/policy-defaults.ts +47 -17
  240. package/src/release-envelope/canonical.ts +6 -18
  241. package/src/release-envelope/contract.mjs +28 -0
  242. package/src/release-envelope/framework-output.ts +681 -156
  243. package/src/release-envelope/index.ts +315 -60
  244. package/src/release-envelope/plugin.ts +54 -38
  245. package/src/release-envelope/renderer-output-stamp.ts +210 -0
  246. package/src/release-envelope/types.ts +75 -6
  247. package/src/release-identity.ts +19 -2
  248. package/src/renderer-build-identity.ts +168 -0
  249. package/src/templates/cloudflare-entry.001-bootstrap-security.mjs +14 -6
  250. package/src/templates/cloudflare-entry.002-assets-routes.mjs +10 -2
  251. package/src/templates/cloudflare-entry.004-rendering-css.mjs +403 -96
  252. package/src/templates/cloudflare-entry.005-worker-dispatch.mjs +530 -103
  253. package/src/templates/cloudflare-entry.006-fetch-handler.mjs +26 -7
  254. package/src/templates/cloudflare-worker-route-data.mjs +1069 -0
  255. package/src/workspace-topology.ts +125 -0
  256. package/dist/cjs/templates/cloudflare-worker-fs-promises.mjs +0 -11
  257. package/dist/cjs/templates/cloudflare-worker-loadable-server.mjs +0 -281
  258. package/dist/cjs/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +0 -14
  259. package/dist/cjs/templates/cloudflare-worker-path.mjs +0 -98
  260. package/dist/esm/templates/cloudflare-worker-fs-promises.mjs +0 -11
  261. package/dist/esm/templates/cloudflare-worker-loadable-server.mjs +0 -281
  262. package/dist/esm/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +0 -14
  263. package/dist/esm/templates/cloudflare-worker-path.mjs +0 -98
  264. package/dist/esm-node/templates/cloudflare-worker-fs-promises.mjs +0 -11
  265. package/dist/esm-node/templates/cloudflare-worker-loadable-server.mjs +0 -281
  266. package/dist/esm-node/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +0 -14
  267. package/dist/esm-node/templates/cloudflare-worker-path.mjs +0 -98
  268. package/dist/types/templates/cloudflare-worker-fs-promises.d.mts +0 -5
  269. package/dist/types/templates/cloudflare-worker-loadable-server.d.mts +0 -48
  270. package/dist/types/templates/cloudflare-worker-mf-ssr-runtime-plugin.d.mts +0 -13
  271. package/dist/types/templates/cloudflare-worker-path.d.mts +0 -21
  272. package/src/templates/cloudflare-worker-fs-promises.mjs +0 -11
  273. package/src/templates/cloudflare-worker-loadable-server.mjs +0 -281
  274. package/src/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +0 -14
  275. package/src/templates/cloudflare-worker-path.mjs +0 -98
@@ -1,16 +1,52 @@
1
1
  import node_fs from "node:fs";
2
- import { createRequire } from "node:module";
2
+ import { createRequire, isBuiltin } from "node:module";
3
3
  import node_path from "node:path";
4
4
  import { SERVICE_WORKER_ENVIRONMENT_NAME } from "@modern-js/builder";
5
5
  import { isProd } from "@modern-js/utils";
6
- import { provider } from "std-env";
7
- import { CLOUDFLARE_WORKER_NODE_BUILTINS } from "./cloudflare-output-contract.mjs";
6
+ import { CLOUDFLARE_ROUTE_DATA_HANDLER_EXPORT, CLOUDFLARE_WORKER_NODE_BUILTINS, CLOUDFLARE_WORKER_PLATFORM_MODULES, getCloudflareWorkerRouteDataEntryName } from "./cloudflare-output-contract.mjs";
8
7
  import { getTemplatePath } from "./read-template.mjs";
9
8
  const moduleRequire = createRequire(import.meta.url);
10
9
  const BFF_EFFECT_WORKER_ENTRY_NAME = '__modern_bff_effect';
11
10
  const BFF_EFFECT_WORKER_RUNTIME_QUERY = 'modern-bff-runtime';
12
- const MF_SSR_DATA_FETCH_RUNTIME_PLUGIN = '@module-federation/modern-js-v3/ssr-inject-data-fetch-function-plugin';
13
- const MF_SSR_DEV_RUNTIME_PLUGIN = '@module-federation/modern-js-v3/ssr-dev-plugin';
11
+ const SERVER_LOADER_COMBINED_FILE = 'server-loader-combined.js';
12
+ const ROUTE_SERVER_LOADERS_FILE = 'route-server-loaders.js';
13
+ const WORKER_ROUTE_DATA_FILE = 'cloudflare-worker-route-data.js';
14
+ const WORKER_ROUTE_DATA_TEMPLATE = 'cloudflare-worker-route-data.mjs';
15
+ const DATA_LOADER_CLIENT_TRANSFORM = /plugin-data-loader[\\/](?:.+[\\/])?loader\.[cm]?js$/u;
16
+ const WORKER_DEPENDENCY_CONDITIONS = [
17
+ [
18
+ 'esm',
19
+ 'import'
20
+ ],
21
+ [
22
+ 'wasm',
23
+ 'import'
24
+ ],
25
+ [
26
+ 'loaderImport',
27
+ 'import'
28
+ ],
29
+ [
30
+ 'worker',
31
+ 'import'
32
+ ],
33
+ [
34
+ 'commonjs',
35
+ 'require'
36
+ ],
37
+ [
38
+ 'amd',
39
+ 'require'
40
+ ],
41
+ [
42
+ 'loader',
43
+ 'require'
44
+ ],
45
+ [
46
+ 'unknown',
47
+ 'require'
48
+ ]
49
+ ];
14
50
  const JS_OR_TS_EXTENSIONS = new Set([
15
51
  '.js',
16
52
  '.jsx',
@@ -70,19 +106,155 @@ const resolvePackageFile = (packageName, filePath, paths)=>{
70
106
  const setAliasIfPresent = (alias, name, value)=>{
71
107
  if (value) alias.set(name, value);
72
108
  };
73
- const getCloudflareWorkerNodeExternals = ()=>Object.fromEntries(CLOUDFLARE_WORKER_NODE_BUILTINS.flatMap((builtin)=>{
74
- const nodeBuiltin = `node:${builtin}`;
109
+ const getCloudflareWorkerNodeExternals = ()=>Object.fromEntries([
110
+ ...CLOUDFLARE_WORKER_NODE_BUILTINS.flatMap((builtin)=>{
111
+ const nodeBuiltin = `node:${builtin}`;
112
+ const external = `module-import ${nodeBuiltin}`;
113
+ return isBuiltin(builtin) ? [
114
+ [
115
+ builtin,
116
+ external
117
+ ],
118
+ [
119
+ nodeBuiltin,
120
+ external
121
+ ]
122
+ ] : [
123
+ [
124
+ nodeBuiltin,
125
+ external
126
+ ]
127
+ ];
128
+ }),
129
+ ...CLOUDFLARE_WORKER_PLATFORM_MODULES.map((platformModule)=>[
130
+ platformModule,
131
+ `module-import ${platformModule}`
132
+ ])
133
+ ]);
134
+ const getPackageNameFromRequest = (request)=>{
135
+ if (request.startsWith('.') || request.startsWith('/') || request.includes(':') || node_path.isAbsolute(request)) return;
136
+ const segments = request.split('/');
137
+ return request.startsWith('@') ? segments.length > 1 ? `${segments[0]}/${segments[1]}` : void 0 : segments[0];
138
+ };
139
+ const isRedirectedByAliasField = (manifest, aliasFields, request)=>aliasFields.some((field)=>{
140
+ let value = manifest;
141
+ for (const key of 'string' == typeof field ? [
142
+ field
143
+ ] : field)value = value && 'object' == typeof value ? value[key] : void 0;
144
+ return 'object' == typeof value && null !== value && Object.hasOwn(value, request);
145
+ });
146
+ const findOwningPackageManifest = (directory, cache)=>{
147
+ if (cache.has(directory)) return cache.get(directory);
148
+ let manifest;
149
+ const packageJsonPath = node_path.join(directory, 'package.json');
150
+ if (node_fs.existsSync(packageJsonPath)) try {
151
+ manifest = JSON.parse(node_fs.readFileSync(packageJsonPath, 'utf-8'));
152
+ } catch {
153
+ manifest = void 0;
154
+ }
155
+ else if (node_path.dirname(directory) !== directory) manifest = findOwningPackageManifest(node_path.dirname(directory), cache);
156
+ cache.set(directory, manifest);
157
+ return manifest;
158
+ };
159
+ const isPackageInstalled = (packageName, directory, moduleDirectories)=>moduleDirectories.some((moduleDirectory)=>{
160
+ if (node_path.isAbsolute(moduleDirectory)) return node_fs.existsSync(node_path.join(moduleDirectory, packageName));
161
+ let current = directory;
162
+ while(true){
163
+ if (node_fs.existsSync(node_path.join(current, moduleDirectory, packageName))) return true;
164
+ const parent = node_path.dirname(current);
165
+ if (parent === current) return false;
166
+ current = parent;
167
+ }
168
+ });
169
+ const createAbsentOptionalDependencyFilter = (isRedirected = ()=>false, moduleDirectories = [
170
+ 'node_modules'
171
+ ], aliasFields = [])=>{
172
+ const manifests = new Map();
173
+ return (request, context)=>{
174
+ const packageName = getPackageNameFromRequest(request);
175
+ if (!packageName || !context || isRedirected(request)) return false;
176
+ const manifest = findOwningPackageManifest(context, manifests);
177
+ if (!manifest) return false;
178
+ const optional = manifest.peerDependenciesMeta?.[packageName]?.optional === true || Object.hasOwn(manifest.optionalDependencies ?? {}, packageName);
179
+ return optional && !isRedirectedByAliasField(manifest, aliasFields, request) && !isPackageInstalled(packageName, context, moduleDirectories);
180
+ };
181
+ };
182
+ const getAliasNames = (alias)=>alias ? Array.isArray(alias) ? alias.map((entry)=>entry.onlyModule ? `${entry.name}$` : entry.name) : Object.keys(alias) : [];
183
+ const getExternalMatchers = (externals)=>{
184
+ if (Array.isArray(externals)) return externals.flatMap(getExternalMatchers);
185
+ if ('string' == typeof externals) return [
186
+ (request)=>request === externals
187
+ ];
188
+ if (externals instanceof RegExp) return [
189
+ (request)=>{
190
+ externals.lastIndex = 0;
191
+ return externals.test(request);
192
+ }
193
+ ];
194
+ if (externals && 'object' == typeof externals) {
195
+ const names = new Set(Object.entries(externals).filter(([, value])=>false !== value).map(([name])=>name));
75
196
  return [
76
- [
77
- builtin,
78
- `module-import ${nodeBuiltin}`
79
- ],
80
- [
81
- nodeBuiltin,
82
- `module-import ${nodeBuiltin}`
83
- ]
197
+ (request)=>names.has(request)
84
198
  ];
85
- }));
199
+ }
200
+ return [];
201
+ };
202
+ const createRequestRedirectMatcher = (options)=>{
203
+ const aliasNames = [
204
+ ...getAliasNames(options.resolve?.alias),
205
+ ...getAliasNames(options.resolve?.fallback)
206
+ ];
207
+ const externalMatchers = getExternalMatchers(options.externals);
208
+ return (request)=>externalMatchers.some((matches)=>matches(request)) || aliasNames.some((name)=>name.endsWith('$') ? request === name.slice(0, -1) : request === name || request.startsWith(`${name}/`));
209
+ };
210
+ const getFunctionExternals = (externals)=>Array.isArray(externals) ? externals.flatMap(getFunctionExternals) : 'function' == typeof externals ? [
211
+ externals
212
+ ] : [];
213
+ const callFunctionExternal = (external, data)=>new Promise((resolve, reject)=>{
214
+ const returned = external(data, (error, result)=>error ? reject(error) : resolve(result));
215
+ if (null !== returned && 'object' == typeof returned && 'function' == typeof returned.then) returned.then(resolve, reject);
216
+ else if (1 === external.length) resolve(returned);
217
+ });
218
+ const claimsByFunctionExternal = async (externals, data)=>{
219
+ for (const external of externals)try {
220
+ const result = await callFunctionExternal(external, data);
221
+ if (null != result && false !== result) return true;
222
+ } catch {
223
+ return true;
224
+ }
225
+ return false;
226
+ };
227
+ const PLUGIN_NAME = 'AbsentOptionalDependencyPlugin';
228
+ class AbsentOptionalDependencyPlugin {
229
+ apply(compiler) {
230
+ const isAbsent = createAbsentOptionalDependencyFilter(createRequestRedirectMatcher(compiler.options), compiler.options.resolve.modules, compiler.options.resolve.aliasFields);
231
+ const functionExternals = getFunctionExternals(compiler.options.externals);
232
+ compiler.hooks.normalModuleFactory.tap(PLUGIN_NAME, (factory)=>{
233
+ factory.hooks.beforeResolve.tapPromise(PLUGIN_NAME, async (data)=>{
234
+ if (!isAbsent(data.request, data.context)) return;
235
+ const claimed = await claimsByFunctionExternal(functionExternals, {
236
+ context: data.context,
237
+ contextInfo: {
238
+ issuer: data.contextInfo.issuer,
239
+ issuerLayer: data.contextInfo.issuerLayer ?? null
240
+ },
241
+ getResolve: (options)=>{
242
+ const resolver = factory.getResolver('normal', options ?? {});
243
+ function resolveRequest(context, request, callback) {
244
+ if (callback) return void resolver.resolve({}, context, request, {}, callback);
245
+ return new Promise((resolve, reject)=>{
246
+ resolver.resolve({}, context, request, {}, (error, result)=>error ? reject(error) : resolve(result || void 0));
247
+ });
248
+ }
249
+ return resolveRequest;
250
+ },
251
+ request: data.request
252
+ });
253
+ return claimed ? void 0 : false;
254
+ });
255
+ });
256
+ }
257
+ }
86
258
  const normalizeWorkerOutputName = (name)=>node_path.posix.normalize(name.replace(/\\/gu, '/')).toLowerCase();
87
259
  const reserveWorkerChunkName = (baseName, reservedOutputNames)=>{
88
260
  let name = baseName;
@@ -132,11 +304,8 @@ function applyCloudflareWorkerRspackConfig(chain, workerEntryNames) {
132
304
  chain.optimization.runtimeChunk(config.optimization.runtimeChunk);
133
305
  chain.optimization.splitChunks(config.optimization.splitChunks);
134
306
  }
135
- function applyCloudflareWorkerMfRuntimeBoundary(chain) {
136
- const runtimePlugin = getTemplatePath('cloudflare-worker-mf-ssr-runtime-plugin.mjs');
137
- chain.plugins.delete('plugin-module-federation');
138
- chain.resolve.alias.set(`${MF_SSR_DATA_FETCH_RUNTIME_PLUGIN}$`, runtimePlugin);
139
- chain.resolve.alias.set(`${MF_SSR_DEV_RUNTIME_PLUGIN}$`, runtimePlugin);
307
+ function removeCloudflareWorkerDataLoaderClientTransform(chain) {
308
+ 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);
140
309
  }
141
310
  const getEffectBffEntry = (normalizedConfig, appContext)=>{
142
311
  if (!normalizedConfig.bff || 'hono' === normalizedConfig.bff.runtimeFramework) return;
@@ -147,18 +316,6 @@ const getEffectBffEntry = (normalizedConfig, appContext)=>{
147
316
  }
148
317
  return resolveJsOrTsEntry(node_path.resolve(appContext.apiDirectory, 'index'));
149
318
  };
150
- const CLOUDFLARE_DEPLOY_PROVIDERS = new Set([
151
- 'cloudflare',
152
- 'cloudflare_pages',
153
- 'cloudflare_workers'
154
- ]);
155
- const resolveStdEnvDeployProvider = ()=>provider;
156
- const isCloudflareWorkerDeploy = (normalizedConfig, resolveDeployProvider)=>{
157
- const explicitTarget = normalizedConfig.deploy?.target || process.env.MODERNJS_DEPLOY;
158
- if (explicitTarget) return 'cloudflare' === explicitTarget;
159
- const detectedProvider = resolveDeployProvider();
160
- return detectedProvider ? CLOUDFLARE_DEPLOY_PROVIDERS.has(detectedProvider) : false;
161
- };
162
319
  const rewriteWorkerEntryPath = (entry)=>entry.replace('index.jsx', 'index.server.jsx').replace('bootstrap.server.jsx', 'index.server.jsx').replace('bootstrap.jsx', 'index.server.jsx');
163
320
  const rewriteWorkerEntryDescription = (description)=>{
164
321
  const entryImport = description.import;
@@ -186,28 +343,60 @@ const rewriteWorkerEntries = (entries)=>Object.fromEntries(Object.entries(entrie
186
343
  rewriteWorkerEntryDescription(value)
187
344
  ];
188
345
  }));
189
- const prependBundlerChain = (environment, handler)=>{
346
+ const prependBundlerChain = (environment, handler, finalHandler)=>{
190
347
  const bundlerChain = environment.tools?.bundlerChain;
348
+ const handlers = [
349
+ handler,
350
+ ...bundlerChain ? Array.isArray(bundlerChain) ? bundlerChain : [
351
+ bundlerChain
352
+ ] : [],
353
+ ...finalHandler ? [
354
+ finalHandler
355
+ ] : []
356
+ ];
191
357
  return {
192
358
  ...environment,
193
359
  tools: {
194
360
  ...environment.tools,
195
361
  htmlPlugin: false,
196
- bundlerChain: bundlerChain ? Array.isArray(bundlerChain) ? [
197
- handler,
198
- ...bundlerChain
199
- ] : [
200
- handler,
201
- bundlerChain
202
- ] : handler
362
+ bundlerChain: handlers
203
363
  }
204
364
  };
205
365
  };
366
+ const createWorkerRouteDataModule = ()=>[
367
+ `import { routes } from './${ROUTE_SERVER_LOADERS_FILE}';`,
368
+ `import { createRouteDataRequestHandler } from ${JSON.stringify(getTemplatePath(WORKER_ROUTE_DATA_TEMPLATE))};`,
369
+ '',
370
+ `export const ${CLOUDFLARE_ROUTE_DATA_HANDLER_EXPORT} =`,
371
+ ' createRouteDataRequestHandler(routes);',
372
+ ''
373
+ ].join('\n');
374
+ const getWorkerRouteDataEntries = (appContext)=>{
375
+ const { entrypoints, internalDirectory } = appContext;
376
+ if (!entrypoints || !internalDirectory) return {};
377
+ return Object.fromEntries(entrypoints.flatMap(({ entryName })=>{
378
+ const entryDirectory = node_path.join(internalDirectory, entryName);
379
+ if (!node_fs.existsSync(node_path.join(entryDirectory, SERVER_LOADER_COMBINED_FILE)) || !node_fs.existsSync(node_path.join(entryDirectory, ROUTE_SERVER_LOADERS_FILE))) return [];
380
+ const routeDataFile = node_path.join(entryDirectory, WORKER_ROUTE_DATA_FILE);
381
+ node_fs.writeFileSync(routeDataFile, createWorkerRouteDataModule());
382
+ return [
383
+ [
384
+ getCloudflareWorkerRouteDataEntryName(entryName),
385
+ [
386
+ routeDataFile
387
+ ]
388
+ ]
389
+ ];
390
+ }));
391
+ };
206
392
  const getWorkerEntries = (environment, normalizedConfig, appContext)=>{
207
393
  const configuredEntries = environment.source?.entry;
208
- if (!configuredEntries) return;
209
- const entries = rewriteWorkerEntries(configuredEntries);
210
394
  const effectApiEntry = getEffectBffEntry(normalizedConfig, appContext);
395
+ if (!configuredEntries && !effectApiEntry) return;
396
+ const entries = configuredEntries ? {
397
+ ...rewriteWorkerEntries(configuredEntries),
398
+ ...getWorkerRouteDataEntries(appContext)
399
+ } : {};
211
400
  return effectApiEntry ? {
212
401
  ...entries,
213
402
  [BFF_EFFECT_WORKER_ENTRY_NAME]: [
@@ -215,14 +404,11 @@ const getWorkerEntries = (environment, normalizedConfig, appContext)=>{
215
404
  ]
216
405
  } : entries;
217
406
  };
218
- const createCloudflareBundlerChain = (appContext, workerEntryNames)=>{
407
+ const createCloudflareBundlerChain = (appContext, workerEntryNames, rscEnabled)=>{
219
408
  const resolvePaths = [
220
409
  appContext.appDirectory,
221
410
  process.cwd()
222
411
  ];
223
- const tanstackRouterSsrServerFile = resolvePackageFile('@tanstack/router-core', 'dist/esm/ssr/ssr-server.js', resolvePaths);
224
- const runtimeRscWorkerFile = resolvePackageFile('@modern-js/runtime', 'dist/esm/rsc/server.worker.mjs', resolvePaths);
225
- const renderRscWorkerFile = resolvePackageFile('@modern-js/render', 'dist/esm/rscWorker.mjs', resolvePaths);
226
412
  const reactFile = resolvePackageFile('react', 'index.js', resolvePaths);
227
413
  const reactJsxRuntimeFile = resolvePackageFile('react', 'jsx-runtime.js', resolvePaths);
228
414
  const reactJsxDevRuntimeFile = resolvePackageFile('react', 'jsx-dev-runtime.js', resolvePaths);
@@ -232,62 +418,52 @@ const createCloudflareBundlerChain = (appContext, workerEntryNames)=>{
232
418
  ...resolvePaths,
233
419
  getTemplatePath('')
234
420
  ]);
235
- const loadableServerWorkerFile = getTemplatePath('cloudflare-worker-loadable-server.mjs');
236
- const fsPromisesWorkerFile = getTemplatePath('cloudflare-worker-fs-promises.mjs');
237
- const pathWorkerFile = getTemplatePath('cloudflare-worker-path.mjs');
238
421
  const entryNames = [
239
422
  ...workerEntryNames
240
423
  ];
241
424
  return (chain)=>{
242
425
  applyCloudflareWorkerRspackConfig(chain, entryNames);
426
+ removeCloudflareWorkerDataLoaderClientTransform(chain);
427
+ if (rscEnabled) chain.optimization.runtimeChunk(false);
243
428
  chain.output.module(true).library({
244
429
  type: 'module'
245
430
  }).publicPath('/').chunkFormat('module').chunkLoading('import').workerChunkLoading('import');
431
+ chain.node.set('__dirname', 'mock').set('__filename', 'mock');
246
432
  for (const condition of [
247
433
  'workerd',
248
434
  'worker',
249
435
  'webpack',
250
436
  isProd() ? 'production' : 'development',
251
- 'import',
252
- 'require',
253
437
  'module'
254
438
  ])chain.resolve.conditionNames.add(condition);
255
- applyCloudflareWorkerMfRuntimeBoundary(chain);
256
- if (tanstackRouterSsrServerFile) {
257
- chain.resolve.alias.set('@tanstack/router-core/ssr/server$', tanstackRouterSsrServerFile);
258
- chain.resolve.alias.set('@tanstack/router-core/ssr/server', tanstackRouterSsrServerFile);
259
- }
260
- if (runtimeRscWorkerFile) {
261
- chain.resolve.alias.set('@modern-js/runtime/rsc/server$', runtimeRscWorkerFile);
262
- chain.resolve.alias.set('@modern-js/runtime/rsc/server', runtimeRscWorkerFile);
263
- }
264
- if (renderRscWorkerFile) {
265
- chain.resolve.alias.set('@modern-js/render/rsc$', renderRscWorkerFile);
266
- chain.resolve.alias.set('@modern-js/render/rsc', renderRscWorkerFile);
267
- chain.resolve.alias.set('@modern-js/render/rsc-worker$', renderRscWorkerFile);
439
+ for (const [dependencyType, condition] of WORKER_DEPENDENCY_CONDITIONS)chain.resolve.byDependency.set(dependencyType, {
440
+ conditionNames: [
441
+ condition,
442
+ '...'
443
+ ]
444
+ });
445
+ chain.plugin('cloudflare-worker-absent-optional-dependencies').use(AbsentOptionalDependencyPlugin);
446
+ chain.plugins.delete('plugin-module-federation');
447
+ if (!rscEnabled) {
448
+ setAliasIfPresent(chain.resolve.alias, 'react$', reactFile);
449
+ setAliasIfPresent(chain.resolve.alias, 'react/jsx-runtime$', reactJsxRuntimeFile);
450
+ setAliasIfPresent(chain.resolve.alias, 'react/jsx-dev-runtime$', reactJsxDevRuntimeFile);
451
+ setAliasIfPresent(chain.resolve.alias, 'react-dom$', reactDomFile);
452
+ setAliasIfPresent(chain.resolve.alias, 'react-dom/server.edge$', reactDomServerEdgeFile);
268
453
  }
269
- setAliasIfPresent(chain.resolve.alias, 'react$', reactFile);
270
- setAliasIfPresent(chain.resolve.alias, 'react/jsx-runtime$', reactJsxRuntimeFile);
271
- setAliasIfPresent(chain.resolve.alias, 'react/jsx-dev-runtime$', reactJsxDevRuntimeFile);
272
- setAliasIfPresent(chain.resolve.alias, 'react-dom$', reactDomFile);
273
- setAliasIfPresent(chain.resolve.alias, 'react-dom/server.edge$', reactDomServerEdgeFile);
274
454
  setAliasIfPresent(chain.resolve.alias, '@loadable/component$', loadableComponentFile);
275
- setAliasIfPresent(chain.resolve.alias, '@loadable/server$', loadableServerWorkerFile);
276
- setAliasIfPresent(chain.resolve.alias, 'fs/promises$', fsPromisesWorkerFile);
277
- setAliasIfPresent(chain.resolve.alias, 'node:fs/promises$', fsPromisesWorkerFile);
278
- setAliasIfPresent(chain.resolve.alias, 'path$', pathWorkerFile);
279
- setAliasIfPresent(chain.resolve.alias, 'node:path$', pathWorkerFile);
280
- chain.resolve.alias.set('react-server-dom-rspack/server.node$', 'react-server-dom-rspack/server.edge');
281
- chain.resolve.alias.set('react-server-dom-rspack/server.node', 'react-server-dom-rspack/server.edge');
282
- chain.resolve.alias.set('react-server-dom-rspack/client.node$', 'react-server-dom-rspack/client.edge');
283
- chain.resolve.alias.set('react-server-dom-rspack/client.node', 'react-server-dom-rspack/client.edge');
284
- chain.resolve.fallback.set('fs', false);
285
- chain.resolve.fallback.set('node:fs', false);
286
455
  };
287
456
  };
288
- function getCloudflareBuilderEnvironments({ appContext, environments, normalizedConfig, resolveDeployProvider = resolveStdEnvDeployProvider }) {
289
- if (!isCloudflareWorkerDeploy(normalizedConfig, resolveDeployProvider)) return environments;
290
- const workerEnvironment = environments[SERVICE_WORKER_ENVIRONMENT_NAME];
457
+ function getCloudflareBuilderEnvironments({ appContext, environments, normalizedConfig }) {
458
+ if (appContext.deployTarget?.target !== 'cloudflare') return environments;
459
+ const workerEnvironment = environments[SERVICE_WORKER_ENVIRONMENT_NAME] ?? (appContext.apiOnly ? {
460
+ output: {
461
+ target: 'web-worker'
462
+ },
463
+ source: {
464
+ entry: {}
465
+ }
466
+ } : void 0);
291
467
  if (!workerEnvironment) return environments;
292
468
  const workerEntries = getWorkerEntries(workerEnvironment, normalizedConfig, appContext);
293
469
  if (!workerEntries) return environments;
@@ -302,7 +478,44 @@ function getCloudflareBuilderEnvironments({ appContext, environments, normalized
302
478
  ...workerEnvironment.source,
303
479
  entry: workerEntries
304
480
  }
305
- }, createCloudflareBundlerChain(appContext, Object.keys(workerEntries)));
481
+ }, createCloudflareBundlerChain(appContext, Object.keys(workerEntries), Boolean(normalizedConfig.server?.rsc)), normalizedConfig.server?.rsc ? (chain)=>{
482
+ for (const [name, packageName, file] of [
483
+ [
484
+ 'react$',
485
+ 'react',
486
+ 'index.js'
487
+ ],
488
+ [
489
+ 'react/jsx-runtime$',
490
+ 'react',
491
+ 'jsx-runtime.js'
492
+ ],
493
+ [
494
+ 'react/jsx-dev-runtime$',
495
+ 'react',
496
+ 'jsx-dev-runtime.js'
497
+ ],
498
+ [
499
+ 'react-dom$',
500
+ 'react-dom',
501
+ 'index.js'
502
+ ],
503
+ [
504
+ 'react-dom/server.edge$',
505
+ 'react-dom',
506
+ 'server.edge.js'
507
+ ]
508
+ ]){
509
+ const target = resolvePackageFile(packageName, file, [
510
+ appContext.appDirectory,
511
+ process.cwd()
512
+ ]);
513
+ if (target && chain.resolve.alias.get(name) === target) chain.resolve.alias.delete(name);
514
+ }
515
+ } : void 0);
516
+ if (appContext.apiOnly) return {
517
+ [SERVICE_WORKER_ENVIRONMENT_NAME]: cloudflareWorkerEnvironment
518
+ };
306
519
  return {
307
520
  ...environments,
308
521
  [SERVICE_WORKER_ENVIRONMENT_NAME]: cloudflareWorkerEnvironment
@@ -313,15 +526,14 @@ function applyCloudflareBuilderEnvironments(options) {
313
526
  environments: getCloudflareBuilderEnvironments(options)
314
527
  };
315
528
  }
316
- const createCloudflareBuilderPlugin = (resolveDeployProvider = resolveStdEnvDeployProvider)=>({
529
+ const createCloudflareBuilderPlugin = ()=>({
317
530
  name: '@modern-js/cloudflare-builder',
318
531
  setup (api) {
319
532
  api.modifyBuilderEnvironments(({ environments })=>applyCloudflareBuilderEnvironments({
320
533
  appContext: api.getAppContext(),
321
534
  environments,
322
- normalizedConfig: api.getNormalizedConfig(),
323
- resolveDeployProvider
535
+ normalizedConfig: api.getNormalizedConfig()
324
536
  }));
325
537
  }
326
538
  });
327
- export { applyCloudflareBuilderEnvironments, applyCloudflareWorkerMfRuntimeBoundary, applyCloudflareWorkerRspackConfig, createCloudflareBuilderPlugin, getCloudflareBuilderEnvironments, getCloudflareWorkerRspackConfig };
539
+ export { applyCloudflareBuilderEnvironments, applyCloudflareWorkerRspackConfig, claimsByFunctionExternal, createAbsentOptionalDependencyFilter, createCloudflareBuilderPlugin, createRequestRedirectMatcher, getCloudflareBuilderEnvironments, getCloudflareWorkerRspackConfig };
@@ -10,27 +10,49 @@ const CLOUDFLARE_RUNTIME_TYPE = 'cloudflare-module-worker';
10
10
  const CLOUDFLARE_OUTPUT_PACKAGE_TYPE = 'module';
11
11
  const CLOUDFLARE_WORKER_PACKAGE_TYPE = 'commonjs';
12
12
  const CLOUDFLARE_WORKER_BUNDLE_FORMAT = 'commonjs';
13
+ const CLOUDFLARE_ROUTE_DATA_HANDLER_EXPORT = 'handleRouteDataRequest';
14
+ const getCloudflareWorkerRouteDataEntryName = (entryName)=>`${entryName}-server-loaders`;
13
15
  const CLOUDFLARE_WORKER_NODE_BUILTINS = [
16
+ '_http_agent',
17
+ '_http_client',
18
+ '_http_common',
19
+ '_http_incoming',
20
+ '_http_outgoing',
21
+ '_http_server',
22
+ '_tls_common',
23
+ '_tls_wrap',
14
24
  'assert',
15
25
  'assert/strict',
16
26
  'async_hooks',
17
27
  'buffer',
18
28
  'child_process',
29
+ 'cluster',
30
+ 'console',
31
+ 'constants',
19
32
  'crypto',
20
33
  'dgram',
34
+ 'diagnostics_channel',
21
35
  'dns',
36
+ 'dns/promises',
22
37
  'domain',
23
38
  'events',
24
39
  'fs',
25
40
  'fs/promises',
26
41
  'http',
27
42
  'http2',
43
+ 'https',
28
44
  'inspector',
45
+ 'inspector/promises',
29
46
  'module',
30
47
  'net',
31
48
  'os',
32
49
  'path',
50
+ 'path/posix',
51
+ 'path/win32',
52
+ 'perf_hooks',
33
53
  'process',
54
+ 'punycode',
55
+ 'querystring',
34
56
  'readline',
35
57
  'readline/promises',
36
58
  'repl',
@@ -40,6 +62,8 @@ const CLOUDFLARE_WORKER_NODE_BUILTINS = [
40
62
  'stream/promises',
41
63
  'stream/web',
42
64
  'string_decoder',
65
+ 'sys',
66
+ 'test',
43
67
  'timers',
44
68
  'timers/promises',
45
69
  'tls',
@@ -55,10 +79,12 @@ const CLOUDFLARE_WORKER_NODE_BUILTINS = [
55
79
  'zlib'
56
80
  ];
57
81
  const CLOUDFLARE_WORKER_PLATFORM_MODULES = [
58
- 'cloudflare:sockets'
82
+ 'cloudflare:sockets',
83
+ 'cloudflare:workers'
59
84
  ];
60
85
  const CLOUDFLARE_REQUIRED_COMPATIBILITY_FLAGS = [
61
86
  'nodejs_compat',
62
- 'global_fetch_strictly_public'
87
+ 'global_fetch_strictly_public',
88
+ 'enable_request_signal'
63
89
  ];
64
- export { CLOUDFLARE_ASSETS_BINDING, CLOUDFLARE_OUTPUT_PACKAGE_FILE, CLOUDFLARE_OUTPUT_PACKAGE_TYPE, CLOUDFLARE_PUBLIC_ASSETS_DIRECTORY, CLOUDFLARE_REQUIRED_COMPATIBILITY_FLAGS, CLOUDFLARE_RUNTIME_TYPE, CLOUDFLARE_WORKER_BUNDLE_DIRECTORY, CLOUDFLARE_WORKER_BUNDLE_FORMAT, CLOUDFLARE_WORKER_ENTRY, CLOUDFLARE_WORKER_MANIFEST, CLOUDFLARE_WORKER_NODE_BUILTINS, CLOUDFLARE_WORKER_PACKAGE_FILE, CLOUDFLARE_WORKER_PACKAGE_TYPE, CLOUDFLARE_WORKER_PLATFORM_MODULES, CLOUDFLARE_WRANGLER_CONFIG_FILE };
90
+ export { CLOUDFLARE_ASSETS_BINDING, CLOUDFLARE_OUTPUT_PACKAGE_FILE, CLOUDFLARE_OUTPUT_PACKAGE_TYPE, CLOUDFLARE_PUBLIC_ASSETS_DIRECTORY, CLOUDFLARE_REQUIRED_COMPATIBILITY_FLAGS, CLOUDFLARE_ROUTE_DATA_HANDLER_EXPORT, CLOUDFLARE_RUNTIME_TYPE, CLOUDFLARE_WORKER_BUNDLE_DIRECTORY, CLOUDFLARE_WORKER_BUNDLE_FORMAT, CLOUDFLARE_WORKER_ENTRY, CLOUDFLARE_WORKER_MANIFEST, CLOUDFLARE_WORKER_NODE_BUILTINS, CLOUDFLARE_WORKER_PACKAGE_FILE, CLOUDFLARE_WORKER_PACKAGE_TYPE, CLOUDFLARE_WORKER_PLATFORM_MODULES, CLOUDFLARE_WRANGLER_CONFIG_FILE, getCloudflareWorkerRouteDataEntryName };