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

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 +30 -165
  6. package/dist/cjs/build-config/internal-effect-discovery.js +231 -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 +180 -17
  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 +9 -6
  46. package/dist/cjs/renderer-build-identity.js +144 -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 +547 -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 +31 -163
  58. package/dist/esm/build-config/internal-effect-discovery.mjs +187 -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 +175 -18
  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 +9 -6
  98. package/dist/esm/renderer-build-identity.mjs +92 -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 +547 -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 +31 -163
  110. package/dist/esm-node/build-config/internal-effect-discovery.mjs +188 -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 +175 -18
  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 +9 -6
  150. package/dist/esm-node/renderer-build-identity.mjs +93 -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 +547 -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 +4 -10
  163. package/dist/types/build-config/internal-effect-discovery.d.ts +6 -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 +20 -4
  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 +102 -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 +28 -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 +13 -2
  199. package/dist/types/renderer-build-identity.d.ts +41 -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 +69 -293
  208. package/src/build-config/internal-effect-discovery.ts +458 -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 +115 -13
  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 +105 -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 +284 -27
  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 +30 -4
  248. package/src/renderer-build-identity.ts +208 -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 +547 -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
@@ -0,0 +1,22 @@
1
+ import "node:module";
2
+ import { existsSync } from "node:fs";
3
+ import node_path from "node:path";
4
+ const REFERENCE_TOPOLOGY_PATH = 'topology/reference-topology.json';
5
+ const DEVELOPMENT_OVERLAY_PATH = 'topology/local-overlays/development.json';
6
+ const normalizeRelativePath = (value)=>value.replace(/\\/gu, '/').replace(/^\.\/+/u, '');
7
+ const distributedSsrFragmentSlug = (expose)=>{
8
+ const slug = expose.replace(/^\.\//u, '').trim().replace(/([a-z0-9])([A-Z])/gu, '$1-$2').replace(/[^a-zA-Z0-9._-]+/gu, '-').replace(/[._]+/gu, '-').toLowerCase().replace(/-+/gu, '-').replace(/^-+|-+$/gu, '');
9
+ if (!slug) throw new Error(`Invalid distributed SSR expose ${expose}.`);
10
+ return slug;
11
+ };
12
+ const distributedSsrFragmentRoute = (expose)=>`/{locale}/_mf/fragment/${distributedSsrFragmentSlug(expose)}`;
13
+ const findWorkspaceRoot = (appDirectory)=>{
14
+ let current = appDirectory;
15
+ while(true){
16
+ if (existsSync(node_path.join(current, REFERENCE_TOPOLOGY_PATH))) return current;
17
+ const parent = node_path.dirname(current);
18
+ if (parent === current) return;
19
+ current = parent;
20
+ }
21
+ };
22
+ export { DEVELOPMENT_OVERLAY_PATH, REFERENCE_TOPOLOGY_PATH, distributedSsrFragmentRoute, distributedSsrFragmentSlug, findWorkspaceRoot, normalizeRelativePath };
@@ -53,6 +53,36 @@ export declare const createBackendManifest: (workspaceRoot: string, distDirector
53
53
  }[];
54
54
  shared: never[];
55
55
  backendFederation: {
56
+ role: string;
57
+ appId: string;
58
+ name: string;
59
+ runtimeFramework: string;
60
+ strictEffectApproach: boolean;
61
+ contractVersion: string;
62
+ nodeAdapterVersion: string;
63
+ remoteType: string;
64
+ expose: string;
65
+ manifestUrl: string;
66
+ containerEntry: string;
67
+ source: {
68
+ module: string;
69
+ };
70
+ rpcPath: string | undefined;
71
+ rpcSerialization: string;
72
+ deliveryUnit?: import("@modern-js/backend-federation-contracts").DeliveryUnitContractBlock | undefined;
73
+ versionBoundary: {
74
+ invariant: string;
75
+ packageName: string | undefined;
76
+ version: string | undefined;
77
+ buildVersion: string | undefined;
78
+ uiManifestUrl?: string | undefined;
79
+ deliveryUnit?: {
80
+ unitId: string;
81
+ buildMarker: string;
82
+ sourceRevision: string;
83
+ } | undefined;
84
+ };
85
+ } | {
56
86
  role: string;
57
87
  appId: string;
58
88
  name: string;
@@ -1,56 +1,6 @@
1
1
  import { type DeliveryUnitContractBlock, type UltramodernBuildArtifact } from '@modern-js/backend-federation-contracts';
2
- export declare const COMPACT_CONFIG_PATH = ".modernjs/ultramodern.json";
3
- export type CompactApp = {
4
- id?: unknown;
5
- kind?: unknown;
6
- path?: unknown;
7
- package?: unknown;
8
- port?: unknown;
9
- api?: {
10
- prefix?: unknown;
11
- stem?: unknown;
12
- };
13
- moduleFederation?: {
14
- name?: unknown;
15
- manifestUrl?: unknown;
16
- };
17
- backendFederation?: {
18
- name?: unknown;
19
- versionBoundary?: {
20
- ui?: {
21
- manifestUrl?: unknown;
22
- };
23
- };
24
- executionSurfaces?: {
25
- node?: {
26
- remoteName?: unknown;
27
- manifestUrl?: unknown;
28
- containerEntry?: unknown;
29
- remoteType?: unknown;
30
- };
31
- };
32
- };
33
- deliveryUnit?: {
34
- unitId?: unknown;
35
- buildMarker?: unknown;
36
- sourceRevision?: unknown;
37
- packageName?: unknown;
38
- version?: unknown;
39
- };
40
- serverExecution?: {
41
- node?: {
42
- remoteName?: unknown;
43
- manifestUrl?: unknown;
44
- containerEntry?: unknown;
45
- remoteType?: unknown;
46
- };
47
- };
48
- };
49
- export type CompactConfig = {
50
- topology?: {
51
- apps?: CompactApp[];
52
- };
53
- };
2
+ import { type DevelopmentOverlay, type TopologyApp } from '../workspace-topology.js';
3
+ export { DEVELOPMENT_OVERLAY_PATH, type DevelopmentOverlay, findWorkspaceRoot, normalizeRelativePath, REFERENCE_TOPOLOGY_PATH, type ReferenceTopology, type TopologyApp, } from '../workspace-topology.js';
54
4
  export type BackendFederationApp = {
55
5
  id: string;
56
6
  directory: string;
@@ -62,13 +12,15 @@ export type BackendFederationApp = {
62
12
  deliveryUnit?: DeliveryUnitContractBlock;
63
13
  port: number;
64
14
  apiPrefix: string;
15
+ apiProtocol: 'rest' | 'rpc';
16
+ rpcPath?: string;
65
17
  apiStem: string;
66
18
  backendName: string;
67
19
  manifestUrl: string;
68
20
  containerEntry: string;
69
21
  remoteType: string;
70
22
  uiManifestUrl?: string;
71
- compactDeliveryUnit?: {
23
+ topologyDeliveryUnit?: {
72
24
  unitId?: string;
73
25
  buildMarker?: string;
74
26
  sourceRevision?: string;
@@ -85,10 +37,8 @@ export type BackendFederationBuildIdentity = {
85
37
  sourceRevision?: string;
86
38
  artifact?: UltramodernBuildArtifact;
87
39
  };
88
- export declare const normalizeRelativePath: (value: string) => string;
89
40
  export declare const buildArtifactPathFor: (appDirectory: string) => string;
90
41
  export declare const readBuildIdentity: (appDirectory: string) => Promise<BackendFederationBuildIdentity>;
91
- export declare const findWorkspaceRoot: (appDirectory: string) => string | undefined;
92
42
  export declare const resolveWorkspaceSourceRevision: (workspaceRoot: string) => Promise<string>;
93
43
  export declare const createStampedDeliveryUnit: (input: {
94
44
  appId: string;
@@ -98,5 +48,8 @@ export declare const createStampedDeliveryUnit: (input: {
98
48
  version?: string;
99
49
  sourceRevision: string;
100
50
  }) => DeliveryUnitContractBlock | undefined;
101
- export declare const createAppFromCompactMetadata: (workspaceRoot: string, appDirectory: string, compactApp: CompactApp) => BackendFederationApp | undefined;
102
- export declare const findBackendFederationApp: (workspaceRoot: string, appDirectory: string) => Promise<BackendFederationApp | undefined>;
51
+ export declare const createAppFromTopology: (workspaceRoot: string, appDirectory: string, topologyApp: TopologyApp, overlay: DevelopmentOverlay, packageManifest: {
52
+ name?: unknown;
53
+ version?: unknown;
54
+ }) => BackendFederationApp | undefined;
55
+ export declare const findBackendFederationApp: (workspaceRoot: string, appDirectory: string) => Promise<BackendFederationApp>;
@@ -1,3 +1,4 @@
1
+ import { type RendererBuildOutputContext, type RendererBuildOutputOptions } from '../release-envelope/renderer-output-stamp.js';
1
2
  export type { BackendFederationBuildIdentity } from './config.js';
2
3
  export type BackendFederationArtifactResult = {
3
4
  appId: string;
@@ -7,14 +8,23 @@ export type BackendFederationArtifactResult = {
7
8
  remoteName: string;
8
9
  remoteType: string;
9
10
  };
10
- export declare const emitBackendFederationArtifacts: (appDirectory: string, distDirectory: string) => Promise<BackendFederationArtifactResult | undefined>;
11
+ export type BackendFederationBuildOptions = {
12
+ resolveRendererBuild?: RendererBuildOutputOptions['resolveRendererBuild'];
13
+ rendererBuildPlugin?: RendererBuildOutputOptions['rendererBuildPlugin'];
14
+ entrypoints?: RendererBuildOutputContext['entrypoints'];
15
+ };
16
+ export declare const emitBackendFederationArtifacts: (appDirectory: string, distDirectory: string, options?: BackendFederationBuildOptions) => Promise<BackendFederationArtifactResult | undefined>;
11
17
  export default _default;
12
- declare function _default(): {
18
+ declare function _default(options?: Omit<BackendFederationBuildOptions, 'entrypoints'>): {
13
19
  name: string;
20
+ pre: string[];
21
+ required: string[];
14
22
  setup(api: {
15
23
  getAppContext(): {
16
24
  appDirectory: string;
17
25
  distDirectory: string;
26
+ entrypoints?: RendererBuildOutputContext['entrypoints'];
27
+ apiOnly?: boolean;
18
28
  };
19
29
  onAfterBuild(handler: () => Promise<void>): void;
20
30
  }): void;
@@ -1,2 +1,2 @@
1
- export type { BackendFederationArtifactResult } from './emit.js';
1
+ export type { BackendFederationArtifactResult, BackendFederationBuildOptions, } from './emit.js';
2
2
  export { default, emitBackendFederationArtifacts } from './emit.js';
@@ -1,22 +1,16 @@
1
- import type { URL } from 'node:url';
2
- import type { Rspack } from '@rsbuild/core';
1
+ import { type URL } from 'node:url';
3
2
  /**
4
3
  * Reads an environment variable while keeping generated build configs free of
5
4
  * direct process access.
6
5
  */
7
6
  export declare function getBuildConfigEnvironment(name: string): string | undefined;
8
- /**
9
- * Runs a Rspack config setup under a leased environment value. The lease is
10
- * restored when that compiler reaches any supported terminal hook.
11
- */
12
- export declare function withBuildConfigEnvironment<Config extends {
13
- plugins?: Rspack.Plugin[];
14
- }, SetupArguments extends unknown[]>(name: string, value: string, setup: (config: Config, ...args: SetupArguments) => Config | void | Promise<Config | void>): (config: Config, ...args: SetupArguments) => Promise<Config>;
15
7
  export type ResolveEffectTsgoCompilerOptions = {
16
8
  /** Module URL or absolute filename used to resolve the consumer's compiler. */
17
9
  from: string | URL;
18
10
  };
19
11
  /**
20
- * Resolves the Effect TS-Go executable used by Module Federation DTS builds.
12
+ * Resolves the Effect-enabled native executable for checking and DTS builds.
13
+ * Use metadata-bound tsrs where both tsrs and the Effect provider support it.
14
+ * Unsupported targets use Effect-Go. Missing supported artifacts remain fatal.
21
15
  */
22
16
  export declare function resolveEffectTsgoCompiler(options: ResolveEffectTsgoCompilerOptions): string;
@@ -0,0 +1,6 @@
1
+ import { type URL } from 'node:url';
2
+ export declare function effectCompilerDiscoveryFailureStage(error: unknown): string | undefined;
3
+ /** Explicit native binaries must still report Effect diagnostics support. */
4
+ export declare function validateConfiguredEffectCompiler(compiler: string, from: string | URL): void;
5
+ /** Selects the exact native replacement without invoking the provider CLI. */
6
+ export declare function resolveInstalledEffectCompiler(from: string | URL): string;
@@ -1,2 +1,2 @@
1
1
  export type { ResolveEffectTsgoCompilerOptions } from './build-environment.js';
2
- export { getBuildConfigEnvironment, resolveEffectTsgoCompiler, withBuildConfigEnvironment, } from './build-environment.js';
2
+ export { getBuildConfigEnvironment, resolveEffectTsgoCompiler, } from './build-environment.js';
@@ -0,0 +1,3 @@
1
+ import { type BrowserManifestAddressOptions } from '@modern-js/surface-resolution';
2
+ /** Adapt build environment leases and MF's name@URL syntax to discovery policy. */
3
+ export declare function createRemoteManifestUrl(options: BrowserManifestAddressOptions): string;
@@ -4,12 +4,13 @@ export declare const getCloudflareArtifacts: (modernConfig: CloudflareModernConf
4
4
  to: string;
5
5
  index: number;
6
6
  }[];
7
- export declare const getCloudflarePublicAssets: (modernConfig: CloudflareModernConfig) => {
8
- from: string;
9
- to: string;
10
- index: number;
11
- }[];
7
+ export declare const getCloudflarePublicAssets: (modernConfig: CloudflareModernConfig) => import("../deploy-output/public-assets.js").DeclaredPublicAsset[];
12
8
  export declare const copyCloudflareArtifacts: (appDirectory: string, outputDirectory: string, artifacts: ReturnType<typeof getCloudflareArtifacts>) => Promise<void>;
13
- export declare const copyCloudflarePublicAssets: (appDirectory: string, publicDirectory: string, publicAssets: ReturnType<typeof getCloudflarePublicAssets>) => Promise<void>;
9
+ /**
10
+ * Stage `deploy.worker.publicAssets` into Worker Static Assets.
11
+ *
12
+ * @returns the staged files relative to the Cloudflare output root.
13
+ */
14
+ export declare const copyCloudflarePublicAssets: (appDirectory: string, outputDirectory: string, publicAssets: ReturnType<typeof getCloudflarePublicAssets>) => Promise<string[]>;
14
15
  export declare const copyCloudflareD1Migrations: (appDirectory: string, outputDirectory: string, modernConfig: CloudflareModernConfig) => Promise<void>;
15
16
  export declare const readRouteSpec: (outputDirectory: string) => Promise<any>;
@@ -19,6 +19,6 @@ export declare const BFF_EFFECT_WORKER_DISPATCHER_EXPORT = "__modern_create_effe
19
19
  export declare const EFFECT_BFF_CLOUDFLARE_IMPORT_GUIDANCE = "Ensure the Effect API entry exists at api/index.ts or bff.effect.entry, and import Cloudflare edge handlers from @modern-js/bff-effect/effect-edge instead of lambda/Hono server helpers.";
20
20
  export declare const DEFAULT_COMPATIBILITY_DATE = "2026-06-02";
21
21
  export declare const COMPATIBILITY_DATE_PATTERN: RegExp;
22
- export declare const REQUIRED_COMPATIBILITY_FLAGS: readonly ["nodejs_compat", "global_fetch_strictly_public"];
22
+ export declare const REQUIRED_COMPATIBILITY_FLAGS: readonly ["nodejs_compat", "global_fetch_strictly_public", "enable_request_signal"];
23
23
  export declare const RESERVED_ARTIFACT_DESTINATION_FILES: Set<string>;
24
24
  export declare const RESERVED_ARTIFACT_DESTINATION_DIRECTORIES: Set<string>;
@@ -1,23 +1,54 @@
1
- import { type DeliveryUnitIdentity } from '@modern-js/backend-federation-contracts';
1
+ import { type DeliveryUnitIdentity, type RendererIdentity, type RendererProfile, type RendererRouterBindings } from '@modern-js/backend-federation-contracts';
2
2
  export type DeliveryUnitStamp = DeliveryUnitIdentity & {
3
3
  surfaces: {
4
4
  ui?: DeliveryUnitIdentity & {
5
5
  surface: 'ui';
6
+ rendererIdentity: RendererIdentity;
7
+ rendererProfile: RendererProfile;
8
+ routerBindings: RendererRouterBindings;
6
9
  };
7
10
  api?: DeliveryUnitIdentity & {
8
11
  surface: 'api';
9
12
  };
10
13
  };
11
14
  };
15
+ /**
16
+ * The topology's declaration of one delivery unit. A UI surface may omit the
17
+ * renderer projection entirely (a React workspace authored before renderer
18
+ * selection); the build then resolves its renderer identity from the app
19
+ * config alone, and there is no declared projection to verify it against.
20
+ */
21
+ export type TopologyUiSurface = DeliveryUnitIdentity & {
22
+ surface: 'ui';
23
+ } & ({
24
+ rendererIdentity: RendererIdentity;
25
+ rendererProfile: RendererProfile;
26
+ routerBindings: RendererRouterBindings;
27
+ } | {
28
+ rendererIdentity?: undefined;
29
+ rendererProfile?: undefined;
30
+ routerBindings?: undefined;
31
+ });
32
+ export type TopologyDeliveryUnit = DeliveryUnitIdentity & {
33
+ /** The declaring topology app. */
34
+ appId: string;
35
+ surfaces: {
36
+ ui?: TopologyUiSurface;
37
+ api?: DeliveryUnitIdentity & {
38
+ surface: 'api';
39
+ };
40
+ };
41
+ };
42
+ /** Resolve the producer role from this app's authoritative topology membership. */
43
+ export declare const resolveTopologyReleaseRole: (appDirectory: string) => Promise<'microvertical' | 'shell' | undefined>;
12
44
  /**
13
45
  * Resolve the delivery-unit record declared for this app by the workspace
14
- * compact config (`.modernjs/ultramodern.json`). This is the topology source
46
+ * reference topology. This is the topology source
15
47
  * of truth the Cloudflare worker snapshot is verified against.
16
48
  */
17
- export declare const resolveTopologyDeliveryUnit: (appDirectory: string) => Promise<DeliveryUnitStamp | undefined>;
49
+ export declare const resolveTopologyDeliveryUnit: (appDirectory: string) => Promise<TopologyDeliveryUnit | undefined>;
18
50
  /**
19
- * Resolve the delivery-unit identity actually bundled into the worker by
20
- * reading the generated `shared/ultramodern-build.json` artifact. This is the
21
- * worker snapshot / declared surface source that gets stamped into the manifest.
51
+ * Preserve the finalized build artifact already stamped from renderer-build.json.
52
+ * The generation artifact cannot attest the compiled application.
22
53
  */
23
- export declare const resolveWorkerDeliveryUnitStamp: (appDirectory: string) => Promise<DeliveryUnitStamp | undefined>;
54
+ export declare const resolveWorkerDeliveryUnitStamp: (appDirectory: string, distDirectory: string) => Promise<DeliveryUnitStamp | undefined>;
@@ -0,0 +1,30 @@
1
+ import type { WorkerRendererBuild } from './renderer-identity.js';
2
+ /**
3
+ * Build-validated native document inputs for each worker route. The Node host
4
+ * reads these from `dist`; a module worker has no filesystem, so the native
5
+ * build writes them beside its worker bundles and deploy inlines them.
6
+ */
7
+ export declare const NATIVE_RENDERER_WORKER_RESOURCES_FILE = "worker/native-renderer.json";
8
+ export interface NativeRendererWorkerEntry {
9
+ readonly assets: readonly unknown[];
10
+ readonly nativeManifest?: unknown;
11
+ readonly hydrationBuildId?: string;
12
+ readonly serverConfig: {
13
+ readonly ssr: boolean | 'stream';
14
+ readonly ssrByRouteIds?: readonly string[];
15
+ };
16
+ readonly csrFallbackHeader?: string;
17
+ readonly nonce?: string;
18
+ }
19
+ export interface NativeRendererWorkerResources {
20
+ readonly schema: 'ultramodern-native-worker-resources';
21
+ readonly version: 1;
22
+ /** The built renderer, whose adapter serves native documents. */
23
+ readonly renderer: string;
24
+ readonly entries: Readonly<Record<string, NativeRendererWorkerEntry>>;
25
+ }
26
+ /**
27
+ * Read the native worker resources for a built application. Every built entry
28
+ * of the resources' renderer must have validated document inputs.
29
+ */
30
+ export declare function readNativeRendererWorkerResources(distDirectory: string, build: WorkerRendererBuild | undefined): Promise<NativeRendererWorkerResources | undefined>;
@@ -0,0 +1,25 @@
1
+ import { type RendererIdentity } from '@modern-js/backend-federation-contracts';
2
+ import type { DeliveryUnitStamp } from './delivery-unit.js';
3
+ export type WorkerRendererIdentities = Readonly<Record<string, RendererIdentity>>;
4
+ /** The built renderer and how its adapter serves worker documents. */
5
+ export interface WorkerRenderer {
6
+ readonly name: string;
7
+ /** Documents come only from the renderer's native server handler. */
8
+ readonly nativeDocuments: boolean;
9
+ readonly rsc: boolean;
10
+ }
11
+ export interface WorkerRendererBuild {
12
+ readonly renderer: WorkerRenderer;
13
+ readonly identities: WorkerRendererIdentities;
14
+ }
15
+ /** Bind response metadata to the finalized build and its generated entries. */
16
+ export declare function readWorkerRendererBuild(distDirectory: string, routes: readonly {
17
+ entryName?: unknown;
18
+ entryPath?: unknown;
19
+ isApi?: unknown;
20
+ isSSR?: unknown;
21
+ worker?: unknown;
22
+ bundle?: unknown;
23
+ isRSC?: unknown;
24
+ isStream?: unknown;
25
+ }[], deliveryUnit?: DeliveryUnitStamp): Promise<WorkerRendererBuild | undefined>;
@@ -1,3 +1,4 @@
1
+ import type { BffEffectDataPlatformUserConfig, BffEffectOpenApiUserConfig } from '@modern-js/server-runtime-extensions/server-config';
1
2
  import type { DeliveryUnitStamp } from './delivery-unit.js';
2
3
  import type { CloudflareAppContext, CloudflareModernConfig } from './types.js';
3
4
  export declare const createWorkerManifest: (outputDirectory: string, modernConfig: CloudflareModernConfig, appContext: CloudflareAppContext, deliveryUnitStamp: DeliveryUnitStamp | undefined) => Promise<{
@@ -84,8 +85,18 @@ export declare const createWorkerManifest: (outputDirectory: string, modernConfi
84
85
  path: string;
85
86
  css: string[];
86
87
  }[];
88
+ routeCss: string[];
87
89
  } | undefined;
88
90
  deliveryUnit?: DeliveryUnitStamp | undefined;
91
+ renderer?: import("./renderer-identity.js").WorkerRenderer | undefined;
92
+ rendererIdentities?: Readonly<Record<string, Readonly<{
93
+ renderer: import("@modern-js/backend-federation-contracts").RendererName;
94
+ appId: string;
95
+ entryName: string;
96
+ protocolVersion: typeof import("@modern-js/backend-federation-contracts").RENDERER_PROTOCOL_VERSION;
97
+ buildId: string;
98
+ }>>> | undefined;
99
+ nativeRenderer?: import("./native-renderer.js").NativeRendererWorkerResources | undefined;
89
100
  i18n: {
90
101
  entries: Record<string, {
91
102
  i18nextDetector: boolean;
@@ -108,8 +119,8 @@ export declare const createWorkerManifest: (outputDirectory: string, modernConfi
108
119
  prefix: string;
109
120
  worker: string;
110
121
  effect: {
111
- openapi?: import("@modern-js/runtime-extensions/server-config").BffEffectOpenApiUserConfig | undefined;
112
- dataPlatform?: import("@modern-js/runtime-extensions/server-config").BffEffectDataPlatformUserConfig | undefined;
122
+ openapi?: BffEffectOpenApiUserConfig | undefined;
123
+ dataPlatform?: BffEffectDataPlatformUserConfig | undefined;
113
124
  crossProjectPolicy: {
114
125
  allowedNamespaces?: string[];
115
126
  verifyProducerIdentity?: (headers: Record<string, unknown>) => string | undefined;
@@ -130,7 +141,12 @@ export declare const createWorkerManifest: (outputDirectory: string, modernConfi
130
141
  };
131
142
  } | undefined;
132
143
  } | undefined;
133
- serviceBindings?: {
144
+ serviceBindings?: ({
145
+ binding: string;
146
+ interface: string;
147
+ prefix: string;
148
+ vpcServiceId: string;
149
+ } | {
134
150
  binding: string;
135
151
  service: string;
136
152
  interface: string;
@@ -141,7 +157,7 @@ export declare const createWorkerManifest: (outputDirectory: string, modernConfi
141
157
  boundaryId: string;
142
158
  path: string;
143
159
  }[] | undefined;
144
- }[] | undefined;
160
+ })[] | undefined;
145
161
  }>;
146
162
  export declare const createWorkerModuleLoaders: (manifest: any) => string;
147
163
  export declare const getPublicAssetExcludes: (appDirectory: string, modernConfig: CloudflareModernConfig) => string[];
@@ -0,0 +1,20 @@
1
+ import type { RequestHandlerOptions } from '@modern-js/server-core';
2
+ /** The native context supplied to a Cloudflare module worker's fetch method. */
3
+ export interface CloudflareExecutionContext {
4
+ waitUntil(promise: Promise<unknown>): void;
5
+ passThroughOnException(): void;
6
+ }
7
+ /** Worker request bindings follow the shared RequestPlatform kind/bindings shape. */
8
+ export interface CloudflareWorkerPlatform<Bindings extends object = object> {
9
+ readonly kind: 'worker';
10
+ /** The original env object. Direct worker invocations may omit it. */
11
+ readonly bindings: Bindings | undefined;
12
+ }
13
+ /** Request-owned options for manifest HTML and Flight worker handlers. */
14
+ export interface CloudflareWorkerRequestHandlerOptions<Bindings extends object = object> extends RequestHandlerOptions {
15
+ readonly platform: CloudflareWorkerPlatform<Bindings>;
16
+ /** The original context, including its native method receivers. */
17
+ readonly executionContext: CloudflareExecutionContext | undefined;
18
+ }
19
+ /** Narrow native handler options without replacing their worker references. */
20
+ export declare function isCloudflareWorkerRequestHandlerOptions(options: RequestHandlerOptions): options is CloudflareWorkerRequestHandlerOptions;
@@ -11,7 +11,22 @@ export declare const createWorkerServiceBindings: (modernConfig: CloudflareModer
11
11
  path: string;
12
12
  }[] | undefined;
13
13
  }[] | JsonValue | undefined;
14
- export declare const createWorkerManifestServiceBindings: (serviceBindings: ReturnType<typeof createWorkerServiceBindings>) => {
14
+ /**
15
+ * The prefix the worker's Effect BFF dispatcher owns. It runs before any
16
+ * service binding, so it takes part in route-overlap checks.
17
+ */
18
+ export declare const getWorkerEffectBffPrefix: (modernConfig: CloudflareModernConfig) => string | undefined;
19
+ export declare const createWorkerVpcServiceBindings: (modernConfig: CloudflareModernConfig, configuredWranglerVpcServices: JsonValue | undefined, serviceBindings: ReturnType<typeof createWorkerServiceBindings>, workerBindingNames: ReadonlySet<string>) => {
20
+ binding: string;
21
+ serviceId: string;
22
+ prefix?: string | undefined;
23
+ }[] | undefined;
24
+ export declare const createWorkerManifestServiceBindings: (serviceBindings: ReturnType<typeof createWorkerServiceBindings>, vpcServiceBindings: ReturnType<typeof createWorkerVpcServiceBindings>) => ({
25
+ binding: string;
26
+ interface: string;
27
+ prefix: string;
28
+ vpcServiceId: string;
29
+ } | {
15
30
  binding: string;
16
31
  service: string;
17
32
  interface: string;
@@ -22,7 +37,7 @@ export declare const createWorkerManifestServiceBindings: (serviceBindings: Retu
22
37
  boundaryId: string;
23
38
  path: string;
24
39
  }[] | undefined;
25
- }[] | undefined;
40
+ })[] | undefined;
26
41
  export declare const createWranglerConfig: (appDirectory: string, modernConfig: CloudflareModernConfig) => {
27
42
  $schema: string;
28
43
  name: string;
@@ -34,6 +49,7 @@ export declare const createWranglerConfig: (appDirectory: string, modernConfig:
34
49
  binding: string;
35
50
  run_worker_first: boolean;
36
51
  };
52
+ env?: Record<string, Record<string, JsonValue>> | undefined;
37
53
  d1_databases?: {
38
54
  binding: string;
39
55
  database_name: string;
@@ -48,4 +64,41 @@ export declare const createWranglerConfig: (appDirectory: string, modernConfig:
48
64
  }[] | {
49
65
  [key: string]: JsonValue;
50
66
  } | null | undefined;
67
+ } | {
68
+ $schema: string;
69
+ name: string;
70
+ compatibility_date: string;
71
+ main: string;
72
+ compatibility_flags: JsonValue[];
73
+ assets: {
74
+ directory: string;
75
+ binding: string;
76
+ run_worker_first: boolean;
77
+ };
78
+ env?: Record<string, Record<string, JsonValue>> | {
79
+ [k: string]: {
80
+ vpc_services: {
81
+ binding: string;
82
+ service_id: string;
83
+ }[];
84
+ };
85
+ } | undefined;
86
+ d1_databases?: {
87
+ binding: string;
88
+ database_name: string;
89
+ database_id: string;
90
+ migrations_dir?: string | undefined;
91
+ preview_database_id?: string | undefined;
92
+ remote?: boolean | undefined;
93
+ }[] | JsonValue | undefined;
94
+ services?: string | number | boolean | JsonValue[] | {
95
+ binding: string;
96
+ service: string;
97
+ }[] | {
98
+ [key: string]: JsonValue;
99
+ } | null | undefined;
100
+ vpc_services: {
101
+ binding: string;
102
+ service_id: string;
103
+ }[];
51
104
  };
@@ -1,22 +1,27 @@
1
1
  import type { BffUserConfig } from '@modern-js/server-core';
2
- import type { EnvironmentConfig, ModifyBundlerChainFn } from '@rsbuild/core';
2
+ import type { EnvironmentConfig, ModifyBundlerChainFn, Rspack } from '@rsbuild/core';
3
+ import type { ResolvedDeployTarget } from './deploy-output/target.js';
3
4
  export interface CloudflareBuilderNormalizedConfig {
4
5
  bff?: BffUserConfig;
5
- deploy?: {
6
- target?: string;
6
+ server?: {
7
+ rsc?: unknown;
7
8
  };
8
9
  }
9
10
  export interface CloudflareBuilderAppContext {
11
+ apiOnly?: boolean;
12
+ deployTarget?: ResolvedDeployTarget;
10
13
  apiDirectory: string;
11
14
  appDirectory: string;
15
+ entrypoints?: ReadonlyArray<{
16
+ entryName: string;
17
+ }>;
18
+ internalDirectory?: string;
12
19
  }
13
20
  export interface CloudflareBuilderEnvironmentsOptions {
14
21
  appContext: CloudflareBuilderAppContext;
15
22
  environments: Record<string, EnvironmentConfig>;
16
23
  normalizedConfig: CloudflareBuilderNormalizedConfig;
17
- resolveDeployProvider?: ResolveCloudflareDeployProvider;
18
24
  }
19
- export type ResolveCloudflareDeployProvider = () => string | undefined;
20
25
  export interface CloudflareWorkerRspackConfig {
21
26
  externals: Record<string, string>;
22
27
  externalsType: 'module-import';
@@ -51,9 +56,47 @@ export interface CloudflareBuilderPlugin {
51
56
  name: string;
52
57
  setup(api: CloudflareBuilderPluginApi): void;
53
58
  }
59
+ type AliasField = string | readonly string[];
60
+ /**
61
+ * Leaves an absent optional dependency missing at runtime, exactly as Node
62
+ * does, instead of failing the worker build. It applies only when the
63
+ * importing package itself declares the request as an optional peer
64
+ * (`peerDependenciesMeta.<name>.optional`) or an `optionalDependencies`
65
+ * entry, the package is not found in any `resolve.modules` directory, and
66
+ * neither the app (`resolve.alias`, `resolve.fallback`, `externals`) nor the
67
+ * importing package (an enabled `resolve.aliasFields` entry such as
68
+ * `browser`) redirects the request. The import
69
+ * then rejects with "Cannot find module" so the library's own fallback
70
+ * handles it (for example `@redis/client` guards `import('@node-rs/xxhash')`).
71
+ */
72
+ export declare const createAbsentOptionalDependencyFilter: (isRedirected?: (request: string) => boolean, moduleDirectories?: readonly string[], aliasFields?: readonly AliasField[]) => (request: string, context: string) => boolean;
73
+ type AliasOption = Record<string, unknown> | {
74
+ name: string;
75
+ onlyModule?: boolean;
76
+ }[] | false | undefined;
77
+ /**
78
+ * Reads the final resolved `resolve.alias`, `resolve.fallback` and
79
+ * `externals` so an app's own
80
+ * replacement for an optional package still wins over the absent-module
81
+ * fallback (the fallback runs before resolution).
82
+ */
83
+ export declare const createRequestRedirectMatcher: (options: {
84
+ externals?: unknown;
85
+ resolve?: {
86
+ alias?: AliasOption;
87
+ fallback?: AliasOption;
88
+ };
89
+ }) => (request: string) => boolean;
90
+ type FunctionExternal = (data: Rspack.ExternalItemFunctionData, callback: (error?: Error | null, result?: unknown) => void) => unknown;
91
+ /**
92
+ * Reports whether any function external claims the request. A function that
93
+ * throws is treated as claiming it, so the request goes through ordinary
94
+ * external processing and surfaces that error instead of being ignored.
95
+ */
96
+ export declare const claimsByFunctionExternal: (externals: readonly FunctionExternal[], data: Rspack.ExternalItemFunctionData) => Promise<boolean>;
54
97
  export declare function getCloudflareWorkerRspackConfig(workerEntryNames: Iterable<string>): CloudflareWorkerRspackConfig;
55
98
  export declare function applyCloudflareWorkerRspackConfig(chain: Parameters<ModifyBundlerChainFn>[0], workerEntryNames: Iterable<string>): void;
56
- export declare function applyCloudflareWorkerMfRuntimeBoundary(chain: Parameters<ModifyBundlerChainFn>[0]): void;
57
- export declare function getCloudflareBuilderEnvironments({ appContext, environments, normalizedConfig, resolveDeployProvider, }: CloudflareBuilderEnvironmentsOptions): Record<string, EnvironmentConfig>;
99
+ export declare function getCloudflareBuilderEnvironments({ appContext, environments, normalizedConfig, }: CloudflareBuilderEnvironmentsOptions): Record<string, EnvironmentConfig>;
58
100
  export declare function applyCloudflareBuilderEnvironments(options: CloudflareBuilderEnvironmentsOptions): CloudflareBuilderEnvironmentsResult;
59
- export declare const createCloudflareBuilderPlugin: (resolveDeployProvider?: ResolveCloudflareDeployProvider) => CloudflareBuilderPlugin;
101
+ export declare const createCloudflareBuilderPlugin: () => CloudflareBuilderPlugin;
102
+ export {};