@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
@@ -1,16 +1,11 @@
1
1
  import "node:module";
2
- import { ULTRAMODERN_CREATE_PACKAGE } from "../ultramodern-package-source.js";
3
2
  import { apiTopologyMetadata } from "./api.js";
4
3
  import { rpcPath } from "./api/rpc.js";
5
- import { createBackendFederationContract, createBackendFederationSummary, createServerExecutionOverlay } from "./backend-federation.js";
6
- import { defaultReactSingletons } from "./bridge-config/defaults.js";
4
+ import { createBackendFederationContract, createServerExecutionOverlay } from "./backend-federation.js";
7
5
  import { createDeliveryUnitRecord, deliveryUnitContractBlock } from "./delivery-unit.js";
8
6
  import { appEmitsBrowserUi, createModuleFederationRemoteContracts, createShellHost, resolveApiPrefix, resolveApiProtocol, sharedPackages, shellApp, verticalApiApps } from "./descriptors.js";
9
7
  import { packageName } from "./naming.js";
10
8
  import { createCloudflareDeployContract } from "./policy.js";
11
- import { createAdditionalShellConfigEntry } from "./shells.js";
12
- import { createGeneratedToolingWrapperMap } from "./tooling-command-catalog.js";
13
- import { CLOUDFLARE_COMPATIBILITY_DATE, NODE_VERSION, PNPM_VERSION } from "./versions.js";
14
9
  function isJsonValue(value) {
15
10
  return void 0 !== value;
16
11
  }
@@ -22,9 +17,6 @@ function optionalJsonEntry(key, value) {
22
17
  function jsonEntries(entries) {
23
18
  return Object.fromEntries(entries.filter((entry)=>isJsonValue(entry[1])));
24
19
  }
25
- function presentJsonValues(values) {
26
- return values.filter(isJsonValue);
27
- }
28
20
  function createReferenceRemoteContracts(app, remotes) {
29
21
  return createModuleFederationRemoteContracts(app, remotes).map((remote)=>({
30
22
  id: remote.id,
@@ -40,20 +32,23 @@ function createTopology(scope, remotes = [], primaryShell) {
40
32
  description: 'Generated UltraModern SuperApp shell that can grow by adding full-stack verticals.',
41
33
  preset: 'presetUltramodern',
42
34
  shell: {
43
- id: shellApp.id,
35
+ id: shellHost.id,
44
36
  kind: 'shell',
45
- package: packageName(scope, shellApp.packageSuffix),
37
+ package: packageName(scope, shellHost.packageSuffix),
38
+ path: shellHost.directory,
39
+ displayName: shellHost.displayName,
40
+ portEnv: shellHost.portEnv,
46
41
  verticalRefs: shellHost.verticalRefs ?? [],
47
42
  moduleFederation: {
48
43
  role: 'host',
49
- name: shellApp.mfName,
44
+ name: shellHost.mfName,
50
45
  remotes: createReferenceRemoteContracts(shellHost, remotes),
51
46
  ssr: true,
52
47
  sharedContractVersion: 'mf-ssr-contract-v1'
53
48
  },
54
- deliveryUnit: deliveryUnitContractBlock(createDeliveryUnitRecord(scope, shellApp)),
55
- cloudflare: createCloudflareDeployContract(scope, shellApp),
56
- ownership: shellApp.ownership
49
+ deliveryUnit: deliveryUnitContractBlock(createDeliveryUnitRecord(scope, shellHost)),
50
+ cloudflare: createCloudflareDeployContract(scope, shellHost),
51
+ ownership: shellHost.ownership
57
52
  },
58
53
  verticals: remotes.map((vertical)=>({
59
54
  id: vertical.id,
@@ -69,6 +64,8 @@ function createTopology(scope, remotes = [], primaryShell) {
69
64
  } : {},
70
65
  package: packageName(scope, vertical.packageSuffix),
71
66
  path: vertical.directory,
67
+ displayName: vertical.displayName,
68
+ portEnv: vertical.portEnv,
72
69
  moduleFederation: {
73
70
  role: 'remote',
74
71
  name: vertical.mfName,
@@ -92,15 +89,7 @@ function createTopology(scope, remotes = [], primaryShell) {
92
89
  package: packageName(scope, sharedPackage.id),
93
90
  path: sharedPackage.directory,
94
91
  description: sharedPackage.description
95
- })),
96
- validation: {
97
- script: "scripts/validate-ultramodern-workspace.mts",
98
- commands: [
99
- 'pnpm i18n:boundaries',
100
- 'pnpm api:check',
101
- 'pnpm contract:check'
102
- ]
103
- }
92
+ }))
104
93
  };
105
94
  }
106
95
  function createOwnership(scope, remotes = []) {
@@ -162,159 +151,4 @@ function createDevelopmentOverlay(scope, remotes = []) {
162
151
  ]))
163
152
  };
164
153
  }
