@bleedingdev/modern-js-plugin-bff 3.5.0-ultramodern.30 → 3.5.0-ultramodern.31

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 (292) hide show
  1. package/dist/cjs/cli/compress.js +52 -0
  2. package/dist/cjs/cli/generator.js +149 -0
  3. package/dist/cjs/cli/prefix.js +50 -0
  4. package/dist/cjs/cli/watch.js +51 -0
  5. package/dist/cjs/cli.js +11 -130
  6. package/dist/cjs/runtime/data-platform/batch/queue.js +287 -0
  7. package/dist/cjs/runtime/data-platform/batch/request.js +98 -0
  8. package/dist/cjs/runtime/data-platform/batch/response.js +67 -0
  9. package/dist/cjs/runtime/data-platform/batch/telemetry.js +67 -0
  10. package/dist/cjs/runtime/data-platform/batch/url.js +69 -0
  11. package/dist/cjs/runtime/data-platform/batch-transport.js +59 -0
  12. package/dist/cjs/runtime/data-platform/codec.js +155 -0
  13. package/dist/cjs/runtime/data-platform/index.js +30 -633
  14. package/dist/cjs/runtime/data-platform/invalidation.js +61 -0
  15. package/dist/cjs/runtime/data-platform/trace.js +73 -0
  16. package/dist/cjs/runtime/data-platform/types.js +48 -0
  17. package/dist/cjs/runtime/data-platform/validation.js +178 -0
  18. package/dist/cjs/runtime/effect/adapter/constants.js +44 -0
  19. package/dist/cjs/runtime/effect/adapter/cross-project-policy.js +61 -0
  20. package/dist/cjs/runtime/effect/adapter/entry.js +77 -0
  21. package/dist/cjs/runtime/effect/adapter/error-response.js +79 -0
  22. package/dist/cjs/runtime/effect/adapter/handler.js +53 -0
  23. package/dist/cjs/runtime/effect/adapter.js +12 -115
  24. package/dist/cjs/runtime/effect/backend-federation/entry.js +99 -0
  25. package/dist/cjs/runtime/effect/backend-federation/load.js +57 -0
  26. package/dist/cjs/runtime/effect/backend-federation/plugin.js +53 -0
  27. package/dist/cjs/runtime/effect/backend-federation/remotes.js +50 -0
  28. package/dist/cjs/runtime/effect/backend-federation/runtime.js +64 -0
  29. package/dist/cjs/runtime/effect/backend-federation/types.js +18 -0
  30. package/dist/cjs/runtime/effect/backend-federation/utils.js +48 -0
  31. package/dist/cjs/runtime/effect/backend-federation-manifest/errors.js +83 -0
  32. package/dist/cjs/runtime/effect/backend-federation-manifest/index.js +55 -0
  33. package/dist/cjs/runtime/effect/backend-federation-manifest/load.js +74 -0
  34. package/dist/cjs/runtime/effect/backend-federation-manifest/metadata.js +101 -0
  35. package/dist/cjs/runtime/effect/backend-federation-manifest/reference.js +117 -0
  36. package/dist/cjs/runtime/effect/backend-federation-manifest/remote.js +68 -0
  37. package/dist/cjs/runtime/effect/backend-federation-manifest/types.js +18 -0
  38. package/dist/cjs/runtime/effect/backend-federation-manifest/validation.js +108 -0
  39. package/dist/cjs/runtime/effect/backend-federation-manifest.js +32 -257
  40. package/dist/cjs/runtime/effect/backend-federation.js +11 -139
  41. package/dist/cjs/runtime/effect/handler/batch-handler.js +161 -0
  42. package/dist/cjs/runtime/effect/handler/batch.js +195 -0
  43. package/dist/cjs/runtime/effect/handler/definition.js +101 -0
  44. package/dist/cjs/runtime/effect/handler/envelope.js +104 -0
  45. package/dist/cjs/runtime/effect/handler/http.js +96 -0
  46. package/dist/cjs/runtime/effect/handler/openapi.js +57 -0
  47. package/dist/cjs/runtime/effect/handler/routing.js +100 -0
  48. package/dist/cjs/runtime/effect/handler/rpc.js +63 -0
  49. package/dist/cjs/runtime/effect/handler/types.js +43 -0
  50. package/dist/cjs/runtime/effect/handler.js +35 -526
  51. package/dist/cjs/runtime/effect/rpcSerialization.js +54 -0
  52. package/dist/cjs/runtime/effect-client/batch.js +73 -0
  53. package/dist/cjs/runtime/effect-client/envelope.js +145 -0
  54. package/dist/cjs/runtime/effect-client/guards.js +44 -0
  55. package/dist/cjs/runtime/effect-client/index.js +6 -16
  56. package/dist/cjs/runtime/effect-client/request-context.js +64 -0
  57. package/dist/cjs/runtime/effect-client/request.js +66 -0
  58. package/dist/cjs/runtime/effect-client/runtime.js +12 -178
  59. package/dist/cjs/runtime/effect-client/types.js +18 -0
  60. package/dist/cjs/runtime/safe-failure.js +2 -1
  61. package/dist/cjs/utils/client-generator/files.js +152 -0
  62. package/dist/cjs/utils/client-generator/generate.js +138 -0
  63. package/dist/cjs/utils/client-generator/index.js +83 -0
  64. package/dist/cjs/utils/client-generator/package-json.js +132 -0
  65. package/dist/cjs/utils/client-generator/write-package.js +125 -0
  66. package/dist/cjs/utils/clientGenerator.js +26 -303
  67. package/dist/cjs/utils/effect-client-generator/generator.js +64 -0
  68. package/dist/cjs/utils/effect-client-generator/index.js +51 -0
  69. package/dist/cjs/utils/effect-client-generator/paths.js +73 -0
  70. package/dist/cjs/utils/effect-client-generator/rendering.js +231 -0
  71. package/dist/cjs/utils/effect-client-generator/runtime.js +84 -0
  72. package/dist/cjs/utils/effect-client-generator/types.js +18 -0
  73. package/dist/cjs/utils/effectClientGenerator.js +5 -262
  74. package/dist/esm/cli/compress.mjs +14 -0
  75. package/dist/esm/cli/generator.mjs +98 -0
  76. package/dist/esm/cli/prefix.mjs +9 -0
  77. package/dist/esm/cli/watch.mjs +13 -0
  78. package/dist/esm/cli.mjs +7 -121
  79. package/dist/esm/runtime/data-platform/batch/queue.mjs +246 -0
  80. package/dist/esm/runtime/data-platform/batch/request.mjs +45 -0
  81. package/dist/esm/runtime/data-platform/batch/response.mjs +23 -0
  82. package/dist/esm/runtime/data-platform/batch/telemetry.mjs +23 -0
  83. package/dist/esm/runtime/data-platform/batch/url.mjs +25 -0
  84. package/dist/esm/runtime/data-platform/batch-transport.mjs +12 -0
  85. package/dist/esm/runtime/data-platform/codec.mjs +90 -0
  86. package/dist/esm/runtime/data-platform/index.mjs +6 -610
  87. package/dist/esm/runtime/data-platform/invalidation.mjs +20 -0
  88. package/dist/esm/runtime/data-platform/trace.mjs +29 -0
  89. package/dist/esm/runtime/data-platform/types.mjs +4 -0
  90. package/dist/esm/runtime/data-platform/validation.mjs +128 -0
  91. package/dist/esm/runtime/effect/adapter/constants.mjs +6 -0
  92. package/dist/esm/runtime/effect/adapter/cross-project-policy.mjs +23 -0
  93. package/dist/esm/runtime/effect/adapter/entry.mjs +29 -0
  94. package/dist/esm/runtime/effect/adapter/error-response.mjs +41 -0
  95. package/dist/esm/runtime/effect/adapter/handler.mjs +15 -0
  96. package/dist/esm/runtime/effect/adapter.mjs +12 -105
  97. package/dist/esm/runtime/effect/backend-federation/entry.mjs +61 -0
  98. package/dist/esm/runtime/effect/backend-federation/load.mjs +19 -0
  99. package/dist/esm/runtime/effect/backend-federation/plugin.mjs +15 -0
  100. package/dist/esm/runtime/effect/backend-federation/remotes.mjs +12 -0
  101. package/dist/esm/runtime/effect/backend-federation/runtime.mjs +26 -0
  102. package/dist/esm/runtime/effect/backend-federation/types.mjs +0 -0
  103. package/dist/esm/runtime/effect/backend-federation/utils.mjs +7 -0
  104. package/dist/esm/runtime/effect/backend-federation-manifest/errors.mjs +32 -0
  105. package/dist/esm/runtime/effect/backend-federation-manifest/index.mjs +4 -0
  106. package/dist/esm/runtime/effect/backend-federation-manifest/load.mjs +36 -0
  107. package/dist/esm/runtime/effect/backend-federation-manifest/metadata.mjs +42 -0
  108. package/dist/esm/runtime/effect/backend-federation-manifest/reference.mjs +76 -0
  109. package/dist/esm/runtime/effect/backend-federation-manifest/remote.mjs +30 -0
  110. package/dist/esm/runtime/effect/backend-federation-manifest/types.mjs +0 -0
  111. package/dist/esm/runtime/effect/backend-federation-manifest/validation.mjs +64 -0
  112. package/dist/esm/runtime/effect/backend-federation-manifest.mjs +1 -237
  113. package/dist/esm/runtime/effect/backend-federation.mjs +4 -132
  114. package/dist/esm/runtime/effect/handler/batch-handler.mjs +123 -0
  115. package/dist/esm/runtime/effect/handler/batch.mjs +124 -0
  116. package/dist/esm/runtime/effect/handler/definition.mjs +60 -0
  117. package/dist/esm/runtime/effect/handler/envelope.mjs +63 -0
  118. package/dist/esm/runtime/effect/handler/http.mjs +58 -0
  119. package/dist/esm/runtime/effect/handler/openapi.mjs +19 -0
  120. package/dist/esm/runtime/effect/handler/routing.mjs +50 -0
  121. package/dist/esm/runtime/effect/handler/rpc.mjs +22 -0
  122. package/dist/esm/runtime/effect/handler/types.mjs +5 -0
  123. package/dist/esm/runtime/effect/handler.mjs +7 -499
  124. package/dist/esm/runtime/effect/rpcSerialization.mjs +16 -0
  125. package/dist/esm/runtime/effect-client/batch.mjs +35 -0
  126. package/dist/esm/runtime/effect-client/envelope.mjs +104 -0
  127. package/dist/esm/runtime/effect-client/guards.mjs +3 -0
  128. package/dist/esm/runtime/effect-client/index.mjs +5 -15
  129. package/dist/esm/runtime/effect-client/request-context.mjs +23 -0
  130. package/dist/esm/runtime/effect-client/request.mjs +28 -0
  131. package/dist/esm/runtime/effect-client/runtime.mjs +12 -178
  132. package/dist/esm/runtime/effect-client/types.mjs +0 -0
  133. package/dist/esm/runtime/safe-failure.mjs +2 -1
  134. package/dist/esm/utils/client-generator/files.mjs +68 -0
  135. package/dist/esm/utils/client-generator/generate.mjs +88 -0
  136. package/dist/esm/utils/client-generator/index.mjs +4 -0
  137. package/dist/esm/utils/client-generator/package-json.mjs +78 -0
  138. package/dist/esm/utils/client-generator/write-package.mjs +74 -0
  139. package/dist/esm/utils/clientGenerator.mjs +2 -293
  140. package/dist/esm/utils/effect-client-generator/generator.mjs +23 -0
  141. package/dist/esm/utils/effect-client-generator/index.mjs +3 -0
  142. package/dist/esm/utils/effect-client-generator/paths.mjs +25 -0
  143. package/dist/esm/utils/effect-client-generator/rendering.mjs +180 -0
  144. package/dist/esm/utils/effect-client-generator/runtime.mjs +33 -0
  145. package/dist/esm/utils/effect-client-generator/types.mjs +0 -0
  146. package/dist/esm/utils/effectClientGenerator.mjs +1 -249
  147. package/dist/esm-node/cli/compress.mjs +15 -0
  148. package/dist/esm-node/cli/generator.mjs +99 -0
  149. package/dist/esm-node/cli/prefix.mjs +10 -0
  150. package/dist/esm-node/cli/watch.mjs +14 -0
  151. package/dist/esm-node/cli.mjs +7 -121
  152. package/dist/esm-node/runtime/data-platform/batch/queue.mjs +247 -0
  153. package/dist/esm-node/runtime/data-platform/batch/request.mjs +46 -0
  154. package/dist/esm-node/runtime/data-platform/batch/response.mjs +24 -0
  155. package/dist/esm-node/runtime/data-platform/batch/telemetry.mjs +24 -0
  156. package/dist/esm-node/runtime/data-platform/batch/url.mjs +26 -0
  157. package/dist/esm-node/runtime/data-platform/batch-transport.mjs +13 -0
  158. package/dist/esm-node/runtime/data-platform/codec.mjs +91 -0
  159. package/dist/esm-node/runtime/data-platform/index.mjs +6 -610
  160. package/dist/esm-node/runtime/data-platform/invalidation.mjs +21 -0
  161. package/dist/esm-node/runtime/data-platform/trace.mjs +30 -0
  162. package/dist/esm-node/runtime/data-platform/types.mjs +5 -0
  163. package/dist/esm-node/runtime/data-platform/validation.mjs +129 -0
  164. package/dist/esm-node/runtime/effect/adapter/constants.mjs +7 -0
  165. package/dist/esm-node/runtime/effect/adapter/cross-project-policy.mjs +24 -0
  166. package/dist/esm-node/runtime/effect/adapter/entry.mjs +30 -0
  167. package/dist/esm-node/runtime/effect/adapter/error-response.mjs +42 -0
  168. package/dist/esm-node/runtime/effect/adapter/handler.mjs +16 -0
  169. package/dist/esm-node/runtime/effect/adapter.mjs +12 -105
  170. package/dist/esm-node/runtime/effect/backend-federation/entry.mjs +62 -0
  171. package/dist/esm-node/runtime/effect/backend-federation/load.mjs +20 -0
  172. package/dist/esm-node/runtime/effect/backend-federation/plugin.mjs +16 -0
  173. package/dist/esm-node/runtime/effect/backend-federation/remotes.mjs +13 -0
  174. package/dist/esm-node/runtime/effect/backend-federation/runtime.mjs +27 -0
  175. package/dist/esm-node/runtime/effect/backend-federation/types.mjs +1 -0
  176. package/dist/esm-node/runtime/effect/backend-federation/utils.mjs +8 -0
  177. package/dist/esm-node/runtime/effect/backend-federation-manifest/errors.mjs +33 -0
  178. package/dist/esm-node/runtime/effect/backend-federation-manifest/index.mjs +5 -0
  179. package/dist/esm-node/runtime/effect/backend-federation-manifest/load.mjs +37 -0
  180. package/dist/esm-node/runtime/effect/backend-federation-manifest/metadata.mjs +43 -0
  181. package/dist/esm-node/runtime/effect/backend-federation-manifest/reference.mjs +77 -0
  182. package/dist/esm-node/runtime/effect/backend-federation-manifest/remote.mjs +31 -0
  183. package/dist/esm-node/runtime/effect/backend-federation-manifest/types.mjs +1 -0
  184. package/dist/esm-node/runtime/effect/backend-federation-manifest/validation.mjs +65 -0
  185. package/dist/esm-node/runtime/effect/backend-federation-manifest.mjs +1 -237
  186. package/dist/esm-node/runtime/effect/backend-federation.mjs +4 -132
  187. package/dist/esm-node/runtime/effect/handler/batch-handler.mjs +124 -0
  188. package/dist/esm-node/runtime/effect/handler/batch.mjs +125 -0
  189. package/dist/esm-node/runtime/effect/handler/definition.mjs +61 -0
  190. package/dist/esm-node/runtime/effect/handler/envelope.mjs +64 -0
  191. package/dist/esm-node/runtime/effect/handler/http.mjs +59 -0
  192. package/dist/esm-node/runtime/effect/handler/openapi.mjs +20 -0
  193. package/dist/esm-node/runtime/effect/handler/routing.mjs +51 -0
  194. package/dist/esm-node/runtime/effect/handler/rpc.mjs +23 -0
  195. package/dist/esm-node/runtime/effect/handler/types.mjs +6 -0
  196. package/dist/esm-node/runtime/effect/handler.mjs +7 -499
  197. package/dist/esm-node/runtime/effect/rpcSerialization.mjs +17 -0
  198. package/dist/esm-node/runtime/effect-client/batch.mjs +36 -0
  199. package/dist/esm-node/runtime/effect-client/envelope.mjs +105 -0
  200. package/dist/esm-node/runtime/effect-client/guards.mjs +4 -0
  201. package/dist/esm-node/runtime/effect-client/index.mjs +5 -15
  202. package/dist/esm-node/runtime/effect-client/request-context.mjs +24 -0
  203. package/dist/esm-node/runtime/effect-client/request.mjs +29 -0
  204. package/dist/esm-node/runtime/effect-client/runtime.mjs +12 -178
  205. package/dist/esm-node/runtime/effect-client/types.mjs +1 -0
  206. package/dist/esm-node/runtime/safe-failure.mjs +2 -1
  207. package/dist/esm-node/utils/client-generator/files.mjs +69 -0
  208. package/dist/esm-node/utils/client-generator/generate.mjs +89 -0
  209. package/dist/esm-node/utils/client-generator/index.mjs +5 -0
  210. package/dist/esm-node/utils/client-generator/package-json.mjs +79 -0
  211. package/dist/esm-node/utils/client-generator/write-package.mjs +75 -0
  212. package/dist/esm-node/utils/clientGenerator.mjs +2 -293
  213. package/dist/esm-node/utils/effect-client-generator/generator.mjs +24 -0
  214. package/dist/esm-node/utils/effect-client-generator/index.mjs +4 -0
  215. package/dist/esm-node/utils/effect-client-generator/paths.mjs +26 -0
  216. package/dist/esm-node/utils/effect-client-generator/rendering.mjs +181 -0
  217. package/dist/esm-node/utils/effect-client-generator/runtime.mjs +35 -0
  218. package/dist/esm-node/utils/effect-client-generator/types.mjs +1 -0
  219. package/dist/esm-node/utils/effectClientGenerator.mjs +2 -251
  220. package/dist/types/cli/compress.d.ts +2 -0
  221. package/dist/types/cli/generator.d.ts +7 -0
  222. package/dist/types/cli/prefix.d.ts +2 -0
  223. package/dist/types/cli/watch.d.ts +1 -0
  224. package/dist/types/cli.d.ts +0 -1
  225. package/dist/types/runtime/data-platform/batch/queue.d.ts +25 -0
  226. package/dist/types/runtime/data-platform/batch/request.d.ts +13 -0
  227. package/dist/types/runtime/data-platform/batch/response.d.ts +4 -0
  228. package/dist/types/runtime/data-platform/batch/telemetry.d.ts +4 -0
  229. package/dist/types/runtime/data-platform/batch/url.d.ts +4 -0
  230. package/dist/types/runtime/data-platform/batch-transport.d.ts +3 -0
  231. package/dist/types/runtime/data-platform/codec.d.ts +17 -0
  232. package/dist/types/runtime/data-platform/index.d.ts +7 -191
  233. package/dist/types/runtime/data-platform/invalidation.d.ts +8 -0
  234. package/dist/types/runtime/data-platform/trace.d.ts +4 -0
  235. package/dist/types/runtime/data-platform/types.d.ts +146 -0
  236. package/dist/types/runtime/data-platform/validation.d.ts +29 -0
  237. package/dist/types/runtime/effect/adapter/constants.d.ts +1 -0
  238. package/dist/types/runtime/effect/adapter/cross-project-policy.d.ts +4 -0
  239. package/dist/types/runtime/effect/adapter/entry.d.ts +2 -0
  240. package/dist/types/runtime/effect/adapter/error-response.d.ts +2 -0
  241. package/dist/types/runtime/effect/adapter/handler.d.ts +4 -0
  242. package/dist/types/runtime/effect/adapter.d.ts +4 -13
  243. package/dist/types/runtime/effect/backend-federation/entry.d.ts +2 -0
  244. package/dist/types/runtime/effect/backend-federation/load.d.ts +2 -0
  245. package/dist/types/runtime/effect/backend-federation/plugin.d.ts +3 -0
  246. package/dist/types/runtime/effect/backend-federation/remotes.d.ts +2 -0
  247. package/dist/types/runtime/effect/backend-federation/runtime.d.ts +3 -0
  248. package/dist/types/runtime/effect/backend-federation/types.d.ts +58 -0
  249. package/dist/types/runtime/effect/backend-federation/utils.d.ts +2 -0
  250. package/dist/types/runtime/effect/backend-federation-manifest/errors.d.ts +11 -0
  251. package/dist/types/runtime/effect/backend-federation-manifest/index.d.ts +6 -0
  252. package/dist/types/runtime/effect/backend-federation-manifest/load.d.ts +3 -0
  253. package/dist/types/runtime/effect/backend-federation-manifest/metadata.d.ts +18 -0
  254. package/dist/types/runtime/effect/backend-federation-manifest/reference.d.ts +3 -0
  255. package/dist/types/runtime/effect/backend-federation-manifest/remote.d.ts +3 -0
  256. package/dist/types/runtime/effect/backend-federation-manifest/types.d.ts +51 -0
  257. package/dist/types/runtime/effect/backend-federation-manifest/validation.d.ts +5 -0
  258. package/dist/types/runtime/effect/backend-federation-manifest.d.ts +1 -60
  259. package/dist/types/runtime/effect/backend-federation.d.ts +6 -60
  260. package/dist/types/runtime/effect/handler/batch-handler.d.ts +11 -0
  261. package/dist/types/runtime/effect/handler/batch.d.ts +17 -0
  262. package/dist/types/runtime/effect/handler/definition.d.ts +17 -0
  263. package/dist/types/runtime/effect/handler/envelope.d.ts +13 -0
  264. package/dist/types/runtime/effect/handler/http.d.ts +14 -0
  265. package/dist/types/runtime/effect/handler/openapi.d.ts +4 -0
  266. package/dist/types/runtime/effect/handler/routing.d.ts +5 -0
  267. package/dist/types/runtime/effect/handler/rpc.d.ts +7 -0
  268. package/dist/types/runtime/effect/handler/types.d.ts +148 -0
  269. package/dist/types/runtime/effect/handler.d.ts +3 -173
  270. package/dist/types/runtime/effect/rpcSerialization.d.ts +3 -0
  271. package/dist/types/runtime/effect-client/batch.d.ts +2 -0
  272. package/dist/types/runtime/effect-client/envelope.d.ts +15 -0
  273. package/dist/types/runtime/effect-client/guards.d.ts +2 -0
  274. package/dist/types/runtime/effect-client/request-context.d.ts +3 -0
  275. package/dist/types/runtime/effect-client/request.d.ts +1 -0
  276. package/dist/types/runtime/effect-client/runtime.d.ts +2 -68
  277. package/dist/types/runtime/effect-client/types.d.ts +68 -0
  278. package/dist/types/utils/client-generator/files.d.ts +28 -0
  279. package/dist/types/utils/client-generator/generate.d.ts +26 -0
  280. package/dist/types/utils/client-generator/index.d.ts +7 -0
  281. package/dist/types/utils/client-generator/package-json.d.ts +16 -0
  282. package/dist/types/utils/client-generator/write-package.d.ts +6 -0
  283. package/dist/types/utils/clientGenerator.d.ts +2 -37
  284. package/dist/types/utils/crossProjectServerPolicy.d.ts +3 -2
  285. package/dist/types/utils/effect-client-generator/generator.d.ts +10 -0
  286. package/dist/types/utils/effect-client-generator/index.d.ts +4 -0
  287. package/dist/types/utils/effect-client-generator/paths.d.ts +5 -0
  288. package/dist/types/utils/effect-client-generator/rendering.d.ts +4 -0
  289. package/dist/types/utils/effect-client-generator/runtime.d.ts +8 -0
  290. package/dist/types/utils/effect-client-generator/types.d.ts +26 -0
  291. package/dist/types/utils/effectClientGenerator.d.ts +2 -41
  292. package/package.json +12 -12
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Data-platform envelope (`x-modernjs-data-envelope`): the TRANSPORT/CACHE
3
+ * contract of the effect lane — protocol versioning, cache scope keys,
4
+ * selection plans, batching and hydration checksums.
5
+ *
6
+ * Boundary note (one envelope system per concern): cross-project
7
+ * AUTHORIZATION is the bff-core policy's job (`x-modernjs-bff-envelope` +
8
+ * operation contracts, evaluated server-side in both the hono and effect
9
+ * lanes). Nothing in this module is a trust boundary; treat every value
10
+ * here as client-asserted cache metadata.
11
+ */
12
+ export type DataRequestMode = 'cache-first' | 'stale-while-revalidate' | 'network-only';
13
+ export type DataMutationMode = 'optimistic' | 'pessimistic' | 'fire-and-forget';
14
+ export type SelectionPlan = {
15
+ [field: string]: true | SelectionPlan;
16
+ };
17
+ export interface OperationDescriptor {
18
+ appNamespace: string;
19
+ apiId: string;
20
+ group: string;
21
+ endpoint: string;
22
+ schemaHash?: string;
23
+ version?: number;
24
+ }
25
+ export interface CacheScope {
26
+ appNamespace: string;
27
+ origin: string;
28
+ tenantId?: string;
29
+ userId?: string;
30
+ sessionId?: string;
31
+ }
32
+ export interface TraceContext {
33
+ traceId: string;
34
+ spanId: string;
35
+ sampled: boolean;
36
+ parentSpanId?: string;
37
+ }
38
+ export interface RequestEnvelope<Input = unknown> {
39
+ protocolVersion: 1;
40
+ operationId: string;
41
+ appNamespace: string;
42
+ origin: string;
43
+ requestMode: DataRequestMode;
44
+ mutationMode?: DataMutationMode;
45
+ scopeKey: string;
46
+ input: Input;
47
+ inputHash: string;
48
+ selectionPlan?: SelectionPlan;
49
+ selectionHash?: string;
50
+ traceparent?: string;
51
+ timestamp: number;
52
+ }
53
+ export interface HydrationEnvelope<Payload = unknown> {
54
+ protocolVersion: 1;
55
+ runtimeVersion: string;
56
+ appNamespace: string;
57
+ origin: string;
58
+ createdAt: number;
59
+ payload: Payload;
60
+ checksum: string;
61
+ }
62
+ export interface InvalidationEvent {
63
+ sourceNamespace: string;
64
+ sourceOperationId: string;
65
+ scopeKey: string;
66
+ targetNamespaces?: string[];
67
+ targetOperationIds?: string[];
68
+ }
69
+ export interface InvalidationSubscriber {
70
+ namespace: string;
71
+ operationIds?: string[];
72
+ scopeKey?: string;
73
+ acceptCrossNamespace?: boolean;
74
+ }
75
+ export interface DataBatchRequestItem {
76
+ id: string;
77
+ path: string;
78
+ method: string;
79
+ headers?: Record<string, string>;
80
+ body?: string;
81
+ }
82
+ export interface DataBatchRequestPayload {
83
+ protocolVersion: 1;
84
+ batchId: string;
85
+ sentAt: number;
86
+ items: DataBatchRequestItem[];
87
+ }
88
+ export interface DataBatchResponseItem {
89
+ id: string;
90
+ status: number;
91
+ headers?: Record<string, string>;
92
+ body?: string;
93
+ }
94
+ export interface DataBatchResponsePayload {
95
+ protocolVersion: 1;
96
+ batchId: string;
97
+ receivedAt: number;
98
+ items: DataBatchResponseItem[];
99
+ }
100
+ export interface DataBatchTransportEvent {
101
+ type: 'enqueue' | 'flush' | 'fallback' | 'disable';
102
+ endpoint: string;
103
+ batchId?: string;
104
+ size?: number;
105
+ reason?: string;
106
+ }
107
+ export type DataBatchTransportTelemetryAttributes = Record<string, string | number | boolean>;
108
+ export interface DataBatchTransportOptions {
109
+ endpoint?: string;
110
+ fetch?: (input: DataTransportRequestInfo, init?: RequestInit) => Promise<Response>;
111
+ flushIntervalMs?: number;
112
+ maxBatchSize?: number;
113
+ maxBatchBytes?: number;
114
+ requestTimeoutMs?: number;
115
+ allowedMethods?: string[];
116
+ onEvent?: (event: DataBatchTransportEvent) => void;
117
+ }
118
+ export interface SelectionPlanValidationOptions {
119
+ maxDepth?: number;
120
+ maxFields?: number;
121
+ allowedLeafPaths?: ReadonlyArray<string>;
122
+ }
123
+ export interface SelectionPlanValidationResult {
124
+ ok: boolean;
125
+ errors: string[];
126
+ stats: {
127
+ maxDepth: number;
128
+ fieldCount: number;
129
+ };
130
+ }
131
+ export interface RequestEnvelopeValidationOptions {
132
+ expectedProtocolVersion?: number;
133
+ expectedNamespace?: string;
134
+ expectedOrigin?: string;
135
+ requireTraceContext?: boolean;
136
+ }
137
+ export interface HydrationEnvelopeValidationOptions {
138
+ expectedProtocolVersion?: number;
139
+ expectedNamespace?: string;
140
+ expectedOrigin?: string;
141
+ expectedRuntimeVersion?: string;
142
+ }
143
+ export declare const DEFAULT_DATA_ENVELOPE_HEADER = "x-modernjs-data-envelope";
144
+ export declare const DEFAULT_DATA_BATCH_ENDPOINT = "/_data/batch";
145
+ export declare const DEFAULT_DATA_BATCH_HEADER = "x-modernjs-data-batch";
146
+ export type DataTransportRequestInfo = string | URL | Request;
@@ -0,0 +1,29 @@
1
+ import type { CacheScope, DataMutationMode, DataRequestMode, HydrationEnvelope, HydrationEnvelopeValidationOptions, OperationDescriptor, RequestEnvelope, RequestEnvelopeValidationOptions, SelectionPlan, SelectionPlanValidationOptions, SelectionPlanValidationResult, TraceContext } from './types';
2
+ export declare function validateSelectionPlan(plan: SelectionPlan, options?: SelectionPlanValidationOptions): SelectionPlanValidationResult;
3
+ export declare function createRequestEnvelope<Input>(input: {
4
+ operation: OperationDescriptor;
5
+ scope: CacheScope;
6
+ requestInput: Input;
7
+ selectionPlan?: SelectionPlan;
8
+ requestMode?: DataRequestMode;
9
+ mutationMode?: DataMutationMode;
10
+ traceContext?: TraceContext;
11
+ requireTraceContext?: boolean;
12
+ timestamp?: number;
13
+ protocolVersion?: 1;
14
+ }): RequestEnvelope<Input>;
15
+ export declare function validateRequestEnvelope(envelope: RequestEnvelope, options?: RequestEnvelopeValidationOptions): {
16
+ ok: boolean;
17
+ errors: string[];
18
+ };
19
+ export declare function createHydrationEnvelope<Payload>(input: {
20
+ runtimeVersion: string;
21
+ scope: Pick<CacheScope, 'appNamespace' | 'origin'>;
22
+ payload: Payload;
23
+ createdAt?: number;
24
+ protocolVersion?: 1;
25
+ }): HydrationEnvelope<Payload>;
26
+ export declare function validateHydrationEnvelope(envelope: HydrationEnvelope, options?: HydrationEnvelopeValidationOptions): {
27
+ ok: boolean;
28
+ errors: string[];
29
+ };
@@ -0,0 +1 @@
1
+ export declare const before: string[];
@@ -0,0 +1,4 @@
1
+ import type { ServerPluginAPI } from '@modern-js/server-core';
2
+ import { type ResolvedCrossProjectPolicy } from '../../../utils/crossProjectServerPolicy';
3
+ import type { EffectApiModule } from '../module';
4
+ export declare function resolveEffectAdapterCrossProjectPolicy(api: ServerPluginAPI, prefix: string, mod: EffectApiModule | null): Promise<ResolvedCrossProjectPolicy>;
@@ -0,0 +1,2 @@
1
+ import type { ServerPluginAPI } from '@modern-js/server-core';
2
+ export declare function resolveEffectAdapterEntryFile(api: ServerPluginAPI): string | false | undefined;
@@ -0,0 +1,2 @@
1
+ import type { Context, ServerPluginAPI } from '@modern-js/server-core';
2
+ export declare function createEffectAdapterRuntimeErrorResponse(api: ServerPluginAPI, error: unknown, c: Context): Promise<Response>;
@@ -0,0 +1,4 @@
1
+ import type { ServerPluginAPI } from '@modern-js/server-core';
2
+ import { type ResolvedCrossProjectPolicy } from '../../../utils/crossProjectServerPolicy';
3
+ import { type EffectApiModule } from '../module';
4
+ export declare function loadEffectAdapterHandlerFromModule(api: ServerPluginAPI, mod: EffectApiModule, crossProjectPolicy: ResolvedCrossProjectPolicy | undefined): Promise<import("../module").LoadedEffectBffHandler | null>;
@@ -1,14 +1,14 @@
1
1
  import type { ServerMiddleware, ServerPluginAPI } from '@modern-js/server-core';
