@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
@@ -2,7 +2,7 @@ import { resolveApiProtocol, resolveApiStem, verticalApiApps } from "../descript
2
2
  import { packageName, toPascalCase } from "../naming.js";
3
3
  import { createCheckoutCartClientExports, serviceHasCheckoutCartState } from "./checkout-cart.js";
4
4
  import { verticalApiErrorStem, verticalApiExport, verticalApiGroupName, verticalApiNotFoundErrorExport } from "./names.js";
5
- function createApiClient(service, contractImportPath) {
5
+ function createApiClient(service, contractImportPath, options) {
6
6
  const apiExport = verticalApiExport(service);
7
7
  const contractExport = verticalApiGroupName(service);
8
8
  const stem = resolveApiStem(service);
@@ -26,14 +26,14 @@ function createApiClient(service, contractImportPath) {
26
26
  return `import {
27
27
  Effect,
28
28
  makeEffectHttpApiClient,
29
- } from '@modern-js/plugin-bff/effect-client';
29
+ } from '@modern-js/bff-effect/effect-client';
30
30
  import type {
31
31
  HttpClientError,
32
32
  HttpApi,
33
33
  HttpApiClient,
34
34
  HttpApiGroup,
35
35
  Schema,
36
- } from '@modern-js/plugin-bff/effect-client';
36
+ } from '@modern-js/bff-effect/effect-client';
37
37
  import {
38
38
  ${contractExport}ApiContract,
39
39
  ${apiExport},
@@ -48,7 +48,7 @@ import type {
48
48
  ${readinessType},
49
49
  } from '${contractImportPath}';
50
50
 
51
- export { Effect, runEffectRequest } from '@modern-js/plugin-bff/effect-client';
51
+ export { Effect, runEffectRequest } from '@modern-js/bff-effect/effect-client';
52
52
 
53
53
  type ${pascalStem}ApiGroups = typeof ${apiExport} extends HttpApi.HttpApi<
54
54
  infer _ApiId,
@@ -118,7 +118,7 @@ export const ${readinessName} = (
118
118
  operationContext:
119
119
  options.operationContext ?? ${groupName}OperationContexts.readiness,
120
120
  }).pipe(
121
- Effect.flatMap(client => client.${groupName}.readiness({})),
121
+ Effect.flatMap(client => client.${options ? 'foundation' : groupName}.readiness({})),
122
122
  );
123
123
 
124
124
  export const ${getName} = (
@@ -113,7 +113,7 @@ function apiTopologyMetadata(app) {
113
113
  },
114
114
  client: {
115
115
  export: './api/rpc-client',
116
- path: `${app.directory}/src/api/${app.api.stem}-rpc-client.ts`
116
+ path: `${app.directory}/${'api-only' === app.surfaceProfile ? 'shared' : 'src/api'}/${app.api.stem}-rpc-client.ts`
117
117
  },
118
118
  serverEntry: `${app.directory}/api/index.ts`,
119
119
  rpcPath: rpcPath(app),
@@ -136,7 +136,7 @@ function apiTopologyMetadata(app) {
136
136
  },
137
137
  client: {
138
138
  export: './api/client',
139
- path: `${app.directory}/src/api/${app.api.stem}-client.ts`
139
+ path: `${app.directory}/${'api-only' === app.surfaceProfile ? 'shared' : 'src/api'}/${app.api.stem}-client.ts`
140
140
  },
141
141
  serverEntry: `${app.directory}/api/index.ts`,
142
142
  basePath: `${app.api.prefix}/${app.api.stem}`,
@@ -23,7 +23,7 @@ function createRpcContractFile(service) {
23
23
  const stem = resolveApiStem(service);
24
24
  const pascalStem = toPascalCase(stem);
25
25
  return `import { Rpc, RpcGroup } from 'effect/unstable/rpc';
26
- import { Schema } from '@modern-js/plugin-bff/effect-client';
26
+ import { Schema } from '@modern-js/bff-effect/effect-client';
27
27
 
28
28
  export interface ${pascalStem}RpcItem {
29
29
  readonly id: string;
@@ -35,7 +35,9 @@ export const ${itemSchema}: Schema.Codec<${pascalStem}RpcItem> = Schema.Struct({
35
35
  title: Schema.String,
36
36
  });
37
37
 
38
- export class ${notFound} extends Schema.TaggedError<${notFound}>()(
38
+ const taggedErrorSchema = Schema.TaggedError;
39
+
40
+ export class ${notFound} extends taggedErrorSchema<${notFound}>()(
39
41
  '${notFound}',
40
42
  {
41
43
  id: Schema.String,
@@ -46,13 +48,13 @@ export class ${notFound} extends Schema.TaggedError<${notFound}>()(
46
48
  // (mirrors the shapes Effect BFF's RpcServer/RpcClient runtime accepts).
47
49
  export const ${groupExport} = RpcGroup.make(
48
50
  Rpc.make('list', {
49
- success: Schema.Struct({ items: Schema.Array(${itemSchema}) }),
50
51
  payload: { limit: Schema.optional(Schema.Number) },
52
+ success: Schema.Struct({ items: Schema.Array(${itemSchema}) }),
51
53
  }),
52
54
  Rpc.make('get', {
53
- success: ${itemSchema},
54
55
  error: ${notFound},
55
56
  payload: { id: Schema.String },
57
+ success: ${itemSchema},
56
58
  }),
57
59
  );
58
60
 
@@ -78,6 +80,12 @@ function rpcServiceEntryWiring(service) {
78
80
  const layer = `
79
81
  const ${groupName}RpcLayer = ${groupExport}.toLayer(
80
82
  ${groupExport}.of({
83
+ get: ({ id }) => {
84
+ const matched = ${groupName}Items.find(candidate => candidate.id === id);
85
+ return matched === undefined
86
+ ? Effect.fail(new ${notFound}({ id }))
87
+ : Effect.succeed({ id: matched.id, title: matched.title });
88
+ },
81
89
  list: ({ limit }) =>
82
90
  Effect.succeed({
83
91
  items:
@@ -91,12 +99,6 @@ const ${groupName}RpcLayer = ${groupExport}.toLayer(
91
99
  title: item.title,
92
100
  })),
93
101
  }),
94
- get: ({ id }) => {
95
- const matched = ${groupName}Items.find(candidate => candidate.id === id);
96
- return matched === undefined
97
- ? Effect.fail(new ${notFound}({ id }))
98
- : Effect.succeed({ id: matched.id, title: matched.title });
99
- },
100
102
  }),
101
103
  );
102
104
  `;
@@ -123,7 +125,7 @@ function createRpcApiServiceEntry(service) {
123
125
  Effect,
124
126
  HttpApi,
125
127
  Layer,
126
- } from '@modern-js/plugin-bff/effect-edge';
128
+ } from '@modern-js/bff-effect/effect-edge';
127
129
  ${rpc.imports}import { ultramodernApiMarker } from '../shared/ultramodern-build.ts';
128
130
 
129
131
  const ${groupName}Items = [
@@ -147,11 +149,11 @@ const apiRuntime = defineEffectBff({
147
149
  ${rpc.field}
148
150
  });
149
151
 
150
- export { ${groupExport} };
152
+ export { ${groupExport} } from '../shared/rpc.ts';
151
153
  export default apiRuntime;
152
154
  `;
153
155
  }
154
- function createRpcClientFile(service) {
156
+ function createRpcClientFile(service, contractImportPath = '../../shared/rpc.ts') {
155
157
  const groupExport = verticalRpcGroupExport(service);
156
158
  const contractExport = verticalRpcContractExport(service);
157
159
  const stem = resolveApiStem(service);
@@ -159,15 +161,15 @@ function createRpcClientFile(service) {
159
161
  return `import {
160
162
  Effect,
161
163
  makeEffectRpcClient,
162
- } from '@modern-js/plugin-bff/effect-client';
164
+ } from '@modern-js/bff-effect/effect-client';
163
165
  import {
164
166
  ${contractExport},
165
167
  ${groupExport},
166
- } from '../../shared/rpc.ts';
168
+ } from '${contractImportPath}';
167
169
 
168
- export { Effect } from '@modern-js/plugin-bff/effect-client';
170
+ export { Effect } from '@modern-js/bff-effect/effect-client';
169
171
 
170
- export const ${pascalStem}RpcContract = ${contractExport};
172
+ export { ${contractExport} as ${pascalStem}RpcContract } from '${contractImportPath}';
171
173
 
172
174
  export interface ${pascalStem}RpcClientOptions {
173
175
  url?: string | URL;
@@ -177,8 +179,8 @@ export const make${pascalStem}RpcClient = (
177
179
  options: ${pascalStem}RpcClientOptions = {},
178
180
  ) =>
179
181
  makeEffectRpcClient(${groupExport}, {
180
- url: String(options.url ?? ${contractExport}.path),
181
182
  serialization: 'json',
183
+ url: String(options.url ?? ${contractExport}.path),
182
184
  });
183
185
 
184
186
  export const list${pascalStem}Rpc = (
@@ -4,23 +4,22 @@ import { packageName } from "../naming.js";
4
4
  import { createCheckoutCartServerHandlers, createCheckoutCartServerState } from "./checkout-cart.js";
5
5
  import { verticalApiExport, verticalApiGroupName, verticalApiNotFoundErrorExport } from "./names.js";
6
6
  import { createRpcApiServiceEntry, rpcPath, verticalRpcContractExport, verticalRpcGroupExport } from "./rpc.js";
7
- function createApiServiceEntry(service, contractImportPath) {
7
+ function createApiServiceEntry(service, contractImportPath, options) {
8
8
  if ((service.api?.protocol ?? 'rest') === 'rpc') return createRpcApiServiceEntry(service);
9
9
  const apiExport = verticalApiExport(service);
10
10
  const groupName = verticalApiGroupName(service);
11
11
  const notFoundErrorExport = verticalApiNotFoundErrorExport(service);
12
12
  const stem = resolveApiStem(service);
13
- return `import {
14
- defineEffectBff,
13
+ const assemblyImport = options ? "import { assembleEffectBffRuntime } from '@modern-js/bff-effect/assembly';\n" : '';
14
+ return `${assemblyImport}import {
15
+ ${options ? '' : 'defineEffectBff,'}
15
16
  Effect,
16
17
  HttpApiBuilder,
17
18
  Layer,
18
- } from '@modern-js/plugin-bff/effect-edge';
19
- import type {
20
- EffectBffDefinition,
21
- EffectBffRuntime,
19
+ } from '@modern-js/bff-effect/effect-edge';
20
+ ${options ? '' : `import type {
22
21
  EffectRuntimeLayer,
23
- } from '@modern-js/plugin-bff/effect-edge';
22
+ } from '@modern-js/bff-effect/effect-edge';`}
24
23
  import { ultramodernApiMarker } from '../shared/ultramodern-build.ts';
25
24
  import {
26
25
  ${apiExport},
@@ -50,6 +49,31 @@ const operationAttributes = (operationContext: OperationContext) => ({
50
49
  : {}),
51
50
  });
52
51
 
52
+ ${options ? `const ${groupName}ReadinessLayer = HttpApiBuilder.group(
53
+ ${apiExport},
54
+ 'foundation',
55
+ handlers => handlers
56
+ .handle('readiness', () =>
57
+ Effect.succeed({
58
+ checks: {
59
+ api: 'ready' as const,
60
+ moduleFederation: 'ready' as const,
61
+ ssr: 'ready' as const,
62
+ translations: 'ready' as const,
63
+ },
64
+ marker: ultramodernApiMarker,
65
+ status: 'ready' as const,
66
+ versionSkew: 'none' as const,
67
+ }).pipe(
68
+ Effect.withSpan('ultramodern.api.${groupName}.readiness', {
69
+ attributes: operationAttributes(${groupName}OperationContexts.readiness),
70
+ kind: 'server',
71
+ }),
72
+ ),
73
+ )
74
+ ,
75
+ );` : ''}
76
+
53
77
  const ${groupName}Layer = HttpApiBuilder.group(
54
78
  ${apiExport},
55
79
  '${groupName}',
@@ -68,7 +92,7 @@ const ${groupName}Layer = HttpApiBuilder.group(
68
92
  }),
69
93
  ),
70
94
  )
71
- .handle('readiness', () =>
95
+ ${options ? '' : ` .handle('readiness', () =>
72
96
  Effect.succeed({
73
97
  checks: {
74
98
  api: 'ready' as const,
@@ -86,6 +110,7 @@ const ${groupName}Layer = HttpApiBuilder.group(
86
110
  }),
87
111
  ),
88
112
  )
113
+ `}
89
114
  .handle('get', ({ params }) => {
90
115
  const matchedItem = ${groupName}Items.find(
91
116
  candidate => candidate.id === params.id,
@@ -125,14 +150,18 @@ const ${groupName}Layer = HttpApiBuilder.group(
125
150
  )${createCheckoutCartServerHandlers(service)},
126
151
  );
127
152
 
128
- const layer = HttpApiBuilder.layer(${apiExport}).pipe(
129
- Layer.provide(${groupName}Layer),
130
- ) satisfies EffectRuntimeLayer;
131
- const apiRuntime: EffectBffDefinition<typeof ${apiExport}, EffectRuntimeLayer> &
132
- EffectBffRuntime<typeof ${apiExport}, EffectRuntimeLayer> = defineEffectBff({
133
- api: ${apiExport},
134
- layer,
135
- });
153
+ ${options ? `const apiHandlersLive = Layer.mergeAll(${groupName}Layer, ${groupName}ReadinessLayer);
154
+ export const make${apiExport[0].toUpperCase()}${apiExport.slice(1)}Runtime = () =>
155
+ assembleEffectBffRuntime({
156
+ api: ${apiExport},
157
+ handlers: apiHandlersLive,
158
+ });` : `export const make${apiExport[0].toUpperCase()}${apiExport.slice(1)}Runtime = () => {
159
+ const layer = HttpApiBuilder.layer(${apiExport}).pipe(
160
+ Layer.provide(${groupName}Layer),
161
+ ) satisfies EffectRuntimeLayer;
162
+ return defineEffectBff({ api: ${apiExport}, layer });
163
+ };`}
164
+ const apiRuntime = make${apiExport[0].toUpperCase()}${apiExport.slice(1)}Runtime();
136
165
 
137
166
  export default apiRuntime;
138
167
  `;
@@ -140,12 +169,8 @@ export default apiRuntime;
140
169
  function createBackendEffectApiExpose(scope, service) {
141
170
  if ((service.api?.protocol ?? 'rest') === 'rpc') {
142
171
  const groupExport = verticalRpcGroupExport(service);
143
- const contractExport = verticalRpcContractExport(service);
144
172
  return `import { ultramodernApiMarker } from '../shared/ultramodern-build.ts';
145
- import {
146
- ${contractExport},
147
- ${groupExport},
148
- } from '../shared/rpc.ts';
173
+ import { ${groupExport} } from '../shared/rpc.ts';
149
174
 
150
175
  export const backendFederationContract = {
151
176
  compatibility: {
@@ -159,16 +184,16 @@ export const backendFederationContract = {
159
184
  executionSurfaces: ['node-mf-runtime'],
160
185
  exposes: ['./effect-api'],
161
186
  name: '${createBackendFederationName(service)}',
187
+ role: 'microvertical-server',
162
188
  rpcPath: '${rpcPath(service)}',
163
189
  rpcSerialization: 'json',
164
- role: 'microvertical-server',
165
190
  runtimeFramework: 'effect',
166
191
  strictEffectApproach: true,
167
192
  } as const;
168
193
 
169
194
  export { default, default as runtime } from './index.ts';
170
195
  export {
171
- ${contractExport} as contract,
196
+ ${verticalRpcContractExport(service)} as contract,
172
197
  ${groupExport} as rpc,
173
198
  } from '../shared/rpc.ts';
174
199
  export const api: unknown = ${groupExport};
@@ -10,10 +10,10 @@ function createSharedApiImports() {
10
10
  HttpApiGroup,
11
11
  HttpApiSchema,
12
12
  Schema,
13
- } from '@modern-js/plugin-bff/effect-client';
13
+ } from '@modern-js/bff-effect/effect-client';
14
14
  `;
15
15
  }
16
- function createSharedApiContract(service) {
16
+ function createSharedApiContract(service, shared = false) {
17
17
  const schemaExport = verticalApiSchemaExport(service);
18
18
  const markerSchemaExport = verticalApiMarkerSchemaExport(service);
19
19
  const readinessSchemaExport = verticalApiReadinessSchemaExport(service);
@@ -70,7 +70,7 @@ function createSharedApiContract(service) {
70
70
  listOperationContext,
71
71
  readinessOperationContext
72
72
  }).trim();
73
- return `export interface ${markerType} {
73
+ return `${shared ? `export type ${markerType} = MicroVerticalBuildMarker;` : `export interface ${markerType} {
74
74
  readonly appId: string;
75
75
  readonly build: string;
76
76
  readonly buildMarker: string;
@@ -80,7 +80,7 @@ function createSharedApiContract(service) {
80
80
  readonly surface: string;
81
81
  readonly unitId: string;
82
82
  readonly version: string;
83
- }
83
+ }`}
84
84
 
85
85
  export interface ${itemType} {
86
86
  readonly id: string;
@@ -88,7 +88,7 @@ export interface ${itemType} {
88
88
  readonly title: string;
89
89
  }
90
90
 
91
- export interface ${readinessType} {
91
+ ${shared ? `export type ${readinessType} = MicroVerticalReadiness;` : `export interface ${readinessType} {
92
92
  readonly checks: {
93
93
  readonly api: 'ready';
94
94
  readonly moduleFederation: 'ready';
@@ -98,7 +98,7 @@ export interface ${readinessType} {
98
98
  readonly marker: ${markerType};
99
99
  readonly status: 'ready';
100
100
  readonly versionSkew: 'none';
101
- }
101
+ }`}
102
102
 
103
103
  export interface ${createPayloadType} {
104
104
  readonly title: string;
@@ -117,7 +117,7 @@ export interface ${notFoundErrorExport} {
117
117
  readonly id: string;
118
118
  }
119
119
 
120
- export const ${markerSchemaExport}: Schema.Codec<${markerType}> = Schema.Struct({
120
+ ${shared ? `export const ${markerSchemaExport}: Schema.Codec<${markerType}> = MicroVerticalBuildMarkerSchema;` : `export const ${markerSchemaExport}: Schema.Codec<${markerType}> = Schema.Struct({
121
121
  appId: Schema.String,
122
122
  build: Schema.String,
123
123
  buildMarker: Schema.String,
@@ -127,7 +127,7 @@ export const ${markerSchemaExport}: Schema.Codec<${markerType}> = Schema.Struct(
127
127
  surface: Schema.String,
128
128
  unitId: Schema.String,
129
129
  version: Schema.String,
130
- });
130
+ });`}
131
131
 
132
132
  export const ${schemaExport}: Schema.Codec<${itemType}> = Schema.Struct({
133
133
  id: Schema.String,
@@ -135,7 +135,7 @@ export const ${schemaExport}: Schema.Codec<${itemType}> = Schema.Struct({
135
135
  title: Schema.String,
136
136
  });
137
137
 
138
- export const ${readinessSchemaExport}: Schema.Codec<${readinessType}> = Schema.Struct({
138
+ ${shared ? `export const ${readinessSchemaExport}: Schema.Codec<${readinessType}> = MicroVerticalReadinessSchema;` : `export const ${readinessSchemaExport}: Schema.Codec<${readinessType}> = Schema.Struct({
139
139
  checks: Schema.Struct({
140
140
  api: Schema.Literal('ready'),
141
141
  moduleFederation: Schema.Literal('ready'),
@@ -145,7 +145,7 @@ export const ${readinessSchemaExport}: Schema.Codec<${readinessType}> = Schema.S
145
145
  marker: ${markerSchemaExport},
146
146
  status: Schema.Literal('ready'),
147
147
  versionSkew: Schema.Literal('none'),
148
- });
148
+ });`}
149
149
 
150
150
  export const ${createPayloadSchemaExport}: Schema.Codec<${createPayloadType}> = Schema.Struct({
151
151
  title: Schema.String,
@@ -157,7 +157,7 @@ ${checkoutCartSharedSchemaSection}export const ${notFoundSchemaExport}: Schema.C
157
157
  HttpApiSchema.status(404),
158
158
  );
159
159
 
160
- export interface OperationContext {
160
+ ${shared ? 'export type OperationContext = MicroVerticalOperationContext;' : `export interface OperationContext {
161
161
  method: string;
162
162
  operationId: string;
163
163
  routePath: string;
@@ -165,13 +165,18 @@ export interface OperationContext {
165
165
  | 'client'
166
166
  | 'server'
167
167
  | 'generated-client'
168
- | 'effect-adapter'
168
+ | 'effect-server'
169
169
  | 'data-platform'
170
170
  | 'unknown';
171
171
  traceId?: string;
172
- }
172
+ }`}
173
173
 
174
- export const ${apiExport} = HttpApi.make('${apiName}').add(
174
+ ${shared ? `export const ${groupName}FoundationApi = HttpApi.make('${apiName}Foundation').add(
175
+ HttpApiGroup.make('foundation').add(
176
+ HttpApiEndpoint.get('readiness', '/${stem}/readiness', { success: ${readinessSchemaExport} }),
177
+ ),
178
+ );` : ''}
179
+ export const ${apiExport} = HttpApi.make('${apiName}')${shared ? `.addHttpApi(${groupName}FoundationApi)` : ''}.add(
175
180
  HttpApiGroup.make('${groupName}')
176
181
  .add(
177
182
  HttpApiEndpoint.get('list', '/${stem}', {
@@ -183,11 +188,12 @@ export const ${apiExport} = HttpApi.make('${apiName}').add(
183
188
  }),
184
189
  }),
185
190
  )
186
- .add(
191
+ ${shared ? '' : ` .add(
187
192
  HttpApiEndpoint.get('readiness', '/${stem}/readiness', {
188
193
  success: ${readinessSchemaExport},
189
194
  }),
190
195
  )
196
+ `}
191
197
  .add(
192
198
  HttpApiEndpoint.get('get', '/${stem}/:id', {
193
199
  error: ${notFoundSchemaExport},
@@ -208,7 +214,7 @@ export const ${apiExport} = HttpApi.make('${apiName}').add(
208
214
  );
209
215
 
210
216
  export const ${groupName}OperationContexts = {
211
- ${operationContextEntries}
217
+ ${shared ? operationContextEntries.replaceAll(/(\w+: )\{([\s\S]*?)\},/gu, (_, key, fields)=>`${key}createMicroVerticalOperationContext({${fields.replace(/\n\s*source: 'generated-client',/u, '')}}),`) : operationContextEntries}
212
218
  } satisfies Record<string, OperationContext>;
213
219
 
214
220
  export const ${groupName}ApiContract = {
@@ -219,8 +225,12 @@ ${createCheckoutCartApiContractFields(service)} ownerId: '${service.id}',
219
225
  } as const;
220
226
  `;
221
227
  }
222
- function createSharedApi(service) {
228
+ function createSharedApi(service, options) {
229
+ const imports = options ? `import { MicroVerticalBuildMarkerSchema, MicroVerticalReadinessSchema, createMicroVerticalOperationContext } from '@modern-js/bff-effect/microvertical-api';
230
+ import type { MicroVerticalBuildMarker, MicroVerticalReadiness, MicroVerticalOperationContext } from '@modern-js/bff-effect/microvertical-api';
231
+ ` : '';
223
232
  return `${createSharedApiImports()}
224
- ${createSharedApiContract(service)}`;
233
+ ${imports}
234
+ ${createSharedApiContract(service, void 0 !== options)}`;
225
235
  }
226
236
  export { createSharedApi };
@@ -43,36 +43,16 @@ function createAppRuntimeConfig(app, scope, remotes = [], emitsUi = appEmitsBrow
43
43
  const routeMetadataImport = emitsUi ? "import { ultramodernRouteNamespace } from './routes/ultramodern-route-metadata';\n" : '';
44
44
  const routeNamespace = emitsUi ? 'ultramodernRouteNamespace' : "'api'";
45
45
  return `import { defineRuntimeConfig } from '@modern-js/runtime';
46
- ${'shell' === app.kind ? "import { ultramodernBoundaryDebuggerPlugin } from '@modern-js/runtime/boundary-debugger';\n" : ''}import type { I18nInstance } from '@modern-js/plugin-i18n/runtime';
46
+ ${'shell' === app.kind ? "import { ultramodernBoundaryDebuggerPlugin } from '@modern-js/boundary-debugger';\n" : ''}import type { I18nInstance } from '@modern-js/plugin-i18n/runtime';
47
47
  import { createInstance } from 'i18next';
48
48
  import csResource from '../locales/cs/${appI18nNamespace(app)}.json';
49
49
  import enResource from '../locales/en/${appI18nNamespace(app)}.json';
50
50
  ${routeMetadataImport}
51
51
 
52
- type LocaleResource = string | { readonly [key: string]: LocaleResource };
53
-
54
- const flattenLocaleResource = (
55
- resource: LocaleResource,
56
- prefix = '',
57
- ): Record<string, string> => {
58
- if (typeof resource === 'string') {
59
- return prefix.length > 0 ? { [prefix]: resource } : {};
60
- }
61
-
62
- return Object.fromEntries(
63
- Object.entries(resource).flatMap(([key, value]) => {
64
- const nextKey = prefix.length > 0 ? \`\${prefix}.\${key}\` : key;
65
- return typeof value === 'string'
66
- ? [[nextKey, value]]
67
- : Object.entries(flattenLocaleResource(value, nextKey));
68
- }),
69
- );
70
- };
71
-
72
52
  const i18nInstance = createInstance();
73
53
  const resources = {
74
- cs: { [${routeNamespace}]: flattenLocaleResource(csResource) },
75
- en: { [${routeNamespace}]: flattenLocaleResource(enResource) },
54
+ cs: { [${routeNamespace}]: csResource },
55
+ en: { [${routeNamespace}]: enResource },
76
56
  } as const;
77
57
 
78
58
  export default defineRuntimeConfig({
@@ -1,4 +1,4 @@
1
- import { BACKEND_FEDERATION_CONTRACT_VERSION, BACKEND_FEDERATION_EFFECT_EXPOSE, BACKEND_FEDERATION_NODE_ADAPTER_VERSION, formatBackendFederationValidationErrors, validateBackendFederationMetadata } from "@modern-js/utils/universal";
1
+ import { BACKEND_FEDERATION_CONTRACT_VERSION, BACKEND_FEDERATION_EFFECT_EXPOSE, BACKEND_FEDERATION_NODE_ADAPTER_VERSION, formatBackendFederationValidationErrors, validateBackendFederationMetadata } from "@modern-js/backend-federation-contracts";
2
2
  import { verticalApiExport, verticalApiGroupName } from "./api.js";
3
3
  import { rpcPath, verticalRpcContractExport, verticalRpcGroupExport } from "./api/rpc.js";
4
4
  import { createDeliveryUnitRecord, deliveryUnitContractBlock } from "./delivery-unit.js";
@@ -25,14 +25,14 @@ function createEffectExpose(app) {
25
25
  if ('rpc' === resolveApiProtocol(app)) return {
26
26
  contract: `${app.directory}/shared/rpc.ts`,
27
27
  runtime: `${app.directory}/api/index.ts`,
28
- client: `${app.directory}/src/api/${app.api.stem}-rpc-client.ts`,
28
+ client: `${app.directory}/${'api-only' === app.surfaceProfile ? 'shared' : 'src/api'}/${app.api.stem}-rpc-client.ts`,
29
29
  rpc: rpcPath(app),
30
30
  serialization: 'json'
31
31
  };
32
32
  return {
33
33
  contract: `${app.directory}/shared/api.ts`,
34
34
  runtime: `${app.directory}/api/index.ts`,
35
- client: `${app.directory}/src/api/${app.api.stem}-client.ts`,
35
+ client: `${app.directory}/${'api-only' === app.surfaceProfile ? 'shared' : 'src/api'}/${app.api.stem}-client.ts`,
36
36
  openapi: `${app.api.prefix}/openapi.json`,
37
37
  readiness: `${app.api.prefix}/${apiStem}/readiness`
38
38
  };
@@ -84,7 +84,7 @@ function createNodeExecutionSurface(app, deliveryUnit) {
84
84
  containerEntry: createBackendFederationContainerEntry(app),
85
85
  remoteType: 'commonjs-module',
86
86
  expose: BACKEND_FEDERATION_EFFECT_EXPOSE,
87
- runtimePackage: '@modern-js/plugin-bff/effect',
87
+ runtimePackage: '@modern-js/plugin-bff-extensions/backend-federation-manifest/node',
88
88
  ...deliveryUnit ? {
89
89
  expected: {
90
90
  unitId: deliveryUnit.unitId,
@@ -221,9 +221,9 @@ export const backendFederationContract = {
221
221
  exposes: ['${BACKEND_FEDERATION_EFFECT_EXPOSE}'],
222
222
  name: '${createBackendFederationName(app)}',
223
223
  nodeAdapterVersion: '${BACKEND_FEDERATION_NODE_ADAPTER_VERSION}',
224
+ role: 'microvertical-server',
224
225
  rpcPath: '${rpcPath(app)}',
225
226
  rpcSerialization: 'json',
226
- role: 'microvertical-server',
227
227
  runtimeFramework: 'effect',
228
228
  strictEffectApproach: true,
229
229
  } as const;