@bleedingdev/modern-js-ultramodern-create 3.9.0-ultramodern.2 → 3.9.0-ultramodern.21

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 (442) hide show
  1. package/README.md +43 -74
  2. package/dist/cjs/cli/package-source.cjs +2 -2
  3. package/dist/cjs/cli/project-setup.cjs +2 -22
  4. package/dist/cjs/index.cjs +9 -1
  5. package/dist/cjs/locale/en.cjs +2 -1
  6. package/dist/cjs/locale/zh.cjs +2 -1
  7. package/dist/cjs/ultramodern-package-source.cjs +13 -9
  8. package/dist/cjs/ultramodern-release-cohort.cjs +6 -21
  9. package/dist/cjs/ultramodern-tooling/commands/cloudflare-output-verify.cjs +49 -56
  10. package/dist/cjs/ultramodern-tooling/commands/context.cjs +11 -29
  11. package/dist/cjs/ultramodern-tooling/commands/routes-generate-app.cjs +67 -0
  12. package/dist/cjs/ultramodern-tooling/commands/routes-generate.cjs +24 -53
  13. package/dist/cjs/ultramodern-tooling/commands/validate.cjs +5 -11
  14. package/dist/cjs/ultramodern-tooling/commands.cjs +15 -8
  15. package/dist/cjs/ultramodern-tooling/config/index.cjs +10 -24
  16. package/dist/cjs/ultramodern-tooling/config/load.cjs +12 -10
  17. package/dist/cjs/ultramodern-tooling/config/metadata.cjs +34 -32
  18. package/dist/cjs/ultramodern-tooling/config/normalize.cjs +165 -164
  19. package/dist/cjs/ultramodern-workspace/add-shell.cjs +118 -118
  20. package/dist/cjs/ultramodern-workspace/add-vertical/execute.cjs +121 -25
  21. package/dist/cjs/ultramodern-workspace/add-vertical/plan.cjs +14 -160
  22. package/dist/cjs/ultramodern-workspace/add-vertical/preflight.cjs +16 -48
  23. package/dist/cjs/ultramodern-workspace/add-vertical/preview.cjs +78 -0
  24. package/dist/cjs/ultramodern-workspace/add-vertical/shell-files.cjs +87 -24
  25. package/dist/cjs/ultramodern-workspace/add-vertical/topology.cjs +4 -1
  26. package/dist/cjs/ultramodern-workspace/add-vertical/transaction.cjs +378 -45
  27. package/dist/cjs/ultramodern-workspace/add-vertical/workspace-state.cjs +21 -44
  28. package/dist/cjs/ultramodern-workspace/add-vertical.cjs +0 -9
  29. package/dist/cjs/ultramodern-workspace/api/client.cjs +5 -5
  30. package/dist/cjs/ultramodern-workspace/api/contracts.cjs +2 -2
  31. package/dist/cjs/ultramodern-workspace/api/rpc.cjs +20 -18
  32. package/dist/cjs/ultramodern-workspace/api/service.cjs +49 -24
  33. package/dist/cjs/ultramodern-workspace/api/shared.cjs +28 -18
  34. package/dist/cjs/ultramodern-workspace/app-files.cjs +3 -23
  35. package/dist/cjs/ultramodern-workspace/backend-federation.cjs +27 -27
  36. package/dist/cjs/ultramodern-workspace/contracts.cjs +14 -183
  37. package/dist/cjs/ultramodern-workspace/delivery-unit-schema/surfaces.cjs +85 -0
  38. package/dist/cjs/ultramodern-workspace/delivery-unit-schema/types.cjs +8 -85
  39. package/dist/cjs/ultramodern-workspace/delivery-unit-stamp.cjs +16 -4
  40. package/dist/cjs/ultramodern-workspace/delivery-unit-sync.cjs +27 -17
  41. package/dist/cjs/ultramodern-workspace/delivery-unit.cjs +16 -10
  42. package/dist/cjs/ultramodern-workspace/demo-components.cjs +66 -433
  43. package/dist/cjs/ultramodern-workspace/descriptors.cjs +0 -4
  44. package/dist/cjs/ultramodern-workspace/fs-io.cjs +37 -2
  45. package/dist/cjs/ultramodern-workspace/generation-result.cjs +4 -4
  46. package/dist/cjs/ultramodern-workspace/index.cjs +2 -5
  47. package/dist/cjs/ultramodern-workspace/mf-validation/constants.cjs +0 -6
  48. package/dist/cjs/ultramodern-workspace/mf-validation/discovery.cjs +6 -6
  49. package/dist/cjs/{ultramodern-tooling/commands/migrate-strict-effect/generated-patches.cjs → ultramodern-workspace/mf-validation/exposes.cjs} +13 -17
  50. package/dist/cjs/ultramodern-workspace/mf-validation/inspect.cjs +26 -7
  51. package/dist/cjs/ultramodern-workspace/mf-validation/object-literal.cjs +21 -122
  52. package/dist/cjs/ultramodern-workspace/mf-validation/path-utils.cjs +37 -38
  53. package/dist/cjs/ultramodern-workspace/mf-validation/syntax.cjs +93 -153
  54. package/dist/cjs/ultramodern-workspace/mf-validation.cjs +4 -0
  55. package/dist/cjs/ultramodern-workspace/module-federation/config.cjs +24 -29
  56. package/dist/cjs/ultramodern-workspace/module-federation/reexport-module.cjs +39 -58
  57. package/dist/cjs/ultramodern-workspace/module-federation/remote-refs.cjs +1 -43
  58. package/dist/cjs/ultramodern-workspace/package-json.cjs +63 -37
  59. package/dist/cjs/ultramodern-workspace/patch-inventory.cjs +104 -0
  60. package/dist/cjs/ultramodern-workspace/policy.cjs +3 -577
  61. package/dist/cjs/ultramodern-workspace/public-surface.cjs +3 -3
  62. package/dist/cjs/ultramodern-workspace/routes.cjs +2 -11
  63. package/dist/cjs/ultramodern-workspace/shared-patches.cjs +12 -2
  64. package/dist/cjs/ultramodern-workspace/shells.cjs +0 -70
  65. package/dist/cjs/ultramodern-workspace/tooling-command-catalog.cjs +27 -41
  66. package/dist/cjs/ultramodern-workspace/tsconfigs.cjs +8 -2
  67. package/dist/cjs/ultramodern-workspace/validation/architecture.cjs +397 -0
  68. package/dist/cjs/ultramodern-workspace/validation/assertions.cjs +140 -0
  69. package/dist/cjs/ultramodern-workspace/validation/types.cjs +18 -0
  70. package/dist/cjs/ultramodern-workspace/validation/workspace.cjs +344 -0
  71. package/dist/cjs/ultramodern-workspace/versions.cjs +81 -45
  72. package/dist/cjs/ultramodern-workspace/workspace-artifact-ownership.cjs +183 -0
  73. package/dist/cjs/ultramodern-workspace/workspace-script-plan.cjs +36 -25
  74. package/dist/cjs/ultramodern-workspace/workspace-scripts.cjs +11 -200
  75. package/dist/cjs/ultramodern-workspace/workspace-validation-contract.cjs +62 -373
  76. package/dist/cjs/ultramodern-workspace/write-app.cjs +19 -11
  77. package/dist/cjs/ultramodern-workspace/write-workspace.cjs +20 -50
  78. package/dist/cjs/ultramodern-workspace/zerops.cjs +2 -0
  79. package/dist/esm/cli/package-source.js +3 -3
  80. package/dist/esm/cli/project-setup.js +2 -22
  81. package/dist/esm/index.js +10 -2
  82. package/dist/esm/locale/en.js +2 -1
  83. package/dist/esm/locale/zh.js +2 -1
  84. package/dist/esm/ultramodern-package-source.js +14 -4
  85. package/dist/esm/ultramodern-release-cohort.js +5 -14
  86. package/dist/esm/ultramodern-tooling/commands/cloudflare-output-verify.js +49 -56
  87. package/dist/esm/ultramodern-tooling/commands/context.js +10 -26
  88. package/dist/esm/ultramodern-tooling/commands/routes-generate-app.js +35 -0
  89. package/dist/esm/ultramodern-tooling/commands/routes-generate.js +25 -54
  90. package/dist/esm/ultramodern-tooling/commands/validate.js +6 -12
  91. package/dist/esm/ultramodern-tooling/commands.js +15 -9
  92. package/dist/esm/ultramodern-tooling/config/index.js +0 -2
  93. package/dist/esm/ultramodern-tooling/config/load.js +9 -9
  94. package/dist/esm/ultramodern-tooling/config/metadata.js +33 -28
  95. package/dist/esm/ultramodern-tooling/config/normalize.js +159 -156
  96. package/dist/esm/ultramodern-workspace/add-shell.js +124 -123
  97. package/dist/esm/ultramodern-workspace/add-vertical/execute.js +119 -27
  98. package/dist/esm/ultramodern-workspace/add-vertical/plan.js +16 -150
  99. package/dist/esm/ultramodern-workspace/add-vertical/preflight.js +15 -47
  100. package/dist/esm/ultramodern-workspace/add-vertical/preview.js +40 -0
  101. package/dist/esm/ultramodern-workspace/add-vertical/shell-files.js +87 -25
  102. package/dist/esm/ultramodern-workspace/add-vertical/topology.js +4 -1
  103. package/dist/esm/ultramodern-workspace/add-vertical/transaction.js +373 -46
  104. package/dist/esm/ultramodern-workspace/add-vertical/workspace-state.js +17 -34
  105. package/dist/esm/ultramodern-workspace/add-vertical.js +1 -1
  106. package/dist/esm/ultramodern-workspace/api/client.js +5 -5
  107. package/dist/esm/ultramodern-workspace/api/contracts.js +2 -2
  108. package/dist/esm/ultramodern-workspace/api/rpc.js +20 -18
  109. package/dist/esm/ultramodern-workspace/api/service.js +49 -24
  110. package/dist/esm/ultramodern-workspace/api/shared.js +28 -18
  111. package/dist/esm/ultramodern-workspace/app-files.js +3 -23
  112. package/dist/esm/ultramodern-workspace/backend-federation.js +5 -5
  113. package/dist/esm/ultramodern-workspace/contracts.js +14 -180
  114. package/dist/esm/ultramodern-workspace/delivery-unit-schema/surfaces.js +41 -0
  115. package/dist/esm/ultramodern-workspace/delivery-unit-schema/types.js +1 -75
  116. package/dist/esm/ultramodern-workspace/delivery-unit-stamp.js +16 -4
  117. package/dist/esm/ultramodern-workspace/delivery-unit-sync.js +28 -18
  118. package/dist/esm/ultramodern-workspace/delivery-unit.js +12 -6
  119. package/dist/esm/ultramodern-workspace/demo-components.js +67 -428
  120. package/dist/esm/ultramodern-workspace/descriptors.js +1 -2
  121. package/dist/esm/ultramodern-workspace/fs-io.js +37 -2
  122. package/dist/esm/ultramodern-workspace/generation-result.js +3 -3
  123. package/dist/esm/ultramodern-workspace/index.js +1 -1
  124. package/dist/esm/ultramodern-workspace/mf-validation/constants.js +1 -4
  125. package/dist/esm/ultramodern-workspace/mf-validation/discovery.js +7 -7
  126. package/dist/esm/ultramodern-workspace/mf-validation/exposes.js +14 -0
  127. package/dist/esm/ultramodern-workspace/mf-validation/inspect.js +27 -8
  128. package/dist/esm/ultramodern-workspace/mf-validation/object-literal.js +22 -123
  129. package/dist/esm/ultramodern-workspace/mf-validation/path-utils.js +36 -34
  130. package/dist/esm/ultramodern-workspace/mf-validation/syntax.js +83 -143
  131. package/dist/esm/ultramodern-workspace/mf-validation.js +1 -0
  132. package/dist/esm/ultramodern-workspace/module-federation/config.js +25 -30
  133. package/dist/esm/ultramodern-workspace/module-federation/reexport-module.js +39 -58
  134. package/dist/esm/ultramodern-workspace/module-federation/remote-refs.js +1 -43
  135. package/dist/esm/ultramodern-workspace/package-json.js +58 -32
  136. package/dist/esm/ultramodern-workspace/patch-inventory.js +66 -0
  137. package/dist/esm/ultramodern-workspace/policy.js +2 -564
  138. package/dist/esm/ultramodern-workspace/public-surface.js +3 -3
  139. package/dist/esm/ultramodern-workspace/routes.js +2 -11
  140. package/dist/esm/ultramodern-workspace/shared-patches.js +2 -2
  141. package/dist/esm/ultramodern-workspace/shells.js +3 -67
  142. package/dist/esm/ultramodern-workspace/tooling-command-catalog.js +22 -37
  143. package/dist/esm/ultramodern-workspace/tsconfigs.js +9 -3
  144. package/dist/esm/ultramodern-workspace/validation/architecture.js +348 -0
  145. package/dist/esm/ultramodern-workspace/validation/assertions.js +65 -0
  146. package/dist/esm/ultramodern-workspace/validation/types.js +0 -0
  147. package/dist/esm/ultramodern-workspace/validation/workspace.js +286 -0
  148. package/dist/esm/ultramodern-workspace/versions.js +74 -29
  149. package/dist/esm/ultramodern-workspace/workspace-artifact-ownership.js +128 -0
  150. package/dist/esm/ultramodern-workspace/workspace-script-plan.js +35 -27
  151. package/dist/esm/ultramodern-workspace/workspace-scripts.js +10 -190
  152. package/dist/esm/ultramodern-workspace/workspace-validation-contract.js +65 -376
  153. package/dist/esm/ultramodern-workspace/write-app.js +18 -10
  154. package/dist/esm/ultramodern-workspace/write-workspace.js +25 -52
  155. package/dist/esm/ultramodern-workspace/zerops.js +2 -0
  156. package/dist/esm-node/cli/package-source.js +3 -3
  157. package/dist/esm-node/cli/project-setup.js +2 -22
  158. package/dist/esm-node/index.js +10 -2
  159. package/dist/esm-node/locale/en.js +2 -1
  160. package/dist/esm-node/locale/zh.js +2 -1
  161. package/dist/esm-node/ultramodern-package-source.js +14 -4
  162. package/dist/esm-node/ultramodern-release-cohort.js +5 -14
  163. package/dist/esm-node/ultramodern-tooling/commands/cloudflare-output-verify.js +49 -56
  164. package/dist/esm-node/ultramodern-tooling/commands/context.js +10 -26
  165. package/dist/esm-node/ultramodern-tooling/commands/routes-generate-app.js +36 -0
  166. package/dist/esm-node/ultramodern-tooling/commands/routes-generate.js +25 -54
  167. package/dist/esm-node/ultramodern-tooling/commands/validate.js +6 -12
  168. package/dist/esm-node/ultramodern-tooling/commands.js +15 -9
  169. package/dist/esm-node/ultramodern-tooling/config/index.js +0 -2
  170. package/dist/esm-node/ultramodern-tooling/config/load.js +9 -9
  171. package/dist/esm-node/ultramodern-tooling/config/metadata.js +33 -28
  172. package/dist/esm-node/ultramodern-tooling/config/normalize.js +159 -156
  173. package/dist/esm-node/ultramodern-workspace/add-shell.js +124 -123
  174. package/dist/esm-node/ultramodern-workspace/add-vertical/execute.js +119 -27
  175. package/dist/esm-node/ultramodern-workspace/add-vertical/plan.js +16 -150
  176. package/dist/esm-node/ultramodern-workspace/add-vertical/preflight.js +15 -47
  177. package/dist/esm-node/ultramodern-workspace/add-vertical/preview.js +41 -0
  178. package/dist/esm-node/ultramodern-workspace/add-vertical/shell-files.js +87 -25
  179. package/dist/esm-node/ultramodern-workspace/add-vertical/topology.js +4 -1
  180. package/dist/esm-node/ultramodern-workspace/add-vertical/transaction.js +373 -46
  181. package/dist/esm-node/ultramodern-workspace/add-vertical/workspace-state.js +17 -34
  182. package/dist/esm-node/ultramodern-workspace/add-vertical.js +1 -1
  183. package/dist/esm-node/ultramodern-workspace/api/client.js +5 -5
  184. package/dist/esm-node/ultramodern-workspace/api/contracts.js +2 -2
  185. package/dist/esm-node/ultramodern-workspace/api/rpc.js +20 -18
  186. package/dist/esm-node/ultramodern-workspace/api/service.js +49 -24
  187. package/dist/esm-node/ultramodern-workspace/api/shared.js +28 -18
  188. package/dist/esm-node/ultramodern-workspace/app-files.js +3 -23
  189. package/dist/esm-node/ultramodern-workspace/backend-federation.js +5 -5
  190. package/dist/esm-node/ultramodern-workspace/contracts.js +14 -180
  191. package/dist/esm-node/ultramodern-workspace/delivery-unit-schema/surfaces.js +42 -0
  192. package/dist/esm-node/ultramodern-workspace/delivery-unit-schema/types.js +1 -75
  193. package/dist/esm-node/ultramodern-workspace/delivery-unit-stamp.js +16 -4
  194. package/dist/esm-node/ultramodern-workspace/delivery-unit-sync.js +28 -18
  195. package/dist/esm-node/ultramodern-workspace/delivery-unit.js +12 -6
  196. package/dist/esm-node/ultramodern-workspace/demo-components.js +67 -428
  197. package/dist/esm-node/ultramodern-workspace/descriptors.js +1 -2
  198. package/dist/esm-node/ultramodern-workspace/fs-io.js +37 -2
  199. package/dist/esm-node/ultramodern-workspace/generation-result.js +3 -3
  200. package/dist/esm-node/ultramodern-workspace/index.js +1 -1
  201. package/dist/esm-node/ultramodern-workspace/mf-validation/constants.js +1 -4
  202. package/dist/esm-node/ultramodern-workspace/mf-validation/discovery.js +7 -7
  203. package/dist/esm-node/ultramodern-workspace/mf-validation/exposes.js +15 -0
  204. package/dist/esm-node/ultramodern-workspace/mf-validation/inspect.js +27 -8
  205. package/dist/esm-node/ultramodern-workspace/mf-validation/object-literal.js +22 -123
  206. package/dist/esm-node/ultramodern-workspace/mf-validation/path-utils.js +36 -34
  207. package/dist/esm-node/ultramodern-workspace/mf-validation/syntax.js +83 -143
  208. package/dist/esm-node/ultramodern-workspace/mf-validation.js +1 -0
  209. package/dist/esm-node/ultramodern-workspace/module-federation/config.js +25 -30
  210. package/dist/esm-node/ultramodern-workspace/module-federation/reexport-module.js +39 -58
  211. package/dist/esm-node/ultramodern-workspace/module-federation/remote-refs.js +1 -43
  212. package/dist/esm-node/ultramodern-workspace/package-json.js +58 -32
  213. package/dist/esm-node/ultramodern-workspace/patch-inventory.js +67 -0
  214. package/dist/esm-node/ultramodern-workspace/policy.js +2 -564
  215. package/dist/esm-node/ultramodern-workspace/public-surface.js +3 -3
  216. package/dist/esm-node/ultramodern-workspace/routes.js +2 -11
  217. package/dist/esm-node/ultramodern-workspace/shared-patches.js +2 -2
  218. package/dist/esm-node/ultramodern-workspace/shells.js +3 -67
  219. package/dist/esm-node/ultramodern-workspace/tooling-command-catalog.js +22 -37
  220. package/dist/esm-node/ultramodern-workspace/tsconfigs.js +9 -3
  221. package/dist/esm-node/ultramodern-workspace/validation/architecture.js +349 -0
  222. package/dist/esm-node/ultramodern-workspace/validation/assertions.js +66 -0
  223. package/dist/esm-node/ultramodern-workspace/validation/types.js +1 -0
  224. package/dist/esm-node/ultramodern-workspace/validation/workspace.js +287 -0
  225. package/dist/esm-node/ultramodern-workspace/versions.js +74 -29
  226. package/dist/esm-node/ultramodern-workspace/workspace-artifact-ownership.js +129 -0
  227. package/dist/esm-node/ultramodern-workspace/workspace-script-plan.js +35 -27
  228. package/dist/esm-node/ultramodern-workspace/workspace-scripts.js +10 -190
  229. package/dist/esm-node/ultramodern-workspace/workspace-validation-contract.js +65 -376
  230. package/dist/esm-node/ultramodern-workspace/write-app.js +18 -10
  231. package/dist/esm-node/ultramodern-workspace/write-workspace.js +25 -52
  232. package/dist/esm-node/ultramodern-workspace/zerops.js +2 -0
  233. package/dist/types/cli/project-setup.d.ts +1 -1
  234. package/dist/types/locale/en.d.ts +1 -0
  235. package/dist/types/locale/index.d.ts +2 -0
  236. package/dist/types/locale/zh.d.ts +1 -0
  237. package/dist/types/ultramodern-package-source.d.ts +2 -4
  238. package/dist/types/ultramodern-release-cohort.d.ts +1 -3
  239. package/dist/types/ultramodern-tooling/commands/cloudflare-output-verify.d.ts +2 -2
  240. package/dist/types/ultramodern-tooling/commands/context.d.ts +4 -1
  241. package/dist/types/ultramodern-tooling/commands/routes-generate-app.d.ts +1 -0
  242. package/dist/types/ultramodern-tooling/commands/routes-generate.d.ts +1 -1
  243. package/dist/types/ultramodern-tooling/commands/validate.d.ts +1 -1
  244. package/dist/types/ultramodern-tooling/config/index.d.ts +0 -2
  245. package/dist/types/ultramodern-tooling/config/load.d.ts +10 -2
  246. package/dist/types/ultramodern-tooling/config/metadata.d.ts +2 -2
  247. package/dist/types/ultramodern-tooling/config/normalize.d.ts +19 -19
  248. package/dist/types/ultramodern-tooling/config/types.d.ts +2 -9
  249. package/dist/types/ultramodern-workspace/add-shell.d.ts +1 -1
  250. package/dist/types/ultramodern-workspace/add-vertical/execute.d.ts +1 -0
  251. package/dist/types/ultramodern-workspace/add-vertical/preflight.d.ts +4 -3
  252. package/dist/types/ultramodern-workspace/add-vertical/preview.d.ts +4 -0
  253. package/dist/types/ultramodern-workspace/add-vertical/shell-files.d.ts +7 -2
  254. package/dist/types/ultramodern-workspace/add-vertical/transaction.d.ts +32 -6
  255. package/dist/types/ultramodern-workspace/add-vertical/workspace-state.d.ts +10 -7
  256. package/dist/types/ultramodern-workspace/add-vertical.d.ts +1 -1
  257. package/dist/types/ultramodern-workspace/api/client.d.ts +3 -1
  258. package/dist/types/ultramodern-workspace/api/rpc.d.ts +1 -1
  259. package/dist/types/ultramodern-workspace/api/service.d.ts +3 -1
  260. package/dist/types/ultramodern-workspace/api/shared.d.ts +2 -0
  261. package/dist/types/ultramodern-workspace/backend-federation.d.ts +1 -1
  262. package/dist/types/ultramodern-workspace/contracts.d.ts +1 -3
  263. package/dist/types/ultramodern-workspace/delivery-unit-schema/surfaces.d.ts +17 -0
  264. package/dist/types/ultramodern-workspace/delivery-unit-schema/types.d.ts +3 -68
  265. package/dist/types/ultramodern-workspace/delivery-unit-stamp.d.ts +2 -2
  266. package/dist/types/ultramodern-workspace/delivery-unit.d.ts +3 -3
  267. package/dist/types/ultramodern-workspace/demo-components.d.ts +0 -3
  268. package/dist/types/ultramodern-workspace/descriptors.d.ts +0 -1
  269. package/dist/types/ultramodern-workspace/fs-io.d.ts +1 -1
  270. package/dist/types/ultramodern-workspace/index.d.ts +1 -1
  271. package/dist/types/ultramodern-workspace/mf-validation/constants.d.ts +0 -1
  272. package/dist/types/ultramodern-workspace/mf-validation/exposes.d.ts +11 -0
  273. package/dist/types/ultramodern-workspace/mf-validation/path-utils.d.ts +2 -3
  274. package/dist/types/ultramodern-workspace/mf-validation/syntax.d.ts +4 -3
  275. package/dist/types/ultramodern-workspace/mf-validation/types.d.ts +1 -0
  276. package/dist/types/ultramodern-workspace/mf-validation.d.ts +1 -0
  277. package/dist/types/ultramodern-workspace/module-federation/config.d.ts +1 -1
  278. package/dist/types/ultramodern-workspace/module-federation/reexport-module.d.ts +2 -2
  279. package/dist/types/ultramodern-workspace/package-json.d.ts +1 -1
  280. package/dist/types/ultramodern-workspace/patch-inventory.d.ts +10 -0
  281. package/dist/types/ultramodern-workspace/policy.d.ts +31 -209
  282. package/dist/types/ultramodern-workspace/routes.d.ts +6 -1
  283. package/dist/types/ultramodern-workspace/shells.d.ts +2 -15
  284. package/dist/types/ultramodern-workspace/tooling-command-catalog.d.ts +8 -7
  285. package/dist/types/ultramodern-workspace/types.d.ts +9 -9
  286. package/dist/types/ultramodern-workspace/validation/architecture.d.ts +2 -0
  287. package/dist/types/ultramodern-workspace/validation/assertions.d.ts +14 -0
  288. package/dist/types/ultramodern-workspace/validation/types.d.ts +9 -0
  289. package/dist/types/ultramodern-workspace/validation/workspace.d.ts +6 -0
  290. package/dist/types/ultramodern-workspace/versions.d.ts +73 -28
  291. package/dist/types/ultramodern-workspace/workspace-artifact-ownership.d.ts +18 -0
  292. package/dist/types/ultramodern-workspace/workspace-script-plan.d.ts +4 -5
  293. package/dist/types/ultramodern-workspace/workspace-scripts.d.ts +8 -13
  294. package/dist/types/ultramodern-workspace/workspace-validation-contract.d.ts +22 -188
  295. package/dist/types/ultramodern-workspace/write-workspace.d.ts +1 -3
  296. package/package.json +18 -11
  297. package/{template-workspace/.modernjs/release-cohort.json → release-cohort.json} +88 -40
  298. package/template-workspace/.codex/skills/rspack-tracing/scripts/analyze_trace.js +1 -1
  299. package/template-workspace/README.md.handlebars +20 -35
  300. package/template-workspace/oxfmt.config.ts +3 -0
  301. package/template-workspace/pnpm-workspace.yaml.handlebars +0 -24
  302. package/template-workspace/scripts/bootstrap-agent-skills.mjs +4 -4
  303. package/templates/packages/shared-contracts-index.ts +4 -332
  304. package/templates/workspace/apps/modern.config.shared-module-federation.ts.handlebars +10 -0
  305. package/templates/workspace/apps/modern.config.ts.handlebars +13 -27
  306. package/templates/workspace/apps/shared/src/routes/ultramodern-route-metadata.ts.handlebars +21 -11
  307. package/templates/workspace/apps/shell-super-app/src/routes/[lang]/page.tsx.handlebars +20 -20
  308. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.helpers.tsx.handlebars +4 -6
  309. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.imports.tsx.handlebars +2 -2
  310. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.tsx.handlebars +11 -11
  311. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.worker.helpers.tsx.handlebars +1 -1
  312. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.worker.imports.tsx.handlebars +1 -1
  313. package/templates/workspace-scripts/generate-node-backend-federation.mjs +68 -77
  314. package/templates/workspace-scripts/generate-public-surface-assets.mjs +107 -207
  315. package/templates/workspace-scripts/materialize-zerops-runtime.mjs +12 -19
  316. package/templates/workspace-scripts/proof-cloudflare-version.mjs +53 -444
  317. package/templates/workspace-scripts/proof-node-backend-federation.mjs +212 -91
  318. package/templates/workspace-scripts/{proof-workerd-ssr.mts → proof-workerd-ssr.mjs} +434 -239
  319. package/templates/workspace-scripts/ultramodern-cloudflare-proof.mjs +25 -7
  320. package/templates/workspace-scripts/ultramodern-performance-readiness.mjs +45 -147
  321. package/templates/workspace-scripts/ultramodern-typecheck.mjs +1 -1
  322. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.cjs +0 -212
  323. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.cjs +0 -47
  324. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.cjs +0 -112
  325. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.cjs +0 -55
  326. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.cjs +0 -102
  327. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.cjs +0 -195
  328. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.cjs +0 -146
  329. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxlint.cjs +0 -110
  330. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.cjs +0 -67
  331. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.cjs +0 -307
  332. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.cjs +0 -58
  333. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.cjs +0 -71
  334. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-ui-source.cjs +0 -151
  335. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/help.cjs +0 -67
  336. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/install.cjs +0 -52
  337. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/io.cjs +0 -447
  338. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.cjs +0 -323
  339. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-source.cjs +0 -87
  340. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.cjs +0 -612
  341. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.cjs +0 -376
  342. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.cjs +0 -73
  343. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/react-router-retirement.cjs +0 -215
  344. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.cjs +0 -135
  345. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect.cjs +0 -454
  346. package/dist/cjs/ultramodern-tooling/config/constants.cjs +0 -48
  347. package/dist/cjs/ultramodern-tooling/config/synthesize.cjs +0 -157
  348. package/dist/cjs/ultramodern-workspace/delivery-unit-schema/up-projection.cjs +0 -188
  349. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.js +0 -154
  350. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +0 -9
  351. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.js +0 -63
  352. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.js +0 -7
  353. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +0 -47
  354. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +0 -146
  355. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.js +0 -97
  356. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxlint.js +0 -61
  357. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.js +0 -16
  358. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.js +0 -258
  359. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.js +0 -10
  360. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.js +0 -8
  361. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.js +0 -15
  362. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-ui-source.js +0 -100
  363. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/help.js +0 -29
  364. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/install.js +0 -14
  365. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/io.js +0 -385
  366. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +0 -276
  367. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-source.js +0 -49
  368. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +0 -559
  369. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +0 -329
  370. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +0 -19
  371. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/react-router-retirement.js +0 -148
  372. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.js +0 -80
  373. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect.js +0 -405
  374. package/dist/esm/ultramodern-tooling/config/constants.js +0 -4
  375. package/dist/esm/ultramodern-tooling/config/synthesize.js +0 -108
  376. package/dist/esm/ultramodern-workspace/delivery-unit-schema/up-projection.js +0 -129
  377. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.js +0 -155
  378. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +0 -10
  379. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.js +0 -64
  380. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.js +0 -8
  381. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +0 -48
  382. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +0 -147
  383. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.js +0 -98
  384. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxlint.js +0 -62
  385. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.js +0 -17
  386. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.js +0 -259
  387. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.js +0 -11
  388. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.js +0 -9
  389. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.js +0 -16
  390. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-ui-source.js +0 -101
  391. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/help.js +0 -30
  392. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/install.js +0 -15
  393. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/io.js +0 -386
  394. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +0 -277
  395. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-source.js +0 -50
  396. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +0 -560
  397. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +0 -330
  398. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +0 -20
  399. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/react-router-retirement.js +0 -149
  400. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.js +0 -81
  401. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect.js +0 -406
  402. package/dist/esm-node/ultramodern-tooling/config/constants.js +0 -5
  403. package/dist/esm-node/ultramodern-tooling/config/synthesize.js +0 -109
  404. package/dist/esm-node/ultramodern-workspace/delivery-unit-schema/up-projection.js +0 -130
  405. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.d.ts +0 -12
  406. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.d.ts +0 -4
  407. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.d.ts +0 -1
  408. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.d.ts +0 -3
  409. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.d.ts +0 -5
  410. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.d.ts +0 -3
  411. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.d.ts +0 -2
  412. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxlint.d.ts +0 -2
  413. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.d.ts +0 -4
  414. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.d.ts +0 -3
  415. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.d.ts +0 -3
  416. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.d.ts +0 -8
  417. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.d.ts +0 -3
  418. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-ui-source.d.ts +0 -3
  419. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/help.d.ts +0 -1
  420. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/install.d.ts +0 -2
  421. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/io.d.ts +0 -26
  422. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.d.ts +0 -25
  423. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/package-source.d.ts +0 -3
  424. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.d.ts +0 -26
  425. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.d.ts +0 -26
  426. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.d.ts +0 -6
  427. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/react-router-retirement.d.ts +0 -37
  428. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.d.ts +0 -4
  429. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect.d.ts +0 -2
  430. package/dist/types/ultramodern-tooling/config/constants.d.ts +0 -3
  431. package/dist/types/ultramodern-tooling/config/synthesize.d.ts +0 -5
  432. package/dist/types/ultramodern-workspace/delivery-unit-schema/up-projection.d.ts +0 -189
  433. package/template-workspace/patches/@module-federation__bridge-react@2.9.0.patch +0 -47
  434. package/template-workspace/patches/@module-federation__dts-plugin@2.9.0.patch +0 -26
  435. package/template-workspace/patches/@module-federation__modern-js-v3@2.9.0.patch +0 -268
  436. package/template-workspace/patches/@module-federation__runtime-core@2.9.0.patch +0 -13
  437. package/template-workspace/patches/drizzle-orm-ts7-strict-declarations.patch +0 -471
  438. package/template-workspace/patches/msgpackr@2.1.0.patch +0 -30
  439. package/template-workspace/patches/zod@4.5.4.patch +0 -56
  440. package/templates/workspace-scripts/check-ultramodern-api-boundaries.mts +0 -779
  441. package/templates/workspace-scripts/check-ultramodern-i18n-boundaries.mts +0 -9
  442. package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +0 -4109
