@bleedingdev/modern-js-plugin-bff 3.5.0-ultramodern.9 → 3.5.0-ultramodern.90

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 +184 -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 +252 -0
  84. package/dist/esm/cli/compress.mjs +14 -0
  85. package/dist/esm/cli/generator.mjs +133 -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 +199 -0
  167. package/dist/esm-node/cli/compress.mjs +15 -0
  168. package/dist/esm-node/cli/generator.mjs +134 -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 +200 -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 +15 -0
  332. package/package.json +45 -33
@@ -1,10 +1,3 @@
1
- import type { FileSystem, Path } from 'effect';
2
- import * as Context from 'effect/Context';
3
- import type * as EffectType from 'effect/Effect';
4
- import * as Layer from 'effect/Layer';
5
- import { Etag, HttpPlatform, HttpRouter } from 'effect/unstable/http';
6
- import { type HttpApi, type HttpApiClient, type HttpApiGroup } from 'effect/unstable/httpapi';
7
- import { type Rpc, type RpcGroup } from 'effect/unstable/rpc';
8
1
  export * as Config from 'effect/Config';
9
2
  export * as Effect from 'effect/Effect';
10
3
  export * as Layer from 'effect/Layer';
@@ -15,186 +8,7 @@ export { HttpTraceContext } from 'effect/unstable/http';
15
8
  export * from 'effect/unstable/httpapi';
16
9
  export { HttpApiBuilder } from 'effect/unstable/httpapi';
17
10
  export * from 'effect/unstable/rpc';
