@bleedingdev/modern-js-create 3.5.0-ultramodern.30 → 3.5.0-ultramodern.32

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 (421) hide show
  1. package/dist/cjs/cli/flags.cjs +326 -0
  2. package/dist/cjs/cli/help.cjs +106 -0
  3. package/dist/cjs/cli/package-source.cjs +186 -0
  4. package/dist/cjs/cli/project-setup.cjs +138 -0
  5. package/dist/cjs/cli/prompts.cjs +118 -0
  6. package/dist/cjs/index.cjs +24 -581
  7. package/dist/cjs/ultramodern-tooling/commands/cloudflare-output-verify.cjs +132 -0
  8. package/dist/cjs/ultramodern-tooling/commands/context.cjs +131 -0
  9. package/dist/cjs/ultramodern-tooling/commands/mf-types.cjs +55 -0
  10. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.cjs +158 -0
  11. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.cjs +49 -0
  12. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.cjs +87 -0
  13. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.cjs +58 -0
  14. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.cjs +62 -0
  15. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.cjs +60 -0
  16. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.cjs +132 -0
  17. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.cjs +67 -0
  18. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.cjs +93 -0
  19. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.cjs +60 -0
  20. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.cjs +67 -0
  21. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.cjs +67 -0
  22. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/help.cjs +54 -0
  23. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/install.cjs +52 -0
  24. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/io.cjs +133 -0
  25. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.cjs +219 -0
  26. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-source.cjs +76 -0
  27. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.cjs +131 -0
  28. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.cjs +161 -0
  29. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.cjs +88 -0
  30. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect.cjs +149 -0
  31. package/dist/cjs/ultramodern-tooling/commands/options.cjs +59 -0
  32. package/dist/cjs/ultramodern-tooling/commands/routes-generate.cjs +122 -0
  33. package/dist/cjs/ultramodern-tooling/commands/skills.cjs +49 -0
  34. package/dist/cjs/ultramodern-tooling/commands/sync-delivery-unit.cjs +40 -0
  35. package/dist/cjs/ultramodern-tooling/commands/validate.cjs +49 -0
  36. package/dist/cjs/ultramodern-tooling/commands.cjs +17 -1165
  37. package/dist/cjs/ultramodern-tooling/config/constants.cjs +48 -0
  38. package/dist/cjs/ultramodern-tooling/config/index.cjs +104 -0
  39. package/dist/cjs/ultramodern-tooling/config/json.cjs +61 -0
  40. package/dist/cjs/ultramodern-tooling/config/load.cjs +62 -0
  41. package/dist/cjs/ultramodern-tooling/config/metadata.cjs +92 -0
  42. package/dist/cjs/ultramodern-tooling/config/normalize.cjs +160 -0
  43. package/dist/cjs/ultramodern-tooling/config/synthesize.cjs +157 -0
  44. package/dist/cjs/ultramodern-tooling/config/types.cjs +18 -0
  45. package/dist/cjs/ultramodern-tooling/config.cjs +23 -274
  46. package/dist/cjs/ultramodern-workspace/add-vertical/constants.cjs +52 -0
  47. package/dist/cjs/ultramodern-workspace/add-vertical/execute.cjs +156 -0
  48. package/dist/cjs/ultramodern-workspace/add-vertical/plan.cjs +246 -0
  49. package/dist/cjs/ultramodern-workspace/add-vertical/preflight.cjs +198 -0
  50. package/dist/cjs/ultramodern-workspace/add-vertical/shell-files.cjs +116 -0
  51. package/dist/cjs/ultramodern-workspace/add-vertical/topology.cjs +133 -0
  52. package/dist/cjs/ultramodern-workspace/add-vertical/workspace-state.cjs +107 -0
  53. package/dist/cjs/ultramodern-workspace/add-vertical.cjs +22 -596
  54. package/dist/cjs/ultramodern-workspace/api/checkout-cart.cjs +145 -0
  55. package/dist/cjs/ultramodern-workspace/api/client.cjs +218 -0
  56. package/dist/cjs/ultramodern-workspace/api/contracts.cjs +222 -0
  57. package/dist/cjs/ultramodern-workspace/api/names.cjs +98 -0
  58. package/dist/cjs/ultramodern-workspace/api/service.cjs +220 -0
  59. package/dist/cjs/ultramodern-workspace/api/shared.cjs +252 -0
  60. package/dist/cjs/ultramodern-workspace/api.cjs +27 -1046
  61. package/dist/cjs/ultramodern-workspace/app-files.cjs +3 -18
  62. package/dist/cjs/ultramodern-workspace/backend-federation.cjs +38 -24
  63. package/dist/cjs/ultramodern-workspace/bridge-config/cli.cjs +71 -0
  64. package/dist/cjs/ultramodern-workspace/bridge-config/defaults.cjs +43 -0
  65. package/dist/cjs/ultramodern-workspace/bridge-config/gates.cjs +93 -0
  66. package/dist/cjs/ultramodern-workspace/bridge-config/index.cjs +60 -0
  67. package/dist/cjs/ultramodern-workspace/bridge-config/normalize.cjs +68 -0
  68. package/dist/cjs/ultramodern-workspace/bridge-config/schema.cjs +78 -0
  69. package/dist/cjs/ultramodern-workspace/bridge-config/shared.cjs +110 -0
  70. package/dist/cjs/ultramodern-workspace/bridge-config/validation.cjs +68 -0
  71. package/dist/cjs/ultramodern-workspace/bridge-config/workspace-packages.cjs +108 -0
  72. package/dist/cjs/ultramodern-workspace/bridge-config.cjs +32 -297
  73. package/dist/cjs/ultramodern-workspace/delivery-unit-sync.cjs +22 -20
  74. package/dist/cjs/ultramodern-workspace/delivery-unit.cjs +7 -20
  75. package/dist/cjs/ultramodern-workspace/demo-components.cjs +47 -189
  76. package/dist/cjs/ultramodern-workspace/descriptors.cjs +12 -1
  77. package/dist/cjs/ultramodern-workspace/effect-diagnostics.cjs +114 -0
  78. package/dist/cjs/ultramodern-workspace/fs-io.cjs +24 -2
  79. package/dist/cjs/ultramodern-workspace/index.cjs +4 -0
  80. package/dist/cjs/ultramodern-workspace/mf-validation/constants.cjs +69 -0
  81. package/dist/cjs/ultramodern-workspace/mf-validation/discovery.cjs +77 -0
  82. package/dist/cjs/ultramodern-workspace/mf-validation/inspect.cjs +92 -0
  83. package/dist/cjs/ultramodern-workspace/mf-validation/object-literal.cjs +203 -0
  84. package/dist/cjs/ultramodern-workspace/mf-validation/path-utils.cjs +171 -0
  85. package/dist/cjs/ultramodern-workspace/mf-validation/syntax.cjs +228 -0
  86. package/dist/cjs/ultramodern-workspace/mf-validation/types.cjs +18 -0
  87. package/dist/cjs/ultramodern-workspace/mf-validation/validate.cjs +112 -0
  88. package/dist/cjs/ultramodern-workspace/mf-validation.cjs +6 -529
  89. package/dist/cjs/ultramodern-workspace/module-federation/config.cjs +251 -0
  90. package/dist/cjs/ultramodern-workspace/module-federation/index.cjs +73 -0
  91. package/dist/cjs/ultramodern-workspace/module-federation/reexport-module.cjs +73 -0
  92. package/dist/cjs/ultramodern-workspace/module-federation/remote-refs.cjs +105 -0
  93. package/dist/cjs/ultramodern-workspace/module-federation/shared-config.cjs +53 -0
  94. package/dist/cjs/ultramodern-workspace/module-federation.cjs +14 -584
  95. package/dist/cjs/ultramodern-workspace/package-json.cjs +13 -229
  96. package/dist/cjs/ultramodern-workspace/routes.cjs +8 -142
  97. package/dist/cjs/ultramodern-workspace/shared-patches.cjs +44 -0
  98. package/dist/cjs/ultramodern-workspace/tsconfigs.cjs +199 -0
  99. package/dist/cjs/ultramodern-workspace/workspace-script-plan.cjs +2 -2
  100. package/dist/cjs/ultramodern-workspace/write-app.cjs +128 -0
  101. package/dist/cjs/ultramodern-workspace/write-workspace.cjs +4 -61
  102. package/dist/cjs/ultramodern-workspace/zerops.cjs +13 -10
  103. package/dist/esm/cli/flags.js +228 -0
  104. package/dist/esm/cli/help.js +65 -0
  105. package/dist/esm/cli/package-source.js +119 -0
  106. package/dist/esm/cli/project-setup.js +81 -0
  107. package/dist/esm/cli/prompts.js +63 -0
  108. package/dist/esm/index.js +6 -559
  109. package/dist/esm/ultramodern-tooling/commands/cloudflare-output-verify.js +84 -0
  110. package/dist/esm/ultramodern-tooling/commands/context.js +66 -0
  111. package/dist/esm/ultramodern-tooling/commands/mf-types.js +17 -0
  112. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.js +106 -0
  113. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +11 -0
  114. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.js +38 -0
  115. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.js +10 -0
  116. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +14 -0
  117. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +12 -0
  118. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.js +83 -0
  119. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.js +16 -0
  120. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.js +44 -0
  121. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.js +12 -0
  122. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.js +7 -0
  123. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.js +15 -0
  124. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/help.js +16 -0
  125. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/install.js +14 -0
  126. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/io.js +69 -0
  127. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +175 -0
  128. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-source.js +38 -0
  129. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +76 -0
  130. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +105 -0
  131. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +16 -0
  132. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect.js +100 -0
  133. package/dist/esm/ultramodern-tooling/commands/options.js +18 -0
  134. package/dist/esm/ultramodern-tooling/commands/routes-generate.js +74 -0
  135. package/dist/esm/ultramodern-tooling/commands/skills.js +11 -0
  136. package/dist/esm/ultramodern-tooling/commands/sync-delivery-unit.js +1 -0
  137. package/dist/esm/ultramodern-tooling/commands/validate.js +11 -0
  138. package/dist/esm/ultramodern-tooling/commands.js +9 -1152
  139. package/dist/esm/ultramodern-tooling/config/constants.js +4 -0
  140. package/dist/esm/ultramodern-tooling/config/index.js +7 -0
  141. package/dist/esm/ultramodern-tooling/config/json.js +10 -0
  142. package/dist/esm/ultramodern-tooling/config/load.js +13 -0
  143. package/dist/esm/ultramodern-tooling/config/metadata.js +37 -0
  144. package/dist/esm/ultramodern-tooling/config/normalize.js +106 -0
  145. package/dist/esm/ultramodern-tooling/config/synthesize.js +108 -0
  146. package/dist/esm/ultramodern-tooling/config/types.js +0 -0
  147. package/dist/esm/ultramodern-tooling/config.js +1 -255
  148. package/dist/esm/ultramodern-workspace/add-vertical/constants.js +5 -0
  149. package/dist/esm/ultramodern-workspace/add-vertical/execute.js +108 -0
  150. package/dist/esm/ultramodern-workspace/add-vertical/plan.js +184 -0
  151. package/dist/esm/ultramodern-workspace/add-vertical/preflight.js +122 -0
  152. package/dist/esm/ultramodern-workspace/add-vertical/shell-files.js +59 -0
  153. package/dist/esm/ultramodern-workspace/add-vertical/topology.js +89 -0
  154. package/dist/esm/ultramodern-workspace/add-vertical/workspace-state.js +43 -0
  155. package/dist/esm/ultramodern-workspace/add-vertical.js +6 -569
  156. package/dist/esm/ultramodern-workspace/api/checkout-cart.js +86 -0
  157. package/dist/esm/ultramodern-workspace/api/client.js +177 -0
  158. package/dist/esm/ultramodern-workspace/api/contracts.js +172 -0
  159. package/dist/esm/ultramodern-workspace/api/names.js +33 -0
  160. package/dist/esm/ultramodern-workspace/api/service.js +179 -0
  161. package/dist/esm/ultramodern-workspace/api/shared.js +208 -0
  162. package/dist/esm/ultramodern-workspace/api.js +5 -1025
  163. package/dist/esm/ultramodern-workspace/app-files.js +3 -18
  164. package/dist/esm/ultramodern-workspace/backend-federation.js +27 -13
  165. package/dist/esm/ultramodern-workspace/bridge-config/cli.js +30 -0
  166. package/dist/esm/ultramodern-workspace/bridge-config/defaults.js +5 -0
  167. package/dist/esm/ultramodern-workspace/bridge-config/gates.js +52 -0
  168. package/dist/esm/ultramodern-workspace/bridge-config/index.js +3 -0
  169. package/dist/esm/ultramodern-workspace/bridge-config/normalize.js +30 -0
  170. package/dist/esm/ultramodern-workspace/bridge-config/schema.js +31 -0
  171. package/dist/esm/ultramodern-workspace/bridge-config/shared.js +51 -0
  172. package/dist/esm/ultramodern-workspace/bridge-config/validation.js +27 -0
  173. package/dist/esm/ultramodern-workspace/bridge-config/workspace-packages.js +67 -0
  174. package/dist/esm/ultramodern-workspace/bridge-config.js +1 -270
  175. package/dist/esm/ultramodern-workspace/delivery-unit-sync.js +23 -21
  176. package/dist/esm/ultramodern-workspace/delivery-unit.js +6 -16
  177. package/dist/esm/ultramodern-workspace/demo-components.js +47 -189
  178. package/dist/esm/ultramodern-workspace/descriptors.js +12 -1
  179. package/dist/esm/ultramodern-workspace/effect-diagnostics.js +76 -0
  180. package/dist/esm/ultramodern-workspace/fs-io.js +24 -2
  181. package/dist/esm/ultramodern-workspace/index.js +1 -0
  182. package/dist/esm/ultramodern-workspace/mf-validation/constants.js +19 -0
  183. package/dist/esm/ultramodern-workspace/mf-validation/discovery.js +28 -0
  184. package/dist/esm/ultramodern-workspace/mf-validation/inspect.js +45 -0
  185. package/dist/esm/ultramodern-workspace/mf-validation/object-literal.js +144 -0
  186. package/dist/esm/ultramodern-workspace/mf-validation/path-utils.js +89 -0
  187. package/dist/esm/ultramodern-workspace/mf-validation/syntax.js +154 -0
  188. package/dist/esm/ultramodern-workspace/mf-validation/types.js +0 -0
  189. package/dist/esm/ultramodern-workspace/mf-validation/validate.js +57 -0
  190. package/dist/esm/ultramodern-workspace/mf-validation.js +3 -516
  191. package/dist/esm/ultramodern-workspace/module-federation/config.js +204 -0
  192. package/dist/esm/ultramodern-workspace/module-federation/index.js +4 -0
  193. package/dist/esm/ultramodern-workspace/module-federation/reexport-module.js +29 -0
  194. package/dist/esm/ultramodern-workspace/module-federation/remote-refs.js +64 -0
  195. package/dist/esm/ultramodern-workspace/module-federation/shared-config.js +12 -0
  196. package/dist/esm/ultramodern-workspace/module-federation.js +2 -576
  197. package/dist/esm/ultramodern-workspace/package-json.js +7 -210
  198. package/dist/esm/ultramodern-workspace/routes.js +8 -142
  199. package/dist/esm/ultramodern-workspace/shared-patches.js +6 -0
  200. package/dist/esm/ultramodern-workspace/tsconfigs.js +136 -0
  201. package/dist/esm/ultramodern-workspace/workspace-script-plan.js +2 -2
  202. package/dist/esm/ultramodern-workspace/write-app.js +90 -0
  203. package/dist/esm/ultramodern-workspace/write-workspace.js +4 -61
  204. package/dist/esm/ultramodern-workspace/zerops.js +13 -10
  205. package/dist/esm-node/cli/flags.js +229 -0
  206. package/dist/esm-node/cli/help.js +66 -0
  207. package/dist/esm-node/cli/package-source.js +120 -0
  208. package/dist/esm-node/cli/project-setup.js +82 -0
  209. package/dist/esm-node/cli/prompts.js +64 -0
  210. package/dist/esm-node/index.js +6 -559
  211. package/dist/esm-node/ultramodern-tooling/commands/cloudflare-output-verify.js +85 -0
  212. package/dist/esm-node/ultramodern-tooling/commands/context.js +67 -0
  213. package/dist/esm-node/ultramodern-tooling/commands/mf-types.js +18 -0
  214. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.js +107 -0
  215. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +12 -0
  216. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.js +39 -0
  217. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.js +11 -0
  218. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +15 -0
  219. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +13 -0
  220. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.js +84 -0
  221. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.js +17 -0
  222. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.js +45 -0
  223. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.js +13 -0
  224. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.js +8 -0
  225. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.js +16 -0
  226. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/help.js +17 -0
  227. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/install.js +15 -0
  228. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/io.js +70 -0
  229. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +176 -0
  230. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-source.js +39 -0
  231. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +77 -0
  232. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +106 -0
  233. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +17 -0
  234. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect.js +101 -0
  235. package/dist/esm-node/ultramodern-tooling/commands/options.js +19 -0
  236. package/dist/esm-node/ultramodern-tooling/commands/routes-generate.js +75 -0
  237. package/dist/esm-node/ultramodern-tooling/commands/skills.js +12 -0
  238. package/dist/esm-node/ultramodern-tooling/commands/sync-delivery-unit.js +2 -0
  239. package/dist/esm-node/ultramodern-tooling/commands/validate.js +12 -0
  240. package/dist/esm-node/ultramodern-tooling/commands.js +9 -1152
  241. package/dist/esm-node/ultramodern-tooling/config/constants.js +5 -0
  242. package/dist/esm-node/ultramodern-tooling/config/index.js +8 -0
  243. package/dist/esm-node/ultramodern-tooling/config/json.js +11 -0
  244. package/dist/esm-node/ultramodern-tooling/config/load.js +14 -0
  245. package/dist/esm-node/ultramodern-tooling/config/metadata.js +38 -0
  246. package/dist/esm-node/ultramodern-tooling/config/normalize.js +107 -0
  247. package/dist/esm-node/ultramodern-tooling/config/synthesize.js +109 -0
  248. package/dist/esm-node/ultramodern-tooling/config/types.js +1 -0
  249. package/dist/esm-node/ultramodern-tooling/config.js +1 -255
  250. package/dist/esm-node/ultramodern-workspace/add-vertical/constants.js +6 -0
  251. package/dist/esm-node/ultramodern-workspace/add-vertical/execute.js +109 -0
  252. package/dist/esm-node/ultramodern-workspace/add-vertical/plan.js +185 -0
  253. package/dist/esm-node/ultramodern-workspace/add-vertical/preflight.js +123 -0
  254. package/dist/esm-node/ultramodern-workspace/add-vertical/shell-files.js +60 -0
  255. package/dist/esm-node/ultramodern-workspace/add-vertical/topology.js +90 -0
  256. package/dist/esm-node/ultramodern-workspace/add-vertical/workspace-state.js +44 -0
  257. package/dist/esm-node/ultramodern-workspace/add-vertical.js +6 -569
  258. package/dist/esm-node/ultramodern-workspace/api/checkout-cart.js +87 -0
  259. package/dist/esm-node/ultramodern-workspace/api/client.js +178 -0
  260. package/dist/esm-node/ultramodern-workspace/api/contracts.js +173 -0
  261. package/dist/esm-node/ultramodern-workspace/api/names.js +34 -0
  262. package/dist/esm-node/ultramodern-workspace/api/service.js +180 -0
  263. package/dist/esm-node/ultramodern-workspace/api/shared.js +209 -0
  264. package/dist/esm-node/ultramodern-workspace/api.js +5 -1025
  265. package/dist/esm-node/ultramodern-workspace/app-files.js +3 -18
  266. package/dist/esm-node/ultramodern-workspace/backend-federation.js +27 -13
  267. package/dist/esm-node/ultramodern-workspace/bridge-config/cli.js +31 -0
  268. package/dist/esm-node/ultramodern-workspace/bridge-config/defaults.js +6 -0
  269. package/dist/esm-node/ultramodern-workspace/bridge-config/gates.js +53 -0
  270. package/dist/esm-node/ultramodern-workspace/bridge-config/index.js +4 -0
  271. package/dist/esm-node/ultramodern-workspace/bridge-config/normalize.js +31 -0
  272. package/dist/esm-node/ultramodern-workspace/bridge-config/schema.js +32 -0
  273. package/dist/esm-node/ultramodern-workspace/bridge-config/shared.js +52 -0
  274. package/dist/esm-node/ultramodern-workspace/bridge-config/validation.js +28 -0
  275. package/dist/esm-node/ultramodern-workspace/bridge-config/workspace-packages.js +68 -0
  276. package/dist/esm-node/ultramodern-workspace/bridge-config.js +1 -270
  277. package/dist/esm-node/ultramodern-workspace/delivery-unit-sync.js +23 -21
  278. package/dist/esm-node/ultramodern-workspace/delivery-unit.js +6 -16
  279. package/dist/esm-node/ultramodern-workspace/demo-components.js +47 -189
  280. package/dist/esm-node/ultramodern-workspace/descriptors.js +12 -1
  281. package/dist/esm-node/ultramodern-workspace/effect-diagnostics.js +77 -0
  282. package/dist/esm-node/ultramodern-workspace/fs-io.js +24 -2
  283. package/dist/esm-node/ultramodern-workspace/index.js +1 -0
  284. package/dist/esm-node/ultramodern-workspace/mf-validation/constants.js +20 -0
  285. package/dist/esm-node/ultramodern-workspace/mf-validation/discovery.js +29 -0
  286. package/dist/esm-node/ultramodern-workspace/mf-validation/inspect.js +46 -0
  287. package/dist/esm-node/ultramodern-workspace/mf-validation/object-literal.js +145 -0
  288. package/dist/esm-node/ultramodern-workspace/mf-validation/path-utils.js +90 -0
  289. package/dist/esm-node/ultramodern-workspace/mf-validation/syntax.js +155 -0
  290. package/dist/esm-node/ultramodern-workspace/mf-validation/types.js +1 -0
  291. package/dist/esm-node/ultramodern-workspace/mf-validation/validate.js +58 -0
  292. package/dist/esm-node/ultramodern-workspace/mf-validation.js +3 -516
  293. package/dist/esm-node/ultramodern-workspace/module-federation/config.js +205 -0
  294. package/dist/esm-node/ultramodern-workspace/module-federation/index.js +5 -0
  295. package/dist/esm-node/ultramodern-workspace/module-federation/reexport-module.js +30 -0
  296. package/dist/esm-node/ultramodern-workspace/module-federation/remote-refs.js +65 -0
  297. package/dist/esm-node/ultramodern-workspace/module-federation/shared-config.js +13 -0
  298. package/dist/esm-node/ultramodern-workspace/module-federation.js +2 -576
  299. package/dist/esm-node/ultramodern-workspace/package-json.js +7 -210
  300. package/dist/esm-node/ultramodern-workspace/routes.js +8 -142
  301. package/dist/esm-node/ultramodern-workspace/shared-patches.js +7 -0
  302. package/dist/esm-node/ultramodern-workspace/tsconfigs.js +137 -0
  303. package/dist/esm-node/ultramodern-workspace/workspace-script-plan.js +2 -2
  304. package/dist/esm-node/ultramodern-workspace/write-app.js +91 -0
  305. package/dist/esm-node/ultramodern-workspace/write-workspace.js +4 -61
  306. package/dist/esm-node/ultramodern-workspace/zerops.js +13 -10
  307. package/dist/types/cli/flags.d.ts +30 -0
  308. package/dist/types/cli/help.d.ts +2 -0
  309. package/dist/types/cli/package-source.d.ts +15 -0
  310. package/dist/types/cli/project-setup.d.ts +8 -0
  311. package/dist/types/cli/prompts.d.ts +6 -0
  312. package/dist/types/ultramodern-tooling/commands/cloudflare-output-verify.d.ts +2 -0
  313. package/dist/types/ultramodern-tooling/commands/context.d.ts +11 -0
  314. package/dist/types/ultramodern-tooling/commands/mf-types.d.ts +2 -0
  315. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.d.ts +4 -0
  316. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.d.ts +4 -0
  317. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.d.ts +1 -0
  318. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.d.ts +3 -0
  319. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.d.ts +3 -0
  320. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.d.ts +3 -0
  321. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.d.ts +2 -0
  322. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.d.ts +4 -0
  323. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.d.ts +3 -0
  324. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.d.ts +3 -0
  325. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.d.ts +7 -0
  326. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.d.ts +3 -0
  327. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/help.d.ts +1 -0
  328. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/install.d.ts +2 -0
  329. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/io.d.ts +14 -0
  330. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.d.ts +9 -0
  331. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/package-source.d.ts +3 -0
  332. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.d.ts +4 -0
  333. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.d.ts +25 -0
  334. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.d.ts +9 -0
  335. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect.d.ts +2 -0
  336. package/dist/types/ultramodern-tooling/commands/options.d.ts +2 -0
  337. package/dist/types/ultramodern-tooling/commands/routes-generate.d.ts +2 -0
  338. package/dist/types/ultramodern-tooling/commands/skills.d.ts +2 -0
  339. package/dist/types/ultramodern-tooling/commands/sync-delivery-unit.d.ts +1 -0
  340. package/dist/types/ultramodern-tooling/commands/validate.d.ts +2 -0
  341. package/dist/types/ultramodern-tooling/config/constants.d.ts +3 -0
  342. package/dist/types/ultramodern-tooling/config/index.d.ts +7 -0
  343. package/dist/types/ultramodern-tooling/config/json.d.ts +2 -0
  344. package/dist/types/ultramodern-tooling/config/load.d.ts +2 -0
  345. package/dist/types/ultramodern-tooling/config/metadata.d.ts +4 -0
  346. package/dist/types/ultramodern-tooling/config/normalize.d.ts +5 -0
  347. package/dist/types/ultramodern-tooling/config/synthesize.d.ts +5 -0
  348. package/dist/types/ultramodern-tooling/config/types.d.ts +41 -0
  349. package/dist/types/ultramodern-tooling/config.d.ts +1 -49
  350. package/dist/types/ultramodern-workspace/add-vertical/constants.d.ts +4 -0
  351. package/dist/types/ultramodern-workspace/add-vertical/execute.d.ts +2 -0
  352. package/dist/types/ultramodern-workspace/add-vertical/plan.d.ts +7 -0
  353. package/dist/types/ultramodern-workspace/add-vertical/preflight.d.ts +28 -0
  354. package/dist/types/ultramodern-workspace/add-vertical/shell-files.d.ts +6 -0
  355. package/dist/types/ultramodern-workspace/add-vertical/topology.d.ts +9 -0
  356. package/dist/types/ultramodern-workspace/add-vertical/workspace-state.d.ts +8 -0
  357. package/dist/types/ultramodern-workspace/add-vertical.d.ts +7 -39
  358. package/dist/types/ultramodern-workspace/api/checkout-cart.d.ts +33 -0
  359. package/dist/types/ultramodern-workspace/api/client.d.ts +6 -0
  360. package/dist/types/ultramodern-workspace/api/contracts.d.ts +15 -0
  361. package/dist/types/ultramodern-workspace/api/names.d.ts +41 -0
  362. package/dist/types/ultramodern-workspace/api/service.d.ts +6 -0
  363. package/dist/types/ultramodern-workspace/api/shared.d.ts +10 -0
  364. package/dist/types/ultramodern-workspace/api.d.ts +5 -74
  365. package/dist/types/ultramodern-workspace/backend-federation.d.ts +2 -2
  366. package/dist/types/ultramodern-workspace/bridge-config/cli.d.ts +3 -0
  367. package/dist/types/ultramodern-workspace/bridge-config/defaults.d.ts +1 -0
  368. package/dist/types/ultramodern-workspace/bridge-config/gates.d.ts +3 -0
  369. package/dist/types/ultramodern-workspace/bridge-config/index.d.ts +4 -0
  370. package/dist/types/ultramodern-workspace/bridge-config/normalize.d.ts +2 -0
  371. package/dist/types/ultramodern-workspace/bridge-config/schema.d.ts +61 -0
  372. package/dist/types/ultramodern-workspace/bridge-config/shared.d.ts +12 -0
  373. package/dist/types/ultramodern-workspace/bridge-config/validation.d.ts +3 -0
  374. package/dist/types/ultramodern-workspace/bridge-config/workspace-packages.d.ts +3 -0
  375. package/dist/types/ultramodern-workspace/bridge-config.d.ts +1 -64
  376. package/dist/types/ultramodern-workspace/delivery-unit.d.ts +2 -21
  377. package/dist/types/ultramodern-workspace/effect-diagnostics.d.ts +1 -0
  378. package/dist/types/ultramodern-workspace/index.d.ts +1 -0
  379. package/dist/types/ultramodern-workspace/mf-validation/constants.d.ts +5 -0
  380. package/dist/types/ultramodern-workspace/mf-validation/discovery.d.ts +2 -0
  381. package/dist/types/ultramodern-workspace/mf-validation/inspect.d.ts +5 -0
  382. package/dist/types/ultramodern-workspace/mf-validation/object-literal.d.ts +9 -0
  383. package/dist/types/ultramodern-workspace/mf-validation/path-utils.d.ts +13 -0
  384. package/dist/types/ultramodern-workspace/mf-validation/syntax.d.ts +14 -0
  385. package/dist/types/ultramodern-workspace/mf-validation/types.d.ts +33 -0
  386. package/dist/types/ultramodern-workspace/mf-validation/validate.d.ts +4 -0
  387. package/dist/types/ultramodern-workspace/mf-validation.d.ts +4 -27
  388. package/dist/types/ultramodern-workspace/module-federation/config.d.ts +5 -0
  389. package/dist/types/ultramodern-workspace/module-federation/index.d.ts +4 -0
  390. package/dist/types/ultramodern-workspace/module-federation/reexport-module.d.ts +4 -0
  391. package/dist/types/ultramodern-workspace/module-federation/remote-refs.d.ts +3 -0
  392. package/dist/types/ultramodern-workspace/module-federation/shared-config.d.ts +2 -0
  393. package/dist/types/ultramodern-workspace/module-federation.d.ts +1 -11
  394. package/dist/types/ultramodern-workspace/package-json.d.ts +1 -13
  395. package/dist/types/ultramodern-workspace/shared-patches.d.ts +2 -0
  396. package/dist/types/ultramodern-workspace/tsconfigs.d.ts +13 -0
  397. package/dist/types/ultramodern-workspace/workspace-validation-contract.d.ts +1 -1
  398. package/dist/types/ultramodern-workspace/write-app.d.ts +3 -0
  399. package/dist/types/ultramodern-workspace/write-workspace.d.ts +2 -1
  400. package/package.json +4 -3
  401. package/templates/workspace/apps/modern.config.shared-module-federation.ts.handlebars +37 -0
  402. package/templates/workspace/apps/modern.config.ts.handlebars +252 -0
  403. package/templates/workspace/apps/shared/src/routes/ultramodern-jsonld.ts.handlebars +119 -0
  404. package/templates/workspace/apps/shared/src/routes/ultramodern-route-metadata.ts.handlebars +21 -0
  405. package/templates/workspace/apps/shell-super-app/src/routes/[lang]/page.tsx.handlebars +49 -0
  406. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.helpers.tsx.handlebars +79 -0
  407. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.imports.tsx.handlebars +11 -0
  408. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.tsx.handlebars +46 -0
  409. package/templates/workspace/packages/shared-design-tokens/tokens.css.handlebars +7 -0
  410. package/templates/workspace/postcss.config.mjs.handlebars +5 -0
  411. package/templates/workspace/tailwind.config.ts.handlebars +3 -0
  412. package/templates/workspace/verticals/server/checkout-cart-handlers.ts.handlebars +49 -0
  413. package/templates/workspace/verticals/server/checkout-cart-state.ts.handlebars +23 -0
  414. package/templates/workspace/verticals/shared/api.checkout-cart-contract-fields.ts.handlebars +1 -0
  415. package/templates/workspace/verticals/shared/api.checkout-cart-endpoints.ts.handlebars +23 -0
  416. package/templates/workspace/verticals/shared/api.checkout-cart-operation-contexts.ts.handlebars +25 -0
  417. package/templates/workspace/verticals/shared/api.checkout-cart-schemas.ts.handlebars +48 -0
  418. package/templates/workspace/verticals/src/api/checkout-cart-client-exports.ts.handlebars +70 -0
  419. package/templates/workspace-scripts/generate-node-backend-federation.mjs +29 -0
  420. package/templates/workspace-scripts/proof-node-backend-federation.mjs +31 -0
  421. package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +74 -40