@@ -3,7 +3,7 @@ import { resolveApiProtocol, resolveApiStem, verticalApiApps } from "../descript
3
3
  import { packageName, toPascalCase } from "../naming.js";
4
4
  import { createCheckoutCartClientExports, serviceHasCheckoutCartState } from "./checkout-cart.js";
5
5
  import { verticalApiErrorStem, verticalApiExport, verticalApiGroupName, verticalApiNotFoundErrorExport } from "./names.js";
6
- function createApiClient(service, contractImportPath) {
6
+ function createApiClient(service, contractImportPath, options) {
7
7
  const apiExport = verticalApiExport(service);
8
8
  const contractExport = verticalApiGroupName(service);
9
9
  const stem = resolveApiStem(service);
@@ -27,14 +27,14 @@ function createApiClient(service, contractImportPath) {
27
27
  return `import {
28
28
  Effect,
29
29
  makeEffectHttpApiClient,
30
- } from '@modern-js/plugin-bff/effect-client';
30
+ } from '@modern-js/bff-effect/effect-client';
31
31
  import type {
32
32
  HttpClientError,
33
33
  HttpApi,
34
34
  HttpApiClient,
35
35
  HttpApiGroup,
36
36
  Schema,
37
- } from '@modern-js/plugin-bff/effect-client';
37
+ } from '@modern-js/bff-effect/effect-client';
38
38
  import {
39
39
  ${contractExport}ApiContract,
40
40
  ${apiExport},
@@ -49,7 +49,7 @@ import type {
49
49
  ${readinessType},
50
50
  } from '${contractImportPath}';
51
51
 
52
- export { Effect, runEffectRequest } from '@modern-js/plugin-bff/effect-client';
52
+ export { Effect, runEffectRequest } from '@modern-js/bff-effect/effect-client';
53
53
 
54
54
  type ${pascalStem}ApiGroups = typeof ${apiExport} extends HttpApi.HttpApi<
55
55
  infer _ApiId,
@@ -119,7 +119,7 @@ export const ${readinessName} = (
119
119
  operationContext:
120
120
  options.operationContext ?? ${groupName}OperationContexts.readiness,
121
121
  }).pipe(
122
- Effect.flatMap(client => client.${groupName}.readiness({})),
122
+ Effect.flatMap(client => client.${options ? 'foundation' : groupName}.readiness({})),
123
123
  );
124
124
 
125
125
  export const ${getName} = (
@@ -114,7 +114,7 @@ function apiTopologyMetadata(app) {
114
114
  },
115
115
  client: {
116
116
  export: './api/rpc-client',
117
- path: `${app.directory}/src/api/${app.api.stem}-rpc-client.ts`
117
+ path: `${app.directory}/${'api-only' === app.surfaceProfile ? 'shared' : 'src/api'}/${app.api.stem}-rpc-client.ts`
118
118
  },
119
119
  serverEntry: `${app.directory}/api/index.ts`,
120
120
  rpcPath: rpcPath(app),
@@ -137,7 +137,7 @@ function apiTopologyMetadata(app) {
137
137
  },
138
138
  client: {
139
139
  export: './api/client',
140
- path: `${app.directory}/src/api/${app.api.stem}-client.ts`
140
+ path: `${app.directory}/${'api-only' === app.surfaceProfile ? 'shared' : 'src/api'}/${app.api.stem}-client.ts`
141
141
  },
142
142
  serverEntry: `${app.directory}/api/index.ts`,
143
143
  basePath: `${app.api.prefix}/${app.api.stem}`,
@@ -24,7 +24,7 @@ function createRpcContractFile(service) {
24
24
  const stem = resolveApiStem(service);
25
25
  const pascalStem = toPascalCase(stem);
26
26
  return `import { Rpc, RpcGroup } from 'effect/unstable/rpc';
27
- import { Schema } from '@modern-js/plugin-bff/effect-client';
27
+ import { Schema } from '@modern-js/bff-effect/effect-client';
28
28
 
29
29
  export interface ${pascalStem}RpcItem {
30
30
  readonly id: string;
@@ -36,7 +36,9 @@ export const ${itemSchema}: Schema.Codec<${pascalStem}RpcItem> = Schema.Struct({
36
36
  title: Schema.String,
37
37
  });
38
38
 
39
- export class ${notFound} extends Schema.TaggedError<${notFound}>()(
39
+ const taggedErrorSchema = Schema.TaggedError;
40
+
41
+ export class ${notFound} extends taggedErrorSchema<${notFound}>()(
40
42
  '${notFound}',
41
43
  {
42
44
  id: Schema.String,
@@ -47,13 +49,13 @@ export class ${notFound} extends Schema.TaggedError<${notFound}>()(
47
49
  // (mirrors the shapes Effect BFF's RpcServer/RpcClient runtime accepts).
48
50
  export const ${groupExport} = RpcGroup.make(
49
51
  Rpc.make('list', {
50
- success: Schema.Struct({ items: Schema.Array(${itemSchema}) }),
51
52
  payload: { limit: Schema.optional(Schema.Number) },
53
+ success: Schema.Struct({ items: Schema.Array(${itemSchema}) }),
52
54
  }),
53
55
  Rpc.make('get', {
54
- success: ${itemSchema},
55
56
  error: ${notFound},
56
57
  payload: { id: Schema.String },
58
+ success: ${itemSchema},
57
59
  }),
58
60
  );
59
61
 
@@ -79,6 +81,12 @@ function rpcServiceEntryWiring(service) {
79
81
  const layer = `
80
82
  const ${groupName}RpcLayer = ${groupExport}.toLayer(
81
83
  ${groupExport}.of({
84
+ get: ({ id }) => {
85
+ const matched = ${groupName}Items.find(candidate => candidate.id === id);
86
+ return matched === undefined
87
+ ? Effect.fail(new ${notFound}({ id }))
88
+ : Effect.succeed({ id: matched.id, title: matched.title });
89
+ },
82
90
  list: ({ limit }) =>
83
91
  Effect.succeed({
84
92
  items:
@@ -92,12 +100,6 @@ const ${groupName}RpcLayer = ${groupExport}.toLayer(
92
100
  title: item.title,
93
101
  })),
94
102
  }),
95
- get: ({ id }) => {
96
- const matched = ${groupName}Items.find(candidate => candidate.id === id);
97
- return matched === undefined
98
- ? Effect.fail(new ${notFound}({ id }))
99
- : Effect.succeed({ id: matched.id, title: matched.title });
100
- },
101
103
  }),
102
104
  );
103
105
  `;
@@ -124,7 +126,7 @@ function createRpcApiServiceEntry(service) {
124
126
  Effect,
125
127
  HttpApi,
126
128
  Layer,
127
- } from '@modern-js/plugin-bff/effect-edge';
129
+ } from '@modern-js/bff-effect/effect-edge';
128
130
  ${rpc.imports}import { ultramodernApiMarker } from '../shared/ultramodern-build.ts';
129
131
 
130
132
  const ${groupName}Items = [
@@ -148,11 +150,11 @@ const apiRuntime = defineEffectBff({
148
150
  ${rpc.field}
149
151
  });
150
152
 
151
- export { ${groupExport} };
153
+ export { ${groupExport} } from '../shared/rpc.ts';
152
154
  export default apiRuntime;
153
155
  `;
154
156
  }
155
- function createRpcClientFile(service) {
157
+ function createRpcClientFile(service, contractImportPath = '../../shared/rpc.ts') {
156
158
  const groupExport = verticalRpcGroupExport(service);
157
159
  const contractExport = verticalRpcContractExport(service);
158
160
  const stem = resolveApiStem(service);
@@ -160,15 +162,15 @@ function createRpcClientFile(service) {
160
162
  return `import {
161
163
  Effect,
162
164
  makeEffectRpcClient,
163
- } from '@modern-js/plugin-bff/effect-client';
165
+ } from '@modern-js/bff-effect/effect-client';
164
166
  import {
165
167
  ${contractExport},
166
168
  ${groupExport},
167
- } from '../../shared/rpc.ts';
169
+ } from '${contractImportPath}';
168
170
 
169
- export { Effect } from '@modern-js/plugin-bff/effect-client';
171
+ export { Effect } from '@modern-js/bff-effect/effect-client';
170
172
 
171
- export const ${pascalStem}RpcContract = ${contractExport};
173
+ export { ${contractExport} as ${pascalStem}RpcContract } from '${contractImportPath}';
172
174
 
173
175
  export interface ${pascalStem}RpcClientOptions {
174
176
  url?: string | URL;
@@ -178,8 +180,8 @@ export const make${pascalStem}RpcClient = (
178
180
  options: ${pascalStem}RpcClientOptions = {},
179
181
  ) =>
180
182
  makeEffectRpcClient(${groupExport}, {
181
- url: String(options.url ?? ${contractExport}.path),
182
183
  serialization: 'json',
184
+ url: String(options.url ?? ${contractExport}.path),
183
185
  });
184
186
 
185
187
  export const list${pascalStem}Rpc = (
@@ -5,23 +5,22 @@ import { packageName } from "../naming.js";
5
5
  import { createCheckoutCartServerHandlers, createCheckoutCartServerState } from "./checkout-cart.js";
6
6
  import { verticalApiExport, verticalApiGroupName, verticalApiNotFoundErrorExport } from "./names.js";
7
7
  import { createRpcApiServiceEntry, rpcPath, verticalRpcContractExport, verticalRpcGroupExport } from "./rpc.js";
8
- function createApiServiceEntry(service, contractImportPath) {
8
+ function createApiServiceEntry(service, contractImportPath, options) {
9
9
  if ((service.api?.protocol ?? 'rest') === 'rpc') return createRpcApiServiceEntry(service);
10
10
  const apiExport = verticalApiExport(service);
11
11
  const groupName = verticalApiGroupName(service);
12
12
  const notFoundErrorExport = verticalApiNotFoundErrorExport(service);
13
13
  const stem = resolveApiStem(service);
14
- return `import {
15
- defineEffectBff,
14
+ const assemblyImport = options ? "import { assembleEffectBffRuntime } from '@modern-js/bff-effect/assembly';\n" : '';
15
+ return `${assemblyImport}import {
16
+ ${options ? '' : 'defineEffectBff,'}
16
17
  Effect,
17
18
  HttpApiBuilder,
18
19
  Layer,
19
- } from '@modern-js/plugin-bff/effect-edge';
20
- import type {
21
- EffectBffDefinition,
22
- EffectBffRuntime,
20
+ } from '@modern-js/bff-effect/effect-edge';
21
+ ${options ? '' : `import type {
23
22
  EffectRuntimeLayer,
24
- } from '@modern-js/plugin-bff/effect-edge';
23
+ } from '@modern-js/bff-effect/effect-edge';`}
25
24
  import { ultramodernApiMarker } from '../shared/ultramodern-build.ts';
26
25
  import {
27
26
  ${apiExport},
@@ -51,6 +50,31 @@ const operationAttributes = (operationContext: OperationContext) => ({
51
50
  : {}),
52
51
  });
53
52
 
53
+ ${options ? `const ${groupName}ReadinessLayer = HttpApiBuilder.group(
54
+ ${apiExport},
55
+ 'foundation',
56
+ handlers => handlers
57
+ .handle('readiness', () =>
58
+ Effect.succeed({
59
+ checks: {
60
+ api: 'ready' as const,
61
+ moduleFederation: 'ready' as const,
62
+ ssr: 'ready' as const,
63
+ translations: 'ready' as const,
64
+ },
65
+ marker: ultramodernApiMarker,
66
+ status: 'ready' as const,
67
+ versionSkew: 'none' as const,
68
+ }).pipe(
69
+ Effect.withSpan('ultramodern.api.${groupName}.readiness', {
70
+ attributes: operationAttributes(${groupName}OperationContexts.readiness),
71
+ kind: 'server',
72
+ }),
73
+ ),
74
+ )
75
+ ,
76
+ );` : ''}
77
+
54
78
  const ${groupName}Layer = HttpApiBuilder.group(
55
79
  ${apiExport},
56
80
  '${groupName}',
@@ -69,7 +93,7 @@ const ${groupName}Layer = HttpApiBuilder.group(
69
93
  }),
70
94
  ),
71
95
  )
72
- .handle('readiness', () =>
96
+ ${options ? '' : ` .handle('readiness', () =>
73
97
  Effect.succeed({
74
98
  checks: {
75
99
  api: 'ready' as const,
@@ -87,6 +111,7 @@ const ${groupName}Layer = HttpApiBuilder.group(
87
111
  }),
88
112
  ),
89
113
  )
114
+ `}
90
115
  .handle('get', ({ params }) => {
91
116
  const matchedItem = ${groupName}Items.find(
92
117
  candidate => candidate.id === params.id,
@@ -126,14 +151,18 @@ const ${groupName}Layer = HttpApiBuilder.group(
126
151
  )${createCheckoutCartServerHandlers(service)},
127
152
  );
128
153
 
129
- const layer = HttpApiBuilder.layer(${apiExport}).pipe(
130
- Layer.provide(${groupName}Layer),
131
- ) satisfies EffectRuntimeLayer;
132
- const apiRuntime: EffectBffDefinition<typeof ${apiExport}, EffectRuntimeLayer> &
133
- EffectBffRuntime<typeof ${apiExport}, EffectRuntimeLayer> = defineEffectBff({
134
- api: ${apiExport},
135
- layer,
136
- });
154
+ ${options ? `const apiHandlersLive = Layer.mergeAll(${groupName}Layer, ${groupName}ReadinessLayer);
155
+ export const make${apiExport[0].toUpperCase()}${apiExport.slice(1)}Runtime = () =>
156
+ assembleEffectBffRuntime({
157
+ api: ${apiExport},
158
+ handlers: apiHandlersLive,
159
+ });` : `export const make${apiExport[0].toUpperCase()}${apiExport.slice(1)}Runtime = () => {
160
+ const layer = HttpApiBuilder.layer(${apiExport}).pipe(
161
+ Layer.provide(${groupName}Layer),
162
+ ) satisfies EffectRuntimeLayer;
163
+ return defineEffectBff({ api: ${apiExport}, layer });
164
+ };`}
165
+ const apiRuntime = make${apiExport[0].toUpperCase()}${apiExport.slice(1)}Runtime();
137
166
 
138
167
  export default apiRuntime;
139
168
  `;
@@ -141,12 +170,8 @@ export default apiRuntime;
141
170
  function createBackendEffectApiExpose(scope, service) {
142
171
  if ((service.api?.protocol ?? 'rest') === 'rpc') {
143
172
  const groupExport = verticalRpcGroupExport(service);
144
- const contractExport = verticalRpcContractExport(service);
145
173
  return `import { ultramodernApiMarker } from '../shared/ultramodern-build.ts';
146
- import {
147
- ${contractExport},
148
- ${groupExport},
149
- } from '../shared/rpc.ts';
174
+ import { ${groupExport} } from '../shared/rpc.ts';
150
175
 
151
176
  export const backendFederationContract = {
152
177
  compatibility: {
@@ -160,16 +185,16 @@ export const backendFederationContract = {
160
185
  executionSurfaces: ['node-mf-runtime'],
161
186
  exposes: ['./effect-api'],
162
187
  name: '${createBackendFederationName(service)}',
188
+ role: 'microvertical-server',
163
189
  rpcPath: '${rpcPath(service)}',
164
190
  rpcSerialization: 'json',
165
- role: 'microvertical-server',
166
191
  runtimeFramework: 'effect',
167
192
  strictEffectApproach: true,
168
193
  } as const;
169
194
 
170
195
  export { default, default as runtime } from './index.ts';
171
196
  export {
172
- ${contractExport} as contract,
197
+ ${verticalRpcContractExport(service)} as contract,
173
198
  ${groupExport} as rpc,
174
199
  } from '../shared/rpc.ts';
175
200
  export const api: unknown = ${groupExport};
@@ -11,10 +11,10 @@ function createSharedApiImports() {
11
11
  HttpApiGroup,
12
12
  HttpApiSchema,
13
13
  Schema,
14
- } from '@modern-js/plugin-bff/effect-client';
14
+ } from '@modern-js/bff-effect/effect-client';
15
15
  `;
16
16
  }
17
- function createSharedApiContract(service) {
17
+ function createSharedApiContract(service, shared = false) {
18
18
  const schemaExport = verticalApiSchemaExport(service);
19
19
  const markerSchemaExport = verticalApiMarkerSchemaExport(service);
20
20
  const readinessSchemaExport = verticalApiReadinessSchemaExport(service);
@@ -71,7 +71,7 @@ function createSharedApiContract(service) {
71
71
  listOperationContext,
72
72
  readinessOperationContext
73
73
  }).trim();
74
- return `export interface ${markerType} {
74
+ return `${shared ? `export type ${markerType} = MicroVerticalBuildMarker;` : `export interface ${markerType} {
75
75
  readonly appId: string;
76
76
  readonly build: string;
77
77
  readonly buildMarker: string;
@@ -81,7 +81,7 @@ function createSharedApiContract(service) {
81
81
  readonly surface: string;
82
82
  readonly unitId: string;
83
83
  readonly version: string;
84
- }
84
+ }`}
85
85
 
86
86
  export interface ${itemType} {
87
87
  readonly id: string;
@@ -89,7 +89,7 @@ export interface ${itemType} {
89
89
  readonly title: string;
90
90
  }
91
91
 
92
- export interface ${readinessType} {
92
+ ${shared ? `export type ${readinessType} = MicroVerticalReadiness;` : `export interface ${readinessType} {
93
93
  readonly checks: {
94
94
  readonly api: 'ready';
95
95
  readonly moduleFederation: 'ready';
@@ -99,7 +99,7 @@ export interface ${readinessType} {
99
99
  readonly marker: ${markerType};
100
100
  readonly status: 'ready';
101
101
  readonly versionSkew: 'none';
102
- }
102
+ }`}
103
103
 
104
104
  export interface ${createPayloadType} {
105
105
  readonly title: string;
@@ -118,7 +118,7 @@ export interface ${notFoundErrorExport} {
118
118
  readonly id: string;
119
119
  }
120
120
 
121
- export const ${markerSchemaExport}: Schema.Codec<${markerType}> = Schema.Struct({
121
+ ${shared ? `export const ${markerSchemaExport}: Schema.Codec<${markerType}> = MicroVerticalBuildMarkerSchema;` : `export const ${markerSchemaExport}: Schema.Codec<${markerType}> = Schema.Struct({
122
122
  appId: Schema.String,
123
123
  build: Schema.String,
124
124
  buildMarker: Schema.String,
@@ -128,7 +128,7 @@ export const ${markerSchemaExport}: Schema.Codec<${markerType}> = Schema.Struct(
128
128
  surface: Schema.String,
129
129
  unitId: Schema.String,
130
130
  version: Schema.String,
131
- });
131
+ });`}
132
132
 
133
133
  export const ${schemaExport}: Schema.Codec<${itemType}> = Schema.Struct({
134
134
  id: Schema.String,
@@ -136,7 +136,7 @@ export const ${schemaExport}: Schema.Codec<${itemType}> = Schema.Struct({
136
136
  title: Schema.String,
137
137
  });
138
138
 
139
- export const ${readinessSchemaExport}: Schema.Codec<${readinessType}> = Schema.Struct({
139
+ ${shared ? `export const ${readinessSchemaExport}: Schema.Codec<${readinessType}> = MicroVerticalReadinessSchema;` : `export const ${readinessSchemaExport}: Schema.Codec<${readinessType}> = Schema.Struct({
140
140
  checks: Schema.Struct({
141
141
  api: Schema.Literal('ready'),
142
142
  moduleFederation: Schema.Literal('ready'),
@@ -146,7 +146,7 @@ export const ${readinessSchemaExport}: Schema.Codec<${readinessType}> = Schema.S
146
146
  marker: ${markerSchemaExport},
147
147
  status: Schema.Literal('ready'),
148
148
  versionSkew: Schema.Literal('none'),
149
- });
149
+ });`}
150
150
 
151
151
  export const ${createPayloadSchemaExport}: Schema.Codec<${createPayloadType}> = Schema.Struct({
152
152
  title: Schema.String,
@@ -158,7 +158,7 @@ ${checkoutCartSharedSchemaSection}export const ${notFoundSchemaExport}: Schema.C
158
158
  HttpApiSchema.status(404),
159
159
  );
160
160
 
161
- export interface OperationContext {
161
+ ${shared ? 'export type OperationContext = MicroVerticalOperationContext;' : `export interface OperationContext {
162
162
  method: string;
163
163
  operationId: string;
164
164
  routePath: string;
@@ -166,13 +166,18 @@ export interface OperationContext {
166
166
  | 'client'
167
167
  | 'server'
168
168
  | 'generated-client'
169
- | 'effect-adapter'
169
+ | 'effect-server'
170
170
  | 'data-platform'
171
171
  | 'unknown';
172
172
  traceId?: string;
173
- }
173
+ }`}
174
174
 
175
- export const ${apiExport} = HttpApi.make('${apiName}').add(
175
+ ${shared ? `export const ${groupName}FoundationApi = HttpApi.make('${apiName}Foundation').add(
176
+ HttpApiGroup.make('foundation').add(
177
+ HttpApiEndpoint.get('readiness', '/${stem}/readiness', { success: ${readinessSchemaExport} }),
178
+ ),
179
+ );` : ''}
180
+ export const ${apiExport} = HttpApi.make('${apiName}')${shared ? `.addHttpApi(${groupName}FoundationApi)` : ''}.add(
176
181
  HttpApiGroup.make('${groupName}')
177
182
  .add(
178
183
  HttpApiEndpoint.get('list', '/${stem}', {
@@ -184,11 +189,12 @@ export const ${apiExport} = HttpApi.make('${apiName}').add(
184
189
  }),
185
190
  }),
186
191
  )
187
- .add(
192
+ ${shared ? '' : ` .add(
188
193
  HttpApiEndpoint.get('readiness', '/${stem}/readiness', {
189
194
  success: ${readinessSchemaExport},
190
195
  }),
191
196
  )
197
+ `}
192
198
  .add(
193
199
  HttpApiEndpoint.get('get', '/${stem}/:id', {
194
200
  error: ${notFoundSchemaExport},
@@ -209,7 +215,7 @@ export const ${apiExport} = HttpApi.make('${apiName}').add(
209
215
  );
210
216
 
211
217
  export const ${groupName}OperationContexts = {
212
- ${operationContextEntries}
218
+ ${shared ? operationContextEntries.replaceAll(/(\w+: )\{([\s\S]*?)\},/gu, (_, key, fields)=>`${key}createMicroVerticalOperationContext({${fields.replace(/\n\s*source: 'generated-client',/u, '')}}),`) : operationContextEntries}
213
219
  } satisfies Record<string, OperationContext>;
214
220
 
215
221
  export const ${groupName}ApiContract = {
@@ -220,8 +226,12 @@ ${createCheckoutCartApiContractFields(service)} ownerId: '${service.id}',
220
226
  } as const;
221
227
  `;
222
228
  }
223
- function createSharedApi(service) {
229
+ function createSharedApi(service, options) {
230
+ const imports = options ? `import { MicroVerticalBuildMarkerSchema, MicroVerticalReadinessSchema, createMicroVerticalOperationContext } from '@modern-js/bff-effect/microvertical-api';
231
+ import type { MicroVerticalBuildMarker, MicroVerticalReadiness, MicroVerticalOperationContext } from '@modern-js/bff-effect/microvertical-api';
232
+ ` : '';
224
233
  return `${createSharedApiImports()}
225
- ${createSharedApiContract(service)}`;
234
+ ${imports}
235
+ ${createSharedApiContract(service, void 0 !== options)}`;
226
236
  }
227
237
  export { createSharedApi };
@@ -44,36 +44,16 @@ function createAppRuntimeConfig(app, scope, remotes = [], emitsUi = appEmitsBrow
44
44
  const routeMetadataImport = emitsUi ? "import { ultramodernRouteNamespace } from './routes/ultramodern-route-metadata';\n" : '';
45
45
  const routeNamespace = emitsUi ? 'ultramodernRouteNamespace' : "'api'";
46
46
  return `import { defineRuntimeConfig } from '@modern-js/runtime';
47
- ${'shell' === app.kind ? "import { ultramodernBoundaryDebuggerPlugin } from '@modern-js/runtime/boundary-debugger';\n" : ''}import type { I18nInstance } from '@modern-js/plugin-i18n/runtime';
47
+ ${'shell' === app.kind ? "import { ultramodernBoundaryDebuggerPlugin } from '@modern-js/boundary-debugger';\n" : ''}import type { I18nInstance } from '@modern-js/plugin-i18n/runtime';
48
48
  import { createInstance } from 'i18next';
49
49
  import csResource from '../locales/cs/${appI18nNamespace(app)}.json';
50
50
  import enResource from '../locales/en/${appI18nNamespace(app)}.json';
51
51
  ${routeMetadataImport}
52
52
 
53
- type LocaleResource = string | { readonly [key: string]: LocaleResource };
54
-
55
- const flattenLocaleResource = (
56
- resource: LocaleResource,
57
- prefix = '',
58
- ): Record<string, string> => {
59
- if (typeof resource === 'string') {
60
- return prefix.length > 0 ? { [prefix]: resource } : {};
61
- }
62
-
63
- return Object.fromEntries(
64
- Object.entries(resource).flatMap(([key, value]) => {
65
- const nextKey = prefix.length > 0 ? \`\${prefix}.\${key}\` : key;
66
- return typeof value === 'string'
67
- ? [[nextKey, value]]
68
- : Object.entries(flattenLocaleResource(value, nextKey));
69
- }),
70
- );
71
- };
72
-
73
53
  const i18nInstance = createInstance();
74
54
  const resources = {
75
- cs: { [${routeNamespace}]: flattenLocaleResource(csResource) },
76
- en: { [${routeNamespace}]: flattenLocaleResource(enResource) },
55
+ cs: { [${routeNamespace}]: csResource },
56
+ en: { [${routeNamespace}]: enResource },
77
57
  } as const;
78
58
 
79
59
  export default defineRuntimeConfig({
@@ -1,5 +1,5 @@
1
1
  import "node:module";
2
- import { BACKEND_FEDERATION_CONTRACT_VERSION, BACKEND_FEDERATION_EFFECT_EXPOSE, BACKEND_FEDERATION_NODE_ADAPTER_VERSION, formatBackendFederationValidationErrors, validateBackendFederationMetadata } from "@modern-js/utils/universal";
2
+ import { BACKEND_FEDERATION_CONTRACT_VERSION, BACKEND_FEDERATION_EFFECT_EXPOSE, BACKEND_FEDERATION_NODE_ADAPTER_VERSION, formatBackendFederationValidationErrors, validateBackendFederationMetadata } from "@modern-js/backend-federation-contracts";
3
3
  import { verticalApiExport, verticalApiGroupName } from "./api.js";
4
4
  import { rpcPath, verticalRpcContractExport, verticalRpcGroupExport } from "./api/rpc.js";
5
5
  import { createDeliveryUnitRecord, deliveryUnitContractBlock } from "./delivery-unit.js";
@@ -26,14 +26,14 @@ function createEffectExpose(app) {
26
26
  if ('rpc' === resolveApiProtocol(app)) return {
27
27
  contract: `${app.directory}/shared/rpc.ts`,
28
28
  runtime: `${app.directory}/api/index.ts`,
29
- client: `${app.directory}/src/api/${app.api.stem}-rpc-client.ts`,
29
+ client: `${app.directory}/${'api-only' === app.surfaceProfile ? 'shared' : 'src/api'}/${app.api.stem}-rpc-client.ts`,
30
30
  rpc: rpcPath(app),
31
31
  serialization: 'json'
32
32
  };
33
33
  return {
34
34
  contract: `${app.directory}/shared/api.ts`,
35
35
  runtime: `${app.directory}/api/index.ts`,
36
- client: `${app.directory}/src/api/${app.api.stem}-client.ts`,
36
+ client: `${app.directory}/${'api-only' === app.surfaceProfile ? 'shared' : 'src/api'}/${app.api.stem}-client.ts`,
37
37
  openapi: `${app.api.prefix}/openapi.json`,
38
38
  readiness: `${app.api.prefix}/${apiStem}/readiness`
39
39
  };
@@ -85,7 +85,7 @@ function createNodeExecutionSurface(app, deliveryUnit) {
85
85
  containerEntry: createBackendFederationContainerEntry(app),
86
86
  remoteType: 'commonjs-module',
87
87
  expose: BACKEND_FEDERATION_EFFECT_EXPOSE,
88
- runtimePackage: '@modern-js/plugin-bff/effect',
88
+ runtimePackage: '@modern-js/plugin-bff-extensions/backend-federation-manifest/node',
89
89
  ...deliveryUnit ? {
90
90
  expected: {
91
91
  unitId: deliveryUnit.unitId,
@@ -222,9 +222,9 @@ export const backendFederationContract = {
222
222
  exposes: ['${BACKEND_FEDERATION_EFFECT_EXPOSE}'],
223
223
  name: '${createBackendFederationName(app)}',
224
224
  nodeAdapterVersion: '${BACKEND_FEDERATION_NODE_ADAPTER_VERSION}',
225
+ role: 'microvertical-server',
225
226
  rpcPath: '${rpcPath(app)}',
226
227
  rpcSerialization: 'json',
227
- role: 'microvertical-server',
228
228
  runtimeFramework: 'effect',
229
229
  strictEffectApproach: true,
230
230
  } as const;