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