@@ -28,1053 +28,34 @@ var __webpack_require__ = {};
28
28
  var __webpack_exports__ = {};
29
29
  __webpack_require__.r(__webpack_exports__);
30
30
  __webpack_require__.d(__webpack_exports__, {
31
- apiTopologyMetadata: ()=>apiTopologyMetadata,
32
- createApiClient: ()=>createApiClient,
33
- createApiDomainOperations: ()=>createApiDomainOperations,
34
- createApiOperationContract: ()=>createApiOperationContract,
35
- createApiReadinessContract: ()=>createApiReadinessContract,
36
- createApiRequestContextContract: ()=>createApiRequestContextContract,
37
- createApiServiceEntry: ()=>createApiServiceEntry,
38
- createBackendEffectApiExpose: ()=>createBackendEffectApiExpose,
39
- createSharedApi: ()=>createSharedApi,
40
- createSharedApiContract: ()=>createSharedApiContract,
41
- createSharedApiImports: ()=>createSharedApiImports,
42
- createShellApiClient: ()=>createShellApiClient,
43
- verticalApiCreatePayloadSchemaExport: ()=>verticalApiCreatePayloadSchemaExport,
44
- verticalApiErrorStem: ()=>verticalApiErrorStem,
45
- verticalApiExport: ()=>verticalApiExport,
46
- verticalApiGroupName: ()=>verticalApiGroupName,
47
- verticalApiMarkerSchemaExport: ()=>verticalApiMarkerSchemaExport,
48
- verticalApiName: ()=>verticalApiName,
49
- verticalApiNotFoundErrorExport: ()=>verticalApiNotFoundErrorExport,
50
- verticalApiNotFoundSchemaExport: ()=>verticalApiNotFoundSchemaExport,
51
- verticalApiReadinessSchemaExport: ()=>verticalApiReadinessSchemaExport,
52
- verticalApiSchemaExport: ()=>verticalApiSchemaExport
31
+ apiTopologyMetadata: ()=>contracts_cjs_namespaceObject.apiTopologyMetadata,
32
+ createApiClient: ()=>client_cjs_namespaceObject.createApiClient,
33
+ createApiDomainOperations: ()=>contracts_cjs_namespaceObject.createApiDomainOperations,
34
+ createApiOperationContract: ()=>contracts_cjs_namespaceObject.createApiOperationContract,
35
+ createApiReadinessContract: ()=>contracts_cjs_namespaceObject.createApiReadinessContract,
36
+ createApiRequestContextContract: ()=>contracts_cjs_namespaceObject.createApiRequestContextContract,
37
+ createApiServiceEntry: ()=>service_cjs_namespaceObject.createApiServiceEntry,
38
+ createBackendEffectApiExpose: ()=>service_cjs_namespaceObject.createBackendEffectApiExpose,
39
+ createSharedApi: ()=>shared_cjs_namespaceObject.createSharedApi,
40
+ createSharedApiContract: ()=>shared_cjs_namespaceObject.createSharedApiContract,
41
+ createSharedApiImports: ()=>shared_cjs_namespaceObject.createSharedApiImports,
42
+ createShellApiClient: ()=>client_cjs_namespaceObject.createShellApiClient,
43
+ verticalApiCreatePayloadSchemaExport: ()=>names_cjs_namespaceObject.verticalApiCreatePayloadSchemaExport,
44
+ verticalApiErrorStem: ()=>names_cjs_namespaceObject.verticalApiErrorStem,
45
+ verticalApiExport: ()=>names_cjs_namespaceObject.verticalApiExport,
46
+ verticalApiGroupName: ()=>names_cjs_namespaceObject.verticalApiGroupName,
47
+ verticalApiMarkerSchemaExport: ()=>names_cjs_namespaceObject.verticalApiMarkerSchemaExport,
48
+ verticalApiName: ()=>names_cjs_namespaceObject.verticalApiName,
49
+ verticalApiNotFoundErrorExport: ()=>names_cjs_namespaceObject.verticalApiNotFoundErrorExport,
50
+ verticalApiNotFoundSchemaExport: ()=>names_cjs_namespaceObject.verticalApiNotFoundSchemaExport,
51
+ verticalApiReadinessSchemaExport: ()=>names_cjs_namespaceObject.verticalApiReadinessSchemaExport,
52
+ verticalApiSchemaExport: ()=>names_cjs_namespaceObject.verticalApiSchemaExport
53
53
  });
