@bleedingdev/modern-js-plugin-bff 3.5.0-ultramodern.6 → 3.5.0-ultramodern.76

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 (332) hide show
  1. package/dist/cjs/cli/compress.js +52 -0
  2. package/dist/cjs/cli/generator.js +152 -0
  3. package/dist/cjs/cli/prefix.js +50 -0
  4. package/dist/cjs/cli/serverGlobalVars.js +127 -0
  5. package/dist/cjs/cli/watch.js +51 -0
  6. package/dist/cjs/cli.js +11 -130
  7. package/dist/cjs/loader.js +19 -2
  8. package/dist/cjs/runtime/data-platform/batch/queue.js +284 -0
  9. package/dist/cjs/runtime/data-platform/batch/request.js +98 -0
  10. package/dist/cjs/runtime/data-platform/batch/response.js +64 -0
  11. package/dist/cjs/runtime/data-platform/batch/telemetry.js +67 -0
  12. package/dist/cjs/runtime/data-platform/batch/url.js +69 -0
  13. package/dist/cjs/runtime/data-platform/batch-transport.js +59 -0
  14. package/dist/cjs/runtime/data-platform/codec.js +155 -0
  15. package/dist/cjs/runtime/data-platform/index.js +30 -633
  16. package/dist/cjs/runtime/data-platform/invalidation.js +61 -0
  17. package/dist/cjs/runtime/data-platform/trace.js +73 -0
  18. package/dist/cjs/runtime/data-platform/types.js +48 -0
  19. package/dist/cjs/runtime/data-platform/validation.js +178 -0
  20. package/dist/cjs/runtime/effect/adapter/constants.js +44 -0
  21. package/dist/cjs/runtime/effect/adapter/cross-project-policy.js +61 -0
  22. package/dist/cjs/runtime/effect/adapter/entry.js +92 -0
  23. package/dist/cjs/runtime/effect/adapter/error-response.js +79 -0
  24. package/dist/cjs/runtime/effect/adapter/handler.js +53 -0
  25. package/dist/cjs/runtime/effect/adapter.js +26 -146
  26. package/dist/cjs/runtime/effect/backend-federation/entry.js +99 -0
  27. package/dist/cjs/runtime/effect/backend-federation/identity.js +82 -0
  28. package/dist/cjs/runtime/effect/backend-federation/load.js +66 -0
  29. package/dist/cjs/runtime/effect/backend-federation/plugin.js +53 -0
  30. package/dist/cjs/runtime/effect/backend-federation/remotes.js +50 -0
  31. package/dist/cjs/runtime/effect/backend-federation/runtime.js +64 -0
  32. package/dist/cjs/runtime/effect/backend-federation/types.js +18 -0
  33. package/dist/cjs/runtime/effect/backend-federation/utils.js +48 -0
  34. package/dist/cjs/runtime/effect/backend-federation-manifest/errors.js +83 -0
  35. package/dist/cjs/runtime/effect/backend-federation-manifest/index.js +55 -0
  36. package/dist/cjs/runtime/effect/backend-federation-manifest/load.js +94 -0
  37. package/dist/cjs/runtime/effect/backend-federation-manifest/metadata.js +101 -0
  38. package/dist/cjs/runtime/effect/backend-federation-manifest/reference.js +120 -0
  39. package/dist/cjs/runtime/effect/backend-federation-manifest/remote.js +68 -0
  40. package/dist/cjs/runtime/effect/backend-federation-manifest/types.js +18 -0
  41. package/dist/cjs/runtime/effect/backend-federation-manifest/validation.js +109 -0
  42. package/dist/cjs/runtime/effect/backend-federation-manifest.js +62 -0
  43. package/dist/cjs/runtime/effect/backend-federation.js +65 -0
  44. package/dist/cjs/runtime/effect/dispatch.js +101 -0
  45. package/dist/cjs/runtime/effect/edge.js +64 -71
  46. package/dist/cjs/runtime/effect/endpoint-contracts.js +7 -21
  47. package/dist/cjs/runtime/effect/entry-shape.js +84 -0
  48. package/dist/cjs/runtime/effect/handler/batch-handler.js +161 -0
  49. package/dist/cjs/runtime/effect/handler/batch.js +195 -0
  50. package/dist/cjs/runtime/effect/handler/definition.js +101 -0
  51. package/dist/cjs/runtime/effect/handler/envelope.js +104 -0
  52. package/dist/cjs/runtime/effect/handler/http.js +96 -0
  53. package/dist/cjs/runtime/effect/handler/openapi.js +57 -0
  54. package/dist/cjs/runtime/effect/handler/routing.js +100 -0
  55. package/dist/cjs/runtime/effect/handler/rpc.js +63 -0
  56. package/dist/cjs/runtime/effect/handler/types.js +43 -0
  57. package/dist/cjs/runtime/effect/handler.js +37 -529
  58. package/dist/cjs/runtime/effect/index.js +91 -15
  59. package/dist/cjs/runtime/effect/module.js +23 -80
  60. package/dist/cjs/runtime/effect/rpcSerialization.js +54 -0
  61. package/dist/cjs/runtime/effect-client/batch.js +73 -0
  62. package/dist/cjs/runtime/effect-client/envelope.js +145 -0
  63. package/dist/cjs/runtime/effect-client/guards.js +44 -0
  64. package/dist/cjs/runtime/effect-client/index.js +6 -16
  65. package/dist/cjs/runtime/effect-client/request-context.js +64 -0
  66. package/dist/cjs/runtime/effect-client/request.js +66 -0
  67. package/dist/cjs/runtime/effect-client/runtime.js +12 -178
  68. package/dist/cjs/runtime/effect-client/types.js +18 -0
  69. package/dist/cjs/runtime/safe-failure.js +2 -1
  70. package/dist/cjs/utils/client-generator/files.js +152 -0
  71. package/dist/cjs/utils/client-generator/generate.js +138 -0
  72. package/dist/cjs/utils/client-generator/index.js +83 -0
  73. package/dist/cjs/utils/client-generator/package-json.js +132 -0
  74. package/dist/cjs/utils/client-generator/write-package.js +125 -0
  75. package/dist/cjs/utils/clientGenerator.js +26 -303
  76. package/dist/cjs/utils/effect-client-generator/generator.js +68 -0
  77. package/dist/cjs/utils/effect-client-generator/index.js +51 -0
  78. package/dist/cjs/utils/effect-client-generator/paths.js +73 -0
  79. package/dist/cjs/utils/effect-client-generator/rendering.js +231 -0
  80. package/dist/cjs/utils/effect-client-generator/runtime.js +85 -0
  81. package/dist/cjs/utils/effect-client-generator/types.js +18 -0
  82. package/dist/cjs/utils/effectClientGenerator.js +5 -262
  83. package/dist/cjs/utils/effectSourceLoader.js +173 -0
  84. package/dist/esm/cli/compress.mjs +14 -0
  85. package/dist/esm/cli/generator.mjs +101 -0
  86. package/dist/esm/cli/prefix.mjs +9 -0
  87. package/dist/esm/cli/serverGlobalVars.mjs +76 -0
  88. package/dist/esm/cli/watch.mjs +13 -0
  89. package/dist/esm/cli.mjs +7 -121
  90. package/dist/esm/loader.mjs +19 -2
  91. package/dist/esm/runtime/data-platform/batch/queue.mjs +246 -0
  92. package/dist/esm/runtime/data-platform/batch/request.mjs +45 -0
  93. package/dist/esm/runtime/data-platform/batch/response.mjs +23 -0
  94. package/dist/esm/runtime/data-platform/batch/telemetry.mjs +23 -0
  95. package/dist/esm/runtime/data-platform/batch/url.mjs +25 -0
  96. package/dist/esm/runtime/data-platform/batch-transport.mjs +12 -0
  97. package/dist/esm/runtime/data-platform/codec.mjs +90 -0
  98. package/dist/esm/runtime/data-platform/index.mjs +6 -610
  99. package/dist/esm/runtime/data-platform/invalidation.mjs +20 -0
  100. package/dist/esm/runtime/data-platform/trace.mjs +29 -0
  101. package/dist/esm/runtime/data-platform/types.mjs +4 -0
  102. package/dist/esm/runtime/data-platform/validation.mjs +128 -0
  103. package/dist/esm/runtime/effect/adapter/constants.mjs +6 -0
  104. package/dist/esm/runtime/effect/adapter/cross-project-policy.mjs +23 -0
  105. package/dist/esm/runtime/effect/adapter/entry.mjs +44 -0
  106. package/dist/esm/runtime/effect/adapter/error-response.mjs +41 -0
  107. package/dist/esm/runtime/effect/adapter/handler.mjs +15 -0
  108. package/dist/esm/runtime/effect/adapter.mjs +27 -147
  109. package/dist/esm/runtime/effect/backend-federation/entry.mjs +61 -0
  110. package/dist/esm/runtime/effect/backend-federation/identity.mjs +41 -0
  111. package/dist/esm/runtime/effect/backend-federation/load.mjs +28 -0
  112. package/dist/esm/runtime/effect/backend-federation/plugin.mjs +15 -0
  113. package/dist/esm/runtime/effect/backend-federation/remotes.mjs +12 -0
  114. package/dist/esm/runtime/effect/backend-federation/runtime.mjs +26 -0
  115. package/dist/esm/runtime/effect/backend-federation/types.mjs +0 -0
  116. package/dist/esm/runtime/effect/backend-federation/utils.mjs +7 -0
  117. package/dist/esm/runtime/effect/backend-federation-manifest/errors.mjs +32 -0
  118. package/dist/esm/runtime/effect/backend-federation-manifest/index.mjs +4 -0
  119. package/dist/esm/runtime/effect/backend-federation-manifest/load.mjs +56 -0
  120. package/dist/esm/runtime/effect/backend-federation-manifest/metadata.mjs +42 -0
  121. package/dist/esm/runtime/effect/backend-federation-manifest/reference.mjs +76 -0
  122. package/dist/esm/runtime/effect/backend-federation-manifest/remote.mjs +30 -0
  123. package/dist/esm/runtime/effect/backend-federation-manifest/types.mjs +0 -0
  124. package/dist/esm/runtime/effect/backend-federation-manifest/validation.mjs +65 -0
  125. package/dist/esm/runtime/effect/backend-federation-manifest.mjs +1 -0
  126. package/dist/esm/runtime/effect/backend-federation.mjs +5 -0
  127. package/dist/esm/runtime/effect/dispatch.mjs +63 -0
  128. package/dist/esm/runtime/effect/edge.mjs +17 -63
  129. package/dist/esm/runtime/effect/endpoint-contracts.mjs +8 -13
  130. package/dist/esm/runtime/effect/entry-shape.mjs +36 -0
  131. package/dist/esm/runtime/effect/handler/batch-handler.mjs +123 -0
  132. package/dist/esm/runtime/effect/handler/batch.mjs +124 -0
  133. package/dist/esm/runtime/effect/handler/definition.mjs +60 -0
  134. package/dist/esm/runtime/effect/handler/envelope.mjs +63 -0
  135. package/dist/esm/runtime/effect/handler/http.mjs +58 -0
  136. package/dist/esm/runtime/effect/handler/openapi.mjs +19 -0
  137. package/dist/esm/runtime/effect/handler/routing.mjs +50 -0
  138. package/dist/esm/runtime/effect/handler/rpc.mjs +22 -0
  139. package/dist/esm/runtime/effect/handler/types.mjs +5 -0
  140. package/dist/esm/runtime/effect/handler.mjs +11 -506
  141. package/dist/esm/runtime/effect/index.mjs +5 -2
  142. package/dist/esm/runtime/effect/module.mjs +25 -82
  143. package/dist/esm/runtime/effect/rpcSerialization.mjs +16 -0
  144. package/dist/esm/runtime/effect-client/batch.mjs +35 -0
  145. package/dist/esm/runtime/effect-client/envelope.mjs +104 -0
  146. package/dist/esm/runtime/effect-client/guards.mjs +3 -0
  147. package/dist/esm/runtime/effect-client/index.mjs +27 -37
  148. package/dist/esm/runtime/effect-client/request-context.mjs +23 -0
  149. package/dist/esm/runtime/effect-client/request.mjs +28 -0
  150. package/dist/esm/runtime/effect-client/runtime.mjs +12 -178
  151. package/dist/esm/runtime/effect-client/types.mjs +0 -0
  152. package/dist/esm/runtime/safe-failure.mjs +2 -1
  153. package/dist/esm/utils/client-generator/files.mjs +68 -0
  154. package/dist/esm/utils/client-generator/generate.mjs +88 -0
  155. package/dist/esm/utils/client-generator/index.mjs +4 -0
  156. package/dist/esm/utils/client-generator/package-json.mjs +78 -0
  157. package/dist/esm/utils/client-generator/write-package.mjs +74 -0
  158. package/dist/esm/utils/clientGenerator.mjs +2 -293
  159. package/dist/esm/utils/effect-client-generator/generator.mjs +27 -0
  160. package/dist/esm/utils/effect-client-generator/index.mjs +3 -0
  161. package/dist/esm/utils/effect-client-generator/paths.mjs +25 -0
  162. package/dist/esm/utils/effect-client-generator/rendering.mjs +180 -0
  163. package/dist/esm/utils/effect-client-generator/runtime.mjs +34 -0
  164. package/dist/esm/utils/effect-client-generator/types.mjs +0 -0
  165. package/dist/esm/utils/effectClientGenerator.mjs +1 -249
  166. package/dist/esm/utils/effectSourceLoader.mjs +123 -0
  167. package/dist/esm-node/cli/compress.mjs +15 -0
  168. package/dist/esm-node/cli/generator.mjs +102 -0
  169. package/dist/esm-node/cli/prefix.mjs +10 -0
  170. package/dist/esm-node/cli/serverGlobalVars.mjs +77 -0
  171. package/dist/esm-node/cli/watch.mjs +14 -0
  172. package/dist/esm-node/cli.mjs +7 -121
  173. package/dist/esm-node/loader.mjs +19 -2
  174. package/dist/esm-node/runtime/data-platform/batch/queue.mjs +247 -0
  175. package/dist/esm-node/runtime/data-platform/batch/request.mjs +46 -0
  176. package/dist/esm-node/runtime/data-platform/batch/response.mjs +24 -0
  177. package/dist/esm-node/runtime/data-platform/batch/telemetry.mjs +24 -0
  178. package/dist/esm-node/runtime/data-platform/batch/url.mjs +26 -0
  179. package/dist/esm-node/runtime/data-platform/batch-transport.mjs +13 -0
  180. package/dist/esm-node/runtime/data-platform/codec.mjs +91 -0
  181. package/dist/esm-node/runtime/data-platform/index.mjs +6 -610
  182. package/dist/esm-node/runtime/data-platform/invalidation.mjs +21 -0
  183. package/dist/esm-node/runtime/data-platform/trace.mjs +30 -0
  184. package/dist/esm-node/runtime/data-platform/types.mjs +5 -0
  185. package/dist/esm-node/runtime/data-platform/validation.mjs +129 -0
  186. package/dist/esm-node/runtime/effect/adapter/constants.mjs +7 -0
  187. package/dist/esm-node/runtime/effect/adapter/cross-project-policy.mjs +24 -0
  188. package/dist/esm-node/runtime/effect/adapter/entry.mjs +45 -0
  189. package/dist/esm-node/runtime/effect/adapter/error-response.mjs +42 -0
  190. package/dist/esm-node/runtime/effect/adapter/handler.mjs +16 -0
  191. package/dist/esm-node/runtime/effect/adapter.mjs +28 -149
  192. package/dist/esm-node/runtime/effect/backend-federation/entry.mjs +62 -0
  193. package/dist/esm-node/runtime/effect/backend-federation/identity.mjs +42 -0
  194. package/dist/esm-node/runtime/effect/backend-federation/load.mjs +29 -0
  195. package/dist/esm-node/runtime/effect/backend-federation/plugin.mjs +16 -0
  196. package/dist/esm-node/runtime/effect/backend-federation/remotes.mjs +13 -0
  197. package/dist/esm-node/runtime/effect/backend-federation/runtime.mjs +27 -0
  198. package/dist/esm-node/runtime/effect/backend-federation/types.mjs +1 -0
  199. package/dist/esm-node/runtime/effect/backend-federation/utils.mjs +8 -0
  200. package/dist/esm-node/runtime/effect/backend-federation-manifest/errors.mjs +33 -0
  201. package/dist/esm-node/runtime/effect/backend-federation-manifest/index.mjs +5 -0
  202. package/dist/esm-node/runtime/effect/backend-federation-manifest/load.mjs +57 -0
  203. package/dist/esm-node/runtime/effect/backend-federation-manifest/metadata.mjs +43 -0
  204. package/dist/esm-node/runtime/effect/backend-federation-manifest/reference.mjs +77 -0
  205. package/dist/esm-node/runtime/effect/backend-federation-manifest/remote.mjs +31 -0
  206. package/dist/esm-node/runtime/effect/backend-federation-manifest/types.mjs +1 -0
  207. package/dist/esm-node/runtime/effect/backend-federation-manifest/validation.mjs +66 -0
  208. package/dist/esm-node/runtime/effect/backend-federation-manifest.mjs +2 -0
  209. package/dist/esm-node/runtime/effect/backend-federation.mjs +6 -0
  210. package/dist/esm-node/runtime/effect/dispatch.mjs +64 -0
  211. package/dist/esm-node/runtime/effect/edge.mjs +17 -63
  212. package/dist/esm-node/runtime/effect/endpoint-contracts.mjs +8 -13
  213. package/dist/esm-node/runtime/effect/entry-shape.mjs +37 -0
  214. package/dist/esm-node/runtime/effect/handler/batch-handler.mjs +124 -0
  215. package/dist/esm-node/runtime/effect/handler/batch.mjs +125 -0
  216. package/dist/esm-node/runtime/effect/handler/definition.mjs +61 -0
  217. package/dist/esm-node/runtime/effect/handler/envelope.mjs +64 -0
  218. package/dist/esm-node/runtime/effect/handler/http.mjs +59 -0
  219. package/dist/esm-node/runtime/effect/handler/openapi.mjs +20 -0
  220. package/dist/esm-node/runtime/effect/handler/routing.mjs +51 -0
  221. package/dist/esm-node/runtime/effect/handler/rpc.mjs +23 -0
  222. package/dist/esm-node/runtime/effect/handler/types.mjs +6 -0
  223. package/dist/esm-node/runtime/effect/handler.mjs +11 -506
  224. package/dist/esm-node/runtime/effect/index.mjs +5 -2
  225. package/dist/esm-node/runtime/effect/module.mjs +25 -82
  226. package/dist/esm-node/runtime/effect/rpcSerialization.mjs +17 -0
  227. package/dist/esm-node/runtime/effect-client/batch.mjs +36 -0
  228. package/dist/esm-node/runtime/effect-client/envelope.mjs +105 -0
  229. package/dist/esm-node/runtime/effect-client/guards.mjs +4 -0
  230. package/dist/esm-node/runtime/effect-client/index.mjs +27 -37
  231. package/dist/esm-node/runtime/effect-client/request-context.mjs +24 -0
  232. package/dist/esm-node/runtime/effect-client/request.mjs +29 -0
  233. package/dist/esm-node/runtime/effect-client/runtime.mjs +12 -178
  234. package/dist/esm-node/runtime/effect-client/types.mjs +1 -0
  235. package/dist/esm-node/runtime/safe-failure.mjs +2 -1
  236. package/dist/esm-node/utils/client-generator/files.mjs +69 -0
  237. package/dist/esm-node/utils/client-generator/generate.mjs +89 -0
  238. package/dist/esm-node/utils/client-generator/index.mjs +5 -0
  239. package/dist/esm-node/utils/client-generator/package-json.mjs +79 -0
  240. package/dist/esm-node/utils/client-generator/write-package.mjs +75 -0
  241. package/dist/esm-node/utils/clientGenerator.mjs +2 -293
  242. package/dist/esm-node/utils/effect-client-generator/generator.mjs +28 -0
  243. package/dist/esm-node/utils/effect-client-generator/index.mjs +4 -0
  244. package/dist/esm-node/utils/effect-client-generator/paths.mjs +26 -0
  245. package/dist/esm-node/utils/effect-client-generator/rendering.mjs +181 -0
  246. package/dist/esm-node/utils/effect-client-generator/runtime.mjs +36 -0
  247. package/dist/esm-node/utils/effect-client-generator/types.mjs +1 -0
  248. package/dist/esm-node/utils/effectClientGenerator.mjs +2 -251
  249. package/dist/esm-node/utils/effectSourceLoader.mjs +124 -0
  250. package/dist/types/cli/compress.d.ts +2 -0
  251. package/dist/types/cli/generator.d.ts +7 -0
  252. package/dist/types/cli/prefix.d.ts +2 -0
  253. package/dist/types/cli/serverGlobalVars.d.ts +4 -0
  254. package/dist/types/cli/watch.d.ts +1 -0
  255. package/dist/types/cli.d.ts +0 -1
  256. package/dist/types/runtime/data-platform/batch/queue.d.ts +8 -0
  257. package/dist/types/runtime/data-platform/batch/request.d.ts +13 -0
  258. package/dist/types/runtime/data-platform/batch/response.d.ts +3 -0
  259. package/dist/types/runtime/data-platform/batch/telemetry.d.ts +4 -0
  260. package/dist/types/runtime/data-platform/batch/url.d.ts +4 -0
  261. package/dist/types/runtime/data-platform/batch-transport.d.ts +3 -0
  262. package/dist/types/runtime/data-platform/codec.d.ts +17 -0
  263. package/dist/types/runtime/data-platform/index.d.ts +7 -191
  264. package/dist/types/runtime/data-platform/invalidation.d.ts +8 -0
  265. package/dist/types/runtime/data-platform/trace.d.ts +4 -0
  266. package/dist/types/runtime/data-platform/types.d.ts +146 -0
  267. package/dist/types/runtime/data-platform/validation.d.ts +29 -0
  268. package/dist/types/runtime/effect/adapter/constants.d.ts +1 -0
  269. package/dist/types/runtime/effect/adapter/cross-project-policy.d.ts +4 -0
  270. package/dist/types/runtime/effect/adapter/entry.d.ts +2 -0
  271. package/dist/types/runtime/effect/adapter/error-response.d.ts +2 -0
  272. package/dist/types/runtime/effect/adapter/handler.d.ts +7 -0
  273. package/dist/types/runtime/effect/adapter.d.ts +4 -13
  274. package/dist/types/runtime/effect/backend-federation/entry.d.ts +2 -0
  275. package/dist/types/runtime/effect/backend-federation/identity.d.ts +30 -0
  276. package/dist/types/runtime/effect/backend-federation/load.d.ts +13 -0
  277. package/dist/types/runtime/effect/backend-federation/plugin.d.ts +3 -0
  278. package/dist/types/runtime/effect/backend-federation/remotes.d.ts +2 -0
  279. package/dist/types/runtime/effect/backend-federation/runtime.d.ts +3 -0
  280. package/dist/types/runtime/effect/backend-federation/types.d.ts +73 -0
  281. package/dist/types/runtime/effect/backend-federation/utils.d.ts +2 -0
  282. package/dist/types/runtime/effect/backend-federation-manifest/errors.d.ts +11 -0
  283. package/dist/types/runtime/effect/backend-federation-manifest/index.d.ts +6 -0
  284. package/dist/types/runtime/effect/backend-federation-manifest/load.d.ts +3 -0
  285. package/dist/types/runtime/effect/backend-federation-manifest/metadata.d.ts +18 -0
  286. package/dist/types/runtime/effect/backend-federation-manifest/reference.d.ts +4 -0
  287. package/dist/types/runtime/effect/backend-federation-manifest/remote.d.ts +3 -0
  288. package/dist/types/runtime/effect/backend-federation-manifest/types.d.ts +51 -0
  289. package/dist/types/runtime/effect/backend-federation-manifest/validation.d.ts +5 -0
  290. package/dist/types/runtime/effect/backend-federation-manifest.d.ts +1 -0
  291. package/dist/types/runtime/effect/backend-federation.d.ts +7 -0
  292. package/dist/types/runtime/effect/dispatch.d.ts +13 -0
  293. package/dist/types/runtime/effect/edge.d.ts +8 -8
  294. package/dist/types/runtime/effect/endpoint-contracts.d.ts +5 -7
  295. package/dist/types/runtime/effect/entry-shape.d.ts +31 -0
  296. package/dist/types/runtime/effect/handler/batch-handler.d.ts +11 -0
  297. package/dist/types/runtime/effect/handler/batch.d.ts +17 -0
  298. package/dist/types/runtime/effect/handler/definition.d.ts +17 -0
  299. package/dist/types/runtime/effect/handler/envelope.d.ts +13 -0
  300. package/dist/types/runtime/effect/handler/http.d.ts +14 -0
  301. package/dist/types/runtime/effect/handler/openapi.d.ts +4 -0
  302. package/dist/types/runtime/effect/handler/routing.d.ts +5 -0
  303. package/dist/types/runtime/effect/handler/rpc.d.ts +7 -0
  304. package/dist/types/runtime/effect/handler/types.d.ts +148 -0
  305. package/dist/types/runtime/effect/handler.d.ts +4 -190
  306. package/dist/types/runtime/effect/index.d.ts +3 -0
  307. package/dist/types/runtime/effect/module.d.ts +3 -2
  308. package/dist/types/runtime/effect/rpcSerialization.d.ts +3 -0
  309. package/dist/types/runtime/effect-client/batch.d.ts +2 -0
  310. package/dist/types/runtime/effect-client/envelope.d.ts +15 -0
  311. package/dist/types/runtime/effect-client/guards.d.ts +2 -0
  312. package/dist/types/runtime/effect-client/index.d.ts +1 -1
  313. package/dist/types/runtime/effect-client/request-context.d.ts +3 -0
  314. package/dist/types/runtime/effect-client/request.d.ts +1 -0
  315. package/dist/types/runtime/effect-client/runtime.d.ts +2 -68
  316. package/dist/types/runtime/effect-client/types.d.ts +68 -0
  317. package/dist/types/utils/client-generator/files.d.ts +28 -0
  318. package/dist/types/utils/client-generator/generate.d.ts +26 -0
  319. package/dist/types/utils/client-generator/index.d.ts +7 -0
  320. package/dist/types/utils/client-generator/package-json.d.ts +16 -0
  321. package/dist/types/utils/client-generator/write-package.d.ts +6 -0
  322. package/dist/types/utils/clientGenerator.d.ts +2 -37
  323. package/dist/types/utils/crossProjectServerPolicy.d.ts +3 -2
  324. package/dist/types/utils/effect-client-generator/generator.d.ts +10 -0
  325. package/dist/types/utils/effect-client-generator/index.d.ts +4 -0
  326. package/dist/types/utils/effect-client-generator/paths.d.ts +5 -0
  327. package/dist/types/utils/effect-client-generator/rendering.d.ts +4 -0
  328. package/dist/types/utils/effect-client-generator/runtime.d.ts +12 -0
  329. package/dist/types/utils/effect-client-generator/types.d.ts +27 -0
  330. package/dist/types/utils/effectClientGenerator.d.ts +2 -41
  331. package/dist/types/utils/effectSourceLoader.d.ts +10 -0
  332. package/package.json +45 -33