18
- export type EffectRuntimeRequirements = Etag.Generator | FileSystem.FileSystem | HttpPlatform.HttpPlatform | HttpRouter.HttpRouter | HttpRouter.Request<'Error', any> | HttpRouter.Request<'GlobalError', any> | HttpRouter.Request<'GlobalRequires', any> | HttpRouter.Request<'Requires', any> | Path.Path;
19
- export type EffectRuntimeLayer = Layer.Layer<never, never, EffectRuntimeRequirements>;
20
- export type EffectRpcSerialization = 'json' | 'ndjson' | 'jsonRpc' | 'ndJsonRpc' | 'msgPack';
21
- export type EffectRpcRuntimeLayer<TRpcs extends Rpc.Any = Rpc.Any> = Layer.Layer<Rpc.ToHandler<TRpcs> | Rpc.Middleware<TRpcs> | Rpc.ServicesServer<TRpcs>, unknown, never>;
22
- export type EffectRpcBffDefinition<TRpcs extends Rpc.Any = Rpc.Any, TRpcLayer extends EffectRpcRuntimeLayer<TRpcs> = EffectRpcRuntimeLayer<TRpcs>> = {
23
- group: RpcGroup.RpcGroup<TRpcs>;
24
- layer: TRpcLayer;
25
- path?: `/${string}`;
26
- serialization?: EffectRpcSerialization;
27
- disableTracing?: boolean;
28
- spanPrefix?: string;
29
- spanAttributes?: Record<string, unknown>;
30
- disableFatalDefects?: boolean;
31
- };
32
- export type EffectRpcBffHandlerOptions = Pick<EffectRpcBffDefinition, 'path' | 'serialization' | 'disableTracing' | 'spanPrefix' | 'spanAttributes' | 'disableFatalDefects'>;
33
- type EffectApiPromiseClient<TClient> = {
34
- [GroupName in keyof TClient]: {
35
- [EndpointName in keyof TClient[GroupName]]: TClient[GroupName][EndpointName] extends (...args: infer TArgs) => infer TResult ? TResult extends EffectType.Effect<unknown, unknown, unknown> ? (...args: TArgs) => Promise<Exclude<EffectType.Success<TResult>, readonly [unknown, unknown]>> : never : never;
36
- };
37
- };
38
- export type EffectApiClientFromApi<TApi extends HttpApi.AnyWithProps = HttpApi.AnyWithProps> = TApi extends HttpApi.HttpApi<infer _ApiId, infer Groups> ? HttpApiClient.Client<Extract<Groups, HttpApiGroup.Any>, unknown, never> : never;
39
- export type EffectApiPromiseClientFromApi<TApi extends HttpApi.AnyWithProps = HttpApi.AnyWithProps> = EffectApiPromiseClient<EffectApiClientFromApi<TApi>>;
40
- export type EffectBffDefinition<TApi extends HttpApi.AnyWithProps = HttpApi.AnyWithProps, TLayer extends EffectRuntimeLayer = EffectRuntimeLayer, TRpcs extends Rpc.Any = Rpc.Any> = {
41
- api: TApi;
42
- layer: TLayer;
43
- rpc?: EffectRpcBffDefinition<TRpcs>;
44
- dataPlatform?: EffectDataPlatformValidationOptions;
45
- };
46
- export type EffectDataPlatformSelectionValidationOptions = {
47
- maxDepth?: number;
48
- maxFields?: number;
49
- allowedLeafPaths?: string[];
50
- };
51
- export type EffectDataPlatformBatchOptions = {
52
- /**
53
- * Enable network batching endpoint for Effect HttpApi requests.
54
- * Defaults to `true`.
55
- */
56
- enabled?: boolean;
57
- /**
58
- * Batch endpoint path mounted under BFF prefix.
59
- * Defaults to `/_data/batch`.
60
- */
61
- endpoint?: `/${string}`;
62
- /**
63
- * Maximum request items accepted per batch call.
64
- * Defaults to `16`.
65
- */
66
- maxBatchSize?: number;
67
- /**
68
- * Maximum serialized request payload size in bytes.
69
- * Defaults to `65536` (64KiB).
70
- */
71
- maxBatchBytes?: number;
72
- /**
73
- * Client-side micro-batch flush window in milliseconds.
74
- * Server runtime ignores this value and passes it through for codegen.
75
- * Defaults to `8`.
76
- */
77
- flushIntervalMs?: number;
78
- /**
79
- * Maximum per-batch internal request concurrency.
80
- * Defaults to `4`.
81
- */
82
- maxConcurrency?: number;
83
- /**
84
- * Optional timeout per internal request in milliseconds.
85
- * Defaults to `10000`.
86
- */
87
- requestTimeoutMs?: number;
88
- /**
89
- * Allowed HTTP methods for internal batched dispatch.
90
- * Defaults to `['GET']`.
91
- */
92
- allowedMethods?: string[];
93
- };
94
- export type EffectDataPlatformValidationOptions = {
95
- /**
96
- * Enable envelope validation for HttpApi requests.
97
- * Defaults to `true`.
98
- */
99
- enabled?: boolean;
100
- /**
101
- * Require every HttpApi request to include an envelope header.
102
- * Defaults to `false`.
103
- */
104
- requireEnvelope?: boolean;
105
- /**
106
- * Header name used by client/server for the serialized request envelope.
107
- * Defaults to `x-modernjs-data-envelope`.
108
- */
109
- envelopeHeader?: string;
110
- /**
111
- * Optional namespace assertion for envelope validation.
112
- */
113
- expectedNamespace?: string;
114
- /**
115
- * Validate envelope origin against incoming request origin.
116
- * Defaults to `true`.
117
- */
118
- validateOrigin?: boolean;
119
- /**
120
- * Require trace context inside request envelope.
121
- * Defaults to `false`.
122
- */
123
- requireTraceContext?: boolean;
124
- /**
125
- * Selection plan guardrails for server-side validation.
126
- */
127
- selection?: EffectDataPlatformSelectionValidationOptions;
128
- /**
129
- * Network batching gateway configuration.
130
- */
131
- batch?: EffectDataPlatformBatchOptions;
132
- };
133
- /**
134
- * Server-seam request validator applied to every HttpApi request — direct,
135
- * batched (per item) and rpc. Returning a Response short-circuits the
136
- * request; returning `null`/`undefined` lets it through. Used by the effect
137
- * adapter to enforce the cross-project policy at one seam so batched items
138
- * cannot bypass it.
139
- */
140
- export type EffectRequestValidator = (request: Request) => Response | null | undefined;
141
- /**
142
- * Brand stamped on `createHandler` factories that are guaranteed to forward
143
- * `options.validateRequest` into `createHttpApiHandler` — i.e. the policy
144
- * seam runs inside the produced handler, including per batched item.
145
- *
146
- * `defineEffectBff` brands its factory automatically. Hand-written factories
147
- * are NOT assumed to honor `validateRequest`, so strict module resolution
148
- * rejects unbranded factories instead of silently skipping the policy.
149
- *
150
- * Registered via `Symbol.for` so independently loaded runtime copies agree.
151
- */
152
- export declare const EFFECT_VALIDATOR_AWARE_FACTORY: symbol;
153
- /**
154
- * True when `factory` is branded as validator-aware (see
155
- * {@link EFFECT_VALIDATOR_AWARE_FACTORY}).
156
- */
157
- export declare function isValidatorAwareHandlerFactory(factory: unknown): boolean;
158
- export type EffectBffHandlerFactory<TApi extends HttpApi.AnyWithProps = HttpApi.AnyWithProps, TLayer extends EffectRuntimeLayer = EffectRuntimeLayer> = (options?: {
159
- openapi?: EffectBffOpenApiConfig;
160
- rpc?: Partial<EffectRpcBffHandlerOptions>;
161
- dataPlatform?: Partial<EffectDataPlatformValidationOptions>;
162
- validateRequest?: EffectRequestValidator;
163
- }) => ReturnType<typeof createHttpApiHandler>;
164
- export type EffectBffRuntime<TApi extends HttpApi.AnyWithProps = HttpApi.AnyWithProps, TLayer extends EffectRuntimeLayer = EffectRuntimeLayer> = {
165
- createHandler: EffectBffHandlerFactory<TApi, TLayer>;
166
- client: EffectApiPromiseClientFromApi<TApi>;
167
- };
168
- export type EffectBffOpenApiConfig = boolean | {
169
- path?: string;
170
- };
171
- export type EffectRpcBffHandlerFactory<TRpcs extends Rpc.Any = Rpc.Any> = (options?: Partial<EffectRpcBffHandlerOptions>) => ReturnType<typeof createRpcApiHandler<TRpcs>>;
172
- declare function createRpcApiHandler<TRpcs extends Rpc.Any = Rpc.Any>(options: EffectRpcBffDefinition<TRpcs>): {
173
- readonly handler: (request: globalThis.Request, context?: Context.Context<never> | undefined) => Promise<Response>;
174
- readonly dispose: () => Promise<void>;
175
- };
176
- export declare function defineEffectBff<TApi extends HttpApi.AnyWithProps, TLayer extends EffectRuntimeLayer, TRpcs extends Rpc.Any = Rpc.Any>(definition: {
177
- api: TApi;
178
- layer: TLayer;
179
- rpc?: EffectRpcBffDefinition<TRpcs>;
180
- dataPlatform?: EffectDataPlatformValidationOptions;
181
- }): {
182
- api: TApi;
183
- layer: TLayer;
184
- rpc?: EffectRpcBffDefinition<TRpcs>;
185
- dataPlatform?: EffectDataPlatformValidationOptions;
186
- } & EffectBffRuntime<TApi, TLayer>;
187
- export declare function defineEffectRpcBff<TRpcs extends Rpc.Any = Rpc.Any, TLayer extends EffectRpcRuntimeLayer<TRpcs> = EffectRpcRuntimeLayer<TRpcs>>(definition: EffectRpcBffDefinition<TRpcs, TLayer>): EffectRpcBffDefinition<TRpcs, TLayer> & {
188
- createHandler: EffectRpcBffHandlerFactory<TRpcs>;
189
- };
190
- export declare function createHttpApiHandler<TApi extends HttpApi.AnyWithProps = HttpApi.AnyWithProps, TRpcs extends Rpc.Any = Rpc.Any>(options: {
191
- api: TApi;
192
- layer: EffectRuntimeLayer;
193
- openapi?: EffectBffOpenApiConfig;
194
- rpc?: EffectRpcBffDefinition<TRpcs>;
195
- dataPlatform?: EffectDataPlatformValidationOptions;
196
- validateRequest?: EffectRequestValidator;
197
- }): {
198
- handler: (request: Request, context?: Parameters<(request: globalThis.Request, context: Context.Context<any>) => Promise<Response>>[1]) => Promise<Response>;
199
- dispose: () => Promise<void>;
200
- };
11
+ export { EFFECT_VALIDATOR_AWARE_FACTORY, isValidatorAwareHandlerFactory, } from './entry-shape';
12
+ export { defineEffectBff, defineEffectRpcBff } from './handler/definition';
13
+ export { createHttpApiHandler } from './handler/http';
14
+ export type { EffectApiClientFromApi, EffectApiPromiseClientFromApi, EffectBffDefinition, EffectBffHandlerFactory, EffectBffOpenApiConfig, EffectBffRuntime, EffectDataPlatformBatchOptions, EffectDataPlatformSelectionValidationOptions, EffectDataPlatformValidationOptions, EffectRequestValidator, EffectRpcBffDefinition, EffectRpcBffHandlerFactory, EffectRpcBffHandlerOptions, EffectRpcRuntimeLayer, EffectRpcSerialization, EffectRuntimeLayer, EffectRuntimeRequirements, } from './handler/types';
@@ -1,4 +1,7 @@
1
1
  export * as OpenTelemetry from '@effect/opentelemetry';