2
- import { type ResolvedCrossProjectPolicy } from '../../utils/crossProjectServerPolicy';
2
+ import type { ResolvedCrossProjectPolicy } from '../../utils/crossProjectServerPolicy';
3
3
  interface MiddlewareOptions {
4
4
  prefix: string;
5
5
  enableHandleWeb?: boolean;
6
6
  }
7
7
  export declare class EffectAdapter {
8
- api: ServerPluginAPI;
8
+ private api;
9
9
  isEffect: boolean;
10
- effectMiddleware: ServerMiddleware | null;
11
- crossProjectPolicy: ResolvedCrossProjectPolicy | undefined;
10
+ effectMiddleware?: ServerMiddleware;
11
+ crossProjectPolicy?: ResolvedCrossProjectPolicy;
12
12
  private handler;
13
13
  private dispose;
14
14
  private prefix;
@@ -16,16 +16,7 @@ export declare class EffectAdapter {
16
16
  registerMiddleware: (options: MiddlewareOptions) => Promise<void>;
17
17
  onApiHandlersUpdated: () => Promise<void>;
18
18
  private resolveEntryFile;
19
- /**
20
- * Resolves the cross-project policy from the reflected HttpApi endpoints so
21
- * the expected operation contracts match the hashes the client generators
22
- * stamp into generated SDKs.
23
- */
24
- private refreshCrossProjectPolicy;
25
- private loadEffectHandlerFromModule;
26
19
  private reloadHandler;
27
20
  private disposeCurrentHandler;
28
- private handleRuntimeError;
29
- private ensureJsonContext;
30
21
  }
31
22
  export {};
@@ -0,0 +1,2 @@
1
+ import type { BackendFederationRemote, BackendFederationRuntimeOptions } from './types';
2
+ export declare function loadBackendFederationExpose(remote: BackendFederationRemote, expose: string, options: BackendFederationRuntimeOptions): Promise<unknown>;
@@ -0,0 +1,2 @@
1
+ import type { BackendFederatedEffectApiModule, BackendFederationLoadOptions } from './types';
2
+ export declare function loadBackendFederatedEffectApi(options: BackendFederationLoadOptions): Promise<BackendFederatedEffectApiModule>;
@@ -0,0 +1,3 @@
1
+ import type { ModuleFederationRuntimePlugin } from '@module-federation/runtime';
2
+ import type { BackendFederationLoadEntryPluginOptions } from './types';
3
+ export declare function createBackendFederationLoadEntryPlugin(options: BackendFederationLoadEntryPluginOptions): ModuleFederationRuntimePlugin;
@@ -0,0 +1,2 @@
1
+ import type { BackendFederationRuntimeOptions } from './types';
2
+ export declare function collectRemotes(options: BackendFederationRuntimeOptions): import("./types").BackendFederationRemote[];
@@ -0,0 +1,3 @@
1
+ import type { ModuleFederation } from '@module-federation/runtime';
2
+ import type { BackendFederationRuntimeOptions } from './types';
3
+ export declare function createBackendFederationRuntime(options: BackendFederationRuntimeOptions): ModuleFederation;
@@ -0,0 +1,58 @@
1
+ import type { BACKEND_FEDERATION_EFFECT_EXPOSE } from '@modern-js/utils/universal';
2
+ import type { ModuleFederation, ModuleFederationRuntimePlugin } from '@module-federation/runtime';
3
+ import type { EffectApiModule } from '../module';
4
+ export type BackendFederationRemote = {
5
+ name: string;
6
+ entry: string;
7
+ type?: 'commonjs-module' | 'module' | string;
8
+ entryGlobalName?: string;
9
+ shareScope?: string | string[];
10
+ expose?: typeof BACKEND_FEDERATION_EFFECT_EXPOSE;
11
+ };
12
+ export type BackendFederationRuntimeOptions = {
13
+ hostName: string;
14
+ remote?: BackendFederationRemote;
15
+ remotes?: BackendFederationRemote[];
16
+ plugins?: ModuleFederationRuntimePlugin[];
17
+ };
18
+ export type BackendFederationEntryExports = {
19
+ get: (id: string) => (() => Promise<unknown> | unknown) | Promise<() => Promise<unknown> | unknown>;
20
+ init?: (...args: unknown[]) => void | Promise<void>;
21
+ };
22
+ export type BackendFederatedEffectApiModule = EffectApiModule & {
23
+ backendFederationContract?: {
24
+ compatibility?: {
25
+ build?: unknown;
26
+ contractVersion?: unknown;
27
+ nodeAdapterVersion?: unknown;
28
+ packageName?: unknown;
29
+ /**
30
+ * ADR-0019 delivery-unit identity root, generator-emitted alongside
31
+ * manifest's `versionBoundary.deliveryUnit`. Additive/optional.
32
+ */
33
+ unitId?: unknown;
34
+ /** ADR-0019 delivery-unit source revision. Additive/optional. */
35
+ sourceRevision?: unknown;
36
+ };
37
+ name?: unknown;
38
+ role?: unknown;
39
+ runtimeFramework?: unknown;
40
+ strictEffectApproach?: unknown;
41
+ };
42
+ contract?: unknown;
43
+ operationContexts?: unknown;
44
+ runtime?: unknown;
45
+ };
46
+ export type BackendFederationLoadEntryPluginOptions = {
47
+ resolveEntry: (remote: BackendFederationRemote) => BackendFederationEntryExports | undefined | Promise<BackendFederationEntryExports | undefined>;
48
+ };
49
+ export type BackendFederationLoadOptions = BackendFederationRuntimeOptions & {
50
+ runtime?: ModuleFederation;
51
+ remoteName?: string;
52
+ expose?: string;
53
+ };
54
+ export type BackendFederationLoadEntryPlugin = ModuleFederationRuntimePlugin & {
55
+ loadEntry?: (args: {
56
+ remoteInfo: BackendFederationRemote;
57
+ }) => BackendFederationEntryExports | undefined | Promise<BackendFederationEntryExports | undefined>;
58
+ };
@@ -0,0 +1,2 @@
1
+ export declare function normalizeExpose(expose: string): string;
2
+ export declare function isRecord(value: unknown): value is Record<string, unknown>;
@@ -0,0 +1,11 @@
1
+ export type BackendFederationManifestAdapterErrorCode = 'manifest_unavailable' | 'manifest_invalid' | 'remote_unavailable' | 'strict_effect_required' | 'timeout' | 'version_mismatch';
2
+ export declare const BACKEND_FEDERATION_MANIFEST_ADAPTER_FAILURE_EVENT: 'modernjs:microvertical-server-fallback';
3
+ export declare class BackendFederationManifestAdapterError extends Error {
4
+ code: BackendFederationManifestAdapterErrorCode;
5
+ readonly failureEvent: "modernjs:microvertical-server-fallback";
6
+ details?: Record<string, unknown>;
7
+ constructor(code: BackendFederationManifestAdapterErrorCode, message: string, cause?: unknown, details?: Record<string, unknown>);
8
+ }
9
+ export declare function assertManifestAdapter(condition: unknown, code: BackendFederationManifestAdapterErrorCode, message: string): asserts condition;
10
+ export declare function assertVersionValue(actual: string | undefined, expected: string | undefined, label: string, details?: Record<string, unknown>): void;
11
+ export declare function assertConsistentValue(left: string | undefined, right: string | undefined, label: string, details?: Record<string, unknown>): void;
@@ -0,0 +1,6 @@
1
+ export type { BackendFederationManifestAdapterErrorCode } from './errors';
2
+ export { BACKEND_FEDERATION_MANIFEST_ADAPTER_FAILURE_EVENT, BackendFederationManifestAdapterError, } from './errors';
3
+ export { loadBackendFederatedEffectApiFromManifest } from './load';
4
+ export { loadBackendFederationManifest } from './reference';
5
+ export { resolveBackendFederationRemoteFromManifest } from './remote';
6
+ export type { BackendFederationManifest, BackendFederationManifestAdapterFallback, BackendFederationManifestAdapterOptions, BackendFederationManifestFetchResponse, BackendFederationVersionBoundaryExpectation, } from './types';
@@ -0,0 +1,3 @@
1
+ import { type BackendFederatedEffectApiModule } from '../backend-federation';
2
+ import type { BackendFederationManifestAdapterOptions } from './types';
3
+ export declare function loadBackendFederatedEffectApiFromManifest(options: BackendFederationManifestAdapterOptions): Promise<BackendFederatedEffectApiModule>;
@@ -0,0 +1,18 @@
1
+ import type { BackendFederationManifest } from './types';
2
+ export declare function stringValue(value: unknown): string | undefined;
3
+ export declare function isRecord(value: unknown): value is Record<string, unknown>;
4
+ export declare function recordField(value: Record<string, unknown> | undefined, field: string): Record<string, unknown> | undefined;
5
+ export declare function resolveRemoteEntryFromMetadata(manifest: BackendFederationManifest): string | undefined;
6
+ export declare function backendFederationMetadata(manifest: BackendFederationManifest): Record<string, unknown> | undefined;
7
+ export declare function versionBoundaryMetadata(manifest: BackendFederationManifest): Record<string, unknown> | undefined;
8
+ export declare function deliveryUnitMetadata(record: Record<string, unknown> | undefined): Record<string, unknown> | undefined;
9
+ /**
10
+ * Resolves the delivery-unit identity root for a manifest (ADR-0019 §3):
11
+ * prefers `versionBoundary.deliveryUnit`, falls back to the top-level
12
+ * `backendFederation.deliveryUnit` record. Both are additive/optional so
13
+ * legacy manifests without delivery-unit metadata continue to validate.
14
+ */
15
+ export declare function manifestDeliveryUnit(backendFederation: Record<string, unknown> | undefined, boundary: Record<string, unknown> | undefined): {
16
+ boundary: Record<string, unknown> | undefined;
17
+ top: Record<string, unknown> | undefined;
18
+ };
@@ -0,0 +1,3 @@
1
+ import type { BackendFederationManifest, BackendFederationManifestAdapterOptions } from './types';
2
+ export declare function withTimeout<T>(promise: Promise<T>, timeoutMs: number | undefined, label: string): Promise<T>;
3
+ export declare function loadBackendFederationManifest(options: Pick<BackendFederationManifestAdapterOptions, 'allowLegacyManifest' | 'env' | 'expected' | 'fetch' | 'manifest' | 'manifestEnv' | 'manifestPath' | 'manifestUrl' | 'timeoutMs'>): Promise<BackendFederationManifest>;
@@ -0,0 +1,3 @@
1
+ import { type BackendFederationRemote } from '../backend-federation';
2
+ import type { BackendFederationManifest } from './types';
3
+ export declare function resolveBackendFederationRemoteFromManifest(manifest: BackendFederationManifest, remoteOverride?: Partial<BackendFederationRemote>): BackendFederationRemote;
@@ -0,0 +1,51 @@
1
+ import type { ModuleFederation, ModuleFederationRuntimePlugin } from '@module-federation/runtime';
2
+ import type { BackendFederatedEffectApiModule, BackendFederationRemote } from '../backend-federation';
3
+ import type { BackendFederationManifestAdapterError } from './errors';
4
+ export type BackendFederationManifest = Record<string, unknown>;
5
+ export type BackendFederationVersionBoundaryExpectation = {
6
+ buildVersion?: string;
7
+ /**
8
+ * Delivery-unit build marker (ADR-0019). Semantically the same value as
9
+ * `buildVersion`; treated as an alias. If both are set and disagree the
10
+ * expectation itself is invalid and fails closed before any manifest
11
+ * comparison runs.
12
+ */
13
+ buildMarker?: string;
14
+ contractVersion?: string;
15
+ nodeAdapterVersion?: string;
16
+ packageName?: string;
17
+ remoteName?: string;
18
+ /**
19
+ * Delivery-unit identity root (ADR-0019 §3). When set, the manifest's
20
+ * `backendFederation.versionBoundary.deliveryUnit.unitId` (or the
21
+ * top-level `backendFederation.deliveryUnit.unitId` fallback) must match.
22
+ */
23
+ unitId?: string;
24
+ version?: string;
25
+ };
26
+ export type BackendFederationManifestFetchResponse = {
27
+ ok: boolean;
28
+ status: number;
29
+ statusText?: string;
30
+ text: () => Promise<string>;
31
+ };
32
+ export type BackendFederationManifestAdapterFallback = (error: BackendFederationManifestAdapterError, context: {
33
+ manifest?: BackendFederationManifest;
34
+ remote?: BackendFederationRemote;
35
+ }) => BackendFederatedEffectApiModule | Promise<BackendFederatedEffectApiModule>;
36
+ export type BackendFederationManifestAdapterOptions = {
37
+ allowLegacyManifest?: boolean;
38
+ env?: Record<string, string | undefined>;
39
+ expected?: BackendFederationVersionBoundaryExpectation;
40
+ fallback?: BackendFederationManifestAdapterFallback;
41
+ fetch?: (url: string) => Promise<BackendFederationManifestFetchResponse>;
42
+ hostName: string;
43
+ manifest?: BackendFederationManifest;
44
+ manifestEnv?: string;
45
+ manifestPath?: string;
46
+ manifestUrl?: string;
47
+ plugins?: ModuleFederationRuntimePlugin[];
48
+ remote?: Partial<BackendFederationRemote>;
49
+ runtime?: ModuleFederation;
50
+ timeoutMs?: number;
51
+ };
@@ -0,0 +1,5 @@
1
+ import { type BackendFederatedEffectApiModule, type BackendFederationRemote } from '../backend-federation';
2
+ import type { BackendFederationManifest, BackendFederationVersionBoundaryExpectation } from './types';
3
+ export declare function validateBackendFederationManifest(manifest: BackendFederationManifest, expected?: BackendFederationVersionBoundaryExpectation): void;
4
+ export declare function validateLoadedBackendFederationContract(loaded: BackendFederatedEffectApiModule, manifest: BackendFederationManifest, remote: BackendFederationRemote): void;
5
+ export declare function classifyLoadError(error: unknown): "remote_unavailable" | "strict_effect_required";
@@ -1,60 +1 @@
1
- import type { ModuleFederation, ModuleFederationRuntimePlugin } from '@module-federation/runtime';
2
- import { type BackendFederatedEffectApiModule, type BackendFederationRemote } from './backend-federation';
3
- export type BackendFederationManifestAdapterErrorCode = 'manifest_unavailable' | 'manifest_invalid' | 'remote_unavailable' | 'strict_effect_required' | 'timeout' | 'version_mismatch';
4
- export declare const BACKEND_FEDERATION_MANIFEST_ADAPTER_FAILURE_EVENT: 'modernjs:microvertical-server-fallback';
5
- export declare class BackendFederationManifestAdapterError extends Error {
6
- code: BackendFederationManifestAdapterErrorCode;
7
- readonly failureEvent: "modernjs:microvertical-server-fallback";
8
- details?: Record<string, unknown>;
9
- constructor(code: BackendFederationManifestAdapterErrorCode, message: string, cause?: unknown, details?: Record<string, unknown>);
10
- }
11
- export type BackendFederationManifest = Record<string, unknown>;
12
- export type BackendFederationVersionBoundaryExpectation = {
13
- buildVersion?: string;
14
- /**
15
- * Delivery-unit build marker (ADR-0019). Semantically the same value as
16
- * `buildVersion`; treated as an alias. If both are set and disagree the
17
- * expectation itself is invalid and fails closed before any manifest
18
- * comparison runs.
19
- */
20
- buildMarker?: string;
21
- contractVersion?: string;
22
- nodeAdapterVersion?: string;
23
- packageName?: string;
24
- remoteName?: string;
25
- /**
26
- * Delivery-unit identity root (ADR-0019 §3). When set, the manifest's
27
- * `backendFederation.versionBoundary.deliveryUnit.unitId` (or the
28
- * top-level `backendFederation.deliveryUnit.unitId` fallback) must match.
29
- */
30
- unitId?: string;
31
- version?: string;
32
- };
33
- export type BackendFederationManifestFetchResponse = {
34
- ok: boolean;
35
- status: number;
36
- statusText?: string;
37
- text: () => Promise<string>;
38
- };
39
- export type BackendFederationManifestAdapterFallback = (error: BackendFederationManifestAdapterError, context: {
40
- manifest?: BackendFederationManifest;
41
- remote?: BackendFederationRemote;
42
- }) => BackendFederatedEffectApiModule | Promise<BackendFederatedEffectApiModule>;
43
- export type BackendFederationManifestAdapterOptions = {
44
- env?: Record<string, string | undefined>;
45
- expected?: BackendFederationVersionBoundaryExpectation;
46
- fallback?: BackendFederationManifestAdapterFallback;
47
- fetch?: (url: string) => Promise<BackendFederationManifestFetchResponse>;
48
- hostName: string;
49
- manifest?: BackendFederationManifest;
50
- manifestEnv?: string;
51
- manifestPath?: string;
52
- manifestUrl?: string;
53
- plugins?: ModuleFederationRuntimePlugin[];
54
- remote?: Partial<BackendFederationRemote>;
55
- runtime?: ModuleFederation;
56
- timeoutMs?: number;
57
- };
58
- export declare function loadBackendFederationManifest(options: Pick<BackendFederationManifestAdapterOptions, 'env' | 'fetch' | 'manifest' | 'manifestEnv' | 'manifestPath' | 'manifestUrl' | 'timeoutMs'>): Promise<BackendFederationManifest>;
59
- export declare function resolveBackendFederationRemoteFromManifest(manifest: BackendFederationManifest, remoteOverride?: Partial<BackendFederationRemote>): BackendFederationRemote;
60
- export declare function loadBackendFederatedEffectApiFromManifest(options: BackendFederationManifestAdapterOptions): Promise<BackendFederatedEffectApiModule>;
1
+ export * from './backend-federation-manifest/index';
@@ -1,60 +1,6 @@
1
- import type { ModuleFederation, ModuleFederationRuntimePlugin } from '@module-federation/runtime';
2
- import type { EffectApiModule } from './module';
3
- export declare const BACKEND_FEDERATION_EFFECT_EXPOSE = "./effect-api";
4
- export declare const BACKEND_FEDERATION_MANIFEST_FILE = "backend-mf-manifest.json";
5
- export declare const BACKEND_FEDERATION_CONTRACT_VERSION = "microvertical-server-effect-v1";
6
- export declare const BACKEND_FEDERATION_NODE_ADAPTER_VERSION = "backend-mf-effect-v1";
7
- export type BackendFederationRemote = {
8
- name: string;
9
- entry: string;
10
- type?: 'commonjs-module' | 'module' | string;
11
- entryGlobalName?: string;
12
- shareScope?: string | string[];
13
- expose?: typeof BACKEND_FEDERATION_EFFECT_EXPOSE;
14
- };
15
- export type BackendFederationRuntimeOptions = {
16
- hostName: string;
17
- remote?: BackendFederationRemote;
18
- remotes?: BackendFederationRemote[];
19
- plugins?: ModuleFederationRuntimePlugin[];
20
- };
21
- export type BackendFederationEntryExports = {
22
- get: (id: string) => (() => Promise<unknown> | unknown) | Promise<() => Promise<unknown> | unknown>;
23
- init?: (...args: unknown[]) => void | Promise<void>;
24
- };
25
- export type BackendFederatedEffectApiModule = EffectApiModule & {
26
- backendFederationContract?: {
27
- compatibility?: {
28
- build?: unknown;
29
- contractVersion?: unknown;
30
- nodeAdapterVersion?: unknown;
31
- packageName?: unknown;
32
- /**
33
- * ADR-0019 delivery-unit identity root, generator-emitted alongside
34
- * the manifest's `versionBoundary.deliveryUnit`. Additive/optional.
35
- */
36
- unitId?: unknown;
37
- /** ADR-0019 delivery-unit source revision. Additive/optional. */
38
- sourceRevision?: unknown;
39
- };
40
- name?: unknown;
41
- role?: unknown;
42
- runtimeFramework?: unknown;
43
- strictEffectApproach?: unknown;
44
- };
45
- contract?: unknown;
46
- operationContexts?: unknown;
47
- runtime?: unknown;
48
- };
49
- export type BackendFederationLoadEntryPluginOptions = {
50
- resolveEntry: (remote: BackendFederationRemote) => BackendFederationEntryExports | undefined | Promise<BackendFederationEntryExports | undefined>;
51
- };
52
- type BackendFederationLoadOptions = BackendFederationRuntimeOptions & {
53
- runtime?: ModuleFederation;
54
- remoteName?: string;
55
- expose?: string;
56
- };
57
- export declare function createBackendFederationRuntime(options: BackendFederationRuntimeOptions): ModuleFederation;
58
- export declare function createBackendFederationLoadEntryPlugin(options: BackendFederationLoadEntryPluginOptions): ModuleFederationRuntimePlugin;
59
- export declare function loadBackendFederatedEffectApi(options: BackendFederationLoadOptions): Promise<BackendFederatedEffectApiModule>;
60
- export {};
1
+ import { BACKEND_FEDERATION_CONTRACT_VERSION, BACKEND_FEDERATION_EFFECT_EXPOSE, BACKEND_FEDERATION_MANIFEST_FILE, BACKEND_FEDERATION_NODE_ADAPTER_VERSION } from '@modern-js/utils/universal';
2
+ export { loadBackendFederatedEffectApi } from './backend-federation/load';
3
+ export { createBackendFederationLoadEntryPlugin } from './backend-federation/plugin';
4
+ export { createBackendFederationRuntime } from './backend-federation/runtime';
5
+ export type { BackendFederatedEffectApiModule, BackendFederationEntryExports, BackendFederationLoadEntryPluginOptions, BackendFederationRemote, BackendFederationRuntimeOptions, } from './backend-federation/types';
6
+ export { BACKEND_FEDERATION_CONTRACT_VERSION, BACKEND_FEDERATION_EFFECT_EXPOSE, BACKEND_FEDERATION_MANIFEST_FILE, BACKEND_FEDERATION_NODE_ADAPTER_VERSION, };
@@ -0,0 +1,11 @@
1
+ import type { EffectDataPlatformValidationOptions } from './types';
2
+ type DataPlatformBatchItemHandler<TContext> = (request: Request, context?: TContext) => Promise<unknown>;
3
+ export declare function createDataPlatformBatchRequestHandler<TContext>(options: {
4
+ dataPlatform?: EffectDataPlatformValidationOptions;
5
+ handleItem: DataPlatformBatchItemHandler<TContext>;
6
+ }): {
7
+ enabled: boolean;
8
+ path: `/${string}`;
9
+ handle: (request: Request, context?: TContext) => Promise<Response>;
10
+ };
11
+ export {};
@@ -0,0 +1,17 @@
1
+ import { type DataBatchRequestPayload, type DataBatchResponseItem } from '../../data-platform';
2
+ export declare function normalizeBatchPath(pathname: string | undefined): `/${string}`;
3
+ export declare function isPlainObject(value: unknown): value is Record<string, unknown>;
4
+ export declare function toTextLength(value: string): number;
5
+ export declare function toHeaderRecord(headers: Headers): Record<string, string>;
6
+ export declare function normalizeItemMethod(method: string | undefined): string;
7
+ export declare function normalizeBatchAllowedMethods(allowedMethods: string[] | undefined): Set<string>;
8
+ type ParsedBatchRequestPayload = Omit<DataBatchRequestPayload, 'items'> & {
9
+ items: unknown[];
10
+ };
11
+ export declare function isBatchRequestPayload(value: unknown): value is ParsedBatchRequestPayload;
12
+ export declare function createBatchValidationResponse(message: string, status?: number): Response;
13
+ export declare function prepareJsonRequestBody(request: Request): Promise<Request | Response>;
14
+ export declare function toBatchItemError(id: string, status: number, message: string): DataBatchResponseItem;
15
+ export declare function promiseWithTimeout<T>(effect: Promise<T>, timeoutMs: number): Promise<T>;
16
+ export declare function mapWithConcurrency<TItem, TResult>(items: readonly TItem[], concurrency: number, mapper: (item: TItem, index: number) => Promise<TResult>): Promise<TResult[]>;
17
+ export {};
@@ -0,0 +1,17 @@
1
+ import type { HttpApi } from 'effect/unstable/httpapi';
2
+ import type { Rpc } from 'effect/unstable/rpc';
3
+ import type { EffectBffRuntime, EffectDataPlatformValidationOptions, EffectRpcBffDefinition, EffectRpcBffHandlerFactory, EffectRpcRuntimeLayer, EffectRuntimeLayer } from './types';
4
+ export declare function defineEffectBff<TApi extends HttpApi.AnyWithProps, TLayer extends EffectRuntimeLayer, TRpcs extends Rpc.Any = Rpc.Any>(definition: {
5
+ api: TApi;
6
+ layer: TLayer;
7
+ rpc?: EffectRpcBffDefinition<TRpcs>;
8
+ dataPlatform?: EffectDataPlatformValidationOptions;
9
+ }): {
10
+ api: TApi;
11
+ layer: TLayer;
12
+ rpc?: EffectRpcBffDefinition<TRpcs>;
13
+ dataPlatform?: EffectDataPlatformValidationOptions;
14
+ } & EffectBffRuntime<TApi, TLayer>;
15
+ export declare function defineEffectRpcBff<TRpcs extends Rpc.Any = Rpc.Any, TLayer extends EffectRpcRuntimeLayer<TRpcs> = EffectRpcRuntimeLayer<TRpcs>>(definition: EffectRpcBffDefinition<TRpcs, TLayer>): EffectRpcBffDefinition<TRpcs, TLayer> & {
16
+ createHandler: EffectRpcBffHandlerFactory<TRpcs>;
17
+ };
@@ -0,0 +1,13 @@
1
+ import type { EffectDataPlatformValidationOptions } from './types';
2
+ /**
3
+ * Validates the `x-modernjs-data-envelope` header (the data-platform
4
+ * transport/cache contract: protocol version, scope, selection plan).
5
+ *
6
+ * This is NOT a security boundary: the envelope is client-constructed cache
7
+ * metadata used for batching, scope keys and hydration. Cross-project
8
+ * authorization runs through the bff-core policy evaluator wired in via
9
+ * `validateRequest` (see `EffectRequestValidator`), which both the direct
10
+ * and batched request paths hit before this check.
11
+ */
12
+ export declare function validateDataPlatformRequestEnvelope(request: Request, options: EffectDataPlatformValidationOptions | undefined): Response | null;
13
+ export declare function mergeDataPlatformOptions(base: EffectDataPlatformValidationOptions | undefined, override: Partial<EffectDataPlatformValidationOptions> | undefined): EffectDataPlatformValidationOptions | undefined;