@@ -1,509 +1,14 @@
1
- import * as __rspack_external_effect_Layer_16f7a8fc from "effect/Layer";
2
- import { HttpRouter, HttpServer, HttpServerResponse, HttpTraceContext } from "effect/unstable/http";
3
- import { HttpApiBuilder, OpenApi } from "effect/unstable/httpapi";
4
- import { RpcSerialization, RpcServer } from "effect/unstable/rpc";
5
- import { DEFAULT_DATA_BATCH_ENDPOINT, DEFAULT_DATA_BATCH_HEADER, DEFAULT_DATA_ENVELOPE_HEADER, decodeRequestEnvelopeHeader, validateRequestEnvelope, validateSelectionPlan } from "../data-platform/index.mjs";
6
- import * as __rspack_external_effect_Config_29be8a92 from "effect/Config";
7
- import * as __rspack_external_effect_Effect_194ac36c from "effect/Effect";
8
- import * as __rspack_external_effect_Option_4d691636 from "effect/Option";
9
- import * as __rspack_external_effect_Schema_f8472650 from "effect/Schema";
1
+ import * as __rspack_external_effect_Config_76cfa59d from "effect/Config";
2
+ import * as __rspack_external_effect_Effect_41060786 from "effect/Effect";
3
+ import * as __rspack_external_effect_Layer_69c46453 from "effect/Layer";
4
+ import * as __rspack_external_effect_Option_0498e63a from "effect/Option";
5
+ import * as __rspack_external_effect_Schema_6065f72d from "effect/Schema";
10
6
  export * from "effect/unstable/http";
