@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
@@ -37,12 +37,12 @@ var __webpack_require__ = {};
37
37
  var __webpack_exports__ = {};
38
38
  __webpack_require__.r(__webpack_exports__);
39
39
  __webpack_require__.d(__webpack_exports__, {
40
- createCompactUltramodernConfig: ()=>createCompactUltramodernConfig,
41
40
  generateUltramodernWorkspace: ()=>generateUltramodernWorkspace,
42
41
  writeApp: ()=>external_write_app_cjs_namespaceObject.writeApp
43
42
  });
44
43
  const external_node_fs_namespaceObject = require("node:fs");
45
44
  var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
45
+ const external_ultramodern_package_source_cjs_namespaceObject = require("../ultramodern-package-source.cjs");
46
46
  const external_ultramodern_release_cohort_cjs_namespaceObject = require("../ultramodern-release-cohort.cjs");
47
47
  const transaction_cjs_namespaceObject = require("./add-vertical/transaction.cjs");
48
48
  const external_app_files_cjs_namespaceObject = require("./app-files.cjs");
@@ -55,7 +55,6 @@ const external_naming_cjs_namespaceObject = require("./naming.cjs");
55
55
  const external_overlays_cjs_namespaceObject = require("./overlays.cjs");
56
56
  const external_package_json_cjs_namespaceObject = require("./package-json.cjs");
57
57
  const external_package_source_cjs_namespaceObject = require("./package-source.cjs");
58
- const external_policy_cjs_namespaceObject = require("./policy.cjs");
59
58
  const external_versions_cjs_namespaceObject = require("./versions.cjs");
60
59
  const external_workspace_scripts_cjs_namespaceObject = require("./workspace-scripts.cjs");
61
60
  const external_write_app_cjs_namespaceObject = require("./write-app.cjs");
@@ -63,9 +62,9 @@ const external_zerops_cjs_namespaceObject = require("./zerops.cjs");
63
62
  function hasExplicitInstallRequest(options) {
64
63
  return void 0 !== options.packageSource && 'workspace' !== options.packageSource.strategy;
65
64
  }