2
+ export * from './backend-federation';
3
+ export { BACKEND_FEDERATION_CONTRACT_VERSION, BACKEND_FEDERATION_EFFECT_EXPOSE, BACKEND_FEDERATION_MANIFEST_FILE, BACKEND_FEDERATION_NODE_ADAPTER_VERSION, type BackendFederatedEffectApiModule, type BackendFederationEntryExports, type BackendFederationLoadEntryPluginOptions, type BackendFederationRemote, type BackendFederationRuntimeOptions, createBackendFederationLoadEntryPlugin, createBackendFederationRuntime, loadBackendFederatedEffectApi, } from './backend-federation';
4
+ export { type BackendFederationManifest, BackendFederationManifestAdapterError, type BackendFederationManifestAdapterErrorCode, type BackendFederationManifestAdapterFallback, type BackendFederationManifestAdapterOptions, type BackendFederationManifestFetchResponse, type BackendFederationVersionBoundaryExpectation, loadBackendFederatedEffectApiFromManifest, loadBackendFederationManifest, resolveBackendFederationRemoteFromManifest, } from './backend-federation-manifest';
2
5
  export { type CreateEffectOperationContextOptions, createEffectOperationContext, type EffectContext, runWithEffectContext, useEffectContext, useOperationContext, } from './context';