11
7
  export * from "effect/unstable/httpapi";
12
8
  export * from "effect/unstable/rpc";
13
- import * as __rspack_external_effect_Context_f1289ca3 from "effect/Context";
14
- const emptyEffectServiceContext = __rspack_external_effect_Context_f1289ca3.empty();
15
- const isEffectServiceContext = (context)=>'object' == typeof context && null !== context && 'mapUnsafe' in context;
16
- const toEffectServiceContext = (context)=>isEffectServiceContext(context) ? context : emptyEffectServiceContext;
17
- const EFFECT_VALIDATOR_AWARE_FACTORY = Symbol.for('modernjs.effect.validatorAware');
18
- function isValidatorAwareHandlerFactory(factory) {
19
- return 'function' == typeof factory && true === factory[EFFECT_VALIDATOR_AWARE_FACTORY];
20
- }
21
- function normalizeOpenApiPath(pathname) {
22
- if (!pathname.startsWith('/')) return `/${pathname}`;
23
- return pathname;
24
- }
25
- function getOpenApiOptions(openapi) {
26
- if (!openapi || 'object' != typeof openapi) return;
27
- if (!openapi.path) return;
28
- return {
29
- path: normalizeOpenApiPath(openapi.path)
30
- };
31
- }
32
- function normalizeRpcPath(pathname) {
33
- if (!pathname || '/' === pathname) return '/rpc';
34
- if (!pathname.startsWith('/')) return `/${pathname}`;
35
- return pathname;
36
- }
37
- function normalizeBatchPath(pathname) {
38
- if (!pathname || '/' === pathname) return DEFAULT_DATA_BATCH_ENDPOINT;
39
- if (!pathname.startsWith('/')) return `/${pathname}`;
40
- return pathname;
41
- }
42
- function isPlainObject(value) {
43
- return 'object' == typeof value && null !== value && !Array.isArray(value);
44
- }
45
- function toTextLength(value) {
46
- if ("u" > typeof TextEncoder) return new TextEncoder().encode(value).length;
47
- if ("u" > typeof Buffer) return Buffer.byteLength(value);
48
- return value.length;
49
- }
50
- function toHeaderRecord(headers) {
51
- const record = {};
52
- headers.forEach((value, key)=>{
53
- record[key] = value;
54
- });
55
- return record;
56
- }
57
- function normalizeItemMethod(method) {
58
- return (method || 'GET').toUpperCase();
59
- }
60
- function normalizeBatchAllowedMethods(allowedMethods) {
61
- const source = Array.isArray(allowedMethods) && allowedMethods.length > 0 ? allowedMethods : [
62
- 'GET'
63
- ];
64
- return new Set(source.map((method)=>method.toUpperCase()));
65
- }
66
- function isBatchRequestPayload(value) {
67
- return isPlainObject(value) && 1 === value.protocolVersion && 'string' == typeof value.batchId && 'number' == typeof value.sentAt && Array.isArray(value.items);
68
- }
69
- function createBatchValidationResponse(message, status = 400) {
70
- return new Response(JSON.stringify({
71
- message
72
- }), {
73
- status,
74
- headers: {
75
- 'content-type': 'application/json; charset=utf-8'
76
- }
77
- });
78
- }
79
- function createJsonValidationResponse(message, status = 400) {
80
- return new Response(JSON.stringify({
81
- message
82
- }), {
83
- status,
84
- headers: {
85
- 'content-type': 'application/json; charset=utf-8'
86
- }
87
- });
88
- }
89
- function cloneWithoutJsonBodyHeaders(request) {
90
- const headers = new Headers(request.headers);
91
- headers.delete('content-type');
92
- headers.delete('content-length');
93
- return new Request(request.url, {
94
- method: request.method,
95
- headers,
96
- signal: request.signal
97
- });
98
- }
99
- async function prepareJsonRequestBody(request) {
100
- const method = normalizeItemMethod(request.method);
101
- if ('GET' === method || 'HEAD' === method) return request;
102
- const contentType = (request.headers.get('content-type') || '').toLowerCase();
103
- if (!contentType.includes('application/json')) return request;
104
- if (null === request.body) return cloneWithoutJsonBodyHeaders(request);
105
- try {
106
- const bodyText = await request.clone().text();
107
- if ('' === bodyText) return cloneWithoutJsonBodyHeaders(request);
108
- JSON.parse(bodyText);
109
- } catch {
110
- return createJsonValidationResponse('Invalid JSON request body');
111
- }
112
- return request;
113
- }
114
- function toBatchItemError(id, status, message) {
115
- return {
116
- id,
117
- status,
118
- headers: {
119
- 'content-type': 'application/json; charset=utf-8'
120
- },
121
- body: JSON.stringify({
122
- message
123
- })
124
- };
125
- }
126
- function promiseWithTimeout(effect, timeoutMs) {
127
- if (timeoutMs <= 0) return effect;
128
- return new Promise((resolve, reject)=>{
129
- const timer = setTimeout(()=>{
130
- reject(new Error(`Batch item timeout after ${String(timeoutMs)}ms`));
131
- }, timeoutMs);
132
- effect.then((value)=>{
133
- clearTimeout(timer);
134
- resolve(value);
135
- }, (error)=>{
136
- clearTimeout(timer);
137
- reject(error);
138
- });
139
- });
140
- }
141
- async function mapWithConcurrency(items, concurrency, mapper) {
142
- if (0 === items.length) return [];
143
- const normalizedConcurrency = Math.max(1, concurrency);
144
- const output = new Array(items.length);
145
- let index = 0;
146
- const workers = Array.from({
147
- length: Math.min(normalizedConcurrency, items.length)
148
- }, async ()=>{
149
- while(true){
150
- const currentIndex = index;
151
- index += 1;
152
- if (currentIndex >= items.length) return;
153
- output[currentIndex] = await mapper(items[currentIndex], currentIndex);
154
- }
155
- });
156
- await Promise.all(workers);
157
- return output;
158
- }
159
- function getRequestPathname(request) {
160
- try {
161
- return new URL(request.url).pathname;
162
- } catch {
163
- return new URL(request.url, 'http://localhost').pathname;
164
- }
165
- }
166
- function normalizeMountPrefix(prefix) {
167
- if (!prefix || '/' === prefix) return '';
168
- return prefix.endsWith('/') ? prefix.slice(0, -1) : prefix;
169
- }
170
- function getMountedPrefixFromContext(request, context) {
171
- if (!isPlainObject(context) || 'string' != typeof context.path) return '';
172
- const contextPath = normalizeMountPrefix(context.path);
173
- const requestPath = normalizeMountPrefix(getRequestPathname(request));
174
- if (!contextPath || !requestPath || contextPath === requestPath || !contextPath.endsWith(requestPath)) return '';
175
- return normalizeMountPrefix(contextPath.slice(0, contextPath.length - requestPath.length));
176
- }
177
- function removeMountedPrefixFromBatchPath(pathWithQuery, prefix) {
178
- const normalizedPrefix = normalizeMountPrefix(prefix);
179
- if (!normalizedPrefix) return pathWithQuery;
180
- const [pathname, ...queryParts] = pathWithQuery.split('?');
181
- if (!pathname) return pathWithQuery;
182
- let nextPathname = pathname;
183
- if (pathname === normalizedPrefix) nextPathname = '/';
184
- else if (pathname.startsWith(`${normalizedPrefix}/`)) {
185
- const sliced = pathname.slice(normalizedPrefix.length);
186
- nextPathname = sliced.startsWith('/') ? sliced : `/${sliced}`;
187
- }
188
- if (0 === queryParts.length) return nextPathname;
189
- return `${nextPathname}?${queryParts.join('?')}`;
190
- }
191
- function getRequestOrigin(request) {
192
- try {
193
- return new URL(request.url).origin;
194
- } catch {
195
- return new URL(request.url, 'http://localhost').origin;
196
- }
197
- }
198
- function getExpectedEnvelopeOrigin(request) {
199
- const origin = request.headers.get('origin');
200
- if (origin && 'null' !== origin) return origin;
201
- return getRequestOrigin(request);
202
- }
203
- function isRpcRequest(request, rpcPath) {
204
- const pathname = getRequestPathname(request);
205
- return pathname === rpcPath || pathname.startsWith(`${rpcPath}/`);
206
- }
207
- function getRpcSerializationLayer(serialization) {
208
- switch(serialization){
209
- case 'ndjson':
210
- return RpcSerialization.layerNdjson;
211
- case 'jsonRpc':
212
- return RpcSerialization.layerJsonRpc();
213
- case 'ndJsonRpc':
214
- return RpcSerialization.layerNdJsonRpc();
215
- case 'msgPack':
216
- return RpcSerialization.layerMsgPack;
217
- default:
218
- return RpcSerialization.layerJsonRpc();
219
- }
220
- }
221
- function createRpcApiHandler(options) {
222
- const rpcPath = normalizeRpcPath(options.path);
223
- const rpcLayer = __rspack_external_effect_Layer_16f7a8fc.provide(RpcServer.layerHttp({
224
- group: options.group,
225
- path: rpcPath,
226
- protocol: 'http',
227
- disableTracing: options.disableTracing,
228
- spanPrefix: options.spanPrefix,
229
- spanAttributes: options.spanAttributes
230
- }), __rspack_external_effect_Layer_16f7a8fc.mergeAll(options.layer, getRpcSerializationLayer(options.serialization)));
231
- return HttpRouter.toWebHandler(rpcLayer);
232
- }
233
- function createOpenApiLayer(api, openapi) {
234
- const openApiOptions = getOpenApiOptions(openapi);
235
- if (!openApiOptions) return null;
236
- return HttpRouter.add('GET', openApiOptions.path, HttpServerResponse.jsonUnsafe(OpenApi.fromApi(api)));
237
- }
238
- function createInvalidEnvelopeResponse(message, errors) {
239
- return new Response(JSON.stringify({
240
- message,
241
- ...errors && errors.length > 0 ? {
242
- errors
243
- } : {}
244
- }), {
245
- status: 400,
246
- headers: {
247
- 'content-type': 'application/json; charset=utf-8'
248
- }
249
- });
250
- }
251
- function validateDataPlatformRequestEnvelope(request, options) {
252
- const isEnabled = options?.enabled ?? true;
253
- if (!isEnabled) return null;
254
- const envelopeHeader = options?.envelopeHeader || DEFAULT_DATA_ENVELOPE_HEADER;
255
- const encodedEnvelope = request.headers.get(envelopeHeader);
256
- if (!encodedEnvelope) {
257
- if (options?.requireEnvelope) return createInvalidEnvelopeResponse(`Missing required data envelope header: ${envelopeHeader}`);
258
- return null;
259
- }
260
- const envelope = decodeRequestEnvelopeHeader(encodedEnvelope);
261
- if (!envelope) return createInvalidEnvelopeResponse(`Invalid data envelope header format: ${envelopeHeader}`);
262
- const validation = validateRequestEnvelope(envelope, {
263
- expectedProtocolVersion: 1,
264
- expectedNamespace: options?.expectedNamespace,
265
- expectedOrigin: options?.validateOrigin === false ? void 0 : getExpectedEnvelopeOrigin(request),
266
- requireTraceContext: options?.requireTraceContext
267
- });
268
- if (!validation.ok) return createInvalidEnvelopeResponse('Invalid data envelope', validation.errors);
269
- if (envelope.selectionPlan) {
270
- const selectionValidation = validateSelectionPlan(envelope.selectionPlan, {
271
- maxDepth: options?.selection?.maxDepth,
272
- maxFields: options?.selection?.maxFields,
273
- allowedLeafPaths: options?.selection?.allowedLeafPaths
274
- });
275
- if (!selectionValidation.ok) return createInvalidEnvelopeResponse('Invalid data envelope selection plan', selectionValidation.errors);
276
- }
277
- return null;
278
- }
279
- function mergeDataPlatformOptions(base, override) {
280
- if (!base && !override) return;
281
- const baseSelection = base?.selection;
282
- const overrideSelection = override?.selection;
283
- const baseBatch = base?.batch;
284
- const overrideBatch = override?.batch;
285
- return {
286
- ...base,
287
- ...override,
288
- selection: baseSelection || overrideSelection ? {
289
- ...baseSelection,
290
- ...overrideSelection
291
- } : void 0,
292
- batch: baseBatch || overrideBatch ? {
293
- ...baseBatch,
294
- ...overrideBatch
295
- } : void 0
296
- };
297
- }
298
- function defineEffectBff(definition) {
299
- const createHandler = (options)=>{
300
- const rpcDefinition = definition.rpc;
301
- let mergedRpcOptions = rpcDefinition;
302
- if (rpcDefinition && options?.rpc) mergedRpcOptions = {
303
- ...rpcDefinition,
304
- ...options.rpc
305
- };
306
- return createHttpApiHandler({
307
- api: definition.api,
308
- layer: definition.layer,
309
- openapi: options?.openapi,
310
- rpc: mergedRpcOptions,
311
- dataPlatform: mergeDataPlatformOptions(definition.dataPlatform, options?.dataPlatform),
312
- validateRequest: options?.validateRequest
313
- });
314
- };
315
- Object.defineProperty(createHandler, EFFECT_VALIDATOR_AWARE_FACTORY, {
316
- value: true
317
- });
318
- const client = createLoaderMaterializedClientPlaceholder();
319
- return {
320
- ...definition,
321
- createHandler,
322
- client
323
- };
324
- }
325
- const LOADER_CLIENT_IGNORED_KEYS = new Set([
326
- 'then',
327
- 'catch',
328
- 'finally',
329
- 'toJSON',
330
- '$$typeof'
331
- ]);
332
- function createLoaderMaterializedClientPlaceholder() {
333
- const explain = (property)=>{
334
- throw new Error(`[BFF][Effect] client.${String(property)} is not available here: the typed client only exists when the API entry is imported through the "@api/index" transformed path (the BFF loader replaces it with generated client code). On the server, use HttpApiClient or call the Effect layer directly.`);
335
- };
336
- return new Proxy(Object.create(null), {
337
- get (_target, property) {
338
- if ('symbol' == typeof property || LOADER_CLIENT_IGNORED_KEYS.has(property)) return;
339
- return explain(property);
340
- }
341
- });
342
- }
343
- function defineEffectRpcBff(definition) {
344
- const createHandler = (options)=>createRpcApiHandler({
345
- ...definition,
346
- ...options
347
- });
348
- return {
349
- ...definition,
350
- createHandler
351
- };
352
- }
353
- function createHttpApiHandler(options) {
354
- const apiLayer = options.layer.pipe(__rspack_external_effect_Layer_16f7a8fc.provide(HttpServer.layerServices));
355
- const openApiLayer = createOpenApiLayer(options.api, options.openapi);
356
- const mergedLayer = openApiLayer ? __rspack_external_effect_Layer_16f7a8fc.mergeAll(apiLayer, openApiLayer) : apiLayer;
357
- const httpApiHandler = HttpRouter.toWebHandler(mergedLayer);
358
- const dataPlatformBatchOptions = options.dataPlatform?.batch;
359
- const batchEnabled = dataPlatformBatchOptions?.enabled !== false;
360
- const batchPath = normalizeBatchPath(dataPlatformBatchOptions?.endpoint);
361
- const batchMaxSize = Math.max(1, dataPlatformBatchOptions?.maxBatchSize ?? 16);
362
- const batchMaxBytes = Math.max(1024, dataPlatformBatchOptions?.maxBatchBytes ?? 65536);
363
- const batchConcurrency = Math.max(1, dataPlatformBatchOptions?.maxConcurrency ?? 4);
364
- const batchItemTimeoutMs = Math.max(0, dataPlatformBatchOptions?.requestTimeoutMs ?? 10000);
365
- const batchAllowedMethods = normalizeBatchAllowedMethods(dataPlatformBatchOptions?.allowedMethods);
366
- const envelopeHeader = options.dataPlatform?.envelopeHeader || DEFAULT_DATA_ENVELOPE_HEADER;
367
- const normalizedEnvelopeHeader = envelopeHeader.toLowerCase();
368
- const withDataPlatformValidation = async (request, context)=>{
369
- const policyDenial = options.validateRequest?.(request);
370
- if (policyDenial) return policyDenial;
371
- const preparedRequest = await prepareJsonRequestBody(request);
372
- if (preparedRequest instanceof Response) return preparedRequest;
373
- const validationError = validateDataPlatformRequestEnvelope(preparedRequest, options.dataPlatform);
374
- if (validationError) return validationError;
375
- return httpApiHandler.handler(preparedRequest, toEffectServiceContext(context));
376
- };
377
- const handleBatchRequest = async (request, context)=>{
378
- const mountedPrefix = getMountedPrefixFromContext(request, context);
379
- const method = normalizeItemMethod(request.method);
380
- if ('POST' !== method) return createBatchValidationResponse('Batch endpoint only supports POST requests', 405);
381
- const contentType = request.headers.get('content-type') || '';
382
- if (!contentType.includes('application/json')) return createBatchValidationResponse('Batch endpoint requires application/json content-type', 415);
383
- const payloadText = await request.text();
384
- if (toTextLength(payloadText) > batchMaxBytes) return createBatchValidationResponse(`Batch payload exceeds max size (${String(batchMaxBytes)} bytes)`, 413);
385
- let payload;
386
- try {
387
- payload = JSON.parse(payloadText);
388
- } catch {
389
- return createBatchValidationResponse('Invalid batch payload JSON');
390
- }
391
- if (!isBatchRequestPayload(payload)) return createBatchValidationResponse('Invalid batch payload shape');
392
- if (0 === payload.items.length) return createBatchValidationResponse('Batch payload items cannot be empty');
393
- if (payload.items.length > batchMaxSize) return createBatchValidationResponse(`Batch item count exceeds max size (${String(batchMaxSize)})`, 413);
394
- const responseItems = await mapWithConcurrency(payload.items, batchConcurrency, async (rawItem, index)=>{
395
- const fallbackId = `item_${String(index)}`;
396
- const itemId = isPlainObject(rawItem) && 'string' == typeof rawItem.id ? rawItem.id : fallbackId;
397
- if (!isPlainObject(rawItem)) return toBatchItemError(itemId, 400, 'Invalid batch item; expected object');
398
- if ('string' != typeof rawItem.path || 0 === rawItem.path.length) return toBatchItemError(itemId, 400, 'Invalid batch item path');
399
- if (!rawItem.path.startsWith('/')) return toBatchItemError(itemId, 400, 'Batch item path must start with "/"');
400
- const normalizedItemPath = removeMountedPrefixFromBatchPath(rawItem.path, mountedPrefix);
401
- const itemPathname = normalizedItemPath.split('?')[0] || normalizedItemPath;
402
- if (itemPathname === batchPath || itemPathname.startsWith(`${batchPath}/`)) return toBatchItemError(itemId, 400, 'Batch item path cannot target batch endpoint');
403
- const itemMethod = normalizeItemMethod('string' == typeof rawItem.method ? rawItem.method : void 0);
404
- if (!batchAllowedMethods.has(itemMethod)) return toBatchItemError(itemId, 405, `Batch item method ${itemMethod} is not allowed`);
405
- if (void 0 !== rawItem.body && null !== rawItem.body && 'string' != typeof rawItem.body) return toBatchItemError(itemId, 400, 'Batch item body must be a string when provided');
406
- if (('GET' === itemMethod || 'HEAD' === itemMethod) && 'string' == typeof rawItem.body) return toBatchItemError(itemId, 400, `${itemMethod} batch item cannot include body`);
407
- const normalizedHeaders = {};
408
- if (void 0 !== rawItem.headers) {
409
- if (!isPlainObject(rawItem.headers)) return toBatchItemError(itemId, 400, 'Batch item headers must be an object');
410
- for (const [key, value] of Object.entries(rawItem.headers)){
411
- if ('string' != typeof value) return toBatchItemError(itemId, 400, `Invalid header "${key}" for batch item`);
412
- normalizedHeaders[key.toLowerCase()] = value;
413
- }
414
- }
415
- if (!normalizedHeaders.traceparent) {
416
- const encodedEnvelope = normalizedHeaders[normalizedEnvelopeHeader];
417
- if ('string' == typeof encodedEnvelope) {
418
- const envelope = decodeRequestEnvelopeHeader(encodedEnvelope);
419
- if (envelope?.traceparent) normalizedHeaders.traceparent = envelope.traceparent;
420
- }
421
- }
422
- if (!normalizedHeaders.traceparent) {
423
- const requestTraceparent = request.headers.get('traceparent');
424
- if (requestTraceparent) normalizedHeaders.traceparent = requestTraceparent;
425
- }
426
- const targetUrl = new URL(normalizedItemPath, request.url);
427
- const requestHeaders = new Headers(normalizedHeaders);
428
- const body = 'GET' === itemMethod || 'HEAD' === itemMethod ? void 0 : rawItem.body;
429
- if (void 0 === body) requestHeaders.delete('content-type');
430
- const itemRequest = new Request(targetUrl.toString(), {
431
- method: itemMethod,
432
- headers: requestHeaders,
433
- body
434
- });
435
- try {
436
- const itemResponse = await promiseWithTimeout(withDataPlatformValidation(itemRequest, context), batchItemTimeoutMs);
437
- if (!(itemResponse instanceof Response)) return toBatchItemError(itemId, 500, 'Invalid response returned by batch item handler');
438
- const bodyText = await itemResponse.text();
439
- const responseItem = {
440
- id: itemId,
441
- status: itemResponse.status,
442
- headers: toHeaderRecord(itemResponse.headers),
443
- ...bodyText ? {
444
- body: bodyText
445
- } : {}
446
- };
447
- return responseItem;
448
- } catch (error) {
449
- if (error instanceof Response) {
450
- const bodyText = await error.text();
451
- return {
452
- id: itemId,
453
- status: error.status,
454
- headers: toHeaderRecord(error.headers),
455
- ...bodyText ? {
456
- body: bodyText
457
- } : {}
458
- };
459
- }
460
- const message = error instanceof Error ? error.message : String(error);
461
- return toBatchItemError(itemId, 500, message);
462
- }
463
- });
464
- const responsePayload = {
465
- protocolVersion: 1,
466
- batchId: payload.batchId,
467
- receivedAt: Date.now(),
468
- items: responseItems
469
- };
470
- return new Response(JSON.stringify(responsePayload), {
471
- status: 200,
472
- headers: {
473
- 'content-type': 'application/json; charset=utf-8',
474
- [DEFAULT_DATA_BATCH_HEADER]: '1',
475
- 'x-modernjs-data-batch-id': payload.batchId
476
- }
477
- });
478
- };
479
- const handleHttpApiRequest = async (request, context)=>{
480
- const pathname = getRequestPathname(request);
481
- if (batchEnabled && pathname === batchPath) return handleBatchRequest(request, context);
482
- return withDataPlatformValidation(request, context);
483
- };
484
- if (!options.rpc) return {
485
- handler: handleHttpApiRequest,
486
- dispose: async ()=>{
487
- await httpApiHandler.dispose();
488
- }
489
- };
490
- const rpcPath = normalizeRpcPath(options.rpc.path);
491
- const rpcHandler = createRpcApiHandler(options.rpc);
492
- return {
493
- handler: async (request, context)=>{
494
- if (isRpcRequest(request, rpcPath)) {
495
- const policyDenial = options.validateRequest?.(request);
496
- if (policyDenial) return policyDenial;
497
- return rpcHandler.handler(request, toEffectServiceContext(context));
498
- }
499
- return handleHttpApiRequest(request);
500
- },
501
- dispose: async ()=>{
502
- await Promise.all([
503
- httpApiHandler.dispose(),
504
- rpcHandler.dispose()
505
- ]);
506
- }
507
- };
508
- }
509
- export { EFFECT_VALIDATOR_AWARE_FACTORY, HttpApiBuilder, HttpTraceContext, __rspack_external_effect_Config_29be8a92 as Config, __rspack_external_effect_Effect_194ac36c as Effect, __rspack_external_effect_Layer_16f7a8fc as Layer, __rspack_external_effect_Option_4d691636 as Option, __rspack_external_effect_Schema_f8472650 as Schema, createHttpApiHandler, defineEffectBff, defineEffectRpcBff, isValidatorAwareHandlerFactory };
9
+ export { HttpTraceContext } from "effect/unstable/http";
10
+ export { HttpApiBuilder } from "effect/unstable/httpapi";
11
+ export { EFFECT_VALIDATOR_AWARE_FACTORY, isValidatorAwareHandlerFactory } from "./entry-shape.mjs";
12
+ export { defineEffectBff, defineEffectRpcBff } from "./handler/definition.mjs";
13
+ export { createHttpApiHandler } from "./handler/http.mjs";
14
+ export { __rspack_external_effect_Config_76cfa59d as Config, __rspack_external_effect_Effect_41060786 as Effect, __rspack_external_effect_Layer_69c46453 as Layer, __rspack_external_effect_Option_0498e63a as Option, __rspack_external_effect_Schema_6065f72d as Schema };
@@ -1,5 +1,8 @@
1
- import * as __rspack_external__effect_opentelemetry_8bbbb5af from "@effect/opentelemetry";
1
+ import * as __rspack_external__effect_opentelemetry_66324c75 from "@effect/opentelemetry";
2
+ export * from "./backend-federation.mjs";
2
3
  export * from "./handler.mjs";
