@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
@@ -42,55 +42,52 @@ __webpack_require__.d(__webpack_exports__, {
42
42
  });
43
43
  const external_node_fs_namespaceObject = require("node:fs");
44
44
  var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
45
- const external_node_os_namespaceObject = require("node:os");
46
- var external_node_os_default = /*#__PURE__*/ __webpack_require__.n(external_node_os_namespaceObject);
47
45
  const external_node_path_namespaceObject = require("node:path");
48
46
  var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
47
+ const config_cjs_namespaceObject = require("../ultramodern-tooling/config.cjs");
49
48
  const constants_cjs_namespaceObject = require("./add-vertical/constants.cjs");
50
49
  const preflight_cjs_namespaceObject = require("./add-vertical/preflight.cjs");
50
+ const preview_cjs_namespaceObject = require("./add-vertical/preview.cjs");
51
+ const shell_files_cjs_namespaceObject = require("./add-vertical/shell-files.cjs");
51
52
  const topology_cjs_namespaceObject = require("./add-vertical/topology.cjs");
52
53
  const transaction_cjs_namespaceObject = require("./add-vertical/transaction.cjs");
53
54
  const workspace_state_cjs_namespaceObject = require("./add-vertical/workspace-state.cjs");
54
55
  const external_descriptors_cjs_namespaceObject = require("./descriptors.cjs");
55
56
  const external_fs_io_cjs_namespaceObject = require("./fs-io.cjs");
56
57
  const external_generation_result_cjs_namespaceObject = require("./generation-result.cjs");
58
+ const external_module_federation_cjs_namespaceObject = require("./module-federation.cjs");
57
59
  const external_naming_cjs_namespaceObject = require("./naming.cjs");
58
- const external_package_json_cjs_namespaceObject = require("./package-json.cjs");
60
+ const external_policy_cjs_namespaceObject = require("./policy.cjs");
59
61
  const external_shells_cjs_namespaceObject = require("./shells.cjs");
60
62
  const external_tsconfigs_cjs_namespaceObject = require("./tsconfigs.cjs");
61
- const external_types_cjs_namespaceObject = require("./types.cjs");
63
+ const external_workspace_artifact_ownership_cjs_namespaceObject = require("./workspace-artifact-ownership.cjs");
62
64
  const external_workspace_scripts_cjs_namespaceObject = require("./workspace-scripts.cjs");
63
65
  const external_write_app_cjs_namespaceObject = require("./write-app.cjs");
64
66
  const external_zerops_cjs_namespaceObject = require("./zerops.cjs");
65
- function readRequiredJsonObject(filePath) {
66
- if (!external_node_fs_default().existsSync(filePath)) throw new Error(`Missing UltraModern workspace file: ${filePath}`);
67
- const value = (0, external_fs_io_cjs_namespaceObject.readJsonFile)(filePath);
68
- if (!(0, external_types_cjs_namespaceObject.isRecord)(value)) throw new Error(`UltraModern workspace file must contain a JSON object: ${filePath}`);
69
- return value;
70
- }
71
67
  function prepareAddUltramodernShell(options) {
72
68
  const name = (0, external_shells_cjs_namespaceObject.assertValidShellName)(options.name);
73
- const configPath = external_node_path_default().join(options.workspaceRoot, external_descriptors_cjs_namespaceObject.ULTRAMODERN_CONFIG_PATH);
74
69
  const overlayPath = external_node_path_default().join(options.workspaceRoot, constants_cjs_namespaceObject.DEVELOPMENT_OVERLAY_PATH);
75
70
  const topologyPath = external_node_path_default().join(options.workspaceRoot, constants_cjs_namespaceObject.TOPOLOGY_PATH);
76
- const rootPackage = readRequiredJsonObject(external_node_path_default().join(options.workspaceRoot, 'package.json'));
77
- const config = readRequiredJsonObject(configPath);
78
- const overlay = readRequiredJsonObject(overlayPath);
79
- const topology = readRequiredJsonObject(topologyPath);
71
+ const ownershipPath = external_node_path_default().join(options.workspaceRoot, constants_cjs_namespaceObject.OWNERSHIP_PATH);
72
+ const rootPackage = (0, preflight_cjs_namespaceObject.readRequiredJsonObject)(external_node_path_default().join(options.workspaceRoot, 'package.json'));
73
+ const overlay = (0, preflight_cjs_namespaceObject.readRequiredJsonObject)(overlayPath);
74
+ const topology = (0, preflight_cjs_namespaceObject.readRequiredJsonObject)(topologyPath);
75
+ const ownership = (0, preflight_cjs_namespaceObject.readRequiredJsonObject)(ownershipPath);
80
76
  overlay.ports ??= {};
81
77
  const scope = (0, external_naming_cjs_namespaceObject.toPackageScope)(String(rootPackage.name ?? external_node_path_default().basename(options.workspaceRoot)));
82
- const packageSource = (0, workspace_state_cjs_namespaceObject.existingPackageSource)(options.workspaceRoot, options.modernVersion, options.packageSource);
83
- const enableTailwind = options.enableTailwind ?? (0, workspace_state_cjs_namespaceObject.existingTailwindEnabled)(options.workspaceRoot);
84
- const bridge = (0, workspace_state_cjs_namespaceObject.existingBridgeConfig)(options.workspaceRoot);
85
- const existingVerticals = (0, topology_cjs_namespaceObject.verticalsFromTopology)(topology, overlay.ports);
86
- const existingAdditionalShells = (0, external_shells_cjs_namespaceObject.resolveConfiguredAdditionalShells)(config);
78
+ const workspace = (0, config_cjs_namespaceObject.normalizeWorkspaceInputs)(options.workspaceRoot, {
79
+ topology,
80
+ overlay
81
+ });
82
+ const { packageSource, enableTailwind, bridge } = (0, workspace_state_cjs_namespaceObject.workspaceOperationSettings)(options, workspace.config);
83
+ const { primaryShell: resolvedPrimaryShell, verticals: existingVerticals, additionalShells: existingAdditionalShells } = workspace;
84
+ const primaryShell = resolvedPrimaryShell;
87
85
  const shellId = `shell-${name}`;
88
86
  if (shellId === external_shells_cjs_namespaceObject.PRIMARY_SHELL_ID || existingAdditionalShells.some((existing)=>existing.id === shellId)) throw new Error(`Shell "${shellId}" already exists in this workspace.`);
89
87
  if (external_node_fs_default().existsSync(external_node_path_default().join(options.workspaceRoot, `apps/${shellId}`))) throw new Error(`Refusing to overwrite existing path: apps/${shellId}`);
90
- const overlayPorts = overlay.ports ?? {};
91
88
  const portsWithPrimary = {
92
- ...overlayPorts,
93
- [external_descriptors_cjs_namespaceObject.shellApp.id]: 'number' == typeof overlayPorts[external_descriptors_cjs_namespaceObject.shellApp.id] ? overlayPorts[external_descriptors_cjs_namespaceObject.shellApp.id] : external_descriptors_cjs_namespaceObject.shellApp.port
89
+ ...overlay.ports,
90
+ [primaryShell.id]: primaryShell.port
94
91
  };
95
92
  (0, workspace_state_cjs_namespaceObject.assertGlobalPortUniqueness)(portsWithPrimary, existingAdditionalShells);
96
93
  const shell = (0, external_shells_cjs_namespaceObject.createShellDescriptor)(name, (0, workspace_state_cjs_namespaceObject.nextAvailablePort)(portsWithPrimary, existingAdditionalShells, external_shells_cjs_namespaceObject.FIRST_ADDITIONAL_SHELL_PORT));
@@ -116,17 +113,20 @@ function prepareAddUltramodernShell(options) {
116
113
  ]);
