@bleedingdev/modern-js-create 3.5.0-ultramodern.9 → 3.5.0-ultramodern.90

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 (566) hide show
  1. package/README.md +25 -25
  2. package/bin/run.js +0 -0
  3. package/dist/cjs/cli/flags.cjs +357 -0
  4. package/dist/cjs/cli/help.cjs +108 -0
  5. package/dist/cjs/cli/package-source.cjs +188 -0
  6. package/dist/cjs/cli/project-setup.cjs +162 -0
  7. package/dist/cjs/cli/prompts.cjs +100 -0
  8. package/dist/cjs/index.cjs +35 -585
  9. package/dist/cjs/locale/en.cjs +5 -6
  10. package/dist/cjs/locale/zh.cjs +5 -6
  11. package/dist/cjs/ultramodern-package-source.cjs +0 -32
  12. package/dist/cjs/ultramodern-release-cohort.cjs +206 -0
  13. package/dist/cjs/ultramodern-tooling/commands/cloudflare-output-verify.cjs +136 -0
  14. package/dist/cjs/ultramodern-tooling/commands/context.cjs +131 -0
  15. package/dist/cjs/ultramodern-tooling/commands/mf-types.cjs +55 -0
  16. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.cjs +212 -0
  17. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.cjs +50 -0
  18. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.cjs +87 -0
  19. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.cjs +58 -0
  20. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.cjs +100 -0
  21. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.cjs +100 -0
  22. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.cjs +132 -0
  23. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.cjs +67 -0
  24. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.cjs +206 -0
  25. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.cjs +60 -0
  26. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.cjs +67 -0
  27. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.cjs +67 -0
  28. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-ui-source.cjs +148 -0
  29. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/help.cjs +54 -0
  30. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/install.cjs +52 -0
  31. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/io.cjs +350 -0
  32. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.cjs +200 -0
  33. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-source.cjs +89 -0
  34. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.cjs +476 -0
  35. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.cjs +376 -0
  36. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.cjs +99 -0
  37. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.cjs +135 -0
  38. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect.cjs +425 -0
  39. package/dist/cjs/ultramodern-tooling/commands/options.cjs +59 -0
  40. package/dist/cjs/ultramodern-tooling/commands/routes-generate.cjs +122 -0
  41. package/dist/cjs/ultramodern-tooling/commands/skills.cjs +49 -0
  42. package/dist/cjs/ultramodern-tooling/commands/sync-delivery-unit.cjs +40 -0
  43. package/dist/cjs/ultramodern-tooling/commands/validate.cjs +53 -0
  44. package/dist/cjs/ultramodern-tooling/commands.cjs +27 -491
  45. package/dist/cjs/ultramodern-tooling/config/constants.cjs +48 -0
  46. package/dist/cjs/ultramodern-tooling/config/index.cjs +104 -0
  47. package/dist/cjs/ultramodern-tooling/config/json.cjs +61 -0
  48. package/dist/cjs/ultramodern-tooling/config/load.cjs +62 -0
  49. package/dist/cjs/ultramodern-tooling/config/metadata.cjs +92 -0
  50. package/dist/cjs/ultramodern-tooling/config/normalize.cjs +236 -0
  51. package/dist/cjs/ultramodern-tooling/config/synthesize.cjs +157 -0
  52. package/dist/cjs/ultramodern-tooling/config/types.cjs +18 -0
  53. package/dist/cjs/ultramodern-tooling/config.cjs +23 -133
  54. package/dist/cjs/ultramodern-workspace/add-shell.cjs +274 -0
  55. package/dist/cjs/ultramodern-workspace/add-vertical/constants.cjs +52 -0
  56. package/dist/cjs/ultramodern-workspace/add-vertical/execute.cjs +183 -0
  57. package/dist/cjs/ultramodern-workspace/add-vertical/plan.cjs +255 -0
  58. package/dist/cjs/ultramodern-workspace/add-vertical/preflight.cjs +256 -0
  59. package/dist/cjs/ultramodern-workspace/add-vertical/shell-files.cjs +122 -0
  60. package/dist/cjs/ultramodern-workspace/add-vertical/topology.cjs +152 -0
  61. package/dist/cjs/ultramodern-workspace/add-vertical/transaction.cjs +327 -0
  62. package/dist/cjs/ultramodern-workspace/add-vertical/workspace-state.cjs +137 -0
  63. package/dist/cjs/ultramodern-workspace/add-vertical.cjs +22 -571
  64. package/dist/cjs/ultramodern-workspace/api/checkout-cart.cjs +145 -0
  65. package/dist/cjs/ultramodern-workspace/api/client.cjs +224 -0
  66. package/dist/cjs/ultramodern-workspace/api/contracts.cjs +251 -0
  67. package/dist/cjs/ultramodern-workspace/api/names.cjs +98 -0
  68. package/dist/cjs/ultramodern-workspace/api/rpc.cjs +264 -0
  69. package/dist/cjs/ultramodern-workspace/api/service.cjs +252 -0
  70. package/dist/cjs/ultramodern-workspace/api/shared.cjs +270 -0
  71. package/dist/cjs/ultramodern-workspace/api.cjs +49 -1005
  72. package/dist/cjs/ultramodern-workspace/app-files.cjs +51 -69
  73. package/dist/cjs/ultramodern-workspace/backend-federation.cjs +346 -0
  74. package/dist/cjs/ultramodern-workspace/bridge-config/cli.cjs +71 -0
  75. package/dist/cjs/ultramodern-workspace/bridge-config/defaults.cjs +43 -0
  76. package/dist/cjs/ultramodern-workspace/bridge-config/gates.cjs +93 -0
  77. package/dist/cjs/ultramodern-workspace/bridge-config/index.cjs +60 -0
  78. package/dist/cjs/ultramodern-workspace/bridge-config/normalize.cjs +68 -0
  79. package/dist/cjs/ultramodern-workspace/bridge-config/schema.cjs +78 -0
  80. package/dist/cjs/ultramodern-workspace/bridge-config/shared.cjs +110 -0
  81. package/dist/cjs/ultramodern-workspace/bridge-config/validation.cjs +68 -0
  82. package/dist/cjs/ultramodern-workspace/bridge-config/workspace-packages.cjs +108 -0
  83. package/dist/cjs/ultramodern-workspace/bridge-config.cjs +32 -297
  84. package/dist/cjs/ultramodern-workspace/codesmith.cjs +10 -1
  85. package/dist/cjs/ultramodern-workspace/contracts.cjs +80 -26
  86. package/dist/cjs/ultramodern-workspace/delivery-unit-schema/types.cjs +291 -0
  87. package/dist/cjs/ultramodern-workspace/delivery-unit-schema/up-projection.cjs +188 -0
  88. package/dist/cjs/ultramodern-workspace/delivery-unit-stamp.cjs +56 -0
  89. package/dist/cjs/ultramodern-workspace/delivery-unit-sync.cjs +153 -0
  90. package/dist/cjs/ultramodern-workspace/delivery-unit.cjs +75 -0
  91. package/dist/cjs/ultramodern-workspace/demo-components.cjs +474 -205
  92. package/dist/cjs/ultramodern-workspace/descriptors.cjs +101 -16
  93. package/dist/cjs/ultramodern-workspace/effect-diagnostics.cjs +114 -0
  94. package/dist/cjs/ultramodern-workspace/fs-io.cjs +26 -36
  95. package/dist/cjs/ultramodern-workspace/generation-result.cjs +36 -3
  96. package/dist/cjs/ultramodern-workspace/index.cjs +28 -0
  97. package/dist/cjs/ultramodern-workspace/locales.cjs +3 -17
  98. package/dist/cjs/ultramodern-workspace/mf-validation/constants.cjs +69 -0
  99. package/dist/cjs/ultramodern-workspace/mf-validation/discovery.cjs +77 -0
  100. package/dist/cjs/ultramodern-workspace/mf-validation/inspect.cjs +84 -0
  101. package/dist/cjs/ultramodern-workspace/mf-validation/object-literal.cjs +188 -0
  102. package/dist/cjs/ultramodern-workspace/mf-validation/path-utils.cjs +165 -0
  103. package/dist/cjs/ultramodern-workspace/mf-validation/syntax.cjs +201 -0
  104. package/dist/cjs/ultramodern-workspace/mf-validation/types.cjs +18 -0
  105. package/dist/cjs/ultramodern-workspace/mf-validation/validate.cjs +112 -0
  106. package/dist/cjs/ultramodern-workspace/mf-validation.cjs +6 -529
  107. package/dist/cjs/ultramodern-workspace/module-federation/config.cjs +336 -0
  108. package/dist/cjs/ultramodern-workspace/module-federation/index.cjs +73 -0
  109. package/dist/cjs/ultramodern-workspace/module-federation/reexport-module.cjs +111 -0
  110. package/dist/cjs/ultramodern-workspace/module-federation/remote-refs.cjs +106 -0
  111. package/dist/cjs/ultramodern-workspace/module-federation/shared-config.cjs +53 -0
  112. package/dist/cjs/ultramodern-workspace/module-federation.cjs +18 -477
  113. package/dist/cjs/ultramodern-workspace/naming.cjs +1 -7
  114. package/dist/cjs/ultramodern-workspace/overlay-baseline-guard.cjs +408 -0
  115. package/dist/cjs/ultramodern-workspace/overlays.cjs +39 -5
  116. package/dist/cjs/ultramodern-workspace/package-json.cjs +54 -301
  117. package/dist/cjs/ultramodern-workspace/package-source.cjs +11 -2
  118. package/dist/cjs/ultramodern-workspace/policy.cjs +801 -24
  119. package/dist/cjs/ultramodern-workspace/public-surface.cjs +1 -22
  120. package/dist/cjs/ultramodern-workspace/routes.cjs +8 -157
  121. package/dist/cjs/ultramodern-workspace/shared-patches.cjs +41 -0
  122. package/dist/cjs/ultramodern-workspace/shells.cjs +151 -0
  123. package/dist/cjs/ultramodern-workspace/tooling-command-catalog.cjs +147 -0
  124. package/dist/cjs/ultramodern-workspace/tsconfigs.cjs +200 -0
  125. package/dist/cjs/ultramodern-workspace/types.cjs +27 -0
  126. package/dist/cjs/ultramodern-workspace/versions.cjs +52 -37
  127. package/dist/cjs/ultramodern-workspace/workspace-script-plan.cjs +174 -0
  128. package/dist/cjs/ultramodern-workspace/workspace-scripts.cjs +118 -88
  129. package/dist/cjs/ultramodern-workspace/workspace-validation-contract.cjs +642 -0
  130. package/dist/cjs/ultramodern-workspace/write-app.cjs +148 -0
  131. package/dist/cjs/ultramodern-workspace/write-workspace.cjs +45 -67
  132. package/dist/cjs/ultramodern-workspace/zerops.cjs +108 -0
  133. package/dist/esm/cli/flags.js +262 -0
  134. package/dist/esm/cli/help.js +67 -0
  135. package/dist/esm/cli/package-source.js +124 -0
  136. package/dist/esm/cli/project-setup.js +105 -0
  137. package/dist/esm/cli/prompts.js +51 -0
  138. package/dist/esm/index.js +19 -565
  139. package/dist/esm/locale/en.js +5 -6
  140. package/dist/esm/locale/zh.js +5 -6
  141. package/dist/esm/ultramodern-package-source.js +1 -24
  142. package/dist/esm/ultramodern-release-cohort.js +133 -0
  143. package/dist/esm/ultramodern-tooling/commands/cloudflare-output-verify.js +88 -0
  144. package/dist/esm/ultramodern-tooling/commands/context.js +66 -0
  145. package/dist/esm/ultramodern-tooling/commands/mf-types.js +17 -0
  146. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.js +154 -0
  147. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +12 -0
  148. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.js +38 -0
  149. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.js +10 -0
  150. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +45 -0
  151. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +51 -0
  152. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.js +83 -0
  153. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.js +16 -0
  154. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.js +157 -0
  155. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.js +12 -0
  156. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.js +7 -0
  157. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.js +15 -0
  158. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-ui-source.js +97 -0
  159. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/help.js +16 -0
  160. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/install.js +14 -0
  161. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/io.js +285 -0
  162. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +156 -0
  163. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-source.js +51 -0
  164. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +417 -0
  165. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +329 -0
  166. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +24 -0
  167. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.js +80 -0
  168. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect.js +376 -0
  169. package/dist/esm/ultramodern-tooling/commands/options.js +18 -0
  170. package/dist/esm/ultramodern-tooling/commands/routes-generate.js +74 -0
  171. package/dist/esm/ultramodern-tooling/commands/skills.js +11 -0
  172. package/dist/esm/ultramodern-tooling/commands/sync-delivery-unit.js +1 -0
  173. package/dist/esm/ultramodern-tooling/commands/validate.js +15 -0
  174. package/dist/esm/ultramodern-tooling/commands.js +23 -482
  175. package/dist/esm/ultramodern-tooling/config/constants.js +4 -0
  176. package/dist/esm/ultramodern-tooling/config/index.js +7 -0
  177. package/dist/esm/ultramodern-tooling/config/json.js +10 -0
  178. package/dist/esm/ultramodern-tooling/config/load.js +13 -0
  179. package/dist/esm/ultramodern-tooling/config/metadata.js +37 -0
  180. package/dist/esm/ultramodern-tooling/config/normalize.js +173 -0
  181. package/dist/esm/ultramodern-tooling/config/synthesize.js +108 -0
  182. package/dist/esm/ultramodern-tooling/config/types.js +0 -0
  183. package/dist/esm/ultramodern-tooling/config.js +1 -120
  184. package/dist/esm/ultramodern-workspace/add-shell.js +221 -0
  185. package/dist/esm/ultramodern-workspace/add-vertical/constants.js +5 -0
  186. package/dist/esm/ultramodern-workspace/add-vertical/execute.js +135 -0
  187. package/dist/esm/ultramodern-workspace/add-vertical/plan.js +205 -0
  188. package/dist/esm/ultramodern-workspace/add-vertical/preflight.js +198 -0
  189. package/dist/esm/ultramodern-workspace/add-vertical/shell-files.js +65 -0
  190. package/dist/esm/ultramodern-workspace/add-vertical/topology.js +108 -0
  191. package/dist/esm/ultramodern-workspace/add-vertical/transaction.js +254 -0
  192. package/dist/esm/ultramodern-workspace/add-vertical/workspace-state.js +67 -0
  193. package/dist/esm/ultramodern-workspace/add-vertical.js +6 -544
  194. package/dist/esm/ultramodern-workspace/api/checkout-cart.js +86 -0
  195. package/dist/esm/ultramodern-workspace/api/client.js +183 -0
  196. package/dist/esm/ultramodern-workspace/api/contracts.js +201 -0
  197. package/dist/esm/ultramodern-workspace/api/names.js +33 -0
  198. package/dist/esm/ultramodern-workspace/api/rpc.js +205 -0
  199. package/dist/esm/ultramodern-workspace/api/service.js +211 -0
  200. package/dist/esm/ultramodern-workspace/api/shared.js +226 -0
  201. package/dist/esm/ultramodern-workspace/api.js +6 -984
  202. package/dist/esm/ultramodern-workspace/app-files.js +51 -51
  203. package/dist/esm/ultramodern-workspace/backend-federation.js +281 -0
  204. package/dist/esm/ultramodern-workspace/bridge-config/cli.js +30 -0
  205. package/dist/esm/ultramodern-workspace/bridge-config/defaults.js +5 -0
  206. package/dist/esm/ultramodern-workspace/bridge-config/gates.js +52 -0
  207. package/dist/esm/ultramodern-workspace/bridge-config/index.js +3 -0
  208. package/dist/esm/ultramodern-workspace/bridge-config/normalize.js +30 -0
  209. package/dist/esm/ultramodern-workspace/bridge-config/schema.js +31 -0
  210. package/dist/esm/ultramodern-workspace/bridge-config/shared.js +51 -0
  211. package/dist/esm/ultramodern-workspace/bridge-config/validation.js +27 -0
  212. package/dist/esm/ultramodern-workspace/bridge-config/workspace-packages.js +67 -0
  213. package/dist/esm/ultramodern-workspace/bridge-config.js +1 -270
  214. package/dist/esm/ultramodern-workspace/codesmith.js +10 -1
  215. package/dist/esm/ultramodern-workspace/contracts.js +81 -27
  216. package/dist/esm/ultramodern-workspace/delivery-unit-schema/types.js +235 -0
  217. package/dist/esm/ultramodern-workspace/delivery-unit-schema/up-projection.js +129 -0
  218. package/dist/esm/ultramodern-workspace/delivery-unit-stamp.js +18 -0
  219. package/dist/esm/ultramodern-workspace/delivery-unit-sync.js +104 -0
  220. package/dist/esm/ultramodern-workspace/delivery-unit.js +21 -0
  221. package/dist/esm/ultramodern-workspace/demo-components.js +461 -204
  222. package/dist/esm/ultramodern-workspace/descriptors.js +75 -17
  223. package/dist/esm/ultramodern-workspace/effect-diagnostics.js +76 -0
  224. package/dist/esm/ultramodern-workspace/fs-io.js +27 -18
  225. package/dist/esm/ultramodern-workspace/generation-result.js +33 -3
  226. package/dist/esm/ultramodern-workspace/index.js +4 -0
  227. package/dist/esm/ultramodern-workspace/locales.js +3 -4
  228. package/dist/esm/ultramodern-workspace/mf-validation/constants.js +19 -0
  229. package/dist/esm/ultramodern-workspace/mf-validation/discovery.js +28 -0
  230. package/dist/esm/ultramodern-workspace/mf-validation/inspect.js +46 -0
  231. package/dist/esm/ultramodern-workspace/mf-validation/object-literal.js +144 -0
  232. package/dist/esm/ultramodern-workspace/mf-validation/path-utils.js +89 -0
  233. package/dist/esm/ultramodern-workspace/mf-validation/syntax.js +154 -0
  234. package/dist/esm/ultramodern-workspace/mf-validation/types.js +0 -0
  235. package/dist/esm/ultramodern-workspace/mf-validation/validate.js +57 -0
  236. package/dist/esm/ultramodern-workspace/mf-validation.js +3 -516
  237. package/dist/esm/ultramodern-workspace/module-federation/config.js +289 -0
  238. package/dist/esm/ultramodern-workspace/module-federation/index.js +4 -0
  239. package/dist/esm/ultramodern-workspace/module-federation/reexport-module.js +67 -0
  240. package/dist/esm/ultramodern-workspace/module-federation/remote-refs.js +65 -0
  241. package/dist/esm/ultramodern-workspace/module-federation/shared-config.js +12 -0
  242. package/dist/esm/ultramodern-workspace/module-federation.js +2 -458
  243. package/dist/esm/ultramodern-workspace/naming.js +2 -2
  244. package/dist/esm/ultramodern-workspace/overlay-baseline-guard.js +350 -0
  245. package/dist/esm/ultramodern-workspace/overlays.js +28 -5
  246. package/dist/esm/ultramodern-workspace/package-json.js +48 -283
  247. package/dist/esm/ultramodern-workspace/package-source.js +7 -1
  248. package/dist/esm/ultramodern-workspace/policy.js +784 -10
  249. package/dist/esm/ultramodern-workspace/public-surface.js +2 -2
  250. package/dist/esm/ultramodern-workspace/routes.js +9 -143
  251. package/dist/esm/ultramodern-workspace/shared-patches.js +3 -0
  252. package/dist/esm/ultramodern-workspace/shells.js +92 -0
  253. package/dist/esm/ultramodern-workspace/tooling-command-catalog.js +100 -0
  254. package/dist/esm/ultramodern-workspace/tsconfigs.js +137 -0
  255. package/dist/esm/ultramodern-workspace/types.js +16 -1
  256. package/dist/esm/ultramodern-workspace/versions.js +35 -26
  257. package/dist/esm/ultramodern-workspace/workspace-script-plan.js +124 -0
  258. package/dist/esm/ultramodern-workspace/workspace-scripts.js +115 -85
  259. package/dist/esm/ultramodern-workspace/workspace-validation-contract.js +604 -0
  260. package/dist/esm/ultramodern-workspace/write-app.js +105 -0
  261. package/dist/esm/ultramodern-workspace/write-workspace.js +47 -66
  262. package/dist/esm/ultramodern-workspace/zerops.js +70 -0
  263. package/dist/esm-node/cli/flags.js +263 -0
  264. package/dist/esm-node/cli/help.js +68 -0
  265. package/dist/esm-node/cli/package-source.js +125 -0
  266. package/dist/esm-node/cli/project-setup.js +106 -0
  267. package/dist/esm-node/cli/prompts.js +52 -0
  268. package/dist/esm-node/index.js +19 -565
  269. package/dist/esm-node/locale/en.js +5 -6
  270. package/dist/esm-node/locale/zh.js +5 -6
  271. package/dist/esm-node/ultramodern-package-source.js +1 -24
  272. package/dist/esm-node/ultramodern-release-cohort.js +134 -0
  273. package/dist/esm-node/ultramodern-tooling/commands/cloudflare-output-verify.js +89 -0
  274. package/dist/esm-node/ultramodern-tooling/commands/context.js +67 -0
  275. package/dist/esm-node/ultramodern-tooling/commands/mf-types.js +18 -0
  276. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.js +155 -0
  277. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +13 -0
  278. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.js +39 -0
  279. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.js +11 -0
  280. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +46 -0
  281. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +52 -0
  282. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.js +84 -0
  283. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.js +17 -0
  284. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.js +158 -0
  285. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.js +13 -0
  286. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.js +8 -0
  287. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.js +16 -0
  288. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-ui-source.js +98 -0
  289. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/help.js +17 -0
  290. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/install.js +15 -0
  291. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/io.js +286 -0
  292. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +157 -0
  293. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-source.js +52 -0
  294. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +418 -0
  295. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +330 -0
  296. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +25 -0
  297. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.js +81 -0
  298. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect.js +377 -0
  299. package/dist/esm-node/ultramodern-tooling/commands/options.js +19 -0
  300. package/dist/esm-node/ultramodern-tooling/commands/routes-generate.js +75 -0
  301. package/dist/esm-node/ultramodern-tooling/commands/skills.js +12 -0
  302. package/dist/esm-node/ultramodern-tooling/commands/sync-delivery-unit.js +2 -0
  303. package/dist/esm-node/ultramodern-tooling/commands/validate.js +16 -0
  304. package/dist/esm-node/ultramodern-tooling/commands.js +23 -482
  305. package/dist/esm-node/ultramodern-tooling/config/constants.js +5 -0
  306. package/dist/esm-node/ultramodern-tooling/config/index.js +8 -0
  307. package/dist/esm-node/ultramodern-tooling/config/json.js +11 -0
  308. package/dist/esm-node/ultramodern-tooling/config/load.js +14 -0
  309. package/dist/esm-node/ultramodern-tooling/config/metadata.js +38 -0
  310. package/dist/esm-node/ultramodern-tooling/config/normalize.js +174 -0
  311. package/dist/esm-node/ultramodern-tooling/config/synthesize.js +109 -0
  312. package/dist/esm-node/ultramodern-tooling/config/types.js +1 -0
  313. package/dist/esm-node/ultramodern-tooling/config.js +1 -120
  314. package/dist/esm-node/ultramodern-workspace/add-shell.js +222 -0
  315. package/dist/esm-node/ultramodern-workspace/add-vertical/constants.js +6 -0
  316. package/dist/esm-node/ultramodern-workspace/add-vertical/execute.js +136 -0
  317. package/dist/esm-node/ultramodern-workspace/add-vertical/plan.js +206 -0
  318. package/dist/esm-node/ultramodern-workspace/add-vertical/preflight.js +199 -0
  319. package/dist/esm-node/ultramodern-workspace/add-vertical/shell-files.js +66 -0
  320. package/dist/esm-node/ultramodern-workspace/add-vertical/topology.js +109 -0
  321. package/dist/esm-node/ultramodern-workspace/add-vertical/transaction.js +255 -0
  322. package/dist/esm-node/ultramodern-workspace/add-vertical/workspace-state.js +68 -0
  323. package/dist/esm-node/ultramodern-workspace/add-vertical.js +6 -544
  324. package/dist/esm-node/ultramodern-workspace/api/checkout-cart.js +87 -0
  325. package/dist/esm-node/ultramodern-workspace/api/client.js +184 -0
  326. package/dist/esm-node/ultramodern-workspace/api/contracts.js +202 -0
  327. package/dist/esm-node/ultramodern-workspace/api/names.js +34 -0
  328. package/dist/esm-node/ultramodern-workspace/api/rpc.js +206 -0
  329. package/dist/esm-node/ultramodern-workspace/api/service.js +212 -0
  330. package/dist/esm-node/ultramodern-workspace/api/shared.js +227 -0
  331. package/dist/esm-node/ultramodern-workspace/api.js +6 -984
  332. package/dist/esm-node/ultramodern-workspace/app-files.js +51 -51
  333. package/dist/esm-node/ultramodern-workspace/backend-federation.js +282 -0
  334. package/dist/esm-node/ultramodern-workspace/bridge-config/cli.js +31 -0
  335. package/dist/esm-node/ultramodern-workspace/bridge-config/defaults.js +6 -0
  336. package/dist/esm-node/ultramodern-workspace/bridge-config/gates.js +53 -0
  337. package/dist/esm-node/ultramodern-workspace/bridge-config/index.js +4 -0
  338. package/dist/esm-node/ultramodern-workspace/bridge-config/normalize.js +31 -0
  339. package/dist/esm-node/ultramodern-workspace/bridge-config/schema.js +32 -0
  340. package/dist/esm-node/ultramodern-workspace/bridge-config/shared.js +52 -0
  341. package/dist/esm-node/ultramodern-workspace/bridge-config/validation.js +28 -0
  342. package/dist/esm-node/ultramodern-workspace/bridge-config/workspace-packages.js +68 -0
  343. package/dist/esm-node/ultramodern-workspace/bridge-config.js +1 -270
  344. package/dist/esm-node/ultramodern-workspace/codesmith.js +10 -1
  345. package/dist/esm-node/ultramodern-workspace/contracts.js +81 -27
  346. package/dist/esm-node/ultramodern-workspace/delivery-unit-schema/types.js +236 -0
  347. package/dist/esm-node/ultramodern-workspace/delivery-unit-schema/up-projection.js +130 -0
  348. package/dist/esm-node/ultramodern-workspace/delivery-unit-stamp.js +19 -0
  349. package/dist/esm-node/ultramodern-workspace/delivery-unit-sync.js +105 -0
  350. package/dist/esm-node/ultramodern-workspace/delivery-unit.js +22 -0
  351. package/dist/esm-node/ultramodern-workspace/demo-components.js +461 -204
  352. package/dist/esm-node/ultramodern-workspace/descriptors.js +75 -17
  353. package/dist/esm-node/ultramodern-workspace/effect-diagnostics.js +77 -0
  354. package/dist/esm-node/ultramodern-workspace/fs-io.js +27 -18
  355. package/dist/esm-node/ultramodern-workspace/generation-result.js +33 -3
  356. package/dist/esm-node/ultramodern-workspace/index.js +4 -0
  357. package/dist/esm-node/ultramodern-workspace/locales.js +3 -4
  358. package/dist/esm-node/ultramodern-workspace/mf-validation/constants.js +20 -0
  359. package/dist/esm-node/ultramodern-workspace/mf-validation/discovery.js +29 -0
  360. package/dist/esm-node/ultramodern-workspace/mf-validation/inspect.js +47 -0
  361. package/dist/esm-node/ultramodern-workspace/mf-validation/object-literal.js +145 -0
  362. package/dist/esm-node/ultramodern-workspace/mf-validation/path-utils.js +90 -0
  363. package/dist/esm-node/ultramodern-workspace/mf-validation/syntax.js +155 -0
  364. package/dist/esm-node/ultramodern-workspace/mf-validation/types.js +1 -0
  365. package/dist/esm-node/ultramodern-workspace/mf-validation/validate.js +58 -0
  366. package/dist/esm-node/ultramodern-workspace/mf-validation.js +3 -516
  367. package/dist/esm-node/ultramodern-workspace/module-federation/config.js +290 -0
  368. package/dist/esm-node/ultramodern-workspace/module-federation/index.js +5 -0
  369. package/dist/esm-node/ultramodern-workspace/module-federation/reexport-module.js +68 -0
  370. package/dist/esm-node/ultramodern-workspace/module-federation/remote-refs.js +66 -0
  371. package/dist/esm-node/ultramodern-workspace/module-federation/shared-config.js +13 -0
  372. package/dist/esm-node/ultramodern-workspace/module-federation.js +2 -458
  373. package/dist/esm-node/ultramodern-workspace/naming.js +2 -2
  374. package/dist/esm-node/ultramodern-workspace/overlay-baseline-guard.js +351 -0
  375. package/dist/esm-node/ultramodern-workspace/overlays.js +28 -5
  376. package/dist/esm-node/ultramodern-workspace/package-json.js +48 -283
  377. package/dist/esm-node/ultramodern-workspace/package-source.js +7 -1
  378. package/dist/esm-node/ultramodern-workspace/policy.js +784 -10
  379. package/dist/esm-node/ultramodern-workspace/public-surface.js +2 -2
  380. package/dist/esm-node/ultramodern-workspace/routes.js +9 -143
  381. package/dist/esm-node/ultramodern-workspace/shared-patches.js +4 -0
  382. package/dist/esm-node/ultramodern-workspace/shells.js +93 -0
  383. package/dist/esm-node/ultramodern-workspace/tooling-command-catalog.js +101 -0
  384. package/dist/esm-node/ultramodern-workspace/tsconfigs.js +138 -0
  385. package/dist/esm-node/ultramodern-workspace/types.js +16 -1
  386. package/dist/esm-node/ultramodern-workspace/versions.js +35 -26
  387. package/dist/esm-node/ultramodern-workspace/workspace-script-plan.js +125 -0
  388. package/dist/esm-node/ultramodern-workspace/workspace-scripts.js +115 -85
  389. package/dist/esm-node/ultramodern-workspace/workspace-validation-contract.js +605 -0
  390. package/dist/esm-node/ultramodern-workspace/write-app.js +106 -0
  391. package/dist/esm-node/ultramodern-workspace/write-workspace.js +47 -66
  392. package/dist/esm-node/ultramodern-workspace/zerops.js +71 -0
  393. package/dist/types/cli/flags.d.ts +35 -0
  394. package/dist/types/cli/help.d.ts +2 -0
  395. package/dist/types/cli/package-source.d.ts +15 -0
  396. package/dist/types/cli/project-setup.d.ts +8 -0
  397. package/dist/types/cli/prompts.d.ts +4 -0
  398. package/dist/types/locale/en.d.ts +3 -4
  399. package/dist/types/locale/index.d.ts +6 -8
  400. package/dist/types/locale/zh.d.ts +3 -4
  401. package/dist/types/ultramodern-package-source.d.ts +0 -11
  402. package/dist/types/ultramodern-release-cohort.d.ts +30 -0
  403. package/dist/types/ultramodern-tooling/commands/cloudflare-output-verify.d.ts +2 -0
  404. package/dist/types/ultramodern-tooling/commands/context.d.ts +11 -0
  405. package/dist/types/ultramodern-tooling/commands/mf-types.d.ts +2 -0
  406. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.d.ts +12 -0
  407. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.d.ts +4 -0
  408. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.d.ts +1 -0
  409. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.d.ts +3 -0
  410. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.d.ts +5 -0
  411. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.d.ts +3 -0
  412. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.d.ts +2 -0
  413. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.d.ts +4 -0
  414. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.d.ts +3 -0
  415. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.d.ts +3 -0
  416. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.d.ts +7 -0
  417. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.d.ts +3 -0
  418. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-ui-source.d.ts +3 -0
  419. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/help.d.ts +1 -0
  420. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/install.d.ts +2 -0
  421. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/io.d.ts +20 -0
  422. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.d.ts +9 -0
  423. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/package-source.d.ts +3 -0
  424. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.d.ts +27 -0
  425. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.d.ts +26 -0
  426. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.d.ts +10 -0
  427. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.d.ts +4 -0
  428. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect.d.ts +2 -0
  429. package/dist/types/ultramodern-tooling/commands/options.d.ts +2 -0
  430. package/dist/types/ultramodern-tooling/commands/routes-generate.d.ts +2 -0
  431. package/dist/types/ultramodern-tooling/commands/skills.d.ts +2 -0
  432. package/dist/types/ultramodern-tooling/commands/sync-delivery-unit.d.ts +1 -0
  433. package/dist/types/ultramodern-tooling/commands/validate.d.ts +2 -0
  434. package/dist/types/ultramodern-tooling/commands.d.ts +1 -1
  435. package/dist/types/ultramodern-tooling/config/constants.d.ts +3 -0
  436. package/dist/types/ultramodern-tooling/config/index.d.ts +7 -0
  437. package/dist/types/ultramodern-tooling/config/json.d.ts +2 -0
  438. package/dist/types/ultramodern-tooling/config/load.d.ts +2 -0
  439. package/dist/types/ultramodern-tooling/config/metadata.d.ts +4 -0
  440. package/dist/types/ultramodern-tooling/config/normalize.d.ts +22 -0
  441. package/dist/types/ultramodern-tooling/config/synthesize.d.ts +5 -0
  442. package/dist/types/ultramodern-tooling/config/types.d.ts +45 -0
  443. package/dist/types/ultramodern-tooling/config.d.ts +1 -43
  444. package/dist/types/ultramodern-workspace/add-shell.d.ts +14 -0
  445. package/dist/types/ultramodern-workspace/add-vertical/constants.d.ts +4 -0
  446. package/dist/types/ultramodern-workspace/add-vertical/execute.d.ts +9 -0
  447. package/dist/types/ultramodern-workspace/add-vertical/plan.d.ts +2 -0
  448. package/dist/types/ultramodern-workspace/add-vertical/preflight.d.ts +42 -0
  449. package/dist/types/ultramodern-workspace/add-vertical/shell-files.d.ts +6 -0
  450. package/dist/types/ultramodern-workspace/add-vertical/topology.d.ts +9 -0
  451. package/dist/types/ultramodern-workspace/add-vertical/transaction.d.ts +80 -0
  452. package/dist/types/ultramodern-workspace/add-vertical/workspace-state.d.ts +15 -0
  453. package/dist/types/ultramodern-workspace/add-vertical.d.ts +7 -39
  454. package/dist/types/ultramodern-workspace/api/checkout-cart.d.ts +33 -0
  455. package/dist/types/ultramodern-workspace/api/client.d.ts +6 -0
  456. package/dist/types/ultramodern-workspace/api/contracts.d.ts +15 -0
  457. package/dist/types/ultramodern-workspace/api/names.d.ts +41 -0
  458. package/dist/types/ultramodern-workspace/api/rpc.d.ts +41 -0
  459. package/dist/types/ultramodern-workspace/api/service.d.ts +6 -0
  460. package/dist/types/ultramodern-workspace/api/shared.d.ts +10 -0
  461. package/dist/types/ultramodern-workspace/api.d.ts +6 -73
  462. package/dist/types/ultramodern-workspace/app-files.d.ts +4 -10
  463. package/dist/types/ultramodern-workspace/backend-federation.d.ts +11 -0
  464. package/dist/types/ultramodern-workspace/bridge-config/cli.d.ts +3 -0
  465. package/dist/types/ultramodern-workspace/bridge-config/defaults.d.ts +1 -0
  466. package/dist/types/ultramodern-workspace/bridge-config/gates.d.ts +3 -0
  467. package/dist/types/ultramodern-workspace/bridge-config/index.d.ts +4 -0
  468. package/dist/types/ultramodern-workspace/bridge-config/normalize.d.ts +2 -0
  469. package/dist/types/ultramodern-workspace/bridge-config/schema.d.ts +61 -0
  470. package/dist/types/ultramodern-workspace/bridge-config/shared.d.ts +12 -0
  471. package/dist/types/ultramodern-workspace/bridge-config/validation.d.ts +3 -0
  472. package/dist/types/ultramodern-workspace/bridge-config/workspace-packages.d.ts +3 -0
  473. package/dist/types/ultramodern-workspace/bridge-config.d.ts +1 -64
  474. package/dist/types/ultramodern-workspace/codesmith.d.ts +12 -6
  475. package/dist/types/ultramodern-workspace/contracts.d.ts +3 -3
  476. package/dist/types/ultramodern-workspace/delivery-unit-schema/types.d.ts +291 -0
  477. package/dist/types/ultramodern-workspace/delivery-unit-schema/up-projection.d.ts +189 -0
  478. package/dist/types/ultramodern-workspace/delivery-unit-stamp.d.ts +3 -0
  479. package/dist/types/ultramodern-workspace/delivery-unit-sync.d.ts +6 -0
  480. package/dist/types/ultramodern-workspace/delivery-unit.d.ts +8 -0
  481. package/dist/types/ultramodern-workspace/demo-components.d.ts +14 -3
  482. package/dist/types/ultramodern-workspace/descriptors.d.ts +27 -3
  483. package/dist/types/ultramodern-workspace/effect-diagnostics.d.ts +1 -0
  484. package/dist/types/ultramodern-workspace/fs-io.d.ts +2 -8
  485. package/dist/types/ultramodern-workspace/generation-result.d.ts +3 -1
  486. package/dist/types/ultramodern-workspace/index.d.ts +6 -1
  487. package/dist/types/ultramodern-workspace/locales.d.ts +1 -133
  488. package/dist/types/ultramodern-workspace/mf-validation/constants.d.ts +5 -0
  489. package/dist/types/ultramodern-workspace/mf-validation/discovery.d.ts +2 -0
  490. package/dist/types/ultramodern-workspace/mf-validation/inspect.d.ts +2 -0
  491. package/dist/types/ultramodern-workspace/mf-validation/object-literal.d.ts +4 -0
  492. package/dist/types/ultramodern-workspace/mf-validation/path-utils.d.ts +11 -0
  493. package/dist/types/ultramodern-workspace/mf-validation/syntax.d.ts +5 -0
  494. package/dist/types/ultramodern-workspace/mf-validation/types.d.ts +33 -0
  495. package/dist/types/ultramodern-workspace/mf-validation/validate.d.ts +4 -0
  496. package/dist/types/ultramodern-workspace/mf-validation.d.ts +4 -27
  497. package/dist/types/ultramodern-workspace/module-federation/config.d.ts +5 -0
  498. package/dist/types/ultramodern-workspace/module-federation/index.d.ts +4 -0
  499. package/dist/types/ultramodern-workspace/module-federation/reexport-module.d.ts +4 -0
  500. package/dist/types/ultramodern-workspace/module-federation/remote-refs.d.ts +3 -0
  501. package/dist/types/ultramodern-workspace/module-federation/shared-config.d.ts +2 -0
  502. package/dist/types/ultramodern-workspace/module-federation.d.ts +2 -17
  503. package/dist/types/ultramodern-workspace/naming.d.ts +0 -2
  504. package/dist/types/ultramodern-workspace/overlay-baseline-guard.d.ts +57 -0
  505. package/dist/types/ultramodern-workspace/package-json.d.ts +2 -17
  506. package/dist/types/ultramodern-workspace/package-source.d.ts +1 -0
  507. package/dist/types/ultramodern-workspace/policy.d.ts +254 -47
  508. package/dist/types/ultramodern-workspace/public-api.d.ts +1 -1
  509. package/dist/types/ultramodern-workspace/public-surface.d.ts +5 -15
  510. package/dist/types/ultramodern-workspace/routes.d.ts +0 -9
  511. package/dist/types/ultramodern-workspace/shared-patches.d.ts +1 -0
  512. package/dist/types/ultramodern-workspace/shells.d.ts +51 -0
  513. package/dist/types/ultramodern-workspace/tooling-command-catalog.d.ts +18 -0
  514. package/dist/types/ultramodern-workspace/tsconfigs.d.ts +13 -0
  515. package/dist/types/ultramodern-workspace/types.d.ts +134 -3
  516. package/dist/types/ultramodern-workspace/versions.d.ts +35 -26
  517. package/dist/types/ultramodern-workspace/workspace-script-plan.d.ts +63 -0
  518. package/dist/types/ultramodern-workspace/workspace-scripts.d.ts +15 -5
  519. package/dist/types/ultramodern-workspace/workspace-validation-contract.d.ts +243 -0
  520. package/dist/types/ultramodern-workspace/write-app.d.ts +4 -0
  521. package/dist/types/ultramodern-workspace/write-workspace.d.ts +3 -3
  522. package/dist/types/ultramodern-workspace/zerops.d.ts +2 -0
  523. package/package.json +15 -13
  524. package/template-workspace/.gitignore.handlebars +8 -0
  525. package/template-workspace/.modernjs/release-cohort.json +208 -0
  526. package/template-workspace/AGENTS.md.handlebars +16 -89
  527. package/template-workspace/README.md.handlebars +17 -16
  528. package/template-workspace/patches/@module-federation__bridge-react@2.8.0.patch +185 -0
  529. package/template-workspace/patches/@module-federation__modern-js-v3@2.8.0.patch +259 -0
  530. package/template-workspace/patches/@tanstack__router-core@1.171.14.patch +123 -0
  531. package/template-workspace/patches/drizzle-orm-ts7-strict-declarations.patch +452 -0
  532. package/template-workspace/patches/effect-schema-error-type-id.patch +18 -0
  533. package/template-workspace/pnpm-workspace.yaml.handlebars +8 -25
  534. package/template-workspace/scripts/bootstrap-agent-skills.mjs +11 -3
  535. package/templates/app/shell-frame.tsx +5 -4
  536. package/templates/workspace/apps/modern.config.shared-module-federation.ts.handlebars +37 -0
  537. package/templates/workspace/apps/modern.config.ts.handlebars +191 -0
  538. package/templates/workspace/apps/shared/src/routes/ultramodern-jsonld.ts.handlebars +119 -0
  539. package/templates/workspace/apps/shared/src/routes/ultramodern-route-metadata.ts.handlebars +21 -0
  540. package/templates/workspace/apps/shell-super-app/src/routes/[lang]/page.tsx.handlebars +49 -0
  541. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.helpers.tsx.handlebars +27 -0
  542. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.imports.tsx.handlebars +4 -0
  543. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.tsx.handlebars +44 -0
  544. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.worker.helpers.tsx.handlebars +17 -0
  545. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.worker.imports.tsx.handlebars +1 -0
  546. package/templates/workspace/packages/shared-design-tokens/tokens.css.handlebars +7 -0
  547. package/templates/workspace/tailwind.config.ts.handlebars +3 -0
  548. package/templates/workspace/verticals/server/checkout-cart-handlers.ts.handlebars +49 -0
  549. package/templates/workspace/verticals/server/checkout-cart-state.ts.handlebars +23 -0
  550. package/templates/workspace/verticals/shared/api.checkout-cart-contract-fields.ts.handlebars +1 -0
  551. package/templates/workspace/verticals/shared/api.checkout-cart-endpoints.ts.handlebars +23 -0
  552. package/templates/workspace/verticals/shared/api.checkout-cart-operation-contexts.ts.handlebars +29 -0
  553. package/templates/workspace/verticals/shared/api.checkout-cart-schemas.ts.handlebars +48 -0
  554. package/templates/workspace/verticals/src/api/checkout-cart-client-exports.ts.handlebars +70 -0
  555. package/templates/workspace-scripts/assert-mf-types.mjs.handlebars +4 -4
  556. package/templates/workspace-scripts/check-ultramodern-api-boundaries.mts +40 -2
  557. package/templates/workspace-scripts/generate-node-backend-federation.mjs +379 -0
  558. package/templates/workspace-scripts/generate-public-surface-assets.mjs +5 -5
  559. package/templates/workspace-scripts/materialize-zerops-runtime.mjs +447 -0
  560. package/templates/workspace-scripts/proof-cloudflare-version.mjs +237 -9
  561. package/templates/workspace-scripts/proof-node-backend-federation.mjs +1223 -0
  562. package/templates/workspace-scripts/proof-workerd-ssr.mts +815 -0
  563. package/templates/workspace-scripts/ultramodern-cloudflare-proof.mjs +188 -2
  564. package/templates/workspace-scripts/ultramodern-typecheck.mjs +6 -46
  565. package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +2436 -258
  566. package/template-workspace/patches/@tanstack__router-core@1.171.13.patch +0 -51