4
+ export { BACKEND_FEDERATION_CONTRACT_VERSION, BACKEND_FEDERATION_EFFECT_EXPOSE, BACKEND_FEDERATION_MANIFEST_FILE, BACKEND_FEDERATION_NODE_ADAPTER_VERSION, createBackendFederationLoadEntryPlugin, createBackendFederationRuntime, loadBackendFederatedEffectApi } from "./backend-federation.mjs";
5
+ export { BackendFederationManifestAdapterError, loadBackendFederatedEffectApiFromManifest, loadBackendFederationManifest, resolveBackendFederationRemoteFromManifest } from "./backend-federation-manifest.mjs";
3
6
  export { createEffectOperationContext, runWithEffectContext, useEffectContext, useOperationContext } from "./context.mjs";
4
7
  export { createEffectBffEdgeHandler, createEffectBffTestHandler, dispatchEffectBffRequest } from "./edge.mjs";
5
- export { __rspack_external__effect_opentelemetry_8bbbb5af as OpenTelemetry };
8
+ export { __rspack_external__effect_opentelemetry_66324c75 as OpenTelemetry };
@@ -1,23 +1,14 @@
1
1
  import { HttpApi } from "effect/unstable/httpapi";
2
- import { createHttpApiHandler, isValidatorAwareHandlerFactory } from "./handler.mjs";
3
- import * as __rspack_external_effect_Context_f1289ca3 from "effect/Context";
4
- function isRecord(value) {
5
- return 'object' == typeof value && null !== value;
6
- }
7
- function includesRuntimeExports(value) {
8
- return 'api' in value || 'layer' in value || 'createHandler' in value || 'handler' in value;
9
- }
2
+ import { classifyEffectBffEntryModule, isValidatorAwareHandlerFactory, strictEffectApproachMessage } from "./entry-shape.mjs";
3
+ import { createHttpApiHandler } from "./handler.mjs";
4
+ import * as __rspack_external_effect_Context_b3520bd3 from "effect/Context";
10
5
  function isRequestHandler(value) {
11
6
  return 'function' == typeof value;
12
7
  }