117
114
  return {
118
115
  scope,
119
- configPath,
116
+ topologyPath,
117
+ ownershipPath,
120
118
  overlayPath,
121
- config,
119
+ config: workspace.config,
120
+ topology,
121
+ ownership,
122
122
  overlay,
123
123
  packageSource,
124
124
  enableTailwind,
125
125
  bridge,
126
+ primaryShell,
126
127
  existingVerticals,
127
128
  existingAdditionalShells,
128
- shell,
129
- composedVerticals
129
+ shell
130
130
  };
131
131
  }
132
132
  function addUltramodernShell(options) {
@@ -138,43 +138,74 @@ function addUltramodernShell(options) {
138
138
  function executeAddUltramodernShell(options, logicalWorkspaceRoot = options.workspaceRoot) {
139
139
  const beforeFiles = (0, external_generation_result_cjs_namespaceObject.createFileSnapshot)(options.workspaceRoot);
140
140
  const preflight = prepareAddUltramodernShell(options);
141
- const { scope, configPath, config, packageSource, enableTailwind, bridge, existingVerticals, existingAdditionalShells, shell, composedVerticals } = preflight;
142
- const configuredPrimary = (0, preflight_cjs_namespaceObject.createPrimaryShellDescriptor)({}, config);
143
- const primaryRefsConfigured = Array.isArray(config.topology?.apps?.find((app)=>app?.id === external_descriptors_cjs_namespaceObject.shellApp.id)?.moduleFederation?.verticalRefs);
144
- const primaryShell = {
145
- ...configuredPrimary,
146
- verticalRefs: primaryRefsConfigured ? configuredPrimary.verticalRefs : existingVerticals.filter(external_descriptors_cjs_namespaceObject.appEmitsBrowserUi).map((v)=>v.id)
147
- };
141
+ const { scope, topologyPath, ownershipPath, topology, ownership, config, packageSource, enableTailwind, bridge, primaryShell, existingVerticals, existingAdditionalShells, shell } = preflight;
148
142
  const allAdditionalShells = [
149
143
  ...existingAdditionalShells,
150
144
  shell
151
145
  ];
152
- const configuredDevPorts = (0, workspace_state_cjs_namespaceObject.configuredDevelopmentPorts)({
153
- ...preflight.overlay.ports,
154
- [shell.id]: shell.port
155
- }, allAdditionalShells).toSorted((left, right)=>left - right);
156
- (0, external_write_app_cjs_namespaceObject.writeApp)(options.workspaceRoot, scope, shell, packageSource, enableTailwind, composedVerticals, bridge, configuredDevPorts);
157
- const shellsCollection = Array.isArray(config.shells) ? config.shells.filter((entry)=>entry?.id !== shell.id) : [];
158
- shellsCollection.push((0, external_shells_cjs_namespaceObject.createAdditionalShellConfigEntry)(scope, shell, existingVerticals));
159
- config.shells = shellsCollection;
160
- (0, external_fs_io_cjs_namespaceObject.writeJsonFile)(configPath, config);
161
- for (const app of [
146
+ const configuredDevPorts = (0, external_workspace_artifact_ownership_cjs_namespaceObject.workspaceDevelopmentPorts)([
147
+ primaryShell,
148
+ ...existingVerticals,
149
+ ...allAdditionalShells
150
+ ], preflight.overlay.ports);
151
+ const previousApps = [
162
152
  primaryShell,
163
153
  ...existingVerticals,
164
154
  ...existingAdditionalShells
165
- ])(0, external_write_app_cjs_namespaceObject.rewriteAppModernConfig)(options.workspaceRoot, scope, app, existingVerticals, enableTailwind, configuredDevPorts);
166
- const rootPackagePath = external_node_path_default().join(options.workspaceRoot, 'package.json');
167
- const rootPackage = (0, external_fs_io_cjs_namespaceObject.readJsonFile)(rootPackagePath);
168
- const generatedRootPackage = (0, external_package_json_cjs_namespaceObject.createRootPackageJson)(scope, packageSource, existingVerticals, bridge, allAdditionalShells);
169
- rootPackage.scripts = generatedRootPackage.scripts;
170
- (0, external_fs_io_cjs_namespaceObject.writeJsonFile)(rootPackagePath, rootPackage);
171
- (0, external_fs_io_cjs_namespaceObject.writeJsonFile)(external_node_path_default().join(options.workspaceRoot, 'tsconfig.json'), (0, external_tsconfigs_cjs_namespaceObject.createRootTsConfig)([
155
+ ];
156
+ const { io: ownedIo } = (0, external_workspace_artifact_ownership_cjs_namespaceObject.preserveConsumerWorkspaceArtifacts)(options.workspaceRoot, (0, external_workspace_artifact_ownership_cjs_namespaceObject.workspaceArtifactCandidates)(scope, previousApps, enableTailwind, previousApps));
157
+ (0, external_write_app_cjs_namespaceObject.writeApp)(options.workspaceRoot, scope, shell, packageSource, enableTailwind, existingVerticals, bridge, configuredDevPorts);
158
+ topology.shells ??= [];
159
+ topology.shells.push({
160
+ id: shell.id,
161
+ kind: 'shell',
162
+ package: (0, external_naming_cjs_namespaceObject.packageName)(scope, shell.packageSuffix),
163
+ path: shell.directory,
164
+ displayName: shell.displayName,
165
+ portEnv: shell.portEnv,
166
+ verticalRefs: shell.verticalRefs,
167
+ moduleFederation: {
168
+ role: 'host',
169
+ name: shell.mfName,
170
+ verticalRefs: shell.verticalRefs,
171
+ remotes: (0, external_descriptors_cjs_namespaceObject.resolveRemoteRefs)(shell, existingVerticals).map((remote)=>({
172
+ id: remote.id,
173
+ name: remote.mfName,
174
+ manifestUrl: `http://localhost:${remote.port}/mf-manifest.json`
175
+ })),
176
+ ssr: true,
177
+ sharedContractVersion: 'mf-ssr-contract-v1'
178
+ },
179
+ deliveryUnit: (0, external_shells_cjs_namespaceObject.shellDeliveryUnitBlock)(scope, shell),
180
+ cloudflare: (0, external_policy_cjs_namespaceObject.createCloudflareDeployContract)(scope, shell),
181
+ ownership: shell.ownership
182
+ });
183
+ (0, external_fs_io_cjs_namespaceObject.writeJsonFile)(topologyPath, topology);
184
+ ownership.owners ??= [];
185
+ ownership.owners.push((0, topology_cjs_namespaceObject.ownershipEntry)(scope, shell));
186
+ (0, external_fs_io_cjs_namespaceObject.writeJsonFile)(ownershipPath, ownership);
187
+ preflight.overlay.ports[shell.id] = shell.port;
188
+ (0, external_fs_io_cjs_namespaceObject.writeJsonFile)(preflight.overlayPath, preflight.overlay);
189
+ const newPackagePath = external_node_path_default().join(options.workspaceRoot, shell.directory, 'package.json');
190
+ const newPackage = (0, preflight_cjs_namespaceObject.readRequiredJsonObject)(newPackagePath);
191
+ newPackage.dependencies = {
192
+ ...newPackage.dependencies,
193
+ ...config.inheritedWorkspaceDependencies
194
+ };
195
+ (0, external_fs_io_cjs_namespaceObject.writeJsonFile)(newPackagePath, newPackage);
196
+ for (const app of previousApps)ownedIo.write(external_node_path_default().join(options.workspaceRoot, app.directory, 'modern.config.ts'), (0, external_module_federation_cjs_namespaceObject.createAppModernConfig)(scope, app, 'shell' === app.kind ? (0, external_descriptors_cjs_namespaceObject.resolveRemoteRefs)(app, existingVerticals) : existingVerticals, enableTailwind, configuredDevPorts));
197
+ (0, shell_files_cjs_namespaceObject.updateRootWorkspaceScripts)(options.workspaceRoot, scope, packageSource, existingVerticals, bridge, allAdditionalShells, existingVerticals, primaryShell, existingAdditionalShells);
198
+ ownedIo.write(external_node_path_default().join(options.workspaceRoot, 'tsconfig.json'), `${JSON.stringify((0, external_tsconfigs_cjs_namespaceObject.createRootTsConfig)([
172
199
  primaryShell,
173
200
  ...existingVerticals,
174
201
  ...allAdditionalShells
175
- ]));
176
- (0, external_workspace_scripts_cjs_namespaceObject.writeGeneratedWorkspaceScripts)(options.workspaceRoot, scope, enableTailwind, existingVerticals, void 0, allAdditionalShells, primaryShell);
177
- (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(options.workspaceRoot, 'zerops.yaml', `${(0, external_zerops_cjs_namespaceObject.createZeropsYaml)(scope, [
202
+ ]), null, 2)}\n`);
203
+ (0, external_workspace_scripts_cjs_namespaceObject.writeGeneratedWorkspaceScripts)(options.workspaceRoot, {
204
+ io: {
205
+ writeGenerated: ownedIo.write
206
+ }
207
+ });
208
+ ownedIo.write(external_node_path_default().join(options.workspaceRoot, 'zerops.yaml'), `${(0, external_zerops_cjs_namespaceObject.createZeropsYaml)(scope, [
178
209
  primaryShell,
179
210
  ...existingVerticals,
180
211
  ...allAdditionalShells
@@ -200,71 +231,40 @@ function executeAddUltramodernShell(options, logicalWorkspaceRoot = options.work
200
231
  });
201
232
  }
202
233
  function planUltramodernShell(options) {
203
- prepareAddUltramodernShell(options);
204
- const tempRoot = external_node_fs_default().mkdtempSync(external_node_path_default().join(external_node_os_default().tmpdir(), 'um-shell-plan-'));
205
- const copiedWorkspaceRoot = external_node_path_default().join(tempRoot, 'workspace');
206
- const skippedDirectories = new Set([
207
- '.git',
208
- '.nx',
209
- '.output',
210
- 'coverage',
211
- 'dist',
212
- 'node_modules'
213
- ]);
214
- try {
215
- external_node_fs_default().cpSync(options.workspaceRoot, copiedWorkspaceRoot, {
216
- recursive: true,
217
- filter: (sourcePath)=>!skippedDirectories.has(external_node_path_default().basename(sourcePath))
218
- });
219
- const plannedResult = addUltramodernShell({
234
+ const preflight = prepareAddUltramodernShell(options);
235
+ let jsonMutations = [];
236
+ const plannedResult = (0, transaction_cjs_namespaceObject.runWorkspaceTransaction)(options.workspaceRoot, (stagingRoot)=>executeAddUltramodernShell({
220
237
  ...options,
221
- workspaceRoot: copiedWorkspaceRoot
222
- });
223
- const shell = plannedResult.createdApps[0];
224
- return {
225
- ...plannedResult,
226
- workspaceRoot: options.workspaceRoot,
227
- dryRun: true,
228
- selectedPort: shell?.port ?? 0,
229
- moduleFederationRemote: {
230
- id: shell?.id ?? '',
231
- name: shell?.moduleFederationName ?? '',
232
- manifestUrl: `http://localhost:${shell?.port ?? 0}/mf-manifest.json`
233
- },
234
- jsonMutations: [
235
- {
236
- path: external_descriptors_cjs_namespaceObject.ULTRAMODERN_CONFIG_PATH,
237
- pointer: '/shells/-',
238
- description: `Register additional shell ${shell?.id}`
239
- },
240
- {
241
- path: 'package.json',
242
- pointer: "/scripts",
243
- description: "Enumerate all configured shells in workspace scripts"
244
- },
245
- {
246
- path: 'tsconfig.json',
247
- pointer: '/references',
248
- description: `Add ${shell?.id} to the root TS-Go build graph`
249
- }
250
- ],
251
- shellDependencyChanges: [],
252
- generatedContractChanges: [
253
- {
254
- path: external_descriptors_cjs_namespaceObject.ULTRAMODERN_CONFIG_PATH,
255
- addedAppIds: [
256
- shell?.id ?? ''
257
- ],
258
- shellVerticalRefs: options.verticals ?? []
259
- }
260
- ]
261
- };
262
- } finally{
263
- external_node_fs_default().rmSync(tempRoot, {
264
- recursive: true,
265
- force: true
266
- });
267
- }
238
+ workspaceRoot: stagingRoot
239
+ }, options.workspaceRoot), {
240
+ mode: 'preview',
241
+ inspectChanges: (changes)=>{
242
+ jsonMutations = (0, preview_cjs_namespaceObject.describeJsonChanges)(changes);
243
+ }
244
+ });
245
+ const shell = plannedResult.createdApps[0];
246
+ return {
247
+ ...plannedResult,
248
+ workspaceRoot: options.workspaceRoot,
249
+ dryRun: true,
250
+ selectedPort: shell?.port ?? 0,
251
+ moduleFederationRemote: {
252
+ id: shell?.id ?? '',
253
+ name: shell?.moduleFederationName ?? '',
254
+ manifestUrl: `http://localhost:${shell?.port ?? 0}/mf-manifest.json`
255
+ },
256
+ jsonMutations,
257
+ shellDependencyChanges: [],
258
+ generatedContractChanges: [
259
+ {
260
+ path: 'topology/reference-topology.json',
261
+ addedAppIds: [
262
+ shell?.id ?? ''
263
+ ],
264
+ shellVerticalRefs: preflight.shell.verticalRefs ?? []
265
+ }
266
+ ]
267
+ };
268
268
  }
269
269
  exports.addUltramodernShell = __webpack_exports__.addUltramodernShell;
270
270
  exports.planUltramodernShell = __webpack_exports__.planUltramodernShell;
@@ -37,27 +37,32 @@ var __webpack_require__ = {};
37
37
  var __webpack_exports__ = {};
38
38
  __webpack_require__.r(__webpack_exports__);
39
39
  __webpack_require__.d(__webpack_exports__, {
40
- addUltramodernVertical: ()=>addUltramodernVertical
40
+ addUltramodernVertical: ()=>addUltramodernVertical,
41
+ executeAddUltramodernVertical: ()=>executeAddUltramodernVertical
41
42
  });
43
+ const external_node_fs_namespaceObject = require("node:fs");
44
+ var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
42
45
  const external_node_path_namespaceObject = require("node:path");
43
46
  var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
47
+ const config_cjs_namespaceObject = require("../../ultramodern-tooling/config.cjs");
44
48
  const rpc_cjs_namespaceObject = require("../api/rpc.cjs");
45
49
  const external_backend_federation_cjs_namespaceObject = require("../backend-federation.cjs");
50
+ const external_contracts_cjs_namespaceObject = require("../contracts.cjs");
46
51
  const external_delivery_unit_cjs_namespaceObject = require("../delivery-unit.cjs");
47
52
  const external_descriptors_cjs_namespaceObject = require("../descriptors.cjs");
48
53
  const external_fs_io_cjs_namespaceObject = require("../fs-io.cjs");
49
54
  const external_generation_result_cjs_namespaceObject = require("../generation-result.cjs");
55
+ const external_module_federation_cjs_namespaceObject = require("../module-federation.cjs");
50
56
  const external_overlays_cjs_namespaceObject = require("../overlays.cjs");
51
57
  const external_package_json_cjs_namespaceObject = require("../package-json.cjs");
58
+ const external_workspace_artifact_ownership_cjs_namespaceObject = require("../workspace-artifact-ownership.cjs");
52
59
  const external_workspace_scripts_cjs_namespaceObject = require("../workspace-scripts.cjs");
53
- const external_write_app_cjs_namespaceObject = require("../write-app.cjs");
54
60
  const external_write_workspace_cjs_namespaceObject = require("../write-workspace.cjs");
55
61
  const external_zerops_cjs_namespaceObject = require("../zerops.cjs");
56
62
  const external_preflight_cjs_namespaceObject = require("./preflight.cjs");
57
63
  const external_shell_files_cjs_namespaceObject = require("./shell-files.cjs");
58
64
  const external_topology_cjs_namespaceObject = require("./topology.cjs");
59
65
  const external_transaction_cjs_namespaceObject = require("./transaction.cjs");
60
- const external_workspace_state_cjs_namespaceObject = require("./workspace-state.cjs");
61
66
  function addUltramodernVertical(options) {
62
67
  return (0, external_transaction_cjs_namespaceObject.runWorkspaceTransaction)(options.workspaceRoot, (stagingRoot)=>executeAddUltramodernVertical({
63
68
  ...options,
@@ -66,7 +71,24 @@ function addUltramodernVertical(options) {
66
71
  }
67
72
  function executeAddUltramodernVertical(options, logicalWorkspaceRoot = options.workspaceRoot) {
68
73
  const beforeFiles = (0, external_generation_result_cjs_namespaceObject.createFileSnapshot)(options.workspaceRoot);
69
- const { scope, topologyPath, ownershipPath, overlayPath, topology, ownership, overlay, packageSource, enableTailwind, bridge, primaryShell, additionalShells, targetShell, targetVerticals, vertical, updatedVerticals } = (0, external_preflight_cjs_namespaceObject.prepareAddUltramodernVertical)(options);
74
+ const { scope, config, topologyPath, ownershipPath, overlayPath, topology, ownership, overlay, packageSource, enableTailwind, bridge, primaryShell, additionalShells, targetShell, targetVerticals, vertical, updatedVerticals } = (0, external_preflight_cjs_namespaceObject.prepareAddUltramodernVertical)(options);
75
+ const previousTailwind = config.features?.tailwind !== false;
76
+ const existingVerticals = updatedVerticals.filter((app)=>app.id !== vertical.id);
77
+ const existingIds = new Set(existingVerticals.map((app)=>app.id));
78
+ const previousProjection = (apps)=>apps.map((app)=>app.id === targetShell.id ? {
79
+ ...app,
80
+ verticalRefs: app.verticalRefs?.filter((id)=>existingIds.has(id))
81
+ } : app);
82
+ const previousApps = (0, config_cjs_namespaceObject.normalizeWorkspaceInputs)(options.workspaceRoot, {
83
+ topology,
84
+ overlay
85
+ }).apps;
86
+ const previousDevPorts = (0, external_workspace_artifact_ownership_cjs_namespaceObject.workspaceDevelopmentPorts)(previousApps);
87
+ const { io: ownedIo } = (0, external_workspace_artifact_ownership_cjs_namespaceObject.preserveConsumerWorkspaceArtifacts)(options.workspaceRoot, (0, external_workspace_artifact_ownership_cjs_namespaceObject.workspaceArtifactCandidates)(scope, previousProjection(previousApps), previousTailwind, previousProjection([
88
+ primaryShell,
89
+ ...existingVerticals,
90
+ ...additionalShells
91
+ ])));
70
92
  const nextTargetShell = {
71
93
  ...targetShell,
72
94
  verticalRefs: targetVerticals.filter(external_descriptors_cjs_namespaceObject.appEmitsBrowserUi).map((remote)=>remote.id)
@@ -76,27 +98,56 @@ function executeAddUltramodernVertical(options, logicalWorkspaceRoot = options.w
76
98
  verticalRefs: nextTargetShell.verticalRefs
77
99
  } : primaryShell;
78
100
  const nextAdditionalShells = additionalShells.map((shell)=>shell.id === nextTargetShell.id ? nextTargetShell : shell);
79
- const configuredDevPorts = nextAdditionalShells.length > 0 ? (0, external_workspace_state_cjs_namespaceObject.configuredDevelopmentPorts)({
80
- ...overlay.ports,
81
- [primaryShell.id]: primaryShell.port,
82
- [vertical.id]: vertical.port
83
- }, nextAdditionalShells).toSorted((left, right)=>left - right) : void 0;
101
+ const configuredDevPorts = (0, external_workspace_artifact_ownership_cjs_namespaceObject.workspaceDevelopmentPorts)([
102
+ nextPrimaryShell,
103
+ ...updatedVerticals,
104
+ ...nextAdditionalShells
105
+ ], overlay.ports);
84
106
  (0, external_write_workspace_cjs_namespaceObject.writeApp)(options.workspaceRoot, scope, vertical, packageSource, enableTailwind, updatedVerticals, bridge, configuredDevPorts);
107
+ const newPackagePath = external_node_path_default().join(options.workspaceRoot, vertical.directory, 'package.json');
108
+ const newPackage = JSON.parse(external_node_fs_default().readFileSync(newPackagePath, 'utf-8'));
109
+ newPackage.dependencies = {
110
+ ...newPackage.dependencies,
111
+ ...config.inheritedWorkspaceDependencies
112
+ };
113
+ (0, external_fs_io_cjs_namespaceObject.writeJsonFile)(newPackagePath, newPackage);
85
114
  if (targetShell.id === primaryShell.id) {
86
115
  topology.shell ??= {};
87
- topology.shell.deliveryUnit = (0, external_delivery_unit_cjs_namespaceObject.deliveryUnitContractBlock)((0, external_delivery_unit_cjs_namespaceObject.createDeliveryUnitRecord)(scope, external_descriptors_cjs_namespaceObject.shellApp));
116
+ topology.shell.deliveryUnit = {
117
+ ...(0, external_delivery_unit_cjs_namespaceObject.deliveryUnitContractBlock)((0, external_delivery_unit_cjs_namespaceObject.createDeliveryUnitRecord)(scope, primaryShell)),
118
+ ...primaryShell.deliveryUnit,
119
+ ...topology.shell.deliveryUnit
120
+ };
88
121
  topology.shell.verticalRefs = nextTargetShell.verticalRefs;
89
122
  topology.shell.moduleFederation ??= {};
90
- topology.shell.moduleFederation.remotes = (0, external_descriptors_cjs_namespaceObject.createModuleFederationRemoteContracts)(nextPrimaryShell, updatedVerticals).map((remote)=>({
123
+ topology.shell.moduleFederation.remotes = preserveAuthoredRemoteUrls(topology.shell.moduleFederation.remotes, (0, external_descriptors_cjs_namespaceObject.createModuleFederationRemoteContracts)({
124
+ ...primaryShell,
125
+ verticalRefs: primaryShell.verticalRefs?.filter((id)=>existingIds.has(id))
126
+ }, existingVerticals), (0, external_descriptors_cjs_namespaceObject.createModuleFederationRemoteContracts)(nextPrimaryShell, updatedVerticals)).map((remote)=>({
91
127
  id: remote.id,
92
128
  name: remote.name,
93
129
  manifestUrl: remote.manifestUrl
94
130
  }));
95
131
  }
96
132
  topology.verticals ??= [];
133
+ topology.verticals = topology.verticals.map((entry)=>{
134
+ const app = existingVerticals.find((app)=>app.id === entry.id);
135
+ if (!app) return entry;
136
+ const projected = (0, external_topology_cjs_namespaceObject.verticalTopologyEntry)(scope, app, updatedVerticals);
137
+ return {
138
+ ...entry,
139
+ moduleFederation: (0, config_cjs_namespaceObject.preserveUnknownProjectionFields)(entry.moduleFederation, projected.moduleFederation),
140
+ ...projected.backendFederation ? {
141
+ backendFederation: (0, config_cjs_namespaceObject.preserveUnknownProjectionFields)(entry.backendFederation, projected.backendFederation)
142
+ } : {}
143
+ };
144
+ });
97
145
  topology.verticals.push((0, external_topology_cjs_namespaceObject.verticalTopologyEntry)(scope, vertical));
98
146
  ownership.owners ??= [];
99
147
  ownership.owners.push((0, external_topology_cjs_namespaceObject.ownershipEntry)(scope, vertical));
148
+ const projectedOverlay = (0, external_contracts_cjs_namespaceObject.createDevelopmentOverlay)(scope, existingVerticals);
149
+ Object.assign(overlay, (0, config_cjs_namespaceObject.reconcileGeneratedOverlayUrls)(overlay, (0, external_contracts_cjs_namespaceObject.createDevelopmentOverlay)(scope, previousApps.filter((app)=>'shell' !== app.kind)), projectedOverlay));
150
+ overlay.serverExecution = (0, config_cjs_namespaceObject.preserveUnknownProjectionFields)(overlay.serverExecution, projectedOverlay.serverExecution);
100
151
  overlay.ports[vertical.id] = vertical.port;
101
152
  overlay.manifests ??= {};
102
153
  if ((0, external_descriptors_cjs_namespaceObject.appEmitsBrowserUi)(vertical)) overlay.manifests[vertical.id] = `http://localhost:${vertical.port}/mf-manifest.json`;
@@ -110,13 +161,20 @@ function executeAddUltramodernVertical(options, logicalWorkspaceRoot = options.w
110
161
  (0, external_fs_io_cjs_namespaceObject.writeJsonFile)(topologyPath, topology);
111
162
  (0, external_fs_io_cjs_namespaceObject.writeJsonFile)(ownershipPath, ownership);
112
163
  (0, external_fs_io_cjs_namespaceObject.writeJsonFile)(overlayPath, overlay);
113
- (0, external_fs_io_cjs_namespaceObject.writeJsonFile)(external_node_path_default().join(options.workspaceRoot, external_descriptors_cjs_namespaceObject.ULTRAMODERN_CONFIG_PATH), (0, external_write_workspace_cjs_namespaceObject.createCompactUltramodernConfig)(scope, options.modernVersion, packageSource, [
114
- {
115
- ...nextPrimaryShell
116
- },
117
- ...updatedVerticals
118
- ], enableTailwind, bridge, nextAdditionalShells, nextPrimaryShell));
119
- (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(options.workspaceRoot, 'zerops.yaml', `${(0, external_zerops_cjs_namespaceObject.createZeropsYaml)(scope, [
164
+ if (targetShell.id !== primaryShell.id) {
165
+ topology.shells = (topology.shells ?? []).map((entry)=>entry.id === nextTargetShell.id ? updateShellComposition(entry, {
166
+ verticalRefs: nextTargetShell.verticalRefs,
167
+ moduleFederation: {
168
+ verticalRefs: nextTargetShell.verticalRefs,
169
+ remotes: preserveAuthoredRemoteUrls(entry.moduleFederation?.remotes, (0, external_descriptors_cjs_namespaceObject.createModuleFederationRemoteContracts)({
170
+ ...targetShell,
171
+ verticalRefs: targetShell.verticalRefs?.filter((id)=>existingIds.has(id))
172
+ }, existingVerticals), (0, external_descriptors_cjs_namespaceObject.createModuleFederationRemoteContracts)(nextTargetShell, updatedVerticals))
173
+ }
174
+ }) : entry);
175
+ (0, external_fs_io_cjs_namespaceObject.writeJsonFile)(topologyPath, topology);
176
+ }
177
+ ownedIo.write(external_node_path_default().join(options.workspaceRoot, 'zerops.yaml'), `${(0, external_zerops_cjs_namespaceObject.createZeropsYaml)(scope, [
120
178
  nextPrimaryShell,
121
179
  ...updatedVerticals,
122
180
  ...nextAdditionalShells
@@ -124,20 +182,29 @@ function executeAddUltramodernVertical(options, logicalWorkspaceRoot = options.w
124
182
  for (const shellToRefresh of [
125
183
  nextPrimaryShell,
126
184
  ...nextAdditionalShells
127
- ])(0, external_shell_files_cjs_namespaceObject.rewriteShellAppFiles)(options.workspaceRoot, scope, packageSource, enableTailwind, updatedVerticals, bridge, shellToRefresh.id === nextTargetShell.id ? nextTargetShell : shellToRefresh, configuredDevPorts);
128
- (0, external_workspace_scripts_cjs_namespaceObject.writeGeneratedWorkspaceScripts)(options.workspaceRoot, scope, enableTailwind, updatedVerticals, void 0, nextAdditionalShells, nextPrimaryShell);
129
- (0, external_shell_files_cjs_namespaceObject.updateRootWorkspaceScripts)(options.workspaceRoot, scope, packageSource, updatedVerticals, bridge, nextAdditionalShells);
130
- (0, external_fs_io_cjs_namespaceObject.writeJsonFile)(external_node_path_default().join(options.workspaceRoot, 'tsconfig.json'), (0, external_package_json_cjs_namespaceObject.createRootTsConfig)([
185
+ ])(0, external_shell_files_cjs_namespaceObject.rewriteShellAppFiles)(options.workspaceRoot, scope, packageSource, enableTailwind, updatedVerticals, bridge, shellToRefresh.id === nextTargetShell.id ? nextTargetShell : shellToRefresh, configuredDevPorts, {
186
+ shell: previousProjection(previousApps).find((app)=>app.id === shellToRefresh.id),
187
+ remotes: existingVerticals,
188
+ devPorts: previousDevPorts,
189
+ enableTailwind: previousTailwind
190
+ });
191
+ (0, external_workspace_scripts_cjs_namespaceObject.writeGeneratedWorkspaceScripts)(options.workspaceRoot, {
192
+ io: {
193
+ writeGenerated: ownedIo.write
194
+ }
195
+ });
196
+ (0, external_shell_files_cjs_namespaceObject.updateRootWorkspaceScripts)(options.workspaceRoot, scope, packageSource, updatedVerticals, bridge, nextAdditionalShells, existingVerticals, nextPrimaryShell);
197
+ ownedIo.write(external_node_path_default().join(options.workspaceRoot, 'tsconfig.json'), `${JSON.stringify((0, external_package_json_cjs_namespaceObject.createRootTsConfig)([
131
198
  nextPrimaryShell,
132
199
  ...updatedVerticals,
133
200
  ...nextAdditionalShells
134
- ]));
201
+ ]), null, 2)}\n`);
135
202
  if (configuredDevPorts) {
136
203
  for (const app of [
137
204
  nextPrimaryShell,
138
205
  ...updatedVerticals,
139
206
  ...nextAdditionalShells
140
- ])if (app.id !== vertical.id && app.id !== nextTargetShell.id) (0, external_write_app_cjs_namespaceObject.rewriteAppModernConfig)(options.workspaceRoot, scope, app, updatedVerticals, enableTailwind, configuredDevPorts);
207
+ ])if (app.id !== vertical.id && app.id !== nextTargetShell.id) ownedIo.write(external_node_path_default().join(options.workspaceRoot, app.directory, 'modern.config.ts'), (0, external_module_federation_cjs_namespaceObject.createAppModernConfig)(scope, app, 'shell' === app.kind ? (0, external_descriptors_cjs_namespaceObject.resolveRemoteRefs)(app, updatedVerticals) : updatedVerticals, enableTailwind, configuredDevPorts));
141
208
  }
142
209
  const preliminaryAfterFiles = (0, external_generation_result_cjs_namespaceObject.createFileSnapshot)(options.workspaceRoot);
143
210
  const preliminaryDiff = (0, external_generation_result_cjs_namespaceObject.diffFileSnapshots)(beforeFiles, preliminaryAfterFiles);
@@ -177,9 +244,38 @@ function executeAddUltramodernVertical(options, logicalWorkspaceRoot = options.w
177
244
  rewrittenPaths
178
245
  });
179
246
  }
247
+ function updateShellComposition(current, generated) {
248
+ const previousRemotes = Array.isArray(current.moduleFederation?.remotes) ? current.moduleFederation.remotes : [];
249
+ return {
250
+ ...current,
251
+ ...Array.isArray(generated.verticalRefs) ? {
252
+ verticalRefs: generated.verticalRefs
253
+ } : {},
254
+ moduleFederation: {
255
+ ...current.moduleFederation,
256
+ verticalRefs: generated.moduleFederation.verticalRefs,
257
+ remotes: generated.moduleFederation.remotes.map((remote)=>({
258
+ ...previousRemotes.find((previous)=>previous.id === remote.id),
259
+ ...remote
260
+ }))
261
+ }
262
+ };
263
+ }
264
+ function preserveAuthoredRemoteUrls(current, previousGenerated, nextGenerated) {
265
+ return nextGenerated.map((remote)=>{
266
+ const previous = Array.isArray(current) ? current.find((entry)=>entry.id === remote.id) : void 0;
267
+ const generated = previousGenerated.find((entry)=>entry.id === remote.id);
268
+ return previous?.manifestUrl && previous.manifestUrl !== generated?.manifestUrl ? {
269
+ ...remote,
270
+ manifestUrl: previous.manifestUrl
271
+ } : remote;
272
+ });
273
+ }
180
274
  exports.addUltramodernVertical = __webpack_exports__.addUltramodernVertical;
275
+ exports.executeAddUltramodernVertical = __webpack_exports__.executeAddUltramodernVertical;
181
276
  for(var __rspack_i in __webpack_exports__)if (-1 === [
182
- "addUltramodernVertical"
277
+ "addUltramodernVertical",
278
+ "executeAddUltramodernVertical"
183
279
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
184
280
  Object.defineProperty(exports, '__esModule', {
185
281
  value: true