54
- const external_backend_federation_cjs_namespaceObject = require("./backend-federation.cjs");
55
- const external_descriptors_cjs_namespaceObject = require("./descriptors.cjs");
56
- const external_naming_cjs_namespaceObject = require("./naming.cjs");
57
- function verticalApiExport(service) {
58
- return `${(0, external_naming_cjs_namespaceObject.toCamelCase)((0, external_descriptors_cjs_namespaceObject.resolveApiStem)(service))}Api`;
59
- }
60
- function verticalApiGroupName(service) {
61
- return (0, external_naming_cjs_namespaceObject.toCamelCase)((0, external_descriptors_cjs_namespaceObject.resolveApiStem)(service));
62
- }
63
- function verticalApiName(service) {
64
- return `${(0, external_naming_cjs_namespaceObject.toPascalCase)((0, external_descriptors_cjs_namespaceObject.resolveApiStem)(service))}Api`;
65
- }
66
- function verticalApiSchemaExport(service) {
67
- return `${(0, external_naming_cjs_namespaceObject.toCamelCase)((0, external_descriptors_cjs_namespaceObject.resolveApiStem)(service))}ItemSchema`;
68
- }
69
- function verticalApiMarkerSchemaExport(service) {
70
- return `${(0, external_naming_cjs_namespaceObject.toCamelCase)((0, external_descriptors_cjs_namespaceObject.resolveApiStem)(service))}MarkerSchema`;
71
- }
72
- function verticalApiReadinessSchemaExport(service) {
73
- return `${(0, external_naming_cjs_namespaceObject.toCamelCase)((0, external_descriptors_cjs_namespaceObject.resolveApiStem)(service))}ReadinessSchema`;
74
- }
75
- function verticalApiErrorStem(service) {
76
- return (0, external_descriptors_cjs_namespaceObject.resolveApiStem)(service);
77
- }
78
- function verticalApiCreatePayloadSchemaExport(service) {
79
- return `${(0, external_naming_cjs_namespaceObject.toCamelCase)((0, external_descriptors_cjs_namespaceObject.resolveApiStem)(service))}CreatePayloadSchema`;
80
- }
81
- function verticalApiNotFoundErrorExport(service) {
82
- return `${(0, external_naming_cjs_namespaceObject.toPascalCase)(verticalApiErrorStem(service))}NotFound`;
83
- }
84
- function verticalApiNotFoundSchemaExport(service) {
85
- return `${(0, external_naming_cjs_namespaceObject.toCamelCase)(verticalApiErrorStem(service))}NotFoundSchema`;
86
- }
87
- function serviceHasCheckoutCartState(service) {
88
- return 'checkout' === (0, external_descriptors_cjs_namespaceObject.resolveApiStem)(service);
89
- }
90
- function createCheckoutCartSharedSchemas(service) {
91
- if (!serviceHasCheckoutCartState(service)) return '';
92
- return `
93
- export interface CheckoutCartLine {
94
- readonly sku: string;
95
- readonly name: string;
96
- readonly quantity: number;
97
- readonly unitPriceCents: number;
98
- }
99
-
100
- export interface CheckoutCart {
101
- readonly lines: readonly CheckoutCartLine[];
102
- readonly subtotalCents: number;
103
- readonly totalQuantity: number;
104
- }
105
-
106
- export interface CheckoutAddCartItemPayload {
107
- readonly sku: string;
108
- readonly name?: string;
109
- readonly quantity: number;
110
- readonly unitPriceCents?: number;
111
- }
112
-
113
- export interface CheckoutRemoveCartItemPayload {
114
- readonly sku: string;
115
- }
116
-
117
- export const checkoutCartLineSchema: Schema.Codec<CheckoutCartLine> = Schema.Struct({
118
- sku: Schema.String,
119
- name: Schema.String,
120
- quantity: Schema.Finite,
121
- unitPriceCents: Schema.Finite,
122
- });
123
-
124
- export const checkoutCartSchema: Schema.Codec<CheckoutCart> = Schema.Struct({
125
- lines: Schema.Array(checkoutCartLineSchema),
126
- subtotalCents: Schema.Finite,
127
- totalQuantity: Schema.Finite,
128
- });
129
-
130
- export const checkoutAddCartItemPayloadSchema: Schema.Codec<CheckoutAddCartItemPayload> = Schema.Struct({
131
- sku: Schema.String,
132
- name: Schema.optional(Schema.String),
133
- quantity: Schema.Finite,
134
- unitPriceCents: Schema.optional(Schema.Finite),
135
- });
136
-
137
- export const checkoutRemoveCartItemPayloadSchema: Schema.Codec<CheckoutRemoveCartItemPayload> = Schema.Struct({
138
- sku: Schema.String,
139
- });
140
- `;
141
- }
142
- function createCheckoutCartEndpointDefinitions(service) {
143
- if (!serviceHasCheckoutCartState(service)) return '';
144
- return `
145
- .add(
146
- HttpApiEndpoint.get('getCart', '/checkout/cart', {
147
- success: checkoutCartSchema,
148
- }),
149
- )
150
- .add(
151
- HttpApiEndpoint.post('addCartItem', '/checkout/cart/items', {
152
- payload: checkoutAddCartItemPayloadSchema,
153
- success: checkoutCartSchema,
154
- }),
155
- )
156
- .add(
157
- HttpApiEndpoint.post('removeCartItem', '/checkout/cart/remove', {
158
- payload: checkoutRemoveCartItemPayloadSchema,
159
- success: checkoutCartSchema,
160
- }),
161
- )
162
- .add(
163
- HttpApiEndpoint.post('clearCart', '/checkout/cart/clear', {
164
- success: checkoutCartSchema,
165
- }),
166
- )`;
167
- }
168
- function createCheckoutCartOperationContexts(service) {
169
- const apiName = verticalApiName(service);
170
- const groupName = verticalApiGroupName(service);
171
- if (!serviceHasCheckoutCartState(service)) return '';
172
- return `
173
- addCartItem: {
174
- method: 'POST',
175
- operationId: '${apiName}:${groupName}:addCartItem',
176
- routePath: '/checkout/cart/items',
177
- source: 'generated-client',
178
- },
179
- clearCart: {
180
- method: 'POST',
181
- operationId: '${apiName}:${groupName}:clearCart',
182
- routePath: '/checkout/cart/clear',
183
- source: 'generated-client',
184
- },
185
- getCart: {
186
- method: 'GET',
187
- operationId: '${apiName}:${groupName}:getCart',
188
- routePath: '/checkout/cart',
189
- source: 'generated-client',
190
- },
191
- removeCartItem: {
192
- method: 'POST',
193
- operationId: '${apiName}:${groupName}:removeCartItem',
194
- routePath: '/checkout/cart/remove',
195
- source: 'generated-client',
196
- },`;
197
- }
198
- function createCheckoutCartApiContractFields(service) {
199
- if (!serviceHasCheckoutCartState(service)) return '';
200
- return ` checkoutCartPath: '${(0, external_descriptors_cjs_namespaceObject.resolveApiPrefix)(service)}/checkout/cart',
201
- `;
202
- }
203
- function createCheckoutCartServerState(service) {
204
- if (!serviceHasCheckoutCartState(service)) return '';
205
- return `
206
- type CheckoutCartLine = {
207
- sku: string;
208
- name: string;
209
- quantity: number;
210
- unitPriceCents: number;
211
- };
212
-
213
- const checkoutCartLines = new Map<string, CheckoutCartLine>();
214
-
215
- const createCheckoutCartSnapshot = () => {
216
- const lines = [...checkoutCartLines.values()].sort((left, right) =>
217
- left.sku.localeCompare(right.sku),
218
- );
219
- return {
220
- lines,
221
- subtotalCents: lines.reduce(
222
- (total, line) => total + line.quantity * line.unitPriceCents,
223
- 0,
224
- ),
225
- totalQuantity: lines.reduce((total, line) => total + line.quantity, 0),
226
- };
227
- };
228
- `;
229
- }
230
- function createCheckoutCartServerHandlers(service) {
231
- const groupName = verticalApiGroupName(service);
232
- if (!serviceHasCheckoutCartState(service)) return '';
233
- return `
234
- .handle('getCart', () =>
235
- Effect.sync(() => createCheckoutCartSnapshot()).pipe(
236
- Effect.withSpan('ultramodern.api.${groupName}.checkout.getCart', {
237
- attributes: operationAttributes(${groupName}OperationContexts.getCart),
238
- kind: 'server',
239
- }),
240
- ),
241
- )
242
- .handle('addCartItem', ({ payload }) =>
243
- Effect.sync(() => {
244
- const existingLine = checkoutCartLines.get(payload.sku);
245
- checkoutCartLines.set(payload.sku, {
246
- sku: payload.sku,
247
- name: payload.name ?? existingLine?.name ?? payload.sku,
248
- quantity: (existingLine?.quantity ?? 0) + payload.quantity,
249
- unitPriceCents:
250
- payload.unitPriceCents ?? existingLine?.unitPriceCents ?? 0,
251
- });
252
- return createCheckoutCartSnapshot();
253
- }).pipe(
254
- Effect.withSpan('ultramodern.api.${groupName}.checkout.addCartItem', {
255
- attributes: operationAttributes(${groupName}OperationContexts.addCartItem),
256
- kind: 'server',
257
- }),
258
- ),
259
- )
260
- .handle('removeCartItem', ({ payload }) =>
261
- Effect.sync(() => {
262
- checkoutCartLines.delete(payload.sku);
263
- return createCheckoutCartSnapshot();
264
- }).pipe(
265
- Effect.withSpan('ultramodern.api.${groupName}.checkout.removeCartItem', {
266
- attributes: operationAttributes(${groupName}OperationContexts.removeCartItem),
267
- kind: 'server',
268
- }),
269
- ),
270
- )
271
- .handle('clearCart', () =>
272
- Effect.sync(() => {
273
- checkoutCartLines.clear();
274
- return createCheckoutCartSnapshot();
275
- }).pipe(
276
- Effect.withSpan('ultramodern.api.${groupName}.checkout.clearCart', {
277
- attributes: operationAttributes(${groupName}OperationContexts.clearCart),
278
- kind: 'server',
279
- }),
280
- ),
281
- )`;
282
- }
283
- function createCheckoutCartClientExports(service) {
284
- if (!serviceHasCheckoutCartState(service)) return '';
285
- const stem = (0, external_descriptors_cjs_namespaceObject.resolveApiStem)(service);
286
- const groupName = verticalApiGroupName(service);
287
- const pascalStem = (0, external_naming_cjs_namespaceObject.toPascalCase)(stem);
288
- const clientOptionsName = `${pascalStem}ClientOptions`;
289
- const createClientName = `create${pascalStem}Client`;
290
- const clientEffectTypeName = `${pascalStem}ClientEffect`;
291
- return `
292
- export interface CheckoutCartLine {
293
- sku: string;
294
- name: string;
295
- quantity: number;
296
- unitPriceCents: number;
297
- }
298
-
299
- export interface CheckoutCart {
300
- lines: readonly CheckoutCartLine[];
301
- subtotalCents: number;
302
- totalQuantity: number;
303
- }
304
-
305
- export interface CheckoutAddCartItemInput {
306
- sku: string;
307
- name?: string;
308
- quantity: number;
309
- unitPriceCents?: number;
310
- }
311
-
312
- export const getCheckoutCart = (
313
- options: ${clientOptionsName} = {},
314
- ): ${clientEffectTypeName}<CheckoutCart> =>
315
- ${createClientName}({
316
- ...options,
317
- operationContext:
318
- options.operationContext ?? ${groupName}OperationContexts.getCart,
319
- }).pipe(
320
- Effect.flatMap(client => client.${groupName}.getCart({})),
321
- );
322
-
323
- export const addCheckoutCartItem = (
324
- payload: CheckoutAddCartItemInput,
325
- options: ${clientOptionsName} = {},
326
- ): ${clientEffectTypeName}<CheckoutCart> =>
327
- ${createClientName}({
328
- ...options,
329
- operationContext:
330
- options.operationContext ?? ${groupName}OperationContexts.addCartItem,
331
- }).pipe(
332
- Effect.flatMap(client =>
333
- client.${groupName}.addCartItem({ payload }),
334
- ),
335
- );
336
-
337
- export const removeCheckoutCartItem = (
338
- sku: string,
339
- options: ${clientOptionsName} = {},
340
- ): ${clientEffectTypeName}<CheckoutCart> =>
341
- ${createClientName}({
342
- ...options,
343
- operationContext:
344
- options.operationContext ?? ${groupName}OperationContexts.removeCartItem,
345
- }).pipe(
346
- Effect.flatMap(client =>
347
- client.${groupName}.removeCartItem({ payload: { sku } }),
348
- ),
349
- );
350
-
351
- export const clearCheckoutCart = (
352
- options: ${clientOptionsName} = {},
353
- ): ${clientEffectTypeName}<CheckoutCart> =>
354
- ${createClientName}({
355
- ...options,
356
- operationContext:
357
- options.operationContext ?? ${groupName}OperationContexts.clearCart,
358
- }).pipe(
359
- Effect.flatMap(client => client.${groupName}.clearCart({})),
360
- );
361
- `;
362
- }
363
- function createSharedApiImports() {
364
- return `import {
365
- HttpApi,
366
- HttpApiEndpoint,
367
- HttpApiGroup,
368
- HttpApiSchema,
369
- Schema,
370
- } from '@modern-js/plugin-bff/effect-client';
371
- `;
372
- }
373
- function createSharedApiContract(service) {
374
- const schemaExport = verticalApiSchemaExport(service);
375
- const markerSchemaExport = verticalApiMarkerSchemaExport(service);
376
- const readinessSchemaExport = verticalApiReadinessSchemaExport(service);
377
- const createPayloadSchemaExport = verticalApiCreatePayloadSchemaExport(service);
378
- const notFoundErrorExport = verticalApiNotFoundErrorExport(service);
379
- const notFoundSchemaExport = verticalApiNotFoundSchemaExport(service);
380
- const apiExport = verticalApiExport(service);
381
- const apiName = verticalApiName(service);
382
- const groupName = verticalApiGroupName(service);
383
- const stem = (0, external_descriptors_cjs_namespaceObject.resolveApiStem)(service);
384
- const pascalStem = (0, external_naming_cjs_namespaceObject.toPascalCase)(stem);
385
- const markerType = `${pascalStem}Marker`;
386
- const itemType = `${pascalStem}Item`;
387
- const readinessType = `${pascalStem}Readiness`;
388
- const createPayloadType = `${pascalStem}CreatePayload`;
389
- const createResponseType = `${pascalStem}CreateResponse`;
390
- const listResponseType = `${pascalStem}ListResponse`;
391
- const apiPrefix = (0, external_descriptors_cjs_namespaceObject.resolveApiPrefix)(service);
392
- const checkoutCartSharedSchemas = createCheckoutCartSharedSchemas(service);
393
- const checkoutCartSharedSchemaSection = '' === checkoutCartSharedSchemas ? '' : `${checkoutCartSharedSchemas}\n`;
394
- const checkoutCartOperationContexts = createCheckoutCartOperationContexts(service).trimStart();
395
- const checkoutCartOperationContextEntries = '' === checkoutCartOperationContexts ? '' : `${checkoutCartOperationContexts}\n`;
396
- return `export interface ${markerType} {
397
- readonly appId: string;
398
- readonly build: string;
399
- readonly deployProfile: string;
400
- readonly packageName: string;
401
- readonly surface: string;
402
- readonly version: string;
403
- }
404
-
405
- export interface ${itemType} {
406
- readonly id: string;
407
- readonly marker: ${markerType};
408
- readonly title: string;
409
- }
410
-
411
- export interface ${readinessType} {
412
- readonly checks: {
413
- readonly api: 'ready';
414
- readonly moduleFederation: 'ready';
415
- readonly ssr: 'ready';
416
- readonly translations: 'ready';
417
- };
418
- readonly marker: ${markerType};
419
- readonly status: 'ready';
420
- readonly versionSkew: 'none';
421
- }
422
-
423
- export interface ${createPayloadType} {
424
- readonly title: string;
425
- }
426
-
427
- export interface ${listResponseType} {
428
- readonly items: readonly ${itemType}[];
429
- }
430
-
431
- export interface ${createResponseType} {
432
- readonly item: ${itemType};
433
- }
434
-
435
- export interface ${notFoundErrorExport} {
436
- readonly _tag: '${notFoundErrorExport}';
437
- readonly id: string;
438
- }
439
-
440
- export const ${markerSchemaExport}: Schema.Codec<${markerType}> = Schema.Struct({
441
- appId: Schema.String,
442
- build: Schema.String,
443
- deployProfile: Schema.String,
444
- packageName: Schema.String,
445
- surface: Schema.String,
446
- version: Schema.String,
447
- });
448
-
449
- export const ${schemaExport}: Schema.Codec<${itemType}> = Schema.Struct({
450
- id: Schema.String,
451
- marker: ${markerSchemaExport},
452
- title: Schema.String,
453
- });
454
-
455
- export const ${readinessSchemaExport}: Schema.Codec<${readinessType}> = Schema.Struct({
456
- checks: Schema.Struct({
457
- api: Schema.Literal('ready'),
458
- moduleFederation: Schema.Literal('ready'),
459
- ssr: Schema.Literal('ready'),
460
- translations: Schema.Literal('ready'),
461
- }),
462
- marker: ${markerSchemaExport},
463
- status: Schema.Literal('ready'),
464
- versionSkew: Schema.Literal('none'),
465
- });
466
-
467
- export const ${createPayloadSchemaExport}: Schema.Codec<${createPayloadType}> = Schema.Struct({
468
- title: Schema.String,
469
- });
470
-
471
- ${checkoutCartSharedSchemaSection}export const ${notFoundSchemaExport}: Schema.Codec<${notFoundErrorExport}> = Schema.TaggedStruct('${notFoundErrorExport}', {
472
- id: Schema.String,
473
- }).pipe(
474
- HttpApiSchema.status(404),
475
- );
476
-
477
- export interface OperationContext {
478
- method: string;
479
- operationId: string;
480
- routePath: string;
481
- source:
482
- | 'client'
483
- | 'server'
484
- | 'generated-client'
485
- | 'effect-adapter'
486
- | 'data-platform'
487
- | 'unknown';
488
- traceId?: string;
489
- }
490
-
491
- export const ${apiExport} = HttpApi.make('${apiName}').add(
492
- HttpApiGroup.make('${groupName}')
493
- .add(
494
- HttpApiEndpoint.get('list', '/${stem}', {
495
- query: {
496
- limit: Schema.optional(Schema.FiniteFromString),
497
- },
498
- success: Schema.Struct({
499
- items: Schema.Array(${schemaExport}),
500
- }),
501
- }),
502
- )
503
- .add(
504
- HttpApiEndpoint.get('readiness', '/${stem}/readiness', {
505
- success: ${readinessSchemaExport},
506
- }),
507
- )
508
- .add(
509
- HttpApiEndpoint.get('get', '/${stem}/:id', {
510
- error: ${notFoundSchemaExport},
511
- params: {
512
- id: Schema.String,
513
- },
514
- success: ${schemaExport},
515
- }),
516
- )
517
- .add(
518
- HttpApiEndpoint.post('create', '/${stem}', {
519
- payload: ${createPayloadSchemaExport},
520
- success: Schema.Struct({
521
- item: ${schemaExport},
522
- }),
523
- }),
524
- )${createCheckoutCartEndpointDefinitions(service)},
525
- );
526
-
527
- export const ${groupName}OperationContexts = {
528
- ${checkoutCartOperationContextEntries} create: {
529
- method: 'POST',
530
- operationId: '${apiName}:${groupName}:create',
531
- routePath: '/${stem}',
532
- source: 'generated-client',
533
- },
534
- get: {
535
- method: 'GET',
536
- operationId: '${apiName}:${groupName}:get',
537
- routePath: '/${stem}/:id',
538
- source: 'generated-client',
539
- },
540
- list: {
541
- method: 'GET',
542
- operationId: '${apiName}:${groupName}:list',
543
- routePath: '/${stem}',
544
- source: 'generated-client',
545
- },
546
- readiness: {
547
- method: 'GET',
548
- operationId: '${apiName}:${groupName}:readiness',
549
- routePath: '/${stem}/readiness',
550
- source: 'generated-client',
551
- },
552
- } satisfies Record<string, OperationContext>;
553
-
554
- export const ${groupName}ApiContract = {
555
- apiPrefix: '${apiPrefix}',
556
- basePath: '${apiPrefix}/${stem}',
557
- ${createCheckoutCartApiContractFields(service)} ownerId: '${service.id}',
558
- readinessPath: '${apiPrefix}/${stem}/readiness',
559
- } as const;
560
- `;
561
- }
562
- function createSharedApi(service) {
563
- return `${createSharedApiImports()}
564
- ${createSharedApiContract(service)}`;
565
- }
566
- function createApiServiceEntry(service, contractImportPath) {
567
- const apiExport = verticalApiExport(service);
568
- const groupName = verticalApiGroupName(service);
569
- const notFoundErrorExport = verticalApiNotFoundErrorExport(service);
570
- const stem = (0, external_descriptors_cjs_namespaceObject.resolveApiStem)(service);
571
- return `import {
572
- defineEffectBff,
573
- Effect,
574
- HttpApiBuilder,
575
- Layer,
576
- } from '@modern-js/plugin-bff/effect-edge';
577
- import type {
578
- EffectBffDefinition,
579
- EffectBffRuntime,
580
- EffectRuntimeLayer,
581
- } from '@modern-js/plugin-bff/effect-edge';
582
- import { ultramodernApiMarker } from '../shared/ultramodern-build.ts';
583
- import {
584
- ${apiExport},
585
- ${groupName}OperationContexts,
586
- } from '${contractImportPath}';
587
- import type {
588
- ${notFoundErrorExport},
589
- OperationContext,
590
- } from '${contractImportPath}';
591
-
592
- const ${groupName}Items = [
593
- {
594
- id: 'starter-${stem}',
595
- marker: ultramodernApiMarker,
596
- title: 'Wire a real ${stem} source here',
597
- },
598
- ];
599
- ${createCheckoutCartServerState(service)}
600
-
601
- const operationAttributes = (operationContext: OperationContext) => ({
602
- 'modernjs.operation.id': operationContext.operationId,
603
- 'modernjs.operation.method': operationContext.method,
604
- 'modernjs.operation.route': operationContext.routePath,
605
- 'modernjs.operation.source': operationContext.source,
606
- ...(typeof operationContext.traceId === 'string'
607
- ? { 'modernjs.trace.id': operationContext.traceId }
608
- : {}),
609
- });
610
-
611
- const ${groupName}Layer = HttpApiBuilder.group(
612
- ${apiExport},
613
- '${groupName}',
614
- (handlers) =>
615
- handlers
616
- .handle('list', ({ query }) =>
617
- Effect.succeed({
618
- items:
619
- typeof query.limit === 'number'
620
- ? ${groupName}Items.slice(0, query.limit)
621
- : ${groupName}Items,
622
- }).pipe(
623
- Effect.withSpan('ultramodern.api.${groupName}.list', {
624
- attributes: operationAttributes(${groupName}OperationContexts.list),
625
- kind: 'server',
626
- }),
627
- ),
628
- )
629
- .handle('readiness', () =>
630
- Effect.succeed({
631
- checks: {
632
- api: 'ready' as const,
633
- moduleFederation: 'ready' as const,
634
- ssr: 'ready' as const,
635
- translations: 'ready' as const,
636
- },
637
- marker: ultramodernApiMarker,
638
- status: 'ready' as const,
639
- versionSkew: 'none' as const,
640
- }).pipe(
641
- Effect.withSpan('ultramodern.api.${groupName}.readiness', {
642
- attributes: operationAttributes(${groupName}OperationContexts.readiness),
643
- kind: 'server',
644
- }),
645
- ),
646
- )
647
- .handle('get', ({ params }) => {
648
- const matchedItem = ${groupName}Items.find(
649
- candidate => candidate.id === params.id,
650
- );
651
- const notFound: ${notFoundErrorExport} = {
652
- _tag: '${notFoundErrorExport}',
653
- id: params.id,
654
- };
655
- const result =
656
- matchedItem === undefined
657
- ? Effect.fail(notFound)
658
- : Effect.succeed(matchedItem);
659
-
660
- return result.pipe(
661
- Effect.withSpan('ultramodern.api.${groupName}.get', {
662
- attributes: operationAttributes(${groupName}OperationContexts.get),
663
- kind: 'server',
664
- }),
665
- );
666
- })
667
- .handle('create', ({ payload }) =>
668
- Effect.succeed({
669
- item: {
670
- id: \`generated-${stem}-\${payload.title
671
- .toLowerCase()
672
- .replaceAll(/[^a-z0-9]+/gu, '-')
673
- .replaceAll(/^-|-$/gu, '')}\`,
674
- marker: ultramodernApiMarker,
675
- title: payload.title,
676
- },
677
- }).pipe(
678
- Effect.withSpan('ultramodern.api.${groupName}.create', {
679
- attributes: operationAttributes(${groupName}OperationContexts.create),
680
- kind: 'server',
681
- }),
682
- ),
683
- )${createCheckoutCartServerHandlers(service)},
684
- );
685
-
686
- const layer = HttpApiBuilder.layer(${apiExport}).pipe(
687
- Layer.provide(${groupName}Layer),
688
- ) satisfies EffectRuntimeLayer;
689
-
690
- const apiRuntime: EffectBffDefinition<typeof ${apiExport}, EffectRuntimeLayer> &
691
- EffectBffRuntime<typeof ${apiExport}, EffectRuntimeLayer> = defineEffectBff({
692
- api: ${apiExport},
693
- layer,
694
- });
695
-
696
- export default apiRuntime;
697
- `;
698
- }
699
- function createBackendEffectApiExpose(scope, service) {
700
- const apiExport = verticalApiExport(service);
701
- const groupName = verticalApiGroupName(service);
702
- const apiPrefix = (0, external_descriptors_cjs_namespaceObject.resolveApiPrefix)(service);
703
- const stem = (0, external_descriptors_cjs_namespaceObject.resolveApiStem)(service);
704
- return `import apiRuntime from './index.ts';
705
- import { ultramodernApiMarker } from '../shared/ultramodern-build.ts';
706
- import {
707
- ${apiExport},
708
- ${groupName}ApiContract,
709
- ${groupName}OperationContexts,
710
- } from '../shared/api.ts';
711
-
712
- export const backendFederationContract = {
713
- compatibility: {
714
- build: ultramodernApiMarker.build,
715
- contractVersion: '${external_backend_federation_cjs_namespaceObject.BACKEND_FEDERATION_CONTRACT_VERSION}',
716
- nodeAdapterVersion: '${external_backend_federation_cjs_namespaceObject.BACKEND_FEDERATION_NODE_ADAPTER_VERSION}',
717
- packageName: '${(0, external_naming_cjs_namespaceObject.packageName)(scope, service.packageSuffix)}',
718
- sourceRevision: ultramodernApiMarker.sourceRevision,
719
- unitId: ultramodernApiMarker.unitId,
720
- },
721
- executionSurfaces: ['node-mf-runtime'],
722
- exposes: ['./effect-api'],
723
- name: '${(0, external_descriptors_cjs_namespaceObject.createBackendFederationName)(service)}',
724
- openapiPath: '${apiPrefix}/openapi.json',
725
- readinessPath: '${apiPrefix}/${stem}/readiness',
726
- role: 'microvertical-server',
727
- runtimeFramework: 'effect',
728
- strictEffectApproach: true,
729
- } as const;
730
-
731
- export const api: unknown = ${apiExport};
732
- export const contract = ${groupName}ApiContract;
733
- export const operationContexts = ${groupName}OperationContexts;
734
- export const runtime = apiRuntime;
735
-
736
- export default apiRuntime;
737
- `;
738
- }
739
- function createApiClient(service, contractImportPath) {
740
- const apiExport = verticalApiExport(service);
741
- const contractExport = verticalApiGroupName(service);
742
- const stem = (0, external_descriptors_cjs_namespaceObject.resolveApiStem)(service);
743
- const groupName = verticalApiGroupName(service);
744
- const singular = verticalApiErrorStem(service);
745
- const clientOptionsName = `${(0, external_naming_cjs_namespaceObject.toPascalCase)(stem)}ClientOptions`;
746
- const createClientName = `create${(0, external_naming_cjs_namespaceObject.toPascalCase)(stem)}Client`;
747
- const clientTypeName = `${(0, external_naming_cjs_namespaceObject.toPascalCase)(stem)}Client`;
748
- const clientEffectTypeName = `${(0, external_naming_cjs_namespaceObject.toPascalCase)(stem)}ClientEffect`;
749
- const listName = `list${(0, external_naming_cjs_namespaceObject.toPascalCase)(stem)}`;
750
- const readinessName = `get${(0, external_naming_cjs_namespaceObject.toPascalCase)(stem)}Readiness`;
751
- const getName = `get${(0, external_naming_cjs_namespaceObject.toPascalCase)(singular)}`;
752
- const createName = `create${(0, external_naming_cjs_namespaceObject.toPascalCase)(singular)}`;
753
- const notFoundErrorExport = verticalApiNotFoundErrorExport(service);
754
- const pascalStem = (0, external_naming_cjs_namespaceObject.toPascalCase)(stem);
755
- const itemType = `${pascalStem}Item`;
756
- const readinessType = `${pascalStem}Readiness`;
757
- const createResponseType = `${pascalStem}CreateResponse`;
758
- const listResponseType = `${pascalStem}ListResponse`;
759
- const checkoutCartClientExports = createCheckoutCartClientExports(service);
760
- return `import {
761
- Effect,
762
- makeEffectHttpApiClient,
763
- runEffectRequest,
764
- } from '@modern-js/plugin-bff/effect-client';
765
- import type {
766
- HttpClientError,
767
- HttpApi,
768
- HttpApiClient,
769
- HttpApiGroup,
770
- Schema,
771
- } from '@modern-js/plugin-bff/effect-client';
772
- import {
773
- ${contractExport}ApiContract,
774
- ${apiExport},
775
- ${groupName}OperationContexts,
776
- } from '${contractImportPath}';
777
- import type {
778
- ${createResponseType},
779
- ${itemType},
780
- ${listResponseType},
781
- ${notFoundErrorExport},
782
- OperationContext,
783
- ${readinessType},
784
- } from '${contractImportPath}';
785
-
786
- export { Effect, runEffectRequest };
787
-
788
- type ${pascalStem}ApiGroups = typeof ${apiExport} extends HttpApi.HttpApi<
789
- infer _ApiId,
790
- infer Groups
791
- >
792
- ? Groups
793
- : never;
794
-
795
- export type ${clientTypeName} = HttpApiClient.Client<
796
- Extract<${pascalStem}ApiGroups, HttpApiGroup.Any>,
797
- never,
798
- never
799
- >;
800
-
801
- export type ${pascalStem}ClientError =
802
- | ${notFoundErrorExport}
803
- | HttpClientError.HttpClientError
804
- | Schema.SchemaError;
805
-
806
- export type ${clientEffectTypeName}<Success> = Effect.Effect<
807
- Success,
808
- ${pascalStem}ClientError,
809
- never
810
- >;
811
-
812
- export interface ${clientOptionsName} {
813
- baseUrl?: string | URL;
814
- locale?: string;
815
- operationContext?: OperationContext;
816
- traceparent?: string;
817
- }
818
-
819
- export const ${createClientName} = (
820
- options: ${clientOptionsName} = {},
821
- ): ${clientEffectTypeName}<${clientTypeName}> =>
822
- makeEffectHttpApiClient(${apiExport}, {
823
- baseUrl: options.baseUrl ?? ${contractExport}ApiContract.apiPrefix,
824
- requestContext: {
825
- ...(options.locale === undefined ? {} : { locale: options.locale }),
826
- ...(options.operationContext === undefined
827
- ? {}
828
- : { operationContext: options.operationContext }),
829
- ...(options.traceparent === undefined
830
- ? {}
831
- : { traceparent: options.traceparent }),
832
- },
833
- });
834
-
835
- export const ${listName} = (
836
- options: ${clientOptionsName} & { limit?: number } = {},
837
- ): ${clientEffectTypeName}<${listResponseType}> =>
838
- ${createClientName}({
839
- ...options,
840
- operationContext:
841
- options.operationContext ?? ${groupName}OperationContexts.list,
842
- }).pipe(
843
- Effect.flatMap(client =>
844
- client.${groupName}.list({ query: { limit: options.limit } }),
845
- ),
846
- );
847
-
848
- export const ${readinessName} = (
849
- options: ${clientOptionsName} = {},
850
- ): ${clientEffectTypeName}<${readinessType}> =>
851
- ${createClientName}({
852
- ...options,
853
- operationContext:
854
- options.operationContext ?? ${groupName}OperationContexts.readiness,
855
- }).pipe(
856
- Effect.flatMap(client => client.${groupName}.readiness({})),
857
- );
858
-
859
- export const ${getName} = (
860
- id: string,
861
- options: ${clientOptionsName} = {},
862
- ): ${clientEffectTypeName}<${itemType}> =>
863
- ${createClientName}({
864
- ...options,
865
- operationContext:
866
- options.operationContext ?? ${groupName}OperationContexts.get,
867
- }).pipe(
868
- Effect.flatMap(client => client.${groupName}.get({ params: { id } })),
869
- );
870
-
871
- export const ${createName} = (
872
- title: string,
873
- options: ${clientOptionsName} = {},
874
- ): ${clientEffectTypeName}<${createResponseType}> =>
875
- ${createClientName}({
876
- ...options,
877
- operationContext:
878
- options.operationContext ?? ${groupName}OperationContexts.create,
879
- }).pipe(
880
- Effect.flatMap(client =>
881
- client.${groupName}.create({ payload: { title } }),
882
- ),
883
- );${checkoutCartClientExports}
884
- `;
885
- }
886
- function createShellApiClient(scope, remotes = []) {
887
- const exports1 = (0, external_descriptors_cjs_namespaceObject.verticalApiApps)(remotes).map((remote)=>{
888
- const stem = (0, external_descriptors_cjs_namespaceObject.resolveApiStem)(remote);
889
- const pascalStem = (0, external_naming_cjs_namespaceObject.toPascalCase)(stem);
890
- const pascalSingular = (0, external_naming_cjs_namespaceObject.toPascalCase)(verticalApiErrorStem(remote));
891
- const checkoutCartExports = serviceHasCheckoutCartState(remote) ? ` addCheckoutCartItem,
892
- clearCheckoutCart,
893
- getCheckoutCart,
894
- removeCheckoutCartItem,
895
- type CheckoutAddCartItemInput,
896
- type CheckoutCart,
897
- type CheckoutCartLine,
898
- ` : '';
899
- return `export {
900
- ${checkoutCartExports} create${pascalSingular},
901
- create${pascalStem}Client,
902
- get${pascalSingular},
903
- get${pascalStem}Readiness,
904
- list${pascalStem},
905
- type ${pascalStem}ClientOptions,
906
- } from '${(0, external_naming_cjs_namespaceObject.packageName)(scope, remote.packageSuffix)}/api/client';`;
907
- }).join('\n\n');
908
- return exports1 ? `${exports1}\n` : `export const ultramodernVerticalClients = [] as const;
909
- `;
910
- }
911
- function createApiReadinessContract(app) {
912
- const stem = (0, external_descriptors_cjs_namespaceObject.resolveApiStem)(app);
913
- return {
914
- endpoint: `/${stem}/readiness`,
915
- marker: {
916
- ui: 'ultramodernUiMarker',
917
- api: 'ultramodernApiMarker',
918
- skew: 'none'
919
- },
920
- checks: [
921
- 'moduleFederation',
922
- 'ssr',
923
- 'translations',
924
- 'api'
925
- ]
926
- };
927
- }
928
- function createApiRequestContextContract() {
929
- return {
930
- propagatedHeaders: [
931
- 'accept-language',
932
- 'authorization',
933
- 'traceparent',
934
- 'x-correlation-id',
935
- 'x-tenant-id',
936
- 'x-ultramodern-env',
937
- 'x-vertical-version-id'
938
- ],
939
- source: 'shell-to-vertical-api-client'
940
- };
941
- }
942
- function createApiDomainOperations(app) {
943
- const stem = (0, external_descriptors_cjs_namespaceObject.resolveApiStem)(app);
944
- const group = verticalApiGroupName(app);
945
- const basePath = `/${stem}`;
946
- const checkoutCartOperations = serviceHasCheckoutCartState(app) ? {
947
- checkoutCartAddItem: {
948
- client: 'addCheckoutCartItem',
949
- method: 'POST',
950
- path: '/checkout/cart/items',
951
- resource: 'checkout-cart',
952
- owner: app.id
953
- },
954
- checkoutCartClear: {
955
- client: 'clearCheckoutCart',
956
- method: 'POST',
957
- path: '/checkout/cart/clear',
958
- resource: 'checkout-cart',
959
- owner: app.id
960
- },
961
- checkoutCartRead: {
962
- client: 'getCheckoutCart',
963
- method: 'GET',
964
- path: '/checkout/cart',
965
- resource: 'checkout-cart',
966
- owner: app.id
967
- },
968
- checkoutCartRemoveItem: {
969
- client: 'removeCheckoutCartItem',
970
- method: 'POST',
971
- path: '/checkout/cart/remove',
972
- resource: 'checkout-cart',
973
- owner: app.id
974
- }
975
- } : {};
976
- return {
977
- ...checkoutCartOperations,
978
- workspaceFeed: {
979
- client: `list${(0, external_naming_cjs_namespaceObject.toPascalCase)(stem)}`,
980
- method: 'GET',
981
- path: basePath,
982
- resource: 'workspace-items',
983
- owner: app.id
984
- },
985
- workspaceDetail: {
986
- client: `get${(0, external_naming_cjs_namespaceObject.toPascalCase)(verticalApiErrorStem(app))}`,
987
- method: 'GET',
988
- path: `${basePath}/:id`,
989
- resource: 'workspace-item',
990
- owner: app.id
991
- },
992
- workspaceCreate: {
993
- client: `create${(0, external_naming_cjs_namespaceObject.toPascalCase)(verticalApiErrorStem(app))}`,
994
- method: 'POST',
995
- path: basePath,
996
- resource: group,
997
- owner: app.id
998
- }
999
- };
1000
- }
1001
- function apiTopologyMetadata(app) {
1002
- if (!(0, external_descriptors_cjs_namespaceObject.appHasApi)(app)) return;
1003
- return {
1004
- runtime: 'effect',
1005
- bff: {
1006
- prefix: app.api.prefix,
1007
- openapi: '/openapi.json',
1008
- strictEffectApproach: true
1009
- },
1010
- contract: {
1011
- export: './api',
1012
- path: `${app.directory}/shared/api.ts`
1013
- },
1014
- client: {
1015
- export: './api/client',
1016
- path: `${app.directory}/src/api/${app.api.stem}-client.ts`
1017
- },
1018
- serverEntry: `${app.directory}/api/index.ts`,
1019
- basePath: `${app.api.prefix}/${app.api.stem}`,
1020
- consumedBy: app.api.consumedBy,
1021
- readiness: createApiReadinessContract(app),
1022
- requestContext: createApiRequestContextContract(),
1023
- domainOperations: createApiDomainOperations(app)
1024
- };
1025
- }
1026
- function createApiOperationContract(target) {
1027
- const stem = (0, external_descriptors_cjs_namespaceObject.resolveApiStem)(target);
1028
- const checkoutCartOperations = serviceHasCheckoutCartState(target) ? {
1029
- addCartItem: {
1030
- method: 'POST',
1031
- path: '/checkout/cart/items',
1032
- source: 'generated-client'
1033
- },
1034
- clearCart: {
1035
- method: 'POST',
1036
- path: '/checkout/cart/clear',
1037
- source: 'generated-client'
1038
- },
1039
- getCart: {
1040
- method: 'GET',
1041
- path: '/checkout/cart',
1042
- source: 'generated-client'
1043
- },
1044
- removeCartItem: {
1045
- method: 'POST',
1046
- path: '/checkout/cart/remove',
1047
- source: 'generated-client'
1048
- }
1049
- } : {};
1050
- return {
1051
- group: verticalApiGroupName(target),
1052
- notFound: verticalApiNotFoundErrorExport(target),
1053
- operations: {
1054
- ...checkoutCartOperations,
1055
- list: {
1056
- method: 'GET',
1057
- path: `/${stem}`,
1058
- source: 'generated-client'
1059
- },
1060
- readiness: {
1061
- method: 'GET',
1062
- path: `/${stem}/readiness`,
1063
- source: 'generated-client'
1064
- },
1065
- get: {
1066
- method: 'GET',
1067
- path: `/${stem}/:id`,
1068
- source: 'generated-client'
1069
- },
1070
- create: {
1071
- method: 'POST',
1072
- path: `/${stem}`,
1073
- source: 'generated-client'
1074
- }
1075
- }
1076
- };
1077
- }
54
+ const client_cjs_namespaceObject = require("./api/client.cjs");
55
+ const contracts_cjs_namespaceObject = require("./api/contracts.cjs");
56
+ const names_cjs_namespaceObject = require("./api/names.cjs");
57
+ const service_cjs_namespaceObject = require("./api/service.cjs");
58
+ const shared_cjs_namespaceObject = require("./api/shared.cjs");
1078
59
  exports.apiTopologyMetadata = __webpack_exports__.apiTopologyMetadata;
1079
60
  exports.createApiClient = __webpack_exports__.createApiClient;
1080
61
  exports.createApiDomainOperations = __webpack_exports__.createApiDomainOperations;