13
- function isEffectApiDefinition(module) {
14
- return HttpApi.isHttpApi(module.api) && void 0 !== module.layer;
15
- }
16
8
  function isEffectServiceContext(context) {
17
9
  return 'object' == typeof context && null !== context && 'mapUnsafe' in context;
18
10
  }
19
- const emptyEffectServiceContext = __rspack_external_effect_Context_f1289ca3.empty();
20
- const strictEffectApproachMessage = '[BFF][Effect] strictEffectApproach is enforced: Effect API entries must export defineEffectBff(...) or a { api, layer } HttpApi module. Raw handler exports, default request handlers, and unbranded custom createHandler factories are not valid Effect API entries.';
11
+ const emptyEffectServiceContext = __rspack_external_effect_Context_b3520bd3.empty();
21
12
  function rejectLegacyEffectModuleShape(options, shape) {
22
13
  options.onWarning?.(`${strictEffectApproachMessage} Rejected ${shape}.`);
23
14
  return true;
@@ -40,41 +31,21 @@ function createLoadedHttpApiHandler(webHandler) {
40
31
  dispose: webHandler.dispose
41
32
  };
42
33
  }
43
- function resolveNormalizedEffectBffModuleHandler(normalizedModule, options = {}) {
44
- if (isRequestHandler(normalizedModule.handler)) {
45
- if (rejectLegacyEffectModuleShape(options, '`handler` export')) return null;
46
- return {
47
- handler: normalizedModule.handler
48
- };
49
- }
50
- const entry = normalizedModule.default;
51
- if (isRequestHandler(entry)) {
52
- if (rejectLegacyEffectModuleShape(options, 'default request handler')) return null;
53
- return {
54
- handler: entry
55
- };
56
- }
57
- if (isRecord(entry)) normalizedModule = {
58
- ...normalizedModule,
59
- ...entry
60
- };
61
- if (isRecord(entry) && 'handler' in entry) {
62
- const maybeHandler = entry.handler;
63
- if (isRequestHandler(maybeHandler)) normalizedModule = {
64
- ...normalizedModule,
65
- handler: maybeHandler
66
- };
67
- }
68
- if (isRequestHandler(normalizedModule.handler)) {
69
- if (rejectLegacyEffectModuleShape(options, '`handler` export')) return null;
70
- return {
71
- handler: normalizedModule.handler
72
- };
34
+ function classifyEffectBffRuntimeEntryShape(module) {
35
+ return classifyEffectBffEntryModule(module, {
36
+ isRequestHandler: isRequestHandler,
37
+ isValidatorAwareHandlerFactory: isValidatorAwareHandlerFactory,
38
+ isHttpApi: HttpApi.isHttpApi
39
+ });
40
+ }
41
+ function resolveClassifiedEffectBffModuleHandler(facts, options = {}) {
42
+ if (!facts) return null;
43
+ if (facts.legacyShape) {
44
+ if (rejectLegacyEffectModuleShape(options, facts.legacyShape)) return null;
73
45
  }
74
- if ('function' == typeof normalizedModule.createHandler) {
75
- const factory = normalizedModule.createHandler;
76
- const validatorAware = isValidatorAwareHandlerFactory(factory);
77
- if (!validatorAware && rejectLegacyEffectModuleShape(options, 'unbranded `createHandler` export')) return null;
46
+ if ('function' == typeof facts.createHandler) {
47
+ if (!facts.createHandlerValidatorAware && rejectLegacyEffectModuleShape(options, 'unbranded `createHandler` export')) return null;
48
+ const factory = facts.createHandler;
78
49
  const webHandler = factory({
79
50
  openapi: options.openapi,
80
51
  dataPlatform: options.dataPlatform,
@@ -82,11 +53,11 @@ function resolveNormalizedEffectBffModuleHandler(normalizedModule, options = {})
82
53
  });
83
54
  return createLoadedHandler(webHandler);
84
55
  }
85
- if (isEffectApiDefinition(normalizedModule)) {
56
+ if (void 0 !== facts.api && facts.hasRuntimeLayer) {
86
57
  options.onWarning?.('[BFF][Effect] Detected { api, layer } export without createHandler. Prefer `defineEffectBff(...)` from @modern-js/plugin-bff/server to avoid module instance mismatch.');
87
58
  const webHandler = createHttpApiHandler({
88
- api: normalizedModule.api,
89
- layer: normalizedModule.layer,
59
+ api: facts.api,
60
+ layer: facts.layer,
90
61
  openapi: options.openapi,
91
62
  dataPlatform: options.dataPlatform,
92
63
  validateRequest: options.validateRequest
@@ -95,38 +66,10 @@ function resolveNormalizedEffectBffModuleHandler(normalizedModule, options = {})
95
66
  }
96
67
  return null;
97
68
  }
69
+ function resolveNormalizedEffectBffModuleHandler(normalizedModule, options = {}) {
70
+ return resolveClassifiedEffectBffModuleHandler(classifyEffectBffRuntimeEntryShape(normalizedModule), options);
71
+ }
98
72
  function resolveEffectBffModuleHandler(mod, options = {}) {
99
- let normalizedModule = mod;
100
- const mergeRuntimeExports = (value)=>{
101
- if (!isRecord(value) || !includesRuntimeExports(value)) return;
102
- normalizedModule = {
103
- ...normalizedModule,
104
- ...value
105
- };
106
- };
107
- if (isRequestHandler(normalizedModule.handler)) {
108
- if (rejectLegacyEffectModuleShape(options, '`handler` export')) return Promise.resolve(null);
109
- return Promise.resolve({
110
- handler: normalizedModule.handler
111
- });
112
- }
113
- const entry = normalizedModule.default;
114
- if (isRequestHandler(entry)) {
115
- if (rejectLegacyEffectModuleShape(options, 'default request handler')) return Promise.resolve(null);
116
- return Promise.resolve({
117
- handler: entry
118
- });
119
- }
120
- if ('function' == typeof entry && 0 === entry.length) return Promise.resolve(entry()).then((out)=>{
121
- if (isRequestHandler(out)) {
122
- if (rejectLegacyEffectModuleShape(options, 'default factory returning a request handler')) return null;
123
- return {
124
- handler: out
125
- };
126
- }
127
- mergeRuntimeExports(out);
128
- return resolveNormalizedEffectBffModuleHandler(normalizedModule, options);
129
- });
130
- return Promise.resolve(resolveNormalizedEffectBffModuleHandler(normalizedModule, options));
73
+ return Promise.resolve(resolveNormalizedEffectBffModuleHandler(mod, options));
131
74
  }
132
75
  export { resolveEffectBffModuleHandler };