@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,386 +1,75 @@
1
- import { ULTRAMODERN_CREATE_PACKAGE } from "../ultramodern-package-source.js";
2
- import { verticalApiGroupName } from "./api.js";
3
- import { createBackendFederationMetadata } from "./backend-federation.js";
4
- import { createDevelopmentOverlay, createOwnership, createTopology, createUltramodernConfig } from "./contracts.js";
5
- import { createDeliveryUnitRecord } from "./delivery-unit.js";
6
- import { remoteComponentOutputPath } from "./demo-components.js";
7
- import { appEmitsBrowserUi, appHasApi, appI18nNamespace, createShellHost, remoteDependencyAlias, resolveApiProtocol, resolveApiStem, sharedPackages, shellApp } from "./descriptors.js";
8
- import { packageName, tailwindPrefixForApp } from "./naming.js";
9
- import { createCloudflareSecurityContract } from "./policy.js";
10
- import { publicSurfaceManagedSourceAssetPaths } from "./public-surface.js";
11
- import { createLocalisedUrlsMap, createRouteMetaFilePath, createRouteOwnedI18nPaths, createRoutePageFilePath } from "./routes.js";
12
- import { createAdditionalShellConfigEntry, shellDeliveryUnitBlock } from "./shells.js";
13
- import { resolveOwnerAttribution } from "./types.js";
14
- import { CLOUDFLARE_COMPATIBILITY_DATE, CROSS_ENV_VERSION, EFFECT_VERSION, EFFECT_VITEST_VERSION, MODULE_FEDERATION_VERSION, NODE_VERSION, PNPM_VERSION, TANSTACK_HISTORY_VERSION } from "./versions.js";
15
- import { createWorkspaceRootPackageScripts, createWorkspaceRootScriptPlan } from "./workspace-script-plan.js";
16
- const WORKSPACE_VALIDATION_CONTRACT_SCHEMA_VERSION = 2;
17
- const WORKSPACE_METADATA_SCHEMA_VERSION = 1;
18
- const WORKSPACE_VALIDATION_CONTRACT_KIND = 'modernjs.ultramodern-workspace-validation-contract';
19
- const modernPackageCohort = [
20
- ULTRAMODERN_CREATE_PACKAGE,
21
- '@modern-js/code-tools',
22
- '@modern-js/app-tools',
23
- '@modern-js/plugin-bff',
24
- '@modern-js/plugin-i18n',
25
- '@modern-js/plugin-tanstack',
26
- '@modern-js/runtime'
27
- ];
28
- const asJsonRecord = (value)=>value;
29
- function projectModuleFederationMetadata(value) {
30
- const moduleFederation = asJsonRecord(value);
31
- return {
32
- ...moduleFederation,
33
- ...Array.isArray(moduleFederation.remotes) ? {
34
- remotes: moduleFederation.remotes.map((value)=>{
35
- const remote = asJsonRecord(value);
36
- return {
37
- id: remote.id,
38
- manifestUrl: remote.manifestUrl,
39
- name: remote.name
40
- };
41
- })
42
- } : {}
43
- };
44
- }
45
- function createReferenceTopologyExpectation(scope, remotes, primaryShell) {
46
- const topology = asJsonRecord(createTopology(scope, remotes, primaryShell));
47
- const shell = asJsonRecord(topology.shell);
48
- return {
49
- ...topology,
50
- shell: {
51
- ...shell,
52
- moduleFederation: projectModuleFederationMetadata(shell.moduleFederation)
53
- },
54
- verticals: Array.isArray(topology.verticals) ? topology.verticals.map((value)=>{
55
- const vertical = asJsonRecord(value);
56
- return {
57
- ...vertical,
58
- moduleFederation: projectModuleFederationMetadata(vertical.moduleFederation)
59
- };
60
- }) : topology.verticals
61
- };
62
- }
63
- const validationEvidencePolicy = {
64
- schemaVersion: 1,
65
- required: [
66
- {
67
- id: "typescript-compiler",
68
- kind: 'compiler'
69
- },
70
- {
71
- id: 'architecture-compiler',
72
- kind: 'compiler'
73
- },
74
- {
75
- id: 'executable-modern-config',
76
- kind: 'runtime'
77
- },
78
- {
79
- id: 'executable-runtime-config',
80
- kind: 'runtime'
81
- },
82
- {
83
- id: 'executable-module-federation-config',
84
- kind: 'runtime'
85
- },
86
- {
87
- id: 'executable-build-facade',
88
- kind: 'runtime'
89
- },
90
- {
91
- id: 'structured-package-config',
92
- kind: 'structured'
93
- },
94
- {
95
- id: 'structured-deploy-config',
96
- kind: 'structured'
97
- },
98
- {
99
- id: 'public-behavior-gates',
100
- kind: 'behavior'
101
- }
102
- ]
103
- };
104
- function createStructuralShellPolicy(workspaceApps) {
105
- return {
106
- schemaVersion: 1,
107
- shells: workspaceApps.filter((app)=>'shell' === app.kind).map((app)=>({
108
- id: app.id,
109
- packageDir: app.directory,
110
- srcDir: `${app.directory}/src`
111
- })),
112
- forbiddenPathClasses: [
113
- {
114
- id: 'shell-api-surface',
115
- path: 'api',
116
- diagnostic: 'A thin Shell must not own an API surface (api/); business APIs belong to a MicroVertical.'
117
- },
118
- {
119
- id: 'shell-server-surface',
120
- path: 'server',
121
- diagnostic: 'A thin Shell must not own a server surface (server/); server capability belongs to a MicroVertical.'
122
- },
123
- {
124
- id: 'shell-backend-federation',
125
- path: 'backend-federation.config.ts',
126
- diagnostic: 'A thin Shell must not own backend-federation artifacts; backend federation belongs to a MicroVertical delivery unit.'
127
- }
128
- ]
129
- };
130
- }
131
- function createFederatedCompositionPolicy(scope, hosts, remotes) {
132
- const remotesById = new Map(remotes.map((remote)=>[
133
- remote.id,
134
- remote
135
- ]));
136
- return {
137
- schemaVersion: 1,
138
- hosts: [
139
- ...new Map(hosts.map((host)=>[
140
- host.id,
141
- host
142
- ])).values()
143
- ].filter((host)=>(host.verticalRefs?.length ?? 0) > 0).map((host)=>({
144
- id: host.id,
145
- srcDir: `${host.directory}/src`,
146
- remotes: (host.verticalRefs ?? []).map((remoteId)=>{
147
- const remote = remotesById.get(remoteId);
148
- if (void 0 === remote) throw new Error(`Unknown remote vertical reference ${remoteId} for ${host.id}.`);
149
- return {
150
- id: remote.id,
151
- directory: remote.directory,
152
- packageName: packageName(scope, remote.packageSuffix)
153
- };
154
- })
155
- }))
156
- };
157
- }
158
- function createWorkspaceValidationContract(scope, enableTailwind, remotes = [], releaseCohort, additionalShells = [], primaryShell, compactConfigOverride, ownershipOverride, developmentOverlayOverride) {
159
- const resolvedPrimaryShell = primaryShell ?? createShellHost(remotes);
160
- const workspaceApps = [
161
- resolvedPrimaryShell,
1
+ import { ULTRAMODERN_WORKSPACE_MODERN_PACKAGES } from "../ultramodern-package-source.js";
2
+ import { appEmitsBrowserUi, appHasApi, createShellHost } from "./descriptors.js";
3
+ import { packageName } from "./naming.js";
4
+ function createWorkspaceValidationContract(scope, enableTailwind, authoredSharedPackages, remotes = [], additionalShells = [], primaryShell = createShellHost(remotes)) {
5
+ if (!Array.isArray(authoredSharedPackages) || !authoredSharedPackages.every((pkg)=>pkg && 'string' == typeof pkg.id && pkg.id.length > 0 && 'string' == typeof pkg.path && pkg.path.length > 0 && 'string' == typeof pkg.package && pkg.package.length > 0)) throw new Error('Canonical shared package inventory is invalid.');
6
+ const apps = [
7
+ primaryShell,
8
+ ...additionalShells,
162
9
  ...remotes
163
10
  ];
164
- const configuredShells = [
165
- resolvedPrimaryShell,
166
- ...additionalShells
167
- ];
168
- const compactConfig = asJsonRecord(compactConfigOverride ?? createUltramodernConfig(scope, 'workspace-validation-contract', {
169
- strategy: 'workspace',
170
- modernPackageVersion: 'workspace:*'
171
- }, workspaceApps, enableTailwind, void 0, additionalShells, resolvedPrimaryShell));
172
- const fullStackVerticals = remotes.map((remote)=>({
173
- id: remote.id,
174
- domain: remote.domain,
175
- path: remote.directory,
176
- port: remote.port,
177
- mfName: remote.mfName,
178
- emitsApi: appHasApi(remote),
179
- emitsUi: appEmitsBrowserUi(remote),
180
- surfaceProfile: remote.surfaceProfile ?? 'full-stack',
181
- ...appHasApi(remote) ? {
182
- stem: remote.api.stem,
183
- group: verticalApiGroupName(remote),
184
- apiPrefix: remote.api.prefix,
185
- apiProtocol: resolveApiProtocol(remote),
186
- apiContractExport: './api',
187
- apiClientExport: 'rpc' === resolveApiProtocol(remote) ? './api/rpc-client' : './api/client',
188
- apiContractPath: 'rpc' === resolveApiProtocol(remote) ? 'shared/rpc.ts' : 'shared/api.ts',
189
- apiClientPath: `src/api/${resolveApiStem(remote)}-${'rpc' === resolveApiProtocol(remote) ? 'rpc-client' : 'client'}.ts`,
190
- backendFederation: createBackendFederationMetadata(scope, remote)
191
- } : {},
192
- tailwindPrefix: tailwindPrefixForApp(remote),
193
- zephyrAlias: remoteDependencyAlias(remote),
194
- packageName: packageName(scope, remote.packageSuffix),
195
- deliveryUnit: createDeliveryUnitRecord(scope, remote),
196
- exposes: Object.keys(remote.exposes ?? {}),
197
- componentPaths: Object.keys(remote.exposes ?? {}).map((expose)=>remoteComponentOutputPath(remote, expose)).filter((componentPath)=>Boolean(componentPath)),
198
- namespace: appI18nNamespace(remote),
199
- routePagePaths: createRouteOwnedI18nPaths(remote).filter((route)=>'/' !== route.canonicalPath).map((route)=>createRoutePageFilePath(remote, route.canonicalPath)),
200
- routeMetaPaths: createRouteOwnedI18nPaths(remote).map((route)=>createRouteMetaFilePath(remote, route.canonicalPath)),
201
- localisedUrls: createLocalisedUrlsMap(remote),
202
- verticalRefs: remote.verticalRefs ?? []
203
- }));
204
- const additionalShellRecords = additionalShells.map((shell)=>{
205
- const configEntry = createAdditionalShellConfigEntry(scope, shell, remotes);
206
- return {
207
- id: shell.id,
208
- path: shell.directory,
209
- packageName: packageName(scope, shell.packageSuffix),
210
- port: shell.port,
211
- portEnv: shell.portEnv,
212
- mfName: shell.mfName,
213
- tailwindPrefix: tailwindPrefixForApp(shell),
214
- verticalRefs: shell.verticalRefs ?? [],
215
- owner: resolveOwnerAttribution(shell.ownership),
216
- deliveryUnit: shellDeliveryUnitBlock(scope, shell),
217
- degradedState: {
218
- required: (shell.verticalRefs ?? []).length > 0,
219
- appId: shell.id,
220
- status: 'degraded'
221
- },
222
- moduleFederation: configEntry.moduleFederation
223
- };
224
- });
225
11
  return {
226
- schemaVersion: WORKSPACE_VALIDATION_CONTRACT_SCHEMA_VERSION,
227
- kind: WORKSPACE_VALIDATION_CONTRACT_KIND,
228
- metadata: {
229
- compactConfig: {
230
- path: '.modernjs/ultramodern.json',
231
- schemaVersion: WORKSPACE_METADATA_SCHEMA_VERSION
232
- },
233
- referenceTopology: {
234
- path: 'topology/reference-topology.json',
235
- schemaVersion: WORKSPACE_METADATA_SCHEMA_VERSION
236
- },
237
- ownership: {
238
- path: 'topology/ownership.json',
239
- schemaVersion: WORKSPACE_METADATA_SCHEMA_VERSION
240
- },
241
- developmentOverlay: {
242
- path: 'topology/local-overlays/development.json',
243
- schemaVersion: WORKSPACE_METADATA_SCHEMA_VERSION
244
- },
245
- ...releaseCohort ? {
246
- releaseCohort: {
247
- path: '.modernjs/release-cohort.json',
248
- schemaVersion: releaseCohort.schemaVersion
249
- }
250
- } : {}
251
- },
252
- cohort: {
253
- modernPackages: [
254
- ...modernPackageCohort
255
- ],
256
- ...releaseCohort ? {
257
- releaseCohort
258
- } : {},
259
- appIds: workspaceApps.map((app)=>app.id),
260
- ...additionalShells.length > 0 ? {
261
- additionalShellIds: additionalShells.map((app)=>app.id),
262
- additionalShellOwnerIds: additionalShells.map((app)=>app.id),
263
- additionalShellDeliveryUnitIds: additionalShells.map((app)=>app.id),
264
- additionalShellDegradedStateIds: additionalShells.map((app)=>app.id),
265
- additionalShellBuildMarkerIds: additionalShells.map((app)=>app.id)
266
- } : {},
267
- backendAppIds: fullStackVerticals.filter((app)=>app.emitsApi).map((app)=>app.id),
268
- verticalIds: remotes.map((app)=>app.id),
269
- sharedPackageIds: sharedPackages.map((sharedPackage)=>sharedPackage.id),
270
- ownerIds: [
271
- ...workspaceApps.map((app)=>app.id),
272
- ...sharedPackages.map((sharedPackage)=>sharedPackage.id)
273
- ],
274
- packageManifests: [
12
+ packageScope: scope,
13
+ tailwindEnabled: enableTailwind,
14
+ modernPackages: [
15
+ ...ULTRAMODERN_WORKSPACE_MODERN_PACKAGES
16
+ ],
17
+ apps: apps.map((app)=>({
18
+ id: app.id,
19
+ kind: app.kind,
20
+ path: app.directory,
21
+ packageName: packageName(scope, app.packageSuffix),
22
+ emitsApi: appHasApi(app),
23
+ emitsUi: appEmitsBrowserUi(app),
24
+ exposes: app.exposes ?? {},
25
+ verticalRefs: app.verticalRefs ?? []
26
+ })),
27
+ sharedPackages: authoredSharedPackages.map((pkg)=>({
28
+ id: pkg.id,
29
+ path: pkg.path,
30
+ packageName: pkg.package
31
+ })),
32
+ structuralShellPolicy: {
33
+ schemaVersion: 1,
34
+ shells: apps.filter((app)=>'shell' === app.kind).map((app)=>({
35
+ id: app.id,
36
+ packageDir: app.directory,
37
+ srcDir: `${app.directory}/src`
38
+ })),
39
+ forbiddenPathClasses: [
275
40
  {
276
- id: 'workspace-root',
277
- packageName: scope,
278
- path: 'package.json',
279
- role: 'workspace-root'
41
+ id: 'shell-api-surface',
42
+ path: 'api',
43
+ diagnostic: 'A thin Shell must not own an API surface.'
280
44
  },
281
- ...workspaceApps.map((app)=>({
282
- id: app.id,
283
- packageName: packageName(scope, app.packageSuffix),
284
- path: `${app.directory}/package.json`,
285
- role: app.kind
286
- })),
287
- ...sharedPackages.map((sharedPackage)=>({
288
- id: sharedPackage.id,
289
- packageName: packageName(scope, sharedPackage.id),
290
- path: `${sharedPackage.directory}/package.json`,
291
- role: 'shared-package'
292
- }))
293
- ],
294
- ...additionalShells.length > 0 ? {
295
- additionalShellManifests: additionalShells.map((app)=>({
296
- id: app.id,
297
- packageName: packageName(scope, app.packageSuffix),
298
- path: `${app.directory}/package.json`,
299
- role: 'shell'
300
- }))
301
- } : {}
302
- },
303
- topology: {
304
- compactConfig: compactConfig.topology,
305
- referenceTopology: createReferenceTopologyExpectation(scope, remotes, resolvedPrimaryShell),
306
- ownership: ownershipOverride ?? createOwnership(scope, remotes),
307
- developmentOverlay: developmentOverlayOverride ?? createDevelopmentOverlay(scope, remotes)
308
- },
309
- policy: {
310
- compactConfig: {
311
- schemaVersion: compactConfig.schemaVersion,
312
- profile: compactConfig.profile,
313
- workspace: compactConfig.workspace,
314
- features: compactConfig.features,
315
- deploy: compactConfig.deploy,
316
- moduleFederation: compactConfig.moduleFederation,
317
- backendFederation: compactConfig.backendFederation,
318
- agentSkills: compactConfig.agentSkills,
319
- tooling: compactConfig.tooling
320
- }
321
- },
322
- legacy: {
323
- retiredMetadataPaths: [
324
- '.modernjs/ultramodern-generated-contract.json',
325
- '.modernjs/ultramodern-package-source.json',
326
- '.modernjs/ultramodern-workspace-template-manifest.json'
327
- ],
328
- forbiddenCompactConfigFields: [
329
- 'generatedContract',
330
- 'packageCohort',
331
- 'workspaceValidationContract'
332
- ],
333
- forbiddenPackageSourceFields: [
334
- 'generatedWorkspacePackages',
335
- 'metadata',
336
- 'modernPackages'
337
- ],
338
- forbiddenTopologyFields: [
339
- 'effectServices',
340
- 'remotes'
45
+ {
46
+ id: 'shell-server-surface',
47
+ path: 'server',
48
+ diagnostic: 'A thin Shell must not own a server surface.'
49
+ },
50
+ {
51
+ id: 'shell-backend-federation',
52
+ path: 'backend-federation.config.ts',
53
+ diagnostic: 'A thin Shell must not own backend federation.'
54
+ }
341
55
  ]
342
56
  },
343
- validationEvidencePolicy: validationEvidencePolicy,
344
- packageScope: scope,
345
- node: {
346
- version: NODE_VERSION,
347
- engineRange: '>=26'
348
- },
349
- versions: {
350
- cloudflareCompatibilityDate: CLOUDFLARE_COMPATIBILITY_DATE,
351
- crossEnv: CROSS_ENV_VERSION,
352
- effect: EFFECT_VERSION,
353
- effectVitest: EFFECT_VITEST_VERSION,
354
- moduleFederation: MODULE_FEDERATION_VERSION,
355
- node: NODE_VERSION,
356
- pnpm: PNPM_VERSION,
357
- tanstackHistory: TANSTACK_HISTORY_VERSION
358
- },
359
- tailwindEnabled: enableTailwind,
360
- structuralShellPolicy: createStructuralShellPolicy(configuredShells),
361
- federatedCompositionPolicy: createFederatedCompositionPolicy(scope, [
362
- ...configuredShells,
363
- ...remotes
364
- ], remotes),
365
- ...additionalShellRecords.length > 0 ? {
366
- additionalShells: additionalShellRecords
367
- } : {},
368
- fullStackVerticals,
369
- shellNamespace: appI18nNamespace(shellApp),
370
- oldRemotePaths: [
371
- 'apps/remotes'
372
- ],
373
- scripts: createWorkspaceRootScriptPlan(remotes, {
374
- shells: configuredShells
375
- }),
376
- packageScripts: createWorkspaceRootPackageScripts(remotes, {
377
- shells: configuredShells
378
- }),
379
- cloudflareSecurity: createCloudflareSecurityContract(),
380
- publicSurfaceManagedSourceAssetPaths: [
381
- ...publicSurfaceManagedSourceAssetPaths
382
- ],
383
- shellRouteMetaPaths: createRouteOwnedI18nPaths(shellApp).map((route)=>createRouteMetaFilePath(shellApp, route.canonicalPath))
57
+ federatedCompositionPolicy: {
58
+ schemaVersion: 1,
59
+ hosts: apps.filter((app)=>(app.verticalRefs?.length ?? 0) > 0).map((app)=>({
60
+ id: app.id,
61
+ srcDir: `${app.directory}/src`,
62
+ remotes: (app.verticalRefs ?? []).map((id)=>{
63
+ const remote = remotes.find((candidate)=>candidate.id === id);
64
+ if (!remote) throw new Error(`Unknown remote vertical reference ${id} for ${app.id}.`);
65
+ return {
66
+ id,
67
+ directory: remote.directory,
68
+ packageName: packageName(scope, remote.packageSuffix)
69
+ };
70
+ })
71
+ }))
72
+ }
384
73
  };
385
74
  }
386
75
  export { createWorkspaceValidationContract };
@@ -26,6 +26,7 @@ function writeApp(targetDir, scope, app, packageSource, enableTailwind, remotes
26
26
  enableTailwind: appTailwind,
27
27
  emitsUi,
28
28
  remotes: resolvedRemotes,
29
+ availableRemotes: remotes,
29
30
  bridge,
30
31
  devPorts,
31
32
  publicWeb,
@@ -40,12 +41,12 @@ function writeApp(targetDir, scope, app, packageSource, enableTailwind, remotes
40
41
  function rewriteAppModernConfig(targetDir, scope, app, remotes, enableTailwind, devPorts) {
41
42
  writeFileReplacing(targetDir, `${app.directory}/modern.config.ts`, createAppModernConfig(scope, app, remotes, enableTailwind, devPorts));
42
43
  }
43
- function writeAppConfigFiles({ targetDir, scope, resolvedApp, packageSource, enableTailwind, emitsUi, remotes, bridge, devPorts, publicWeb }) {
44
- writeJson(targetDir, `${resolvedApp.directory}/package.json`, createAppPackage(scope, resolvedApp, packageSource, enableTailwind, remotes, bridge));
44
+ function writeAppConfigFiles({ targetDir, scope, resolvedApp, packageSource, enableTailwind, emitsUi, remotes, availableRemotes, bridge, devPorts, publicWeb }) {
45
+ writeJson(targetDir, `${resolvedApp.directory}/package.json`, createAppPackage(scope, resolvedApp, packageSource, enableTailwind, availableRemotes, bridge));
45
46
  writeJson(targetDir, `${resolvedApp.directory}/tsconfig.json`, createAppTsConfig(resolvedApp, remotes));
46
47
  writeJson(targetDir, `${resolvedApp.directory}/tsconfig.mf-types.json`, createAppMfTypesTsConfig(resolvedApp));
47
- writeFile(targetDir, `${resolvedApp.directory}/src/modern-app-env.d.ts`, createAppEnvDts(resolvedApp, remotes, scope));
48
- writeFile(targetDir, `${resolvedApp.directory}/src/ultramodern-build.ts`, createUltramodernBuildReexportModule());
48
+ if (emitsUi) writeFile(targetDir, `${resolvedApp.directory}/src/modern-app-env.d.ts`, createAppEnvDts(resolvedApp, remotes, scope));
49
+ if ('api-only' !== resolvedApp.surfaceProfile) writeFile(targetDir, `${resolvedApp.directory}/src/ultramodern-build.ts`, createUltramodernBuildReexportModule(resolvedApp));
49
50
  writeFile(targetDir, `${resolvedApp.directory}/shared/ultramodern-build.ts`, createUltramodernBuildModule(scope, resolvedApp));
50
51
  writeFile(targetDir, `${resolvedApp.directory}/shared/ultramodern-build.json`, createUltramodernBuildArtifactJson(scope, resolvedApp));
51
52
  if (emitsUi) {
@@ -54,7 +55,7 @@ function writeAppConfigFiles({ targetDir, scope, resolvedApp, packageSource, ena
54
55
  writeFile(targetDir, publicWeb.routeHeadFile.path, publicWeb.routeHeadFile.content);
55
56
  }
56
57
  writeFile(targetDir, `${resolvedApp.directory}/modern.config.ts`, createAppModernConfig(scope, resolvedApp, remotes, enableTailwind, devPorts));
57
- writeFile(targetDir, `${resolvedApp.directory}/src/modern.runtime.ts`, createAppRuntimeConfig(resolvedApp, scope, remotes));
58
+ if (emitsUi) writeFile(targetDir, `${resolvedApp.directory}/src/modern.runtime.ts`, createAppRuntimeConfig(resolvedApp, scope, remotes));
58
59
  }
59
60
  function writeAppLocaleAndStyleFiles({ targetDir, scope, resolvedApp, enableTailwind, emitsUi, remotes }) {
60
61
  writeJson(targetDir, `${resolvedApp.directory}/locales/en/translation.json`, createAppPublicLocaleMessages(resolvedApp, 'en', remotes));
@@ -68,7 +69,7 @@ function writeAppFederationConfigFiles({ targetDir, scope, resolvedApp, emitsUi,
68
69
  if (emitsUi) writeFile(targetDir, `${resolvedApp.directory}/module-federation.config.ts`, 'shell' === resolvedApp.kind ? createShellModuleFederationConfig(scope, resolvedApp, remotes) : createRemoteModuleFederationConfig(scope, resolvedApp, remotes));
69
70
  if (appHasApi(resolvedApp)) writeFile(targetDir, `${resolvedApp.directory}/backend-federation.config.ts`, createBackendModuleFederationConfig(resolvedApp));
70
71
  }
71
- function writeAppRouteAndShellFiles({ targetDir, scope, resolvedApp, emitsUi, remotes, publicWeb, writeAppFile }) {
72
+ function writeAppRouteAndShellFiles({ targetDir, scope, resolvedApp, emitsUi, remotes, availableRemotes, publicWeb, writeAppFile }) {
72
73
  if (!emitsUi) return;
73
74
  if ((resolvedApp.verticalRefs?.length ?? 0) > 0) {
74
75
  writeAppFile('src/federated-components.tsx', createFederatedComponentsRegistry(scope, resolvedApp, remotes));
@@ -82,17 +83,24 @@ function writeAppRouteAndShellFiles({ targetDir, scope, resolvedApp, emitsUi, re
82
83
  writeAppFile('src/routes/vertical-components.tsx', createShellRemoteComponents(resolvedApp, remotes.filter(appEmitsBrowserUi)));
83
84
  writeAppFile('src/routes/vertical-components.worker.tsx', createShellWorkerRemoteComponents(resolvedApp, remotes.filter(appEmitsBrowserUi)));
84
85
  writeAppFile('src/routes/shell-frame.tsx', createShellFrameComponent(resolvedApp));
85
- writeFile(targetDir, `${resolvedApp.directory}/src/api/vertical-clients.ts`, createShellApiClient(scope, remotes));
86
+ writeFile(targetDir, `${resolvedApp.directory}/src/api/vertical-clients.ts`, createShellApiClient(scope, availableRemotes));
86
87
  } else for (const expose of distributedSsrExposes(resolvedApp))writeAppFile(`src/routes/[lang]/_mf/fragment/${distributedSsrFragmentSlug(expose)}/page.tsx`, createRemoteExposeFragmentPage(resolvedApp, expose));
87
88
  }
88
89
  function writeAppApiAndRemoteExposeFiles({ targetDir, scope, resolvedApp, emitsUi, writeAppFile }) {
89
90
  if (appHasApi(resolvedApp)) {
90
91
  const rpcProtocol = 'rpc' === resolveApiProtocol(resolvedApp);
91
- rpcProtocol ? writeFile(targetDir, `${resolvedApp.directory}/shared/rpc.ts`, createRpcContractFile(resolvedApp)) : writeFile(targetDir, `${resolvedApp.directory}/shared/api.ts`, createSharedApi(resolvedApp));
92
- writeFile(targetDir, `${resolvedApp.directory}/api/index.ts`, createApiServiceEntry(resolvedApp, rpcProtocol ? '../shared/rpc.ts' : '../shared/api.ts'));
92
+ const clientDirectory = emitsUi ? 'src/api' : 'shared';
93
+ rpcProtocol ? writeFile(targetDir, `${resolvedApp.directory}/shared/rpc.ts`, createRpcContractFile(resolvedApp)) : writeFile(targetDir, `${resolvedApp.directory}/shared/api.ts`, createSharedApi(resolvedApp, {
94
+ scope
95
+ }));
96
+ writeFile(targetDir, `${resolvedApp.directory}/api/index.ts`, createApiServiceEntry(resolvedApp, rpcProtocol ? '../shared/rpc.ts' : '../shared/api.ts', {
97
+ scope
98
+ }));
93
99
  writeFile(targetDir, `${resolvedApp.directory}/api/backend-federation.ts`, createBackendFederationContractFile(resolvedApp));
94
100
  writeFile(targetDir, `${resolvedApp.directory}/api/effect-api.ts`, createBackendEffectApiExpose(scope, resolvedApp));
95
- rpcProtocol ? writeFile(targetDir, `${resolvedApp.directory}/src/api/${resolvedApp.api.stem}-rpc-client.ts`, createRpcClientFile(resolvedApp)) : writeFile(targetDir, `${resolvedApp.directory}/src/api/${resolvedApp.api.stem}-client.ts`, createApiClient(resolvedApp, '../../shared/api'));
101
+ rpcProtocol ? writeFile(targetDir, `${resolvedApp.directory}/${clientDirectory}/${resolvedApp.api.stem}-rpc-client.ts`, createRpcClientFile(resolvedApp, emitsUi ? '../../shared/rpc.ts' : './rpc.ts')) : writeFile(targetDir, `${resolvedApp.directory}/${clientDirectory}/${resolvedApp.api.stem}-client.ts`, createApiClient(resolvedApp, emitsUi ? '../../shared/api' : './api', {
102
+ scope
103
+ }));
96
104
  }
97
105
  if ('vertical' === resolvedApp.kind && emitsUi) {
98
106
  writeAppFile('src/federation-entry.tsx', createRemoteEntry(resolvedApp));