66
- function writeSharedPackages(targetDir, scope) {
65
+ function writeSharedPackages(targetDir, scope, packageSource) {
67
66
  for (const sharedPackage of external_descriptors_cjs_namespaceObject.sharedPackages){
68
- (0, external_fs_io_cjs_namespaceObject.writeJson)(targetDir, `${sharedPackage.directory}/package.json`, (0, external_package_json_cjs_namespaceObject.createSharedPackage)(scope, sharedPackage.id, sharedPackage.description));
67
+ (0, external_fs_io_cjs_namespaceObject.writeJson)(targetDir, `${sharedPackage.directory}/package.json`, (0, external_package_json_cjs_namespaceObject.createSharedPackage)(scope, sharedPackage.id, sharedPackage.description, packageSource));
69
68
  (0, external_fs_io_cjs_namespaceObject.writeJson)(targetDir, `${sharedPackage.directory}/tsconfig.json`, (0, external_package_json_cjs_namespaceObject.createSharedPackageTsConfig)(sharedPackage.directory));
70
69
  }
71
70
  (0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, 'packages/shared-contracts/src/index.ts', (0, external_package_json_cjs_namespaceObject.createSharedContractsIndex)());
@@ -79,30 +78,25 @@ function writeSharedPackages(targetDir, scope) {
79
78
  `);
80
79
  (0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, 'packages/shared-design-tokens/src/tokens.css', (0, external_app_files_cjs_namespaceObject.createSharedDesignTokensCss)());
81
80
  }
82
- function createCompactRootPackageJson(scope, packageSource, remotes, bridge) {
83
- const rootPackage = (0, external_package_json_cjs_namespaceObject.createRootPackageJson)(scope, packageSource, remotes, bridge);
84
- if (rootPackage.modernjs?.packageSource && 'object' == typeof rootPackage.modernjs.packageSource) rootPackage.modernjs.packageSource.config = `./${external_descriptors_cjs_namespaceObject.ULTRAMODERN_CONFIG_PATH}`;
85
- return rootPackage;
81
+ function renderCatalogPolicy(packageSource) {
82
+ if ('install' !== packageSource.strategy) return '';
83
+ const catalog = external_ultramodern_package_source_cjs_namespaceObject.ULTRAMODERN_WORKSPACE_MODERN_PACKAGES.map((name)=>` ${JSON.stringify(name)}: ${JSON.stringify((0, external_ultramodern_package_source_cjs_namespaceObject.modernPackageSpecifier)(name, packageSource))}`).join('\n');
84
+ const cohort = (0, external_ultramodern_release_cohort_cjs_namespaceObject.hasCreateReleaseCohort)() ? (0, external_ultramodern_release_cohort_cjs_namespaceObject.readCreateReleaseCohort)() : void 0;
85
+ const pinsShippedCohort = cohort?.packages.every((item)=>(0, external_ultramodern_package_source_cjs_namespaceObject.modernPackageSpecifier)(item.sourceName, packageSource) === `npm:${item.targetName}@${item.version}`);
86
+ const exclude = cohort && pinsShippedCohort ? `minimumReleaseAgeExclude:\n${(0, external_ultramodern_release_cohort_cjs_namespaceObject.releaseCohortSelectors)(cohort).map((selector)=>` - ${JSON.stringify(selector)}`).join('\n')}\n\n` : '';
87
+ return `catalogs:\n ultramodern:\n${catalog}\n\n${exclude}`;
86
88
  }
87
- function createCompactUltramodernConfig(scope, modernVersion, packageSource, apps = [
88
- (0, external_descriptors_cjs_namespaceObject.createShellHost)()
89
- ], enableTailwind = true, bridge, additionalShells = [], primaryShell) {
90
- const config = (0, external_contracts_cjs_namespaceObject.createUltramodernConfig)(scope, modernVersion, packageSource, apps, enableTailwind, bridge, additionalShells, primaryShell);
91
- if (config.packageSource && 'object' == typeof config.packageSource && !Array.isArray(config.packageSource)) delete config.packageSource.metadata;
92
- return config;
93
- }
94
- function writePnpmWorkspacePackages(targetDir, bridge) {
95
- if (!bridge) return;
89
+ function writePnpmWorkspacePackages(targetDir, bridge, packageSource) {
96
90
  const pnpmWorkspacePath = `${targetDir}/pnpm-workspace.yaml`;
97
91
  const pnpmWorkspace = external_node_fs_default().readFileSync(pnpmWorkspacePath, 'utf-8');
98
92
  const packages = [
99
93
  'apps/*',
100
94
  'verticals/*',
101
95
  'packages/*',
102
- ...bridge.workspacePackages.map((entry)=>entry.pattern)
96
+ ...bridge?.workspacePackages.map((entry)=>entry.pattern) ?? []
103
97
  ];
104
98
  const renderedPackages = packages.map((pattern)=>` - ${pattern}`).join('\n');
105
- (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, 'pnpm-workspace.yaml', pnpmWorkspace.replace(/^packages:\r?\n(?: {2}- .+\r?\n)+/u, `packages:\n${renderedPackages}\n`));
99
+ (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, 'pnpm-workspace.yaml', `${renderCatalogPolicy(packageSource)}${pnpmWorkspace.replace(/^packages:\r?\n(?: {2}- .+\r?\n)+/u, `packages:\n${renderedPackages}\n`)}`);
106
100
  }
107
101
  function generateUltramodernWorkspace(options) {
108
102
  const result = (0, transaction_cjs_namespaceObject.runFreshWorkspaceTransaction)(options.targetDir, (stagingRoot)=>generateUltramodernWorkspaceInPlace({
@@ -115,19 +109,15 @@ function generateUltramodernWorkspaceInPlace(options, logicalWorkspaceRoot = opt
115
109
  const beforeFiles = (0, external_generation_result_cjs_namespaceObject.createFileSnapshot)(options.targetDir);
116
110
  const scope = (0, external_naming_cjs_namespaceObject.toPackageScope)(options.packageName);
117
111
  let packageSource;
118
- let releaseCohort;
119
112
  if ((0, external_ultramodern_release_cohort_cjs_namespaceObject.isCreatePackageSourceCheckout)()) {
120
- if (hasExplicitInstallRequest(options)) throw new Error('A local @modern-js/ultramodern-create source checkout cannot satisfy an explicit install package source. Use workspace mode locally or run the packed published package with its authenticated release cohort projection.');
113
+ if (hasExplicitInstallRequest(options)) throw new Error('A local @modern-js/ultramodern-create source checkout cannot satisfy an explicit install package source. Use workspace mode locally or run the packed published package.');
121
114
  packageSource = (0, external_package_source_cjs_namespaceObject.resolvePackageSource)({
122
115
  ...options,
123
116
  packageSource: {
124
117
  strategy: 'workspace'
125
118
  }
126
119
  });
127
- } else {
128
- packageSource = (0, external_package_source_cjs_namespaceObject.resolvePackageSource)(options);
129
- if ('install' === packageSource.strategy) releaseCohort = (0, external_ultramodern_release_cohort_cjs_namespaceObject.readCreateReleaseCohort)();
130
- }
120
+ } else packageSource = (0, external_package_source_cjs_namespaceObject.resolvePackageSource)(options);
131
121
  const bridge = (0, external_bridge_config_cjs_namespaceObject.normalizeUltramodernBridgeConfig)(options.bridge);
132
122
  const enableTailwind = false !== options.enableTailwind;
133
123
  const initialVerticals = [];
@@ -142,13 +132,9 @@ function generateUltramodernWorkspaceInPlace(options, logicalWorkspaceRoot = opt
142
132
  external_node_fs_default().mkdirSync(options.targetDir, {
143
133
  recursive: true
144
134
  });
145
- const minimumReleaseAgeExclude = (0, external_policy_cjs_namespaceObject.renderMinimumReleaseAgeExclude)({
146
- packageSource,
147
- releaseCohort
148
- });
149
135
  const workspacePackageLinkingPolicy = (0, external_package_source_cjs_namespaceObject.resolveWorkspacePackageLinkingPolicy)(packageSource);
150
136
  const excludedRootTemplates = new Set([
151
- external_ultramodern_release_cohort_cjs_namespaceObject.RELEASE_COHORT_PROJECTION_PATH
137
+ "scripts/setup-agent-reference-repos.mjs"
152
138
  ]);
153
139
  if (false === options.generateAgentFiles) {
154
140
  excludedRootTemplates.add('AGENTS.md.handlebars');
@@ -159,37 +145,23 @@ function generateUltramodernWorkspaceInPlace(options, logicalWorkspaceRoot = opt
159
145
  packageScope: scope,
160
146
  nodeVersion: external_versions_cjs_namespaceObject.NODE_VERSION,
161
147
  pnpmVersion: external_versions_cjs_namespaceObject.PNPM_VERSION,
162
- nodeFetchVersion: external_versions_cjs_namespaceObject.NODE_FETCH_VERSION,
163
- drizzleOrmVersion: external_versions_cjs_namespaceObject.DRIZZLE_ORM_VERSION,
164
148
  effectVersion: external_versions_cjs_namespaceObject.EFFECT_VERSION,
165
- effectVitestVersion: external_versions_cjs_namespaceObject.EFFECT_VITEST_VERSION,
166
149
  i18nextVersion: external_versions_cjs_namespaceObject.I18NEXT_VERSION,
167
- moduleFederationVersion: external_versions_cjs_namespaceObject.MODULE_FEDERATION_VERSION,
168
- msgpackrVersion: external_versions_cjs_namespaceObject.MSGPACKR_VERSION,
169
- zodVersion: external_versions_cjs_namespaceObject.ZOD_VERSION,
170
- tanstackHistoryVersion: external_versions_cjs_namespaceObject.TANSTACK_HISTORY_VERSION,
171
- tanstackRouterCoreVersion: external_versions_cjs_namespaceObject.TANSTACK_ROUTER_CORE_VERSION,
172
- tanstackRouterVersion: external_versions_cjs_namespaceObject.TANSTACK_ROUTER_VERSION,
173
- typescriptVersion: external_versions_cjs_namespaceObject.TYPESCRIPT_VERSION,
174
- wranglerVersion: external_versions_cjs_namespaceObject.WRANGLER_VERSION,
175
- minimumReleaseAgeExcludeYaml: 0 === minimumReleaseAgeExclude.length ? ' []' : `\n${minimumReleaseAgeExclude.map((selector)=>` - '${selector}'`).join('\n')}`,
176
150
  workspacePackageLinkingYaml: Object.entries(workspacePackageLinkingPolicy).map(([key, value])=>`${key}: ${String(value)}\n`).join(''),
177
151
  tailwindEnabled: String(enableTailwind)
178
152
  }, excludedRootTemplates);
179
- if (releaseCohort) (0, external_ultramodern_release_cohort_cjs_namespaceObject.copyCreateReleaseCohort)(options.targetDir);
180
- writePnpmWorkspacePackages(options.targetDir, bridge);
181
- (0, external_fs_io_cjs_namespaceObject.writeJson)(options.targetDir, 'package.json', createCompactRootPackageJson(scope, packageSource, initialVerticals, bridge));
153
+ writePnpmWorkspacePackages(options.targetDir, bridge, packageSource);
154
+ (0, external_fs_io_cjs_namespaceObject.writeJson)(options.targetDir, 'package.json', (0, external_package_json_cjs_namespaceObject.createRootPackageJson)(scope, packageSource, initialVerticals, bridge));
182
155
  if (initialVerticals.length > 0) (0, external_fs_io_cjs_namespaceObject.writeFile)(options.targetDir, 'zerops.yaml', `${(0, external_zerops_cjs_namespaceObject.createZeropsYaml)(scope, createdApps)}\n`);
183
156
  (0, external_fs_io_cjs_namespaceObject.writeJson)(options.targetDir, 'tsconfig.base.json', (0, external_package_json_cjs_namespaceObject.createTsConfigBase)());
184
157
  (0, external_fs_io_cjs_namespaceObject.writeJson)(options.targetDir, 'tsconfig.json', (0, external_package_json_cjs_namespaceObject.createRootTsConfig)(createdApps));
185
158
  (0, external_fs_io_cjs_namespaceObject.writeJson)(options.targetDir, 'topology/reference-topology.json', (0, external_contracts_cjs_namespaceObject.createTopology)(scope, initialVerticals));
186
159
  (0, external_fs_io_cjs_namespaceObject.writeJson)(options.targetDir, 'topology/ownership.json', (0, external_contracts_cjs_namespaceObject.createOwnership)(scope, initialVerticals));
187
160
  (0, external_fs_io_cjs_namespaceObject.writeJson)(options.targetDir, 'topology/local-overlays/development.json', (0, external_contracts_cjs_namespaceObject.createDevelopmentOverlay)(scope, initialVerticals));
188
- (0, external_fs_io_cjs_namespaceObject.writeJson)(options.targetDir, external_descriptors_cjs_namespaceObject.ULTRAMODERN_CONFIG_PATH, createCompactUltramodernConfig(scope, options.modernVersion, packageSource, createdApps, enableTailwind, bridge));
189
161
  (0, external_write_app_cjs_namespaceObject.writeApp)(options.targetDir, scope, external_descriptors_cjs_namespaceObject.shellApp, packageSource, enableTailwind, initialVerticals, bridge);
190
162
  for (const remote of initialVerticals)(0, external_write_app_cjs_namespaceObject.writeApp)(options.targetDir, scope, remote, packageSource, enableTailwind, initialVerticals, bridge);
191
- writeSharedPackages(options.targetDir, scope);
192
- (0, external_workspace_scripts_cjs_namespaceObject.writeGeneratedWorkspaceScripts)(options.targetDir, scope, enableTailwind, initialVerticals, releaseCohort);
163
+ writeSharedPackages(options.targetDir, scope, packageSource);
164
+ (0, external_workspace_scripts_cjs_namespaceObject.writeGeneratedWorkspaceScripts)(options.targetDir);
193
165
  const preliminaryAfterFiles = (0, external_generation_result_cjs_namespaceObject.createFileSnapshot)(options.targetDir);
194
166
  const preliminaryDiff = (0, external_generation_result_cjs_namespaceObject.diffFileSnapshots)(beforeFiles, preliminaryAfterFiles);
195
167
  const preliminaryResult = (0, external_generation_result_cjs_namespaceObject.createGenerationResult)({
@@ -219,11 +191,9 @@ function generateUltramodernWorkspaceInPlace(options, logicalWorkspaceRoot = opt
219
191
  rewrittenPaths
220
192
  });
221
193
  }
222
- exports.createCompactUltramodernConfig = __webpack_exports__.createCompactUltramodernConfig;
223
194
  exports.generateUltramodernWorkspace = __webpack_exports__.generateUltramodernWorkspace;
224
195
  exports.writeApp = __webpack_exports__.writeApp;
225
196
  for(var __rspack_i in __webpack_exports__)if (-1 === [
226
- "createCompactUltramodernConfig",
227
197
  "generateUltramodernWorkspace",
228
198
  "writeApp"
229
199
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
@@ -63,6 +63,8 @@ function createZeropsService(scope, app) {
63
63
  ` - setup: ${quoteYamlString(app.id)}`,
64
64
  ' build:',
65
65
  ` base: ${quoteYamlString(zeropsNodeRuntime)}`,
66
+ ' envVariables:',
67
+ ` ZE_FAIL_BUILD: ${quoteYamlString('true')}`,
66
68
  ' buildCommands:',
67
69
  ' - |',
68
70
  ...commands.map((command)=>` ${command}`),
@@ -2,7 +2,7 @@ import node_fs from "node:fs";
2
2
  import node_path from "node:path";
3
3
  import { fileURLToPath } from "node:url";
4
4
  import { resolveCreatePackageRoot } from "../create-package-root.js";
5
- import { BLEEDINGDEV_CREATE_PACKAGE, BLEEDINGDEV_FRAMEWORK_VERSION_ENV, BLEEDINGDEV_PACKAGE_NAME_PREFIX, BLEEDINGDEV_PACKAGE_SCOPE, LEGACY_BLEEDINGDEV_CREATE_PACKAGE, ULTRAMODERN_FRAMEWORK_VERSION_ENV, WORKSPACE_PACKAGE_VERSION } from "../ultramodern-package-source.js";
5
+ import { BLEEDINGDEV_CREATE_PACKAGE, BLEEDINGDEV_PACKAGE_NAME_PREFIX, BLEEDINGDEV_PACKAGE_SCOPE, ULTRAMODERN_FRAMEWORK_VERSION_ENV, WORKSPACE_PACKAGE_VERSION } from "../ultramodern-package-source.js";
6
6
  import { isCreatePackageSourceCheckout } from "../ultramodern-release-cohort.js";
7
7
  import { WORKSPACE_PROTOCOL_FLAG, getOptionValue } from "./flags.js";
8
8
  import { runSetupCommand } from "./project-setup.js";
@@ -15,7 +15,7 @@ function readCreatePackageJson() {
15
15
  return JSON.parse(node_fs.readFileSync(createPackageJson, 'utf-8'));
16
16
  }
17
17
  function isBleedingDevCreatePackage(createPackage) {
18
- return createPackage.name === BLEEDINGDEV_CREATE_PACKAGE || createPackage.name === LEGACY_BLEEDINGDEV_CREATE_PACKAGE;
18
+ return createPackage.name === BLEEDINGDEV_CREATE_PACKAGE;
19
19
  }
20
20
  function getBleedingDevFrameworkVersion(createPackage, fallbackVersion) {
21
21
  const frameworkVersion = createPackage.ultramodern?.frameworkVersion;
@@ -56,7 +56,7 @@ function hasExplicitUltramodernPackageSource(args, value) {
56
56
  return value ? configuredValue === value : void 0 !== configuredValue;
57
57
  }
58
58
  function readBleedingDevFrameworkVersionFromRegistry(fallbackVersion) {
59
- const envVersion = (process.env[ULTRAMODERN_FRAMEWORK_VERSION_ENV] ?? process.env[BLEEDINGDEV_FRAMEWORK_VERSION_ENV])?.trim();
59
+ const envVersion = process.env[ULTRAMODERN_FRAMEWORK_VERSION_ENV]?.trim();
60
60
  if (envVersion) {
61
61
  if (!semverPattern.test(envVersion)) {
62
62
  console.error(`${ULTRAMODERN_FRAMEWORK_VERSION_ENV} must be a valid semver version`);
@@ -42,7 +42,7 @@ function isInsideGitWorkTree(targetDir) {
42
42
  }
43
43
  function initializeGeneratedGitRepository(targetDir) {
44
44
  assertGitAvailableForGeneratedProject();
45
- if (isInsideGitWorkTree(targetDir)) return;
45
+ if (isInsideGitWorkTree(targetDir)) return false;
46
46
  try {
47
47
  runSetupCommand('git', [
48
48
  'init',
@@ -68,27 +68,7 @@ function initializeGeneratedGitRepository(targetDir) {
68
68
  stdio: 'inherit'
69
69
  });
70
70
  }
71
- runSetupCommand('git', [
72
- 'add',
73
- '-A'
74
- ], {
75
- cwd: targetDir,
76
- stdio: 'inherit'
77
- });
78
- runSetupCommand('git', [
79
- '-c',
80
- 'user.name=UltraModern',
81
- '-c',
82
- 'user.email=ultramodern@bleedingdev.dev',
83
- '-c',
84
- 'commit.gpgsign=false',
85
- 'commit',
86
- '-m',
87
- 'chore: initial UltraModern scaffold'
88
- ], {
89
- cwd: targetDir,
90
- stdio: 'inherit'
91
- });
71
+ return true;
92
72
  }
93
73
  function isDirectoryEmpty(dirPath) {
94
74
  if (!node_fs.existsSync(dirPath)) return false;
package/dist/esm/index.js CHANGED
@@ -2,7 +2,7 @@ import node_fs from "node:fs";
2
2
  import node_path from "node:path";
3
3
  import { fileURLToPath } from "node:url";
4
4
  import { runAgentsMd } from "./agents-md.js";
5
- import { DRY_RUN_FLAG, VERTICAL_FLAG, detectApiProtocolFlag, detectBffRuntime, detectCodeSmithOverlays, detectDryRunFlag, detectExplicitTailwindFlag, detectHorizontalRemoteFlag, detectLanguage, detectPresetFlag, detectTailwindFlag, readBridgeCliOptions, resolveVerticalCliInput } from "./cli/flags.js";
5
+ import { DRY_RUN_FLAG, VERTICAL_FLAG, collectPositionalArgs, detectApiProtocolFlag, detectBffRuntime, detectCodeSmithOverlays, detectDryRunFlag, detectExplicitTailwindFlag, detectHorizontalRemoteFlag, detectLanguage, detectPresetFlag, detectTailwindFlag, readBridgeCliOptions, resolveVerticalCliInput } from "./cli/flags.js";
6
6
  import { showHelp, showVersion } from "./cli/help.js";
7
7
  import { detectUltramodernPackageSource, getBleedingDevFrameworkVersion, isBleedingDevCreatePackage, readCreatePackageJson, resolveWorkspacePackageSource } from "./cli/package-source.js";
8
8
  import { initializeGeneratedGitRepository } from "./cli/project-setup.js";
@@ -10,6 +10,7 @@ import { getProjectName } from "./cli/prompts.js";
10
10
  import { i18n, localeKeys } from "./locale/index.js";
11
11
  import { runUltramodernToolingCli } from "./ultramodern-tooling/commands.js";
12
12
  import { addUltramodernVertical, generateUltramodernWorkspace, planUltramodernVertical } from "./ultramodern-workspace/index.js";
13
+ import { recoverFreshWorkspaceTransactions } from "./ultramodern-workspace/add-vertical/transaction.js";
13
14
  import { hasUltramodernBridgeCliOptions } from "./ultramodern-workspace/bridge-config.js";
14
15
  const src_dirname = node_path.dirname(fileURLToPath(import.meta.url));
15
16
  const templateDir = [
@@ -90,9 +91,11 @@ async function main() {
90
91
  console.log(`${dim} pnpm check${reset}\n`);
91
92
  return;
92
93
  }
94
+ if (0 === collectPositionalArgs(args).length) recoverFreshWorkspaceTransactions(process.cwd());
93
95
  const { name: projectName, useCurrentDir } = await getProjectName();
94
96
  const targetDir = useCurrentDir ? process.cwd() : node_path.isAbsolute(projectName) ? projectName : node_path.resolve(process.cwd(), projectName);
95
97
  const generatedPackageName = useCurrentDir || node_path.isAbsolute(projectName) ? node_path.basename(targetDir) : projectName;
98
+ recoverFreshWorkspaceTransactions(targetDir);
96
99
  if (node_fs.existsSync(targetDir)) {
97
100
  const files = node_fs.readdirSync(targetDir);
98
101
  if (files.length > 0) {
@@ -114,7 +117,7 @@ async function main() {
114
117
  packageSource,
115
118
  generateAgentFiles
116
119
  });
117
- initializeGeneratedGitRepository(targetDir);
120
+ const initializedGitRepository = initializeGeneratedGitRepository(targetDir);
118
121
  const dim = '\x1b[2m\x1b[3m';
119
122
  const reset = '\x1b[0m';
120
123
  console.log(`${i18n.t(localeKeys.message.success)}\n`);
@@ -125,6 +128,11 @@ async function main() {
125
128
  })}${reset}`);
126
129
  console.log(`${dim} ${i18n.t(localeKeys.message.step2)}${reset}`);
127
130
  console.log(`${dim} pnpm check${reset}`);
131
+ if (initializedGitRepository) {
132
+ console.log(i18n.t(localeKeys.message.initialCommit));
133
+ console.log(`${dim} git add .${reset}`);
134
+ console.log(`${dim} git commit -m "chore: initial UltraModern scaffold"${reset}`);
135
+ }
128
136
  console.log(`${dim} ${i18n.t(localeKeys.message.step3)}${reset}\n`);
129
137
  }
130
138
  main().catch((error)=>{
@@ -17,7 +17,8 @@ const EN_LOCALE = {
17
17
  nextSteps: '📋 Next steps:',
18
18
  step1: 'cd {projectName}',
19
19
  step2: 'pnpm install',
20
- step3: 'pnpm dev'
20
+ step3: 'pnpm dev',
21
+ initialCommit: 'Commit the checked scaffold before starting development or CI builds. Git uses your configured identity and hooks.'
21
22
  },
22
23
  agentsCmd: {
23
24
  created: '✔ Created {file}',
@@ -17,7 +17,8 @@ const ZH_LOCALE = {
17
17
  nextSteps: '📋 下一步:',
18
18
  step1: 'cd {projectName}',
19
19
  step2: 'pnpm install',
20
- step3: 'pnpm dev'
20
+ step3: 'pnpm dev',
21
+ initialCommit: '启动开发或 CI 构建前,请提交已检查的项目。Git 将使用你配置的身份和钩子。'
21
22
  },
22
23
  agentsCmd: {
23
24
  created: '✔ 已创建 {file}',
@@ -1,11 +1,9 @@
1
1
  const WORKSPACE_PACKAGE_VERSION = 'workspace:*';
2
2
  const ULTRAMODERN_CREATE_PACKAGE = '@modern-js/ultramodern-create';
3
3
  const BLEEDINGDEV_CREATE_PACKAGE = '@bleedingdev/modern-js-ultramodern-create';
4
- const LEGACY_BLEEDINGDEV_CREATE_PACKAGE = '@bleedingdev/modern-js-create';
5
4
  const BLEEDINGDEV_PACKAGE_SCOPE = 'bleedingdev';
6
5
  const BLEEDINGDEV_PACKAGE_NAME_PREFIX = 'modern-js-';
7
6
  const ULTRAMODERN_FRAMEWORK_VERSION_ENV = 'ULTRAMODERN_CREATE_FRAMEWORK_VERSION';
8
- const BLEEDINGDEV_FRAMEWORK_VERSION_ENV = 'MODERN_CREATE_ULTRAMODERN_FRAMEWORK_VERSION';
9
7
  const ULTRAMODERN_SINGLE_APP_MODERN_PACKAGES = [
10
8
  ULTRAMODERN_CREATE_PACKAGE,
11
9
  '@modern-js/code-tools',
@@ -15,16 +13,28 @@ const ULTRAMODERN_SINGLE_APP_MODERN_PACKAGES = [
15
13
  '@modern-js/plugin-i18n',
16
14
  '@modern-js/plugin-tanstack',
17
15
  '@modern-js/plugin-bff',
16
+ '@modern-js/plugin-bff-build-extensions',
17
+ '@modern-js/plugin-bff-extensions',
18
18
  '@modern-js/adapter-rstest'
19
19
  ];
20
20
  const ULTRAMODERN_WORKSPACE_MODERN_PACKAGES = [
21
+ '@modern-js/bff-effect',
22
+ '@modern-js/boundary-debugger',
21
23
  ULTRAMODERN_CREATE_PACKAGE,
22
24
  '@modern-js/code-tools',
23
25
  '@modern-js/app-tools',
24
26
  '@modern-js/plugin-bff',
27
+ '@modern-js/plugin-bff-build-extensions',
28
+ '@modern-js/plugin-bff-extensions',
25
29
  '@modern-js/plugin-i18n',
30
+ '@modern-js/i18n-integration',
26
31
  '@modern-js/plugin-tanstack',
27
- '@modern-js/runtime'
32
+ '@modern-js/runtime',
33
+ '@modern-js/runtime-extensions',
34
+ '@modern-js/runtime-renderer-extensions',
35
+ '@modern-js/federation-runtime',
36
+ '@modern-js/app-tools-extensions',
37
+ '@modern-js/ultramodern-app-tools'
28
38
  ];
29
39
  function modernPackageVersion(packageSource) {
30
40
  return 'install' === packageSource.strategy ? packageSource.modernPackageVersion : WORKSPACE_PACKAGE_VERSION;
@@ -40,4 +50,4 @@ function modernPackageSpecifier(packageName, packageSource) {
40
50
  if (!packageSource.aliasScope) return packageSource.modernPackageVersion;
41
51
  return `npm:${modernAliasPackageName(packageName, packageSource)}@${packageSource.modernPackageVersion}`;
42
52
  }
43
- export { BLEEDINGDEV_CREATE_PACKAGE, BLEEDINGDEV_FRAMEWORK_VERSION_ENV, BLEEDINGDEV_PACKAGE_NAME_PREFIX, BLEEDINGDEV_PACKAGE_SCOPE, LEGACY_BLEEDINGDEV_CREATE_PACKAGE, ULTRAMODERN_CREATE_PACKAGE, ULTRAMODERN_FRAMEWORK_VERSION_ENV, ULTRAMODERN_SINGLE_APP_MODERN_PACKAGES, ULTRAMODERN_WORKSPACE_MODERN_PACKAGES, WORKSPACE_PACKAGE_VERSION, modernPackageSpecifier, modernPackageVersion };
53
+ export { BLEEDINGDEV_CREATE_PACKAGE, BLEEDINGDEV_PACKAGE_NAME_PREFIX, BLEEDINGDEV_PACKAGE_SCOPE, ULTRAMODERN_CREATE_PACKAGE, ULTRAMODERN_FRAMEWORK_VERSION_ENV, ULTRAMODERN_SINGLE_APP_MODERN_PACKAGES, ULTRAMODERN_WORKSPACE_MODERN_PACKAGES, WORKSPACE_PACKAGE_VERSION, modernPackageSpecifier, modernPackageVersion };
@@ -1,7 +1,7 @@
1
1
  import node_fs from "node:fs";
2
2
  import node_path from "node:path";
3
- import { createPackageRoot, writeFile } from "./ultramodern-workspace/fs-io.js";
4
- const RELEASE_COHORT_PROJECTION_PATH = '.modernjs/release-cohort.json';
3
+ import { createPackageRoot } from "./ultramodern-workspace/fs-io.js";
4
+ const RELEASE_COHORT_PATH = 'release-cohort.json';
5
5
  const RELEASE_COHORT_PROJECTION_SCHEMA = 'bleedingdev.ultramodern.release-cohort';
6
6
  const RELEASE_COHORT_PROJECTION_SCHEMA_VERSION = 1;
7
7
  function assert(condition, message) {
@@ -98,23 +98,14 @@ function readCohortFile(filePath) {
98
98
  return parseUltramodernReleaseCohort(value);
99
99
  }
100
100
  function readCreateReleaseCohort() {
101
- return readCohortFile(node_path.join(createPackageRoot, 'template-workspace', RELEASE_COHORT_PROJECTION_PATH));
101
+ return readCohortFile(node_path.join(createPackageRoot, RELEASE_COHORT_PATH));
102
102
  }
103
103
  function hasCreateReleaseCohort() {
104
- return node_fs.existsSync(node_path.join(createPackageRoot, 'template-workspace', RELEASE_COHORT_PROJECTION_PATH));
104
+ return node_fs.existsSync(node_path.join(createPackageRoot, RELEASE_COHORT_PATH));
105
105
  }
106
106
  function isCreatePackageSourceCheckout() {
107
107
  return node_fs.existsSync(node_path.join(createPackageRoot, 'src'));
108
108
  }
109
- function readWorkspaceReleaseCohort(workspaceRoot) {
110
- return readCohortFile(node_path.join(workspaceRoot, RELEASE_COHORT_PROJECTION_PATH));
111
- }
112
- function copyCreateReleaseCohort(workspaceRoot) {
113
- const sourcePath = node_path.join(createPackageRoot, 'template-workspace', RELEASE_COHORT_PROJECTION_PATH);
114
- const cohort = readCohortFile(sourcePath);
115
- writeFile(workspaceRoot, RELEASE_COHORT_PROJECTION_PATH, node_fs.readFileSync(sourcePath, 'utf8'));
116
- return cohort;
117
- }
118
109
  function assertReleaseCohortPackageSource(cohort, packageSource) {
119
110
  if ('install' !== packageSource.strategy) return;
120
111
  assert(packageSource.modernPackageVersion === cohort.release.version, `Package source release ${packageSource.modernPackageVersion} does not match authenticated release cohort ${cohort.release.version}.`);
@@ -130,4 +121,4 @@ function assertReleaseCohortPackageSource(cohort, packageSource) {
130
121
  function releaseCohortSelectors(cohort) {
131
122
  return cohort.packages.map((item)=>`${item.targetName}@${item.version}`).sort();
132
123
  }
133
- export { RELEASE_COHORT_PROJECTION_PATH, assertReleaseCohortPackageSource, copyCreateReleaseCohort, hasCreateReleaseCohort, isCreatePackageSourceCheckout, parseUltramodernReleaseCohort, readCreateReleaseCohort, readWorkspaceReleaseCohort, releaseCohortSelectors };
124
+ export { RELEASE_COHORT_PATH, assertReleaseCohortPackageSource, hasCreateReleaseCohort, isCreatePackageSourceCheckout, parseUltramodernReleaseCohort, readCreateReleaseCohort, releaseCohortSelectors };
@@ -1,7 +1,18 @@
1
+ import { createRequire } from "node:module";
1
2
  import node_path from "node:path";
3
+ import { createCloudflarePublicUrlEnv } from "../../ultramodern-workspace/descriptors.js";
2
4
  import { readUltramodernConfig, workspaceAppsFromToolingConfig } from "../config.js";
3
- import { runRenderedModule } from "./context.js";
4
5
  import { readOption } from "./options.js";
6
+ const REQUIRE_PUBLIC_URLS_FLAG = '--require-public-urls';
7
+ const missingPublicUrl = ({ label, publicUrlEnv })=>{
8
+ if (!publicUrlEnv) return `${REQUIRE_PUBLIC_URLS_FLAG} needs --app, not --output (${label}).`;
9
+ const names = [
10
+ publicUrlEnv,
11
+ 'MODERN_PUBLIC_SITE_URL',
12
+ 'ULTRAMODERN_CLOUDFLARE_WORKERS_DEV_SUBDOMAIN'
13
+ ];
14
+ return names.some((name)=>process.env[name]?.trim()) ? void 0 : `Cloudflare deploy for ${label} needs ${names.join(', ')}.`;
15
+ };
5
16
  const resolveCloudflareOutputVerifyTargets = (args, context)=>{
6
17
  const outputDirectory = readOption(args, '--output');
7
18
  const appId = readOption(args, '--app');
@@ -11,74 +22,56 @@ const resolveCloudflareOutputVerifyTargets = (args, context)=>{
11
22
  label: outputDirectory,
12
23
  outputDirectory: node_path.resolve(context.invocationCwd, outputDirectory)
13
24
  }
14
- ] : workspaceAppsFromToolingConfig(readUltramodernConfig(context.workspaceRoot)).filter((app)=>!appId || app.id === appId).map((app)=>({
25
+ ] : workspaceAppsFromToolingConfig(readUltramodernConfig(context.workspaceRoot), context.workspaceRoot).filter((app)=>!appId || app.id === appId).map((app)=>({
15
26
  label: app.id,
16
- outputDirectory: node_path.join(context.workspaceRoot, app.directory, '.output')
27
+ outputDirectory: node_path.join(context.workspaceRoot, app.directory, '.output'),
28
+ publicUrlEnv: createCloudflarePublicUrlEnv(app)
17
29
  }));
18
30
  if (0 === targets.length) throw new Error(`No generated UltraModern app matched ${appId}.`);
19
31
  return targets;
20
32
  };
21
- const renderCloudflareOutputVerifyModule = ({ workspaceRoot, targets, excludePaths })=>`
22
- import { createRequire } from 'node:module';
23
- import path from 'node:path';
24
-
25
- const workspaceRoot = ${JSON.stringify(workspaceRoot)};
26
- const targets = ${JSON.stringify(targets, null, 2)};
27
- const scanRoots = [workspaceRoot];
28
- const excludePaths = ${JSON.stringify(excludePaths)};
29
- const verifierRequire = createRequire(path.join(workspaceRoot, 'package.json'));
30
- const {
31
- verifyCloudflareOutput,
32
- verifyCloudflareOutputMutationPolicy,
33
- } = verifierRequire('@modern-js/app-tools/cloudflare-output-verifier');
34
-
35
- let failed = false;
36
- for (const target of targets) {
37
- const result = await verifyCloudflareOutput({
38
- outputDirectory: target.outputDirectory,
39
- importWorker: true,
40
- });
41
- if (result.ok) {
42
- console.log(\`[ultramodern] Cloudflare output verified: \${target.label}\`);
43
- } else {
44
- failed = true;
45
- console.error(\`[ultramodern] Cloudflare output failed: \${target.label}\`);
46
- for (const issue of result.issues) {
47
- console.error(\`- \${issue.code}: \${issue.message}\${issue.path ? \` (\${issue.path})\` : ''}\`);
48
- }
49
- }
50
- }
51
-
52
- if (scanRoots.length > 0) {
53
- const policyResult = await verifyCloudflareOutputMutationPolicy({ scanRoots, excludePaths });
54
- if (!policyResult.ok) {
55
- failed = true;
56
- console.error('[ultramodern] generated-output mutation policy failed');
57
- for (const issue of policyResult.issues) {
58
- console.error(\`- \${issue.code}: \${issue.message}\${issue.path ? \` (\${issue.path})\` : ''}\`);
59
- }
60
- }
61
- }
62
-
63
- process.exit(failed ? 1 : 0);
64
- `;
65
- function runCloudflareOutputVerify(args, context) {
33
+ async function runCloudflareOutputVerify(args, context) {
66
34
  if (args.includes('--help') || args.includes('-h')) {
67
35
  process.stdout.write(`Usage:
68
- ultramodern-create ultramodern cloudflare-output-verify [--app <id> | --output <dir>]
36
+ ultramodern-create ultramodern cloudflare-output-verify [--app <id> | --output <dir>] [--require-public-urls]
69
37
 
70
38
  Verifies generated Cloudflare output against the UltraModern worker contract.
71
39
  Without --app or --output, every generated workspace app is verified.
40
+ --require-public-urls also fails an app that has no public URL to deploy to.
72
41
  `);
73
42
  return 0;
74
43
  }
75
- const source = renderCloudflareOutputVerifyModule({
76
- workspaceRoot: context.workspaceRoot,
77
- targets: resolveCloudflareOutputVerifyTargets(args, context),
78
- excludePaths: [
79
- node_path.join(context.workspaceRoot, "scripts", 'validate-ultramodern-workspace.mts')
80
- ]
44
+ const targets = resolveCloudflareOutputVerifyTargets(args, context);
45
+ if (args.includes(REQUIRE_PUBLIC_URLS_FLAG)) {
46
+ const missing = targets.map(missingPublicUrl).filter((message)=>Boolean(message));
47
+ if (missing.length > 0) throw new Error(missing.join('\n'));
48
+ }
49
+ const verifierRequire = createRequire(node_path.join(context.workspaceRoot, 'package.json'));
50
+ const { verifyCloudflareOutput, verifyCloudflareOutputMutationPolicy } = verifierRequire('@modern-js/app-tools-extensions/cloudflare-output-verifier');
51
+ let failed = false;
52
+ for (const target of targets){
53
+ const result = await verifyCloudflareOutput({
54
+ outputDirectory: target.outputDirectory,
55
+ importWorker: true
56
+ });
57
+ if (result.ok) console.log(`[ultramodern] Cloudflare output verified: ${target.label}`);
58
+ else {
59
+ failed = true;
60
+ console.error(`[ultramodern] Cloudflare output failed: ${target.label}`);
61
+ for (const issue of result.issues)console.error(`- ${issue.code}: ${issue.message}${issue.path ? ` (${issue.path})` : ''}`);
62
+ }
63
+ }
64
+ const policyResult = await verifyCloudflareOutputMutationPolicy({
65
+ scanRoots: [
66
+ context.workspaceRoot
67
+ ],
68
+ excludePaths: []
81
69
  });
82
- return runRenderedModule(source, context);
70
+ if (!policyResult.ok) {
71
+ failed = true;
72
+ console.error('[ultramodern] generated-output mutation policy failed');
73
+ for (const issue of policyResult.issues)console.error(`- ${issue.code}: ${issue.message}${issue.path ? ` (${issue.path})` : ''}`);
74
+ }
75
+ return failed ? 1 : 0;
83
76
  }
84
77
  export { runCloudflareOutputVerify };
@@ -1,17 +1,21 @@
1
1
  import { spawnSync } from "node:child_process";
2
- import node_fs from "node:fs";
3
- import node_os from "node:os";
2
+ import { constants } from "node:os";
4
3
  import node_path from "node:path";
5
4
  import { fileURLToPath } from "node:url";
6
5
  import { resolveCreatePackageRoot } from "../../create-package-root.js";
7
6
  import { generatedToolingCommandList, generatedToolingCommands } from "../../ultramodern-workspace/tooling-command-catalog.js";
8
7
  const context_dirname = node_path.dirname(fileURLToPath(import.meta.url));
9
8
  const createPackageRoot = resolveCreatePackageRoot(context_dirname);
9
+ const AD_HOC_TOOLING_COMMANDS = {
10
+ syncDeliveryUnit: 'sync-delivery-unit',
11
+ skills: 'skills'
12
+ };
10
13
  function printHelp() {
11
14
  const commands = [
12
15
  ...generatedToolingCommandList().map((command)=>` ${command}`),
13
- ' skills install',
14
- ' skills check'
16
+ ` ${AD_HOC_TOOLING_COMMANDS.syncDeliveryUnit}`,
17
+ ` ${AD_HOC_TOOLING_COMMANDS.skills} install`,
18
+ ` ${AD_HOC_TOOLING_COMMANDS.skills} check`
15
19
  ].join('\n');
16
20
  process.stdout.write(`Usage:
17
21
  ultramodern-create ultramodern <command> [args]
@@ -34,7 +38,7 @@ function spawnNodeScript(relativeScriptPath, args, context, options = {}) {
34
38
  stdio: 'inherit'
35
39
  });
36
40
  if (result.error) throw result.error;
37
- return result.status ?? 1;
41
+ return result.status ?? (result.signal ? 128 + constants.signals[result.signal] : 1);
38
42
  }
39
43
  function runTemplateBackedToolingCommand(command, args, context) {
40
44
  const toolingCommand = generatedToolingCommands.find((candidate)=>candidate.command === command);
@@ -43,24 +47,4 @@ function runTemplateBackedToolingCommand(command, args, context) {
43
47
  cwd: 'invocation' === toolingCommand.cwd ? context.invocationCwd : context.workspaceRoot
44
48
  });
45
49
  }
46
- function runRenderedModule(source, context) {
47
- const tempDir = node_fs.mkdtempSync(node_path.join(node_os.tmpdir(), 'ultramodern-tool-'));
48
- const tempFile = node_path.join(tempDir, 'command.mjs');
49
- try {
50
- node_fs.writeFileSync(tempFile, source, 'utf-8');
51
- const result = spawnSync(process.execPath, [
52
- tempFile
53
- ], {
54
- cwd: context.workspaceRoot,
55
- stdio: 'inherit'
56
- });
57
- if (result.error) throw result.error;
58
- return result.status ?? 1;
59
- } finally{
60
- node_fs.rmSync(tempDir, {
61
- force: true,
62
- recursive: true
63
- });
64
- }
65
- }
66
- export { createPackageRoot, printHelp, runRenderedModule, runTemplateBackedToolingCommand, spawnNodeScript };
50
+ export { AD_HOC_TOOLING_COMMANDS, createPackageRoot, printHelp, runTemplateBackedToolingCommand, spawnNodeScript };
@@ -0,0 +1,35 @@
1
+ import { createRequire } from "node:module";
2
+ import node_path from "node:path";
3
+ import { pathToFileURL } from "node:url";
4
+ async function main() {
5
+ const [appDirectory, label, mode] = process.argv.slice(2);
6
+ try {
7
+ if (!appDirectory || !label) throw new Error('Route generation requires an app directory and label.');
8
+ const appRequire = createRequire(node_path.join(appDirectory, 'package.json'));
9
+ const pluginUrl = pathToFileURL(appRequire.resolve('@modern-js/plugin-tanstack')).href;
10
+ const plugin = await import(pluginUrl);
11
+ if ('manifest' === mode) {
12
+ await plugin.writeRouteMetadataManifest({
13
+ appDirectory
14
+ });
15
+ console.log(`[ultramodern] Route metadata manifest generated: ${label}`);
16
+ } else {
17
+ await plugin.generateTanstackRouteArtifacts({
18
+ appDirectory
19
+ });
20
+ console.log(`[ultramodern] TanStack route artifacts generated: ${label}`);
21
+ }
22
+ } catch (error) {
23
+ process.exitCode = 1;
24
+ console.error(`[ultramodern] TanStack route generation failed: ${label}`);
25
+ let current = error;
26
+ let depth = 0;
27
+ while(current){
28
+ const detail = current instanceof Error ? current.stack ?? `${current.name}: ${current.message}` : String(current);
29
+ console.error(`${0 === depth ? '-' : ' caused by:'} ${detail}`);
30
+ current = current instanceof Error ? current.cause : void 0;
31
+ depth += 1;
32
+ }
33
+ }
34
+ }
35
+ main();