165
- function createUltramodernConfig(scope, modernVersion, packageSource, apps = [
166
- createShellHost()
167
- ], enableTailwind = true, bridge, additionalShells = [], primaryShell) {
168
- const remotes = apps.filter((app)=>'shell' !== app.kind);
169
- const shellHost = primaryShell ?? createShellHost(remotes);
170
- return {
171
- schemaVersion: 1,
172
- profile: 'cloudflare-ssr-mf-effect-v1',
173
- generator: {
174
- package: ULTRAMODERN_CREATE_PACKAGE,
175
- version: modernVersion
176
- },
177
- workspace: {
178
- packageScope: scope,
179
- packageManager: {
180
- name: 'pnpm',
181
- version: PNPM_VERSION
182
- },
183
- node: {
184
- version: NODE_VERSION,
185
- engineRange: '>=26'
186
- }
187
- },
188
- packageSource: {
189
- strategy: packageSource.strategy,
190
- modernPackageVersion: packageSource.modernPackageVersion,
191
- ...packageSource.registry ? {
192
- registry: packageSource.registry
193
- } : {},
194
- ...packageSource.aliasScope ? {
195
- aliasScope: packageSource.aliasScope
196
- } : {},
197
- ...packageSource.aliasPackageNamePrefix ? {
198
- aliasPackageNamePrefix: packageSource.aliasPackageNamePrefix
199
- } : {}
200
- },
201
- features: {
202
- tailwind: enableTailwind
203
- },
204
- topology: {
205
- source: './topology/reference-topology.json',
206
- apps: apps.map((app)=>({
207
- id: app.id,
208
- kind: app.kind,
209
- package: packageName(scope, app.packageSuffix),
210
- packageSuffix: app.packageSuffix,
211
- displayName: app.displayName,
212
- path: app.directory,
213
- ...app.domain ? {
214
- domain: app.domain
215
- } : {},
216
- ...app.surfaceProfile ? {
217
- surfaceProfile: app.surfaceProfile
218
- } : {},
219
- ...app.deliveryUnitKind ? {
220
- deliveryUnitKind: app.deliveryUnitKind
221
- } : {},
222
- port: app.port,
223
- portEnv: app.portEnv,
224
- moduleFederation: {
225
- role: 'shell' === app.kind ? 'host' : 'remote',
226
- name: app.mfName,
227
- exposes: Object.keys(app.exposes ?? {}),
228
- ...'shell' === app.kind ? {
229
- verticalRefs: shellHost.verticalRefs ?? [],
230
- remotes: createModuleFederationRemoteContracts(shellHost, remotes)
231
- } : app.verticalRefs?.length ? {
232
- verticalRefs: app.verticalRefs,
233
- remotes: createModuleFederationRemoteContracts(app, remotes)
234
- } : {},
235
- ssr: true,
236
- dts: {
237
- compilerInstance: 'effect-tsgo',
238
- tsConfigPath: './tsconfig.mf-types.json'
239
- }
240
- },
241
- ...optionalJsonEntry('backendFederation', createBackendFederationContract(scope, app)),
242
- deliveryUnit: deliveryUnitContractBlock(createDeliveryUnitRecord(scope, app)),
243
- ...app.api ? {
244
- api: {
245
- runtime: 'effect',
246
- stem: app.api.stem,
247
- prefix: app.api.prefix,
248
- consumedBy: app.api.consumedBy,
249
- serverEntry: `${app.directory}/api/index.ts`,
250
- ...void 0 === app.api.protocol ? {} : {
251
- protocol: app.api.protocol
252
- }
253
- }
254
- } : {},
255
- deploy: {
256
- cloudflare: createCloudflareDeployContract(scope, app)
257
- }
258
- }))
259
- },
260
- ...additionalShells.length > 0 ? {
261
- shells: additionalShells.map((shell)=>createAdditionalShellConfigEntry(scope, shell, remotes))
262
- } : {},
263
- bridge: bridge ?? {
264
- enabled: false,
265
- workspacePackages: [],
266
- dependencies: [],
267
- lockfilePolicy: 'nested',
268
- gates: [],
269
- reactSingletons: [
270
- ...defaultReactSingletons
271
- ]
272
- },
273
- deploy: {
274
- worker: {
275
- wrangler: {
276
- compatibility_date: CLOUDFLARE_COMPATIBILITY_DATE,
277
- compatibility_flags: [
278
- 'nodejs_compat',
279
- 'global_fetch_strictly_public'
280
- ]
281
- },
282
- artifacts: [],
283
- publicAssetExcludes: []
284
- }
285
- },
286
- moduleFederation: {
287
- apps: apps.map((app)=>({
288
- id: app.id,
289
- path: app.directory,
290
- role: 'shell' === app.kind ? 'host' : 'remote',
291
- name: app.mfName,
292
- exposes: Object.keys(app.exposes ?? {}),
293
- hostOnly: 'shell' === app.kind && 0 === Object.keys(app.exposes ?? {}).length
294
- }))
295
- },
296
- backendFederation: {
297
- apps: presentJsonValues(verticalApiApps(remotes).map((app)=>createBackendFederationSummary(scope, app)))
298
- },
299
- agentSkills: {
300
- target: 'codex',
301
- lockfile: './.codex/skills-lock.json',
302
- installDir: './.codex/skills',
303
- mode: 'repo-owned-default-on',
304
- selfContainedVendoring: true,
305
- optOutEnv: [
306
- 'ULTRAMODERN_SKIP_CODEX_SKILLS=1',
307
- 'ULTRAMODERN_CODEX_SKILLS=0'
308
- ]
309
- },
310
- tooling: {
311
- command: 'ultramodern-create ultramodern',
312
- wrappers: {
313
- ...createGeneratedToolingWrapperMap(),
314
- apiBoundaries: "scripts/check-ultramodern-api-boundaries.mts",
315
- skills: "scripts/bootstrap-agent-skills.mts"
316
- }
317
- }
318
- };
319
- }
320
- export { createDevelopmentOverlay, createOwnership, createTopology, createUltramodernConfig };
154
+ export { createDevelopmentOverlay, createOwnership, createTopology };
@@ -0,0 +1,42 @@
1
+ import "node:module";
2
+ const SEGMENT_UNSAFE = /[^A-Za-z0-9._-]+/g;
3
+ const SEGMENT_TRIM = /^-+|-+$/g;
4
+ function exposeSurfaceId(key) {
5
+ const trimmed = key.replace(/^\.\//, '');
6
+ const cleaned = trimmed.replace(SEGMENT_UNSAFE, '-').replace(SEGMENT_TRIM, '');
7
+ return '' === cleaned ? 'surface' : cleaned;
8
+ }
9
+ function exposeSurface(app, key, value) {
10
+ const isRoute = /route/i.test(key) || /route/i.test(value);
11
+ const location = {
12
+ platform: 'browser-mf',
13
+ manifestUrl: `http://localhost:${app.port}/mf-manifest.json`
14
+ };
15
+ const common = {
16
+ surfaceId: exposeSurfaceId(key),
17
+ locations: [
18
+ location
19
+ ]
20
+ };
21
+ return isRoute ? {
22
+ kind: 'route',
23
+ ...common
24
+ } : {
25
+ kind: 'component',
26
+ ...common
27
+ };
28
+ }
29
+ function apiSurface(api, protocol, address = api.prefix) {
30
+ return {
31
+ kind: 'api',
32
+ surfaceId: api.stem,
33
+ protocol,
34
+ locations: [
35
+ {
36
+ platform: 'http',
37
+ address
38
+ }
39
+ ]
40
+ };
41
+ }
42
+ export { apiSurface, exposeSurface, exposeSurfaceId };
@@ -1,6 +1,4 @@
1
1
  import "node:module";
2
- import { DELIVERY_UNIT_DEPLOY_PROFILE, DELIVERY_UNIT_KIND, DELIVERY_UNIT_SCHEMA_VERSION } from "@modern-js/utils/universal";
3
- import { isVerticalApiProtocol } from "../types.js";
4
2
  const SEGMENT_PATTERN = /^[A-Za-z0-9._-]+$/;
5
3
  const MAJOR_PATTERN = /^v[1-9][0-9]*$/;
6
4
  function parseSurfaceRef(input) {
@@ -159,79 +157,7 @@ function serializeDeliveryUnitDescriptor(descriptor) {
159
157
  };
160
158
  return output;
161
159
  }
162
- function projectKind(kind) {
163
- switch(kind){
164
- case 'shell':
165
- return 'shell';
166
- case 'microvertical':
167
- case 'horizontal-remote':
168
- return 'vertical';
169
- default:
170
- return assertNever(kind);
171
- }
172
- }
173
- function lastSegment(unitId) {
174
- const segments = unitId.split('/');
175
- return segments[segments.length - 1] ?? unitId;
176
- }
177
- function projectApi(surfaces, mode) {
178
- const apiSurface = surfaces.find((surface)=>'api' === surface.kind);
179
- if (void 0 === apiSurface) return;
180
- const http = apiSurface.locations.find((location)=>'http' === location.platform);
181
- return {
182
- stem: apiSurface.surfaceId,
183
- prefix: http?.address ?? `/${apiSurface.surfaceId}`,
184
- consumedBy: [],
185
- ...'extended-v1' === mode && isVerticalApiProtocol(apiSurface.protocol) ? {
186
- protocol: apiSurface.protocol
187
- } : {}
188
- };
189
- }
190
- function projectDeliveryUnitToV1(descriptor, context) {
191
- const appId = lastSegment(descriptor.unitId);
192
- const mode = context.mode ?? 'strict-legacy';
193
- const api = projectApi(descriptor.surfaces, mode);
194
- const ownership = 'team' === descriptor.owner.kind ? context.ownership : {
195
- ...context.ownership,
196
- owner: {
197
- ...descriptor.owner
198
- }
199
- };
200
- const app = {
201
- id: appId,
202
- directory: context.directory,
203
- packageSuffix: context.packageSuffix,
204
- displayName: context.displayName,
205
- kind: projectKind(descriptor.kind),
206
- portEnv: context.portEnv,
207
- port: context.port,
208
- mfName: context.mfName,
209
- ownership,
210
- ...'extended-v1' === mode && 'horizontal-remote' === descriptor.kind ? {
211
- deliveryUnitKind: 'horizontal-remote'
212
- } : {},
213
- ...void 0 === api ? {} : {
214
- api
215
- }
216
- };
217
- const deliveryUnitRecord = {
218
- appId,
219
- buildMarker: descriptor.buildMarker,
220
- deployProfile: DELIVERY_UNIT_DEPLOY_PROFILE,
221
- kind: DELIVERY_UNIT_KIND,
222
- packageName: context.packageName,
223
- schemaVersion: DELIVERY_UNIT_SCHEMA_VERSION,
224
- sourceRevision: descriptor.sourceRevision,
225
- unitId: descriptor.unitId,
226
- version: context.version
227
- };
228
- return {
229
- app,
230
- deliveryUnitRecord,
231
- preservedUnknownFields: descriptor.unknownFields ?? {}
232
- };
233
- }
234
160
  function assertNever(value) {
235
161
  throw new Error(`Unexpected variant: ${JSON.stringify(value)}`);
236
162
  }
237
- export { assertNever, formatSurfaceRef, parseDeliveryUnitDescriptor, parseSurfaceRef, projectDeliveryUnitToV1, resolvePublicationZone, serializeDeliveryUnitDescriptor };
163
+ export { assertNever, formatSurfaceRef, parseDeliveryUnitDescriptor, parseSurfaceRef, resolvePublicationZone, serializeDeliveryUnitDescriptor };
@@ -4,16 +4,28 @@ import { createDeliveryUnitRecord, deliveryUnitContractBlock } from "./delivery-
4
4
  function isPlainObject(value) {
5
5
  return 'object' == typeof value && null !== value && !Array.isArray(value);
6
6
  }
7
- function stampDeliveryUnitIdentity(entry, scope, app) {
8
- const block = deliveryUnitContractBlock(createDeliveryUnitRecord(scope, app));
7
+ function stampDeliveryUnitIdentity(entry, scope, app, version) {
8
+ const block = {
9
+ ...isPlainObject(entry.deliveryUnit) ? entry.deliveryUnit : {},
10
+ ...deliveryUnitContractBlock(createDeliveryUnitRecord(scope, app, version))
11
+ };
9
12
  entry.deliveryUnit = block;
10
13
  if (isPlainObject(entry.backendFederation)) {
11
- entry.backendFederation.deliveryUnit = block;
14
+ entry.backendFederation.deliveryUnit = {
15
+ ...isPlainObject(entry.backendFederation.deliveryUnit) ? entry.backendFederation.deliveryUnit : {},
16
+ ...block
17
+ };
12
18
  if (!isPlainObject(entry.backendFederation.versionBoundary)) entry.backendFederation.versionBoundary = {};
13
19
  entry.backendFederation.versionBoundary.identityRoot = 'deliveryUnit';
14
20
  return;
15
21
  }
16
- const contract = createBackendFederationContract(scope, app);
22
+ const contract = createBackendFederationContract(scope, {
23
+ ...app,
24
+ deliveryUnit: {
25
+ ...app.deliveryUnit,
26
+ ...block
27
+ }
28
+ });
17
29
  if (void 0 !== contract) entry.backendFederation = contract;
18
30
  }
19
31
  export { isPlainObject, stampDeliveryUnitIdentity };
@@ -2,9 +2,9 @@ import "node:module";
2
2
  import node_fs from "node:fs";
3
3
  import node_path from "node:path";
4
4
  import { parseArgs } from "node:util";
5
- import { readUltramodernConfig, workspaceAppsFromToolingConfig } from "../ultramodern-tooling/config.js";
5
+ import { readUltramodernWorkspaceInputs } from "../ultramodern-tooling/config.js";
6
+ import { createBuildMarker } from "./delivery-unit.js";
6
7
  import { isPlainObject, stampDeliveryUnitIdentity } from "./delivery-unit-stamp.js";
7
- import { ULTRAMODERN_CONFIG_PATH } from "./descriptors.js";
8
8
  import { createUltramodernBuildArtifactJson, createUltramodernBuildModule } from "./module-federation.js";
9
9
  const REFERENCE_TOPOLOGY_PATH = 'topology/reference-topology.json';
10
10
  function writeTextIfChanged(absolutePath, content) {
@@ -40,8 +40,8 @@ function runSyncDeliveryUnit(args, context) {
40
40
  Backfills the per-delivery-unit identity blocks required by
41
41
  \`ultramodern validate\` onto an existing generated workspace, in place and
42
42
  through framework tooling only. For each delivery unit it writes the
43
- delivery-unit block into .modernjs/ultramodern.json topology.apps[] and
44
- topology/reference-topology.json verticals[] (plus backendFederation.deliveryUnit
43
+ delivery-unit block into topology/reference-topology.json shell/verticals/shells
44
+ (plus backendFederation.deliveryUnit
45
45
  and backendFederation.versionBoundary.identityRoot) and regenerates
46
46
  <app>/shared/ultramodern-build.{json,ts}. Idempotent: a second run writes
47
47
  nothing.
@@ -50,11 +50,23 @@ nothing.
50
50
  }
51
51
  const workspaceOverride = parsed.values.workspace;
52
52
  const workspaceRoot = workspaceOverride ? node_path.resolve(context.invocationCwd, workspaceOverride) : context.workspaceRoot;
53
- const compactPath = node_path.join(workspaceRoot, ULTRAMODERN_CONFIG_PATH);
54
- if (!node_fs.existsSync(compactPath)) throw new Error(`Missing ${ULTRAMODERN_CONFIG_PATH}. sync-delivery-unit needs the compact UltraModern config; run \`ultramodern-create ultramodern migrate-strict-effect\` first.`);
55
- const config = readUltramodernConfig(workspaceRoot);
56
- const scope = config.workspace.packageScope;
57
- const workspaceApps = workspaceAppsFromToolingConfig(config);
53
+ const workspace = readUltramodernWorkspaceInputs(workspaceRoot);
54
+ const scope = workspace.config.workspace.packageScope;
55
+ const packageVersions = new Map();
56
+ const workspaceApps = workspace.apps.map((app)=>{
57
+ const manifestPath = node_path.join(workspaceRoot, app.directory, 'package.json');
58
+ const manifest = JSON.parse(node_fs.readFileSync(manifestPath, 'utf-8'));
59
+ if ('string' != typeof manifest.version || !manifest.version) throw new Error(`${manifestPath} requires a package version for delivery-unit sync.`);
60
+ packageVersions.set(app.id, manifest.version);
61
+ return {
62
+ ...app,
63
+ deliveryUnit: {
64
+ ...app.deliveryUnit,
65
+ version: manifest.version,
66
+ buildMarker: createBuildMarker(scope, app, manifest.version)
67
+ }
68
+ };
69
+ });
58
70
  const written = [];
59
71
  const unchanged = [];
60
72
  const track = (relativePath, changed)=>{
@@ -64,24 +76,22 @@ nothing.
64
76
  app.id,
65
77
  app
66
78
  ]));
67
- const compact = JSON.parse(node_fs.readFileSync(compactPath, 'utf-8'));
68
- if (isPlainObject(compact) && Array.isArray(compact.topology?.apps)) for (const entry of compact.topology.apps){
69
- if (!isPlainObject(entry)) continue;
70
- const app = appById.get(String(entry.id));
71
- if (app) stampDeliveryUnitIdentity(entry, scope, app);
72
- }
73
- track(ULTRAMODERN_CONFIG_PATH, writeJsonIfChanged(compactPath, compact));
74
79
  const topologyPath = node_path.join(workspaceRoot, REFERENCE_TOPOLOGY_PATH);
75
80
  if (node_fs.existsSync(topologyPath)) {
76
81
  const topology = JSON.parse(node_fs.readFileSync(topologyPath, 'utf-8'));
77
82
  if (isPlainObject(topology) && Array.isArray(topology.verticals)) for (const entry of topology.verticals){
78
83
  if (!isPlainObject(entry)) continue;
79
84
  const app = appById.get(String(entry.id));
80
- if (app) stampDeliveryUnitIdentity(entry, scope, app);
85
+ if (app) stampDeliveryUnitIdentity(entry, scope, app, packageVersions.get(app.id));
86
+ }
87
+ if (isPlainObject(topology) && Array.isArray(topology.shells)) for (const entry of topology.shells){
88
+ if (!isPlainObject(entry)) continue;
89
+ const app = appById.get(String(entry.id));
90
+ if (app) stampDeliveryUnitIdentity(entry, scope, app, packageVersions.get(app.id));
81
91
  }
82
92
  if (isPlainObject(topology) && isPlainObject(topology.shell)) {
83
93
  const shell = appById.get(String(topology.shell.id));
84
- if (shell) stampDeliveryUnitIdentity(topology.shell, scope, shell);
94
+ if (shell) stampDeliveryUnitIdentity(topology.shell, scope, shell, packageVersions.get(shell.id));
85
95
  }
86
96
  track(REFERENCE_TOPOLOGY_PATH, writeJsonIfChanged(topologyPath, topology));
87
97
  }
@@ -1,22 +1,28 @@
1
1
  import "node:module";
2
2
  import node_crypto from "node:crypto";
3
- import { DELIVERY_UNIT_DEPLOY_PROFILE, DELIVERY_UNIT_KIND, DELIVERY_UNIT_SCHEMA_VERSION, deliveryUnitContractBlock } from "@modern-js/utils/universal";
3
+ import { DELIVERY_UNIT_DEPLOY_PROFILE, DELIVERY_UNIT_KIND, DELIVERY_UNIT_SCHEMA_VERSION, deliveryUnitContractBlock } from "@modern-js/backend-federation-contracts";
4
4
  import { packageName } from "./naming.js";
5
5
  const deliveryUnitGenerationSeed = 'ultramodern-delivery-unit-build-marker:v1';
6
- function createBuildMarker(scope, app) {
7
- return node_crypto.createHash('sha256').update(`${deliveryUnitGenerationSeed}:${scope}:${app.packageSuffix}:${app.id}:0.1.0`).digest('hex').slice(0, 16);
6
+ function createBuildMarker(scope, app, version = '0.1.0') {
7
+ return node_crypto.createHash('sha256').update(`${deliveryUnitGenerationSeed}:${scope}:${app.packageSuffix}:${app.id}:${version}`).digest('hex').slice(0, 16);
8
8
  }
9
- function createDeliveryUnitRecord(scope, app) {
9
+ function createDeliveryUnitRecord(scope, app, version) {
10
+ const resolvedVersion = version ?? '0.1.0';
10
11
  return {
11
12
  appId: app.id,
12
- buildMarker: createBuildMarker(scope, app),
13
+ buildMarker: createBuildMarker(scope, app, resolvedVersion),
13
14
  deployProfile: DELIVERY_UNIT_DEPLOY_PROFILE,
14
15
  kind: DELIVERY_UNIT_KIND,
15
16
  packageName: packageName(scope, app.packageSuffix),
16
17
  schemaVersion: DELIVERY_UNIT_SCHEMA_VERSION,
17
18
  sourceRevision: 'workspace',
18
19
  unitId: `${scope}/${app.domain ?? app.id}`,
19
- version: '0.1.0'
20
+ version: resolvedVersion,
21
+ ...app.deliveryUnit,
22
+ ...void 0 === version ? {} : {
23
+ version,
24
+ buildMarker: createBuildMarker(scope, app, version)
25
+ }
20
26
  };
21
27
  }
22
28
  export { createBuildMarker, createDeliveryUnitRecord, deliveryUnitContractBlock };