@@ -1,15 +1,13 @@
1
1
  import "node:module";
2
2
  const ZH_LOCALE = {
3
3
  prompt: {
4
- projectName: '请输入项目名称: ',
5
- legacyModernJsConfirmation: '输入 "{confirmation}" 以继续使用原始 Modern.js 初始化: '
4
+ projectName: '请输入项目名称: '
6
5
  },
7
6
  error: {
8
7
  projectNameEmpty: '错误: 项目名称不能为空',
9
8
  directoryExists: '错误: 目录 "{projectName}" 已存在且不为空',
10
9
  verticalNameMissing: '错误: 缺少 MicroVertical 名称。请使用 <名称> --vertical、--vertical=<名称> 或 --vertical-name <名称>。',
11
10
  verticalNameAmbiguous: '错误: MicroVertical 名称不明确:{firstSource} 的 "{firstName}" 与 {secondSource} 的 "{secondName}" 不一致。',
12
- legacyModernJsNotConfirmed: '已中止。UltraModern.js 仍是默认的免交互初始化方案。',
13
11
  createFailed: '创建项目时出错:'
14
12
  },
15
13
  message: {
@@ -18,8 +16,7 @@ const ZH_LOCALE = {
18
16
  nextSteps: '📋 下一步:',
19
17
  step1: 'cd {projectName}',
20
18
  step2: 'pnpm install',
21
- step3: 'pnpm dev',
22
- legacyModernJsWarning: "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n严重警告:你正在退出 ULTRAMODERN.JS 默认配置。\n免交互默认值是最佳 UltraModern.js 配置:\n结构化 SuperApp 工作区、presetUltramodern、TanStack Router、\n严格 Effect API 运行时、Tailwind CSS v4,以及 BleedingDev 包版本队列。\n原始 Modern.js 初始化是危险的显式选择路径。\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
19
+ step3: 'pnpm dev'
23
20
  },
24
21
  help: {
25
22
  title: '🚀 UltraModern.js 项目创建工具',
@@ -53,7 +50,9 @@ const ZH_LOCALE = {
53
50
  optionVerticalName: ' --vertical-name <名称> 为自动化工作流显式指定 MicroVertical 名称',
54
51
  optionDryRun: ' --dry-run 预览 MicroVertical 修改计划但不写入文件(与 --vertical 一起使用)',
55
52
  optionCodeSmithOverlay: ' --codesmith-overlay <包或路径> 生成完成后运行显式配置的 CodeSmith overlay',
56
- optionLegacyModernJs: ' --legacy-modern-js 在大型警告和输入确认后,选择原始 Modern.js 初始化',
53
+ optionPreset: ' --preset=<full-stack|api-only|ui-only> MicroVertical 限定为仅 API 或仅 UI 表面(默认 full-stack)',
54
+ optionApiProtocol: ' --api-protocol=<rest|rpc> 选择 MicroVertical API 协议(默认 rest)',
55
+ optionHorizontalRemote: ' --horizontal-remote 生成仅包含组件的 Horizontal Remote 交付单元',
57
56
  examples: '💡 示例:',
58
57
  example1: ' pnpm dlx @bleedingdev/modern-js-create my-workspace',
59
58
  example2: ' pnpm dlx @bleedingdev/modern-js-create my-workspace --lang zh',
@@ -38,27 +38,4 @@ function modernPackageSpecifier(packageName, packageSource) {
38
38
  if (!packageSource.aliasScope) return packageSource.modernPackageVersion;
39
39
  return `npm:${modernAliasPackageName(packageName, packageSource)}@${packageSource.modernPackageVersion}`;
40
40
  }
41
- function modernPackageAliases(packageNames, packageSource) {
42
- if (!packageSource.aliasScope) return;
43
- return Object.fromEntries(packageNames.map((packageName)=>[
44
- packageName,
45
- modernAliasPackageName(packageName, packageSource)
46
- ]));
47
- }
48
- function createModernPackagesMetadata(packageNames, packageSource, options = {}) {
49
- const includeAliases = options.includeAliases ?? Boolean(packageSource.aliasScope);
50
- const aliases = includeAliases ? modernPackageAliases(packageNames, packageSource) : void 0;
51
- return {
52
- packages: [
53
- ...packageNames
54
- ],
55
- specifier: modernPackageVersion(packageSource),
56
- ...packageSource.registry ? {
57
- registry: packageSource.registry
58
- } : {},
59
- ...aliases ? {
60
- aliases
61
- } : {}
62
- };
63
- }
64
- export { BLEEDINGDEV_CREATE_PACKAGE, BLEEDINGDEV_FRAMEWORK_VERSION_ENV, BLEEDINGDEV_PACKAGE_NAME_PREFIX, BLEEDINGDEV_PACKAGE_SCOPE, ULTRAMODERN_SINGLE_APP_MODERN_PACKAGES, ULTRAMODERN_WORKSPACE_MODERN_PACKAGES, WORKSPACE_PACKAGE_VERSION, createModernPackagesMetadata, modernAliasPackageName, modernPackageAliases, modernPackageSpecifier, modernPackageVersion };
41
+ export { BLEEDINGDEV_CREATE_PACKAGE, BLEEDINGDEV_FRAMEWORK_VERSION_ENV, BLEEDINGDEV_PACKAGE_NAME_PREFIX, BLEEDINGDEV_PACKAGE_SCOPE, ULTRAMODERN_SINGLE_APP_MODERN_PACKAGES, ULTRAMODERN_WORKSPACE_MODERN_PACKAGES, WORKSPACE_PACKAGE_VERSION, modernPackageSpecifier, modernPackageVersion };
@@ -0,0 +1,134 @@
1
+ import "node:module";
2
+ import node_fs from "node:fs";
3
+ import node_path from "node:path";
4
+ import { createPackageRoot, writeFile } from "./ultramodern-workspace/fs-io.js";
5
+ const RELEASE_COHORT_PROJECTION_PATH = '.modernjs/release-cohort.json';
6
+ const RELEASE_COHORT_PROJECTION_SCHEMA = 'bleedingdev.ultramodern.release-cohort';
7
+ const RELEASE_COHORT_PROJECTION_SCHEMA_VERSION = 1;
8
+ function assert(condition, message) {
9
+ if (!condition) throw new Error(message);
10
+ }
11
+ function isRecord(value) {
12
+ return Boolean(value) && 'object' == typeof value && !Array.isArray(value);
13
+ }
14
+ function assertExactKeys(value, expectedKeys, label) {
15
+ assert(isRecord(value), `${label} must be a JSON object.`);
16
+ const actualKeys = Object.keys(value).sort();
17
+ const expected = [
18
+ ...expectedKeys
19
+ ].sort();
20
+ assert(JSON.stringify(actualKeys) === JSON.stringify(expected), `${label} has unknown or missing fields: expected ${expected.join(', ')}; found ${actualKeys.join(', ')}.`);
21
+ }
22
+ function assertNonEmptyString(value, label) {
23
+ assert('string' == typeof value && value.length > 0 && value.trim() === value, `${label} must be a non-empty trimmed string.`);
24
+ }
25
+ function sourcePackageSuffix(sourceName) {
26
+ assert(sourceName.startsWith('@modern-js/') && sourceName.lastIndexOf('/') > 0, `Release cohort sourceName must be an @modern-js package: ${sourceName}.`);
27
+ return sourceName.slice(sourceName.lastIndexOf('/') + 1);
28
+ }
29
+ function targetAliasProfile(sourceName, targetName) {
30
+ const match = /^@([^/]+)\/([^/]+)$/u.exec(targetName);
31
+ assert(match, `Release cohort targetName is invalid: ${targetName}.`);
32
+ const [, aliasScope, targetPackageName] = match;
33
+ const suffix = sourcePackageSuffix(sourceName);
34
+ assert(targetPackageName.endsWith(suffix), `Release cohort alias ${sourceName} -> ${targetName} does not preserve the source package suffix.`);
35
+ return {
36
+ aliasPackageNamePrefix: targetPackageName.slice(0, targetPackageName.length - suffix.length),
37
+ aliasScope
38
+ };
39
+ }
40
+ function parseUltramodernReleaseCohort(value) {
41
+ assertExactKeys(value, [
42
+ 'aliases',
43
+ 'packages',
44
+ 'release',
45
+ 'schema',
46
+ 'schemaVersion',
47
+ 'source'
48
+ ], 'Release cohort projection');
49
+ const cohort = value;
50
+ assert(cohort.schema === RELEASE_COHORT_PROJECTION_SCHEMA && cohort.schemaVersion === RELEASE_COHORT_PROJECTION_SCHEMA_VERSION, `Unknown release cohort projection schema ${String(cohort.schema)}@${String(cohort.schemaVersion)}.`);
51
+ assertExactKeys(cohort.source, [
52
+ 'commit',
53
+ 'repository'
54
+ ], 'Release cohort source');
55
+ assertNonEmptyString(cohort.source.commit, 'Release cohort source.commit');
56
+ assertNonEmptyString(cohort.source.repository, 'Release cohort source.repository');
57
+ assertExactKeys(cohort.release, [
58
+ 'tag',
59
+ 'version'
60
+ ], 'Release cohort release');
61
+ assertNonEmptyString(cohort.release.tag, 'Release cohort release.tag');
62
+ assertNonEmptyString(cohort.release.version, 'Release cohort release.version');
63
+ assert(isRecord(cohort.aliases), 'Release cohort aliases must be an object.');
64
+ assert(Array.isArray(cohort.packages), 'Release cohort packages must be an array.');
65
+ const aliasNames = Object.keys(cohort.aliases).sort();
66
+ assert(aliasNames.length > 0, 'Release cohort aliases must not be empty.');
67
+ const packageSourceNames = [];
68
+ const packageTargetNames = new Set();
69
+ for (const [index, item] of cohort.packages.entries()){
70
+ assertExactKeys(item, [
71
+ 'sourceName',
72
+ 'targetName',
73
+ 'version'
74
+ ], `Release cohort packages[${index}]`);
75
+ assertNonEmptyString(item.sourceName, `Release cohort packages[${index}].sourceName`);
76
+ assertNonEmptyString(item.targetName, `Release cohort packages[${index}].targetName`);
77
+ assertNonEmptyString(item.version, `Release cohort packages[${index}].version`);
78
+ sourcePackageSuffix(item.sourceName);
79
+ assert(cohort.aliases[item.sourceName] === item.targetName, `Release cohort packages[${index}] targetName does not match aliases for ${item.sourceName}.`);
80
+ assert(item.version === cohort.release.version, `Release cohort packages[${index}] version does not match release.version.`);
81
+ packageSourceNames.push(item.sourceName);
82
+ assert(!packageTargetNames.has(item.targetName), `Release cohort packages contains duplicate targetName ${item.targetName}.`);
83
+ packageTargetNames.add(item.targetName);
84
+ }
85
+ assert(JSON.stringify(packageSourceNames) === JSON.stringify(aliasNames), 'Release cohort packages must exactly match aliases in source-name order.');
86
+ return cohort;
87
+ }
88
+ function readCohortFile(filePath) {
89
+ const stat = node_fs.lstatSync(filePath, {
90
+ throwIfNoEntry: false
91
+ });
92
+ assert(stat?.isFile() && !stat.isSymbolicLink(), `Authenticated release cohort projection is missing or unsafe: ${filePath}.`);
93
+ let value;
94
+ try {
95
+ value = JSON.parse(node_fs.readFileSync(filePath, 'utf8'));
96
+ } catch (error) {
97
+ throw new Error(`Authenticated release cohort projection is invalid JSON: ${error instanceof Error ? error.message : String(error)}.`);
98
+ }
99
+ return parseUltramodernReleaseCohort(value);
100
+ }
101
+ function readCreateReleaseCohort() {
102
+ return readCohortFile(node_path.join(createPackageRoot, 'template-workspace', RELEASE_COHORT_PROJECTION_PATH));
103
+ }
104
+ function hasCreateReleaseCohort() {
105
+ return node_fs.existsSync(node_path.join(createPackageRoot, 'template-workspace', RELEASE_COHORT_PROJECTION_PATH));
106
+ }
107
+ function isCreatePackageSourceCheckout() {
108
+ return node_fs.existsSync(node_path.join(createPackageRoot, 'src'));
109
+ }
110
+ function readWorkspaceReleaseCohort(workspaceRoot) {
111
+ return readCohortFile(node_path.join(workspaceRoot, RELEASE_COHORT_PROJECTION_PATH));
112
+ }
113
+ function copyCreateReleaseCohort(workspaceRoot) {
114
+ const sourcePath = node_path.join(createPackageRoot, 'template-workspace', RELEASE_COHORT_PROJECTION_PATH);
115
+ const cohort = readCohortFile(sourcePath);
116
+ writeFile(workspaceRoot, RELEASE_COHORT_PROJECTION_PATH, node_fs.readFileSync(sourcePath, 'utf8'));
117
+ return cohort;
118
+ }
119
+ function assertReleaseCohortPackageSource(cohort, packageSource) {
120
+ if ('install' !== packageSource.strategy) return;
121
+ assert(packageSource.modernPackageVersion === cohort.release.version, `Package source release ${packageSource.modernPackageVersion} does not match authenticated release cohort ${cohort.release.version}.`);
122
+ let expectedProfile;
123
+ for (const item of cohort.packages){
124
+ const profile = targetAliasProfile(item.sourceName, item.targetName);
125
+ expectedProfile ??= profile;
126
+ assert(profile.aliasScope === expectedProfile.aliasScope && profile.aliasPackageNamePrefix === expectedProfile.aliasPackageNamePrefix, 'Authenticated release cohort aliases cannot be represented by one package-source profile.');
127
+ }
128
+ assert(packageSource.aliasScope?.replace(/^@/u, '') === expectedProfile?.aliasScope && (packageSource.aliasPackageNamePrefix ?? '') === expectedProfile?.aliasPackageNamePrefix, 'Package source aliases rebind the authenticated release cohort.');
129
+ return cohort;
130
+ }
131
+ function releaseCohortSelectors(cohort) {
132
+ return cohort.packages.map((item)=>`${item.targetName}@${item.version}`).sort();
133
+ }
134
+ export { RELEASE_COHORT_PROJECTION_PATH, assertReleaseCohortPackageSource, copyCreateReleaseCohort, hasCreateReleaseCohort, isCreatePackageSourceCheckout, parseUltramodernReleaseCohort, readCreateReleaseCohort, readWorkspaceReleaseCohort, releaseCohortSelectors };
@@ -0,0 +1,89 @@
1
+ import "node:module";
2
+ import node_path from "node:path";
3
+ import { readUltramodernConfig, workspaceAppsFromToolingConfig } from "../config.js";
4
+ import { runRenderedModule } from "./context.js";
5
+ import { hasFlag, readOption } from "./options.js";
6
+ const resolveCloudflareOutputVerifyTargets = (args, context)=>{
7
+ const outputDirectory = readOption(args, '--output');
8
+ const appId = readOption(args, '--app');
9
+ if (outputDirectory && appId) throw new Error('Use either --app or --output, not both.');
10
+ const targets = outputDirectory ? [
11
+ {
12
+ label: outputDirectory,
13
+ outputDirectory: node_path.resolve(context.invocationCwd, outputDirectory)
14
+ }
15
+ ] : workspaceAppsFromToolingConfig(readUltramodernConfig(context.workspaceRoot)).filter((app)=>!appId || app.id === appId).map((app)=>({
16
+ label: app.id,
17
+ outputDirectory: node_path.join(context.workspaceRoot, app.directory, '.output')
18
+ }));
19
+ if (0 === targets.length) throw new Error(`No generated UltraModern app matched ${appId}.`);
20
+ return targets;
21
+ };
22
+ const renderCloudflareOutputVerifyModule = ({ workspaceRoot, targets, scanRoots, excludePaths, importWorker })=>`
23
+ import { createRequire } from 'node:module';
24
+ import path from 'node:path';
25
+
26
+ const workspaceRoot = ${JSON.stringify(workspaceRoot)};
27
+ const targets = ${JSON.stringify(targets, null, 2)};
28
+ const scanRoots = ${JSON.stringify(scanRoots)};
29
+ const excludePaths = ${JSON.stringify(excludePaths)};
30
+ const verifierRequire = createRequire(path.join(workspaceRoot, 'package.json'));
31
+ const {
32
+ verifyCloudflareOutput,
33
+ verifyCloudflareOutputMutationPolicy,
34
+ } = verifierRequire('@modern-js/app-tools/cloudflare-output-verifier');
35
+
36
+ let failed = false;
37
+ for (const target of targets) {
38
+ const result = await verifyCloudflareOutput({
39
+ outputDirectory: target.outputDirectory,
40
+ importWorker: ${JSON.stringify(importWorker)},
41
+ });
42
+ if (result.ok) {
43
+ console.log(\`[ultramodern] Cloudflare output verified: \${target.label}\`);
44
+ } else {
45
+ failed = true;
46
+ console.error(\`[ultramodern] Cloudflare output failed: \${target.label}\`);
47
+ for (const issue of result.issues) {
48
+ console.error(\`- \${issue.code}: \${issue.message}\${issue.path ? \` (\${issue.path})\` : ''}\`);
49
+ }
50
+ }
51
+ }
52
+
53
+ if (scanRoots.length > 0) {
54
+ const policyResult = await verifyCloudflareOutputMutationPolicy({ scanRoots, excludePaths });
55
+ if (!policyResult.ok) {
56
+ failed = true;
57
+ console.error('[ultramodern] generated-output mutation policy failed');
58
+ for (const issue of policyResult.issues) {
59
+ console.error(\`- \${issue.code}: \${issue.message}\${issue.path ? \` (\${issue.path})\` : ''}\`);
60
+ }
61
+ }
62
+ }
63
+
64
+ process.exit(failed ? 1 : 0);
65
+ `;
66
+ function runCloudflareOutputVerify(args, context) {
67
+ if (args.includes('--help') || args.includes('-h')) {
68
+ process.stdout.write(`Usage:
69
+ modern-js-create ultramodern cloudflare-output-verify [--app <id> | --output <dir>] [--no-import-worker] [--no-source-scan]
70
+
71
+ Verifies generated Cloudflare output against the UltraModern worker contract.
72
+ Without --app or --output, every generated workspace app is verified.
73
+ `);
74
+ return 0;
75
+ }
76
+ const source = renderCloudflareOutputVerifyModule({
77
+ workspaceRoot: context.workspaceRoot,
78
+ targets: resolveCloudflareOutputVerifyTargets(args, context),
79
+ scanRoots: hasFlag(args, '--no-source-scan') ? [] : [
80
+ context.workspaceRoot
81
+ ],
82
+ excludePaths: [
83
+ node_path.join(context.workspaceRoot, "scripts", 'validate-ultramodern-workspace.mts')
84
+ ],
85
+ importWorker: !hasFlag(args, '--no-import-worker')
86
+ });
87
+ return runRenderedModule(source, context);
88
+ }
89
+ export { runCloudflareOutputVerify };
@@ -0,0 +1,67 @@
1
+ import "node:module";
2
+ import { spawnSync } from "node:child_process";
3
+ import node_fs from "node:fs";
4
+ import node_os from "node:os";
5
+ import node_path from "node:path";
6
+ import { fileURLToPath } from "node:url";
7
+ import { resolveCreatePackageRoot } from "../../create-package-root.js";
8
+ import { generatedToolingCommandList, generatedToolingCommands } from "../../ultramodern-workspace/tooling-command-catalog.js";
9
+ const context_dirname = node_path.dirname(fileURLToPath(import.meta.url));
10
+ const createPackageRoot = resolveCreatePackageRoot(context_dirname);
11
+ function printHelp() {
12
+ const commands = [
13
+ ...generatedToolingCommandList().map((command)=>` ${command}`),
14
+ ' skills install',
15
+ ' skills check'
16
+ ].join('\n');
17
+ process.stdout.write(`Usage:
18
+ modern-js-create ultramodern <command> [args]
19
+
20
+ Commands:
21
+ ${commands}
22
+ `);
23
+ }
24
+ function spawnNodeScript(relativeScriptPath, args, context, options = {}) {
25
+ const scriptPath = node_path.join(createPackageRoot, relativeScriptPath);
26
+ const result = spawnSync(process.execPath, [
27
+ scriptPath,
28
+ ...args
29
+ ], {
30
+ cwd: options.cwd ?? context.workspaceRoot,
31
+ env: {
32
+ ...process.env,
33
+ ULTRAMODERN_WORKSPACE_ROOT: context.workspaceRoot
34
+ },
35
+ stdio: 'inherit'
36
+ });
37
+ if (result.error) throw result.error;
38
+ return result.status ?? 1;
39
+ }
40
+ function runTemplateBackedToolingCommand(command, args, context) {
41
+ const toolingCommand = generatedToolingCommands.find((candidate)=>candidate.command === command);
42
+ if (!toolingCommand?.templatePath) return;
43
+ return spawnNodeScript(toolingCommand.templatePath, args, context, {
44
+ cwd: 'invocation' === toolingCommand.cwd ? context.invocationCwd : context.workspaceRoot
45
+ });
46
+ }
47
+ function runRenderedModule(source, context) {
48
+ const tempDir = node_fs.mkdtempSync(node_path.join(node_os.tmpdir(), 'ultramodern-tool-'));
49
+ const tempFile = node_path.join(tempDir, 'command.mjs');
50
+ try {
51
+ node_fs.writeFileSync(tempFile, source, 'utf-8');
52
+ const result = spawnSync(process.execPath, [
53
+ tempFile
54
+ ], {
55
+ cwd: context.workspaceRoot,
56
+ stdio: 'inherit'
57
+ });
58
+ if (result.error) throw result.error;
59
+ return result.status ?? 1;
60
+ } finally{
61
+ node_fs.rmSync(tempDir, {
62
+ force: true,
63
+ recursive: true
64
+ });
65
+ }
66
+ }
67
+ export { createPackageRoot, printHelp, runRenderedModule, runTemplateBackedToolingCommand, spawnNodeScript };
@@ -0,0 +1,18 @@
1
+ import "node:module";
2
+ import { validateModuleFederationTypes } from "../../ultramodern-workspace/mf-validation.js";
3
+ function runMfTypes(args, context) {
4
+ if (args.includes('--help') || args.includes('-h')) {
5
+ process.stdout.write(`Usage:
6
+ modern-js-create ultramodern mf-types [app-dir...]
7
+
8
+ Checks real Module Federation config files and DTS archives for exposed apps.
9
+ `);
10
+ return 0;
11
+ }
12
+ validateModuleFederationTypes({
13
+ workspaceRoot: context.workspaceRoot,
14
+ appDirs: args.length > 0 ? args : void 0
15
+ });
16
+ return 0;
17
+ }
18
+ export { runMfTypes };
@@ -0,0 +1,155 @@
1
+ import "node:module";
2
+ import node_fs from "node:fs";
3
+ import node_path from "node:path";
4
+ import { readJsonFile, writeJsonFile } from "./io.js";
5
+ import { updateUltramodernConfigToolchain } from "./toolchain-pins.js";
6
+ const packageSourceOwnedKeys = [
7
+ 'strategy',
8
+ 'modernPackageVersion',
9
+ 'registry',
10
+ 'aliasScope',
11
+ 'aliasPackageNamePrefix'
12
+ ];
13
+ const retiredPackageSourceKeys = [
14
+ 'generatedWorkspacePackages',
15
+ 'metadata',
16
+ 'modernPackages'
17
+ ];
18
+ function requireObject(value, label) {
19
+ if (!value || 'object' != typeof value || Array.isArray(value)) throw new Error(`${label} must be an object.`);
20
+ return value;
21
+ }
22
+ function reconcilePackageSourceMetadata(value, { canonical, label, ownedKeys }) {
23
+ const existing = void 0 === value ? {} : requireObject(value, label);
24
+ const frameworkOwnedKeys = new Set([
25
+ ...ownedKeys,
26
+ ...retiredPackageSourceKeys
27
+ ]);
28
+ for (const key of Object.keys(canonical))if (!frameworkOwnedKeys.has(key)) throw new Error(`${label} canonical key ${key} is not framework-owned.`);
29
+ const extensionEntries = Object.entries(existing).filter(([key])=>!frameworkOwnedKeys.has(key));
30
+ const next = Object.fromEntries(extensionEntries);
31
+ Object.assign(next, canonical);
32
+ const expectedKeys = [
33
+ ...extensionEntries.map(([key])=>key),
34
+ ...Object.keys(canonical)
35
+ ];
36
+ const actualKeys = Object.keys(next);
37
+ if (actualKeys.length !== expectedKeys.length || actualKeys.some((key, index)=>key !== expectedKeys[index])) throw new Error(`${label} could not establish exact package-source keys.`);
38
+ for (const [key, extensionValue] of extensionEntries)if (!Object.is(next[key], extensionValue)) throw new Error(`${label} could not preserve extension key ${key}.`);
39
+ for (const key of frameworkOwnedKeys){
40
+ const shouldExist = Object.hasOwn(canonical, key);
41
+ if (Object.hasOwn(next, key) !== shouldExist || shouldExist && !Object.is(next[key], canonical[key])) throw new Error(`${label} could not establish exact postcondition for ${key}.`);
42
+ }
43
+ return next;
44
+ }
45
+ function reconcileCompactPackageSourceMetadata(value, packageSource) {
46
+ return reconcilePackageSourceMetadata(value, {
47
+ canonical: {
48
+ strategy: packageSource.strategy,
49
+ modernPackageVersion: packageSource.modernPackageVersion,
50
+ ...packageSource.registry ? {
51
+ registry: packageSource.registry
52
+ } : {},
53
+ ...packageSource.aliasScope ? {
54
+ aliasScope: packageSource.aliasScope
55
+ } : {},
56
+ ...packageSource.aliasPackageNamePrefix ? {
57
+ aliasPackageNamePrefix: packageSource.aliasPackageNamePrefix
58
+ } : {}
59
+ },
60
+ label: 'packageSource',
61
+ ownedKeys: packageSourceOwnedKeys
62
+ });
63
+ }
64
+ function normalizeStrictEffectApiMetadata(value) {
65
+ let changed = false;
66
+ const backendFederation = value.backendFederation;
67
+ if (backendFederation && 'object' == typeof backendFederation && !Array.isArray(backendFederation) && Object.hasOwn(backendFederation, 'entry')) {
68
+ delete backendFederation.entry;
69
+ changed = true;
70
+ }
71
+ const api = value.api;
72
+ if (!api || 'object' != typeof api || Array.isArray(api)) return changed;
73
+ if (void 0 !== api.backendFederation) {
74
+ delete api.backendFederation;
75
+ changed = true;
76
+ }
77
+ const oldEffect = api.effect;
78
+ if (oldEffect && 'object' == typeof oldEffect && !Array.isArray(oldEffect)) {
79
+ if (void 0 === api.stem && 'string' == typeof oldEffect.stem) {
80
+ api.stem = oldEffect.stem;
81
+ changed = true;
82
+ }
83
+ if (void 0 === api.prefix && 'string' == typeof oldEffect.prefix) {
84
+ api.prefix = oldEffect.prefix;
85
+ changed = true;
86
+ }
87
+ if (void 0 === api.consumedBy && Array.isArray(oldEffect.consumedBy)) {
88
+ api.consumedBy = oldEffect.consumedBy;
89
+ changed = true;
90
+ }
91
+ delete api.effect;
92
+ changed = true;
93
+ }
94
+ if ('effect' !== api.runtime) {
95
+ api.runtime = 'effect';
96
+ changed = true;
97
+ }
98
+ if (api.bff && 'object' == typeof api.bff && !Array.isArray(api.bff)) {
99
+ if (true !== api.bff.strictEffectApproach) {
100
+ api.bff.strictEffectApproach = true;
101
+ changed = true;
102
+ }
103
+ }
104
+ if ('string' == typeof value.path) {
105
+ const directServerEntry = `${value.path}/api/index.ts`;
106
+ if ('string' == typeof api.serverEntry && /\/api\/effect\/index\.[cm]?[jt]sx?$/u.test(api.serverEntry)) {
107
+ api.serverEntry = directServerEntry;
108
+ changed = true;
109
+ }
110
+ if (api.contract && 'object' == typeof api.contract && !Array.isArray(api.contract)) {
111
+ if ('./shared/effect/api' === api.contract.export) {
112
+ api.contract.export = './api';
113
+ changed = true;
114
+ }
115
+ if ('string' == typeof api.contract.path && /\/shared\/effect\/api\.[cm]?[jt]sx?$/u.test(api.contract.path)) {
116
+ api.contract.path = `${value.path}/shared/api.ts`;
117
+ changed = true;
118
+ }
119
+ }
120
+ if (api.client && 'object' == typeof api.client && !Array.isArray(api.client)) {
121
+ if ('./effect/client' === api.client.export) {
122
+ api.client.export = './api/client';
123
+ changed = true;
124
+ }
125
+ if ('string' == typeof api.client.path && /\/src\/effect\/[^/]+-client\.[cm]?ts$/u.test(api.client.path)) {
126
+ const basename = node_path.basename(api.client.path);
127
+ api.client.path = `${value.path}/src/api/${basename}`;
128
+ changed = true;
129
+ }
130
+ }
131
+ if (void 0 === api.serverEntry && 'effect' === api.runtime) {
132
+ api.serverEntry = directServerEntry;
133
+ changed = true;
134
+ }
135
+ }
136
+ return changed;
137
+ }
138
+ function updateUltramodernConfig(io, config, packageSource) {
139
+ const configPath = node_path.join(io.workspaceRoot, '.modernjs/ultramodern.json');
140
+ config.packageSource = reconcileCompactPackageSourceMetadata(config.packageSource, packageSource);
141
+ if (config.generator && 'object' == typeof config.generator && !Array.isArray(config.generator) && 'string' == typeof config.generator.version) config.generator.version = packageSource.modernPackageVersion;
142
+ updateUltramodernConfigToolchain(config);
143
+ for (const app of config.topology?.apps ?? [])if (app && 'object' == typeof app && !Array.isArray(app)) normalizeStrictEffectApiMetadata(app);
144
+ writeJsonFile(io, configPath, config);
145
+ }
146
+ function updateReferenceTopology(io) {
147
+ const topologyPath = node_path.join(io.workspaceRoot, 'topology/reference-topology.json');
148
+ if (!node_fs.existsSync(topologyPath)) return false;
149
+ const topology = readJsonFile(topologyPath);
150
+ let changed = false;
151
+ for (const vertical of topology.verticals ?? [])if (vertical && 'object' == typeof vertical && !Array.isArray(vertical)) changed = normalizeStrictEffectApiMetadata(vertical) || changed;
152
+ if (changed) writeJsonFile(io, topologyPath, topology);
153
+ return changed;
154
+ }
155
+ export { reconcileCompactPackageSourceMetadata, reconcilePackageSourceMetadata, updateReferenceTopology, updateUltramodernConfig };
@@ -0,0 +1,13 @@
1
+ import "node:module";
2
+ import { ensureGeneratedPatchFile, removeGeneratedPatchFileIfUnchanged } from "./generated-patches.js";
3
+ import { drizzleOrmDeclarationPatchPath, drizzleOrmDeclarationPatchSourcePath, effectDeclarationPatchPath, effectDeclarationPatchSourcePath, moduleFederationBridgeReactPatchPath, moduleFederationBridgeReactPatchSourcePath, moduleFederationModernJsPatchPath, moduleFederationModernJsPatchSourcePath, tanstackRouterCorePatchPath, tanstackRouterCorePatchSourcePath } from "./policy-constants.js";
4
+ function ensureGeneratedDeclarationPatches(io, options) {
5
+ let changed = false;
6
+ changed = ensureGeneratedPatchFile(io, moduleFederationModernJsPatchPath, moduleFederationModernJsPatchSourcePath) || changed;
7
+ changed = ensureGeneratedPatchFile(io, moduleFederationBridgeReactPatchPath, moduleFederationBridgeReactPatchSourcePath) || changed;
8
+ changed = ensureGeneratedPatchFile(io, effectDeclarationPatchPath, effectDeclarationPatchSourcePath) || changed;
9
+ changed = ensureGeneratedPatchFile(io, tanstackRouterCorePatchPath, tanstackRouterCorePatchSourcePath) || changed;
10
+ changed = options.includeDrizzleOrmPatch ? ensureGeneratedPatchFile(io, drizzleOrmDeclarationPatchPath, drizzleOrmDeclarationPatchSourcePath) || changed : removeGeneratedPatchFileIfUnchanged(io, drizzleOrmDeclarationPatchPath, drizzleOrmDeclarationPatchSourcePath) || changed;
11
+ return changed;
12
+ }
13
+ export { ensureGeneratedDeclarationPatches };
@@ -0,0 +1,39 @@
1
+ import "node:module";
2
+ import node_fs from "node:fs";
3
+ import node_path from "node:path";
4
+ function workspaceUsesDependency(workspaceRoot, packageName) {
5
+ const packageJsonPaths = [
6
+ node_path.join(workspaceRoot, 'package.json')
7
+ ];
8
+ for (const workspaceDir of [
9
+ 'apps',
10
+ 'verticals',
11
+ 'packages'
12
+ ]){
13
+ const absoluteWorkspaceDir = node_path.join(workspaceRoot, workspaceDir);
14
+ if (node_fs.existsSync(absoluteWorkspaceDir)) for (const entry of node_fs.readdirSync(absoluteWorkspaceDir, {
15
+ withFileTypes: true
16
+ })){
17
+ if (!entry.isDirectory()) continue;
18
+ const packageJsonPath = node_path.join(absoluteWorkspaceDir, entry.name, 'package.json');
19
+ if (node_fs.existsSync(packageJsonPath)) packageJsonPaths.push(packageJsonPath);
20
+ }
21
+ }
22
+ for (const packageJsonPath of packageJsonPaths){
23
+ const packageJson = JSON.parse(node_fs.readFileSync(packageJsonPath, 'utf-8'));
24
+ for (const field of [
25
+ 'dependencies',
26
+ 'devDependencies',
27
+ 'peerDependencies',
28
+ 'optionalDependencies'
29
+ ]){
30
+ const dependencies = packageJson[field];
31
+ if (dependencies && 'object' == typeof dependencies) {
32
+ if (Object.prototype.hasOwnProperty.call(dependencies, packageName)) return true;
33
+ for (const specifier of Object.values(dependencies))if ('string' == typeof specifier && specifier.startsWith(`npm:${packageName}@`)) return true;
34
+ }
35
+ }
36
+ }
37
+ return false;
38
+ }
39
+ export { workspaceUsesDependency };
@@ -0,0 +1,11 @@
1
+ import "node:module";
2
+ import node_path from "node:path";
3
+ import { createBackendFederationContractFile } from "../../../ultramodern-workspace/backend-federation.js";
4
+ import { allWorkspaceAppsFromToolingConfig } from "../../config.js";
5
+ import { writeTextIfChanged } from "./io.js";
6
+ function updateGeneratedBackendFederationContractFiles(io, config) {
7
+ let changed = false;
8
+ for (const app of allWorkspaceAppsFromToolingConfig(config))if (app.api) changed = writeTextIfChanged(io, node_path.join(io.workspaceRoot, app.directory, 'api/backend-federation.ts'), createBackendFederationContractFile(app)) || changed;
9
+ return changed;
10
+ }
11
+ export { updateGeneratedBackendFederationContractFiles };
@@ -0,0 +1,46 @@
1
+ import "node:module";
2
+ import node_fs from "node:fs";
3
+ import node_path from "node:path";
4
+ import { createUltramodernBuildArtifactJson, createUltramodernBuildModule, createUltramodernBuildReexportModule } from "../../../ultramodern-workspace/module-federation.js";
5
+ import { allWorkspaceAppsFromToolingConfig } from "../../config.js";
6
+ import { writeTextIfChanged } from "./io.js";
7
+ const legacyApiMarkerPattern = /export const ultramodernApiMarker\s*=\s*\{[\s\S]*?\}\s+as const;\n?/u;
8
+ const markerSchemaPattern = /(export const [A-Za-z_$][\w$]*MarkerSchema(?:\s*:[^=]+)?\s*=\s*Schema\.Struct\(\{\n)([\s\S]*?)(\n\}\);)/u;
9
+ function rewriteLegacyApiMarkerBinding(source) {
10
+ if (!legacyApiMarkerPattern.test(source)) return source;
11
+ return source.replace(legacyApiMarkerPattern, "export { ultramodernApiMarker } from './ultramodern-build.ts';\n");
12
+ }
13
+ function rewriteApiMarkerIdentitySchema(source) {
14
+ const match = source.match(markerSchemaPattern);
15
+ if (!match) return source;
16
+ let body = match[2];
17
+ const requiredLegacyFields = [
18
+ 'appId',
19
+ 'build',
20
+ 'deployProfile',
21
+ 'packageName',
22
+ 'surface',
23
+ 'version'
24
+ ];
25
+ if (!requiredLegacyFields.every((field)=>new RegExp(`^\\s+${field}: Schema\\.String,\\s*$`, 'mu').test(body))) return source;
26
+ const insertAfter = (anchor, field)=>{
27
+ if (new RegExp(`^\\s+${field}: Schema\\.String,\\s*$`, 'mu').test(body)) return;
28
+ body = body.replace(new RegExp(`^(\\s+)${anchor}: Schema\\.String,\\s*$`, 'mu'), `$&\n$1${field}: Schema.String,`);
29
+ };
30
+ insertAfter('build', 'buildMarker');
31
+ insertAfter('packageName', 'sourceRevision');
32
+ insertAfter('surface', 'unitId');
33
+ return source.replace(markerSchemaPattern, (_full, prefix, _body, suffix)=>`${prefix}${body}${suffix}`);
34
+ }
35
+ function updateGeneratedBuildIdentityModules(io, config) {
36
+ let changed = false;
37
+ for (const app of allWorkspaceAppsFromToolingConfig(config)){
38
+ const sharedApiPath = node_path.join(io.workspaceRoot, app.directory, 'shared/api.ts');
39
+ if (app.api && node_fs.existsSync(sharedApiPath)) changed = writeTextIfChanged(io, sharedApiPath, rewriteApiMarkerIdentitySchema(rewriteLegacyApiMarkerBinding(node_fs.readFileSync(sharedApiPath, 'utf-8')))) || changed;
40
+ changed = writeTextIfChanged(io, node_path.join(io.workspaceRoot, app.directory, 'src/ultramodern-build.ts'), createUltramodernBuildReexportModule()) || changed;
41
+ changed = writeTextIfChanged(io, node_path.join(io.workspaceRoot, app.directory, 'shared/ultramodern-build.ts'), createUltramodernBuildModule(config.workspace.packageScope, app)) || changed;
42
+ changed = writeTextIfChanged(io, node_path.join(io.workspaceRoot, app.directory, 'shared/ultramodern-build.json'), createUltramodernBuildArtifactJson(config.workspace.packageScope, app)) || changed;
43
+ }
44
+ return changed;
45
+ }
46
+ export { rewriteApiMarkerIdentitySchema, rewriteLegacyApiMarkerBinding, updateGeneratedBuildIdentityModules };