3
6
  export { createEffectBffEdgeHandler, createEffectBffTestHandler, dispatchEffectBffRequest, } from './edge';
4
7
  export * from './handler';
@@ -17,11 +17,11 @@ export type EffectApiModule = {
17
17
  createHandler?: EffectBffHandlerFactory;
18
18
  default?: unknown;
19
19
  };
20
- export type LoadedEffectBffHandler = {
20
+ type LoadedEffectBffHandler = {
21
21
  handler: EffectBffRequestHandler;
22
22
  dispose?: () => Promise<void>;
23
23
  };
24
- export type ResolveEffectBffModuleHandlerOptions = {
24
+ type ResolveEffectBffModuleHandlerOptions = {
25
25
  openapi?: EffectBffOpenApiConfig;
26
26
  dataPlatform?: EffectDataPlatformValidationOptions;
27
27
  /**
@@ -33,3 +33,4 @@ export type ResolveEffectBffModuleHandlerOptions = {
33
33
  onWarning?: (message: string) => void;
34
34
  };
35
35
  export declare function resolveEffectBffModuleHandler(mod: EffectApiModule, options?: ResolveEffectBffModuleHandlerOptions): Promise<LoadedEffectBffHandler | null>;
36
+ export {};
@@ -0,0 +1,3 @@
1
+ import { RpcSerialization } from 'effect/unstable/rpc';
2
+ import type { EffectRpcSerialization } from './handler/types';
3
+ export declare function getRpcSerializationLayer(serialization: EffectRpcSerialization | undefined): import("effect/Layer").Layer<RpcSerialization.RpcSerialization, never, never>;
@@ -0,0 +1,2 @@
1
+ import type { EffectRequestRuntime, GeneratedEffectClientConfig } from './types';
2
+ export declare const configureGeneratedEffectClientRuntime: (config: GeneratedEffectClientConfig, configureRequest: EffectRequestRuntime['configure'] | undefined) => void;
@@ -0,0 +1,15 @@
1
+ import type { EffectOperationDescriptor, EffectRequestContext, EffectRequestContextInput, GeneratedEffectClientConfig, GeneratedEffectEndpoint } from './types';
2
+ /**
3
+ * Resolves the current page origin with a configurable fallback. Single
4
+ * implementation shared by the configure() bootstrap and the data envelope
5
+ * (the generated template previously duplicated data-platform's
6
+ * `resolveRuntimeOrigin` with a different fallback).
7
+ */
8
+ export declare const resolveOrigin: (defaultOrigin: string) => string;
9
+ export declare const prepareEffectRequest: (options: {
10
+ endpoint: GeneratedEffectEndpoint;
11
+ operation: EffectOperationDescriptor;
12
+ request: unknown;
13
+ config: GeneratedEffectClientConfig;
14
+ createEffectRequestContext: (requestContext: EffectRequestContextInput) => EffectRequestContext;
15
+ }) => Record<string, unknown>;
@@ -0,0 +1,2 @@
1
+ export declare const isRecord: (value: unknown) => value is Record<string, unknown>;
2
+ export declare const stringOrUndefined: (value: unknown) => string | undefined;
@@ -53,6 +53,6 @@ export type EffectRpcClientHandle<Rpcs extends Rpc.Any, Flatten extends boolean
53
53
  export declare function view<T>(): <const Selection extends EffectViewSelection<T>>(selection: Selection) => Selection;
54
54
  export declare function mask<T, const Selection extends EffectViewSelection<T>>(value: T, selection: Selection): EffectViewData<T, Selection>;
55
55
  export declare function runEffectView<T, const Selection extends EffectViewSelection<T>>(request: PromiseLike<T>, selection: Selection): Promise<EffectViewData<T, Selection>>;
56
- export declare function makeEffectHttpApiClient<ApiId extends string, Groups extends HttpApiGroup.Any>(api: HttpApi.HttpApi<ApiId, Groups>, options?: EffectHttpApiClientOptions): Effect.Effect<HttpApiClient.Client<Groups>, never, HttpApiGroup.MiddlewareClient<Groups>>;
56
+ export declare function makeEffectHttpApiClient<ApiId extends string, Groups extends HttpApiGroup.Any>(api: HttpApi.HttpApi<ApiId, Groups>, options?: EffectHttpApiClientOptions): Effect.Effect<HttpApiClient.Client<Groups, never, never>, never, HttpApiGroup.MiddlewareClient<Groups>>;
57
57
  export declare function makeEffectRpcClient<Rpcs extends Rpc.Any, const Flatten extends boolean = false>(group: RpcGroup.RpcGroup<Rpcs>, options: EffectRpcClientOptions<Rpcs, Flatten>): Effect.Effect<EffectRpcClientHandle<Rpcs, Flatten>, EffectRpcClientError, never>;
58
58
  export declare const runEffectRequest: <A, E>(effect: Effect.Effect<A, E>, options?: Effect.RunOptions | undefined) => Promise<A>;
@@ -0,0 +1,3 @@
1
+ import type { EffectRequestContext, EffectRequestContextInput, EffectRequestRuntime } from './types';
2
+ export declare const createEffectRequestContext: (createRequestContextHeaders: EffectRequestRuntime['createRequestContextHeaders'], requestContext: EffectRequestContextInput) => EffectRequestContext;
3
+ export declare const applyRequestContext: (normalizedRequest: Record<string, unknown>, request: unknown, createRequestContext: (requestContext: EffectRequestContextInput) => EffectRequestContext) => Record<string, unknown>;
@@ -0,0 +1 @@
1
+ export declare const normalizeRequest: (method: string, request: unknown) => Record<string, unknown>;
@@ -1,71 +1,5 @@
1
- export type GeneratedEffectEndpoint = {
2
- apiId: string;
3
- group: string;
4
- endpoint: string;
5
- method: string;
6
- routePath: string;
7
- /** Per-endpoint operation contract hash (bff-core hash). */
8
- schemaHash: string;
9
- operationVersion: number;
10
- };
11
- export type GeneratedEffectBatchConfig = {
12
- enabled: boolean;
13
- endpoint: string;
14
- flushIntervalMs: number;
15
- maxBatchSize: number;
16
- maxBatchBytes: number;
17
- requestTimeoutMs: number;
18
- allowedMethods: string[];
19
- };
20
- export type GeneratedEffectClientConfig = {
21
- appNamespace: string;
22
- /** Cross-project producer id; absent for same-project clients. */
23
- requestId?: string;
24
- port: number;
25
- /** Resolve the port from process.env.PORT first (server bundles). */
26
- useEnvPort?: boolean;
27
- defaultOrigin: string;
28
- httpMethodDecider?: string;
29
- batch: GeneratedEffectBatchConfig;
30
- };
31
- export type EffectOperationDescriptor = {
32
- appNamespace: string;
33
- apiId: string;
34
- group: string;
35
- endpoint: string;
36
- operationId: string;
37
- routePath: string;
38
- method: string;
39
- operationVersion: number;
40
- schemaHash: string;
41
- version: number;
42
- };
43
- export type EffectClientOperation = (request?: unknown) => Promise<unknown>;
44
- export type EffectClientGroup = Record<string, EffectClientOperation>;
45
- export type EffectClient = Record<string, EffectClientGroup>;
46
- export type EffectOperationManifest = Record<string, Record<string, EffectOperationDescriptor>>;
47
- export type EffectRequestContextInput = Record<string, unknown>;
48
- export type EffectRequestContext = {
49
- headers: Record<string, string>;
50
- } & Record<string, unknown>;
51
- /** Structural slice of `@modern-js/create-request` the runtime relies on. */
52
- export type EffectRequestRuntime = {
53
- createRequest: (options: {
54
- path: string;
55
- method: string;
56
- port: number | string;
57
- operationContext: Record<string, unknown>;
58
- httpMethodDecider: string;
59
- requestId?: string;
60
- }) => (...args: unknown[]) => Promise<unknown>;
61
- configure?: (options: Record<string, unknown>) => void;
62
- createRequestContextHeaders?: (input: EffectRequestContextInput) => Record<string, string>;
63
- };
64
- export type GeneratedEffectClientModule = {
65
- client: EffectClient;
66
- operationManifest: EffectOperationManifest;
67
- createEffectRequestContext: (requestContext: EffectRequestContextInput) => EffectRequestContext;
68
- };
1
+ import type { EffectRequestRuntime, GeneratedEffectClientConfig, GeneratedEffectClientModule, GeneratedEffectEndpoint } from './types';
2
+ export type { EffectClient, EffectClientGroup, EffectClientOperation, EffectOperationDescriptor, EffectOperationManifest, EffectRequestContext, EffectRequestContextInput, EffectRequestRuntime, GeneratedEffectBatchConfig, GeneratedEffectClientConfig, GeneratedEffectClientModule, GeneratedEffectEndpoint, } from './types';
69
3
  export declare const createGeneratedEffectClient: (manifest: {
70
4
  endpoints: GeneratedEffectEndpoint[];
71
5
  }, config: GeneratedEffectClientConfig, requestRuntime: EffectRequestRuntime) => GeneratedEffectClientModule;
@@ -0,0 +1,68 @@
1
+ export type GeneratedEffectEndpoint = {
2
+ apiId: string;
3
+ group: string;
4
+ endpoint: string;
5
+ method: string;
6
+ routePath: string;
7
+ /** Per-endpoint operation contract hash (bff-core hash). */
8
+ schemaHash: string;
9
+ operationVersion: number;
10
+ };
11
+ export type GeneratedEffectBatchConfig = {
12
+ enabled: boolean;
13
+ endpoint: string;
14
+ flushIntervalMs: number;
15
+ maxBatchSize: number;
16
+ maxBatchBytes: number;
17
+ requestTimeoutMs: number;
18
+ allowedMethods: string[];
19
+ };
20
+ export type GeneratedEffectClientConfig = {
21
+ appNamespace: string;
22
+ /** Cross-project producer id; absent for same-project clients. */
23
+ requestId?: string;
24
+ port: number;
25
+ /** Resolve the port from process.env.PORT first (server bundles). */
26
+ useEnvPort?: boolean;
27
+ defaultOrigin: string;
28
+ httpMethodDecider?: string;
29
+ batch: GeneratedEffectBatchConfig;
30
+ };
31
+ export type EffectOperationDescriptor = {
32
+ appNamespace: string;
33
+ apiId: string;
34
+ group: string;
35
+ endpoint: string;
36
+ operationId: string;
37
+ routePath: string;
38
+ method: string;
39
+ operationVersion: number;
40
+ schemaHash: string;
41
+ version: number;
42
+ };
43
+ export type EffectClientOperation = (request?: unknown) => Promise<unknown>;
44
+ export type EffectClientGroup = Record<string, EffectClientOperation>;
45
+ export type EffectClient = Record<string, EffectClientGroup>;
46
+ export type EffectOperationManifest = Record<string, Record<string, EffectOperationDescriptor>>;
47
+ export type EffectRequestContextInput = Record<string, unknown>;
48
+ export type EffectRequestContext = {
49
+ headers: Record<string, string>;
50
+ } & Record<string, unknown>;
51
+ /** Structural slice of `@modern-js/create-request` the runtime relies on. */
52
+ export type EffectRequestRuntime = {
53
+ createRequest: (options: {
54
+ path: string;
55
+ method: string;
56
+ port: number | string;
57
+ operationContext: Record<string, unknown>;
58
+ httpMethodDecider: string;
59
+ requestId?: string;
60
+ }) => (...args: unknown[]) => Promise<unknown>;
61
+ configure?: (options: Record<string, unknown>) => void;
62
+ createRequestContextHeaders?: (input: EffectRequestContextInput) => Record<string, string>;
63
+ };
64
+ export type GeneratedEffectClientModule = {
65
+ client: EffectClient;
66
+ operationManifest: EffectOperationManifest;
67
+ createEffectRequestContext: (requestContext: EffectRequestContextInput) => EffectRequestContext;
68
+ };
@@ -0,0 +1,28 @@
1
+ export interface FileDetails {
2
+ resourcePath: string;
3
+ source: string;
4
+ targetDir: string;
5
+ name: string;
6
+ absTargetDir: string;
7
+ relativeTargetDistDir: string;
8
+ exportKey: string;
9
+ }
10
+ export declare const API_DIR = "api";
11
+ export declare const PLUGIN_DIR = "plugin";
12
+ export declare const RUNTIME_DIR = "runtime";
13
+ export declare const CLIENT_DIR = "client";
14
+ export declare const EXPORT_PREFIX = "./api/";
15
+ export declare const TYPE_PREFIX = "api/";
16
+ export declare const GENERATED_RUNTIME_DIRS: string[];
17
+ export declare const toPosixPath: (p: string) => string;
18
+ export declare const posixJoin: (...args: string[]) => string;
19
+ export declare function createFileDetails(options: {
20
+ appDirectory: string;
21
+ baseDirectory: string;
22
+ resourcePath: string;
23
+ source: string;
24
+ relativeDistPath: string;
25
+ }): FileDetails;
26
+ export declare function readDirectoryFiles(appDirectory: string, directory: string, relativeDistPath: string): Promise<FileDetails[]>;
27
+ export declare function writeTargetFile(absTargetDir: string, content: string): Promise<void>;
28
+ export declare function copyFiles(from: string, to: string): Promise<void>;
@@ -0,0 +1,26 @@
1
+ import type { HttpMethodDecider } from '@modern-js/types';
2
+ export type APILoaderOptions = {
3
+ prefix: string;
4
+ appDir: string;
5
+ apiDir: string;
6
+ lambdaDir: string;
7
+ existLambda: boolean;
8
+ port?: number;
9
+ requestCreator?: string;
10
+ httpMethodDecider?: HttpMethodDecider;
11
+ relativeDistPath: string;
12
+ relativeApiPath: string;
13
+ bffRuntimeFramework?: 'hono' | 'effect';
14
+ effectEntry?: string;
15
+ effectDataPlatformBatch?: {
16
+ enabled?: boolean;
17
+ endpoint?: string;
18
+ flushIntervalMs?: number;
19
+ maxBatchSize?: number;
20
+ maxBatchBytes?: number;
21
+ requestTimeoutMs?: number;
22
+ allowedMethods?: string[];
23
+ };
24
+ };
25
+ export declare function clientGenerator(draftOptions: APILoaderOptions): Promise<void>;
26
+ export default clientGenerator;
@@ -0,0 +1,7 @@
1
+ export type { FileDetails } from './files';
2
+ export { copyFiles, createFileDetails, readDirectoryFiles, writeTargetFile, } from './files';
3
+ export type { APILoaderOptions } from './generate';
4
+ export { clientGenerator, default } from './generate';
5
+ export type { PackageJsonLike } from './package-json';
6
+ export { getClientPackageName, getPackageName, mergePackageJson, } from './package-json';
7
+ export { setPackage, writeClientModuleBoundary } from './write-package';
@@ -0,0 +1,16 @@
1
+ export type PackageJsonLike = {
2
+ files?: string[];
3
+ typesVersions?: Record<string, Record<string, string[]>>;
4
+ exports?: Record<string, {
5
+ import?: string;
6
+ require?: string;
7
+ types?: string;
8
+ }>;
9
+ };
10
+ export declare function getPackageName(appDirectory: string): string | undefined;
11
+ export declare function mergePackageJson(packageJson: PackageJsonLike, files: string[], typesVersion: Record<string, Record<string, string[]>>, exports: Record<string, {
12
+ import?: string;
13
+ require?: string;
14
+ types?: string;
15
+ }>, relativeDistPath: string): void;
16
+ export declare function getClientPackageName(appDirectory: string): string;
@@ -0,0 +1,6 @@
1
+ export declare function writeClientModuleBoundary(appDirectory: string, relativeDistPath: string): Promise<void>;
2
+ export declare function setPackage(files: {
3
+ exportKey: string;
4
+ targetDir: string;
5
+ relativeTargetDistDir: string;
6
+ }[], appDirectory: string, relativeDistPath: string): Promise<void>;
@@ -1,37 +1,2 @@
1
- import type { HttpMethodDecider } from '@modern-js/types';
2
- export type APILoaderOptions = {
3
- prefix: string;
4
- appDir: string;
5
- apiDir: string;
6
- lambdaDir: string;
7
- existLambda: boolean;
8
- port?: number;
9
- requestCreator?: string;
10
- httpMethodDecider?: HttpMethodDecider;
11
- relativeDistPath: string;
12
- relativeApiPath: string;
13
- bffRuntimeFramework?: 'hono' | 'effect';
14
- effectEntry?: string;
15
- effectDataPlatformBatch?: {
16
- enabled?: boolean;
17
- endpoint?: string;
18
- flushIntervalMs?: number;
19
- maxBatchSize?: number;
20
- maxBatchBytes?: number;
21
- requestTimeoutMs?: number;
22
- allowedMethods?: string[];
23
- };
24
- };
25
- interface FileDetails {
26
- resourcePath: string;
27
- source: string;
28
- targetDir: string;
29
- name: string;
30
- absTargetDir: string;
31
- relativeTargetDistDir: string;
32
- exportKey: string;
33
- }
34
- export declare function readDirectoryFiles(appDirectory: string, directory: string, relativeDistPath: string): Promise<FileDetails[]>;
35
- export declare function copyFiles(from: string, to: string): Promise<void>;
36
- declare function clientGenerator(draftOptions: APILoaderOptions): Promise<void>;
37
- export default clientGenerator;
1
+ export * from './client-generator';
2
+ export { default } from './client-generator';
@@ -11,8 +11,9 @@
11
11
  *
12
12
  * The envelope/operation-context headers are client-asserted; see the threat
13
13
  * model in `@modern-js/bff-core` `security/crossProjectPolicy.ts`. Operators
14
- * who need a real trust boundary must additionally configure
15
- * `verifyProducerIdentity` to bind the namespace to a verified channel.
14
+ * Production namespace allowlists require `verifyProducerIdentity` to bind
15
+ * the namespace to a verified channel; without it, only non-production keeps
16
+ * the advisory client-asserted allowlist path.
16
17
  */
17
18
  import { type OperationContractSource, type ResolvedCrossProjectPolicy } from '@modern-js/bff-core';
18
19
  import type { ServerPluginAPI } from '@modern-js/server-core';
@@ -0,0 +1,10 @@
1
+ import type { EffectClientCodegenOptions, GeneratedEffectClientArtifacts } from './types';
2
+ /**
3
+ * Generates the Effect client module plus its type declaration. The module
4
+ * body is a thin manifest + one call into
5
+ * `@modern-js/plugin-bff/effect-client-runtime`; the declaration preserves
6
+ * the group/endpoint structure of the HttpApi instead of erasing it to
7
+ * `Record<string, ...>`.
8
+ */
9
+ export declare function generateEffectClient(options: EffectClientCodegenOptions): Promise<GeneratedEffectClientArtifacts | null>;
10
+ export declare function generateEffectClientCode(options: EffectClientCodegenOptions): Promise<string | null>;
@@ -0,0 +1,4 @@
1
+ export { generateEffectClient, generateEffectClientCode } from './generator';
2
+ export { resolveEffectEntryFile } from './paths';
3
+ export { renderEffectClientDeclaration } from './rendering';
4
+ export type { EffectClientCodegenOptions, GeneratedEffectClientArtifacts, } from './types';
@@ -0,0 +1,5 @@
1
+ export declare function resolveEffectEntryFile(options: {
2
+ appDir: string;
3
+ apiDir: string;
4
+ effectEntry?: string;
5
+ }): string | false | undefined;
@@ -0,0 +1,4 @@
1
+ import { type EffectEndpointMeta } from '../../runtime/effect/endpoint-contracts';
2
+ import type { EffectClientCodegenOptions } from './types';
3
+ export declare function renderEffectClientCode(endpoints: EffectEndpointMeta[], options: EffectClientCodegenOptions): string;
4
+ export declare function renderEffectClientDeclaration(endpoints?: EffectEndpointMeta[]): string;
@@ -0,0 +1,12 @@
1
+ import { type HttpApiLike, type HttpApiReflect } from '../../runtime/effect/endpoint-contracts';
2
+ type HttpApiRuntime = {
3
+ isHttpApi: (value: unknown) => boolean;
4
+ reflect: HttpApiReflect;
5
+ };
6
+ export declare function getHttpApiRuntime(): Promise<HttpApiRuntime>;
7
+ export declare function loadEffectApi(options: {
8
+ appDir: string;
9
+ resourcePath: string;
10
+ onDependency?: (dependency: string) => void;
11
+ }): Promise<HttpApiLike | null>;
12
+ export {};
@@ -0,0 +1,27 @@
1
+ import type { HttpMethodDecider } from '@modern-js/types';
2
+ import type { EffectEndpointMeta } from '../../runtime/effect/endpoint-contracts';
3
+ export type EffectClientCodegenOptions = {
4
+ appDir: string;
5
+ apiDir: string;
6
+ resourcePath: string;
7
+ prefix: string;
8
+ port: number;
9
+ target?: string;
10
+ requestCreator?: string;
11
+ httpMethodDecider?: HttpMethodDecider;
12
+ onDependency?: (dependency: string) => void;
13
+ dataPlatformBatch?: {
14
+ enabled?: boolean;
15
+ endpoint?: string;
16
+ flushIntervalMs?: number;
17
+ maxBatchSize?: number;
18
+ maxBatchBytes?: number;
19
+ requestTimeoutMs?: number;
20
+ allowedMethods?: string[];
21
+ };
22
+ };
23
+ export type GeneratedEffectClientArtifacts = {
24
+ code: string;
25
+ declaration: string;
26
+ endpoints: EffectEndpointMeta[];
27
+ };