@bleedingdev/modern-js-create 3.5.0-ultramodern.5 → 3.5.0-ultramodern.75

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 (562) 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 +74 -0
  21. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.cjs +99 -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 +205 -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/help.cjs +54 -0
  29. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/install.cjs +52 -0
  30. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/io.cjs +350 -0
  31. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.cjs +200 -0
  32. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-source.cjs +89 -0
  33. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.cjs +442 -0
  34. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.cjs +358 -0
  35. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.cjs +99 -0
  36. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.cjs +135 -0
  37. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect.cjs +410 -0
  38. package/dist/cjs/ultramodern-tooling/commands/options.cjs +59 -0
  39. package/dist/cjs/ultramodern-tooling/commands/routes-generate.cjs +122 -0
  40. package/dist/cjs/ultramodern-tooling/commands/skills.cjs +49 -0
  41. package/dist/cjs/ultramodern-tooling/commands/sync-delivery-unit.cjs +40 -0
  42. package/dist/cjs/ultramodern-tooling/commands/validate.cjs +53 -0
  43. package/dist/cjs/ultramodern-tooling/commands.cjs +27 -491
  44. package/dist/cjs/ultramodern-tooling/config/constants.cjs +48 -0
  45. package/dist/cjs/ultramodern-tooling/config/index.cjs +104 -0
  46. package/dist/cjs/ultramodern-tooling/config/json.cjs +61 -0
  47. package/dist/cjs/ultramodern-tooling/config/load.cjs +62 -0
  48. package/dist/cjs/ultramodern-tooling/config/metadata.cjs +92 -0
  49. package/dist/cjs/ultramodern-tooling/config/normalize.cjs +236 -0
  50. package/dist/cjs/ultramodern-tooling/config/synthesize.cjs +157 -0
  51. package/dist/cjs/ultramodern-tooling/config/types.cjs +18 -0
  52. package/dist/cjs/ultramodern-tooling/config.cjs +23 -133
  53. package/dist/cjs/ultramodern-workspace/add-shell.cjs +274 -0
  54. package/dist/cjs/ultramodern-workspace/add-vertical/constants.cjs +52 -0
  55. package/dist/cjs/ultramodern-workspace/add-vertical/execute.cjs +183 -0
  56. package/dist/cjs/ultramodern-workspace/add-vertical/plan.cjs +255 -0
  57. package/dist/cjs/ultramodern-workspace/add-vertical/preflight.cjs +256 -0
  58. package/dist/cjs/ultramodern-workspace/add-vertical/shell-files.cjs +122 -0
  59. package/dist/cjs/ultramodern-workspace/add-vertical/topology.cjs +152 -0
  60. package/dist/cjs/ultramodern-workspace/add-vertical/transaction.cjs +327 -0
  61. package/dist/cjs/ultramodern-workspace/add-vertical/workspace-state.cjs +137 -0
  62. package/dist/cjs/ultramodern-workspace/add-vertical.cjs +22 -571
  63. package/dist/cjs/ultramodern-workspace/api/checkout-cart.cjs +145 -0
  64. package/dist/cjs/ultramodern-workspace/api/client.cjs +224 -0
  65. package/dist/cjs/ultramodern-workspace/api/contracts.cjs +251 -0
  66. package/dist/cjs/ultramodern-workspace/api/names.cjs +98 -0
  67. package/dist/cjs/ultramodern-workspace/api/rpc.cjs +264 -0
  68. package/dist/cjs/ultramodern-workspace/api/service.cjs +252 -0
  69. package/dist/cjs/ultramodern-workspace/api/shared.cjs +270 -0
  70. package/dist/cjs/ultramodern-workspace/api.cjs +49 -1005
  71. package/dist/cjs/ultramodern-workspace/app-files.cjs +51 -69
  72. package/dist/cjs/ultramodern-workspace/backend-federation.cjs +346 -0
  73. package/dist/cjs/ultramodern-workspace/bridge-config/cli.cjs +71 -0
  74. package/dist/cjs/ultramodern-workspace/bridge-config/defaults.cjs +43 -0
  75. package/dist/cjs/ultramodern-workspace/bridge-config/gates.cjs +93 -0
  76. package/dist/cjs/ultramodern-workspace/bridge-config/index.cjs +60 -0
  77. package/dist/cjs/ultramodern-workspace/bridge-config/normalize.cjs +68 -0
  78. package/dist/cjs/ultramodern-workspace/bridge-config/schema.cjs +78 -0
  79. package/dist/cjs/ultramodern-workspace/bridge-config/shared.cjs +110 -0
  80. package/dist/cjs/ultramodern-workspace/bridge-config/validation.cjs +68 -0
  81. package/dist/cjs/ultramodern-workspace/bridge-config/workspace-packages.cjs +108 -0
  82. package/dist/cjs/ultramodern-workspace/bridge-config.cjs +32 -297
  83. package/dist/cjs/ultramodern-workspace/codesmith.cjs +10 -1
  84. package/dist/cjs/ultramodern-workspace/contracts.cjs +80 -26
  85. package/dist/cjs/ultramodern-workspace/delivery-unit-schema/types.cjs +291 -0
  86. package/dist/cjs/ultramodern-workspace/delivery-unit-schema/up-projection.cjs +188 -0
  87. package/dist/cjs/ultramodern-workspace/delivery-unit-stamp.cjs +56 -0
  88. package/dist/cjs/ultramodern-workspace/delivery-unit-sync.cjs +153 -0
  89. package/dist/cjs/ultramodern-workspace/delivery-unit.cjs +75 -0
  90. package/dist/cjs/ultramodern-workspace/demo-components.cjs +474 -205
  91. package/dist/cjs/ultramodern-workspace/descriptors.cjs +101 -16
  92. package/dist/cjs/ultramodern-workspace/effect-diagnostics.cjs +114 -0
  93. package/dist/cjs/ultramodern-workspace/fs-io.cjs +26 -36
  94. package/dist/cjs/ultramodern-workspace/generation-result.cjs +36 -3
  95. package/dist/cjs/ultramodern-workspace/index.cjs +28 -0
  96. package/dist/cjs/ultramodern-workspace/locales.cjs +3 -17
  97. package/dist/cjs/ultramodern-workspace/mf-validation/constants.cjs +69 -0
  98. package/dist/cjs/ultramodern-workspace/mf-validation/discovery.cjs +77 -0
  99. package/dist/cjs/ultramodern-workspace/mf-validation/inspect.cjs +84 -0
  100. package/dist/cjs/ultramodern-workspace/mf-validation/object-literal.cjs +188 -0
  101. package/dist/cjs/ultramodern-workspace/mf-validation/path-utils.cjs +165 -0
  102. package/dist/cjs/ultramodern-workspace/mf-validation/syntax.cjs +201 -0
  103. package/dist/cjs/ultramodern-workspace/mf-validation/types.cjs +18 -0
  104. package/dist/cjs/ultramodern-workspace/mf-validation/validate.cjs +112 -0
  105. package/dist/cjs/ultramodern-workspace/mf-validation.cjs +6 -529
  106. package/dist/cjs/ultramodern-workspace/module-federation/config.cjs +336 -0
  107. package/dist/cjs/ultramodern-workspace/module-federation/index.cjs +73 -0
  108. package/dist/cjs/ultramodern-workspace/module-federation/reexport-module.cjs +111 -0
  109. package/dist/cjs/ultramodern-workspace/module-federation/remote-refs.cjs +106 -0
  110. package/dist/cjs/ultramodern-workspace/module-federation/shared-config.cjs +53 -0
  111. package/dist/cjs/ultramodern-workspace/module-federation.cjs +18 -477
  112. package/dist/cjs/ultramodern-workspace/naming.cjs +1 -7
  113. package/dist/cjs/ultramodern-workspace/overlay-baseline-guard.cjs +408 -0
  114. package/dist/cjs/ultramodern-workspace/overlays.cjs +39 -5
  115. package/dist/cjs/ultramodern-workspace/package-json.cjs +54 -301
  116. package/dist/cjs/ultramodern-workspace/package-source.cjs +11 -2
  117. package/dist/cjs/ultramodern-workspace/policy.cjs +789 -24
  118. package/dist/cjs/ultramodern-workspace/public-surface.cjs +1 -22
  119. package/dist/cjs/ultramodern-workspace/routes.cjs +8 -157
  120. package/dist/cjs/ultramodern-workspace/shared-patches.cjs +41 -0
  121. package/dist/cjs/ultramodern-workspace/shells.cjs +151 -0
  122. package/dist/cjs/ultramodern-workspace/tooling-command-catalog.cjs +147 -0
  123. package/dist/cjs/ultramodern-workspace/tsconfigs.cjs +200 -0
  124. package/dist/cjs/ultramodern-workspace/types.cjs +27 -0
  125. package/dist/cjs/ultramodern-workspace/versions.cjs +52 -37
  126. package/dist/cjs/ultramodern-workspace/workspace-script-plan.cjs +174 -0
  127. package/dist/cjs/ultramodern-workspace/workspace-scripts.cjs +118 -88
  128. package/dist/cjs/ultramodern-workspace/workspace-validation-contract.cjs +642 -0
  129. package/dist/cjs/ultramodern-workspace/write-app.cjs +148 -0
  130. package/dist/cjs/ultramodern-workspace/write-workspace.cjs +45 -67
  131. package/dist/cjs/ultramodern-workspace/zerops.cjs +108 -0
  132. package/dist/esm/cli/flags.js +262 -0
  133. package/dist/esm/cli/help.js +67 -0
  134. package/dist/esm/cli/package-source.js +124 -0
  135. package/dist/esm/cli/project-setup.js +105 -0
  136. package/dist/esm/cli/prompts.js +51 -0
  137. package/dist/esm/index.js +19 -565
  138. package/dist/esm/locale/en.js +5 -6
  139. package/dist/esm/locale/zh.js +5 -6
  140. package/dist/esm/ultramodern-package-source.js +1 -24
  141. package/dist/esm/ultramodern-release-cohort.js +133 -0
  142. package/dist/esm/ultramodern-tooling/commands/cloudflare-output-verify.js +88 -0
  143. package/dist/esm/ultramodern-tooling/commands/context.js +66 -0
  144. package/dist/esm/ultramodern-tooling/commands/mf-types.js +17 -0
  145. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.js +154 -0
  146. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +12 -0
  147. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.js +38 -0
  148. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.js +10 -0
  149. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +22 -0
  150. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +50 -0
  151. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.js +83 -0
  152. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.js +16 -0
  153. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.js +156 -0
  154. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.js +12 -0
  155. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.js +7 -0
  156. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.js +15 -0
  157. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/help.js +16 -0
  158. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/install.js +14 -0
  159. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/io.js +285 -0
  160. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +156 -0
  161. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-source.js +51 -0
  162. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +383 -0
  163. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +311 -0
  164. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +24 -0
  165. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.js +80 -0
  166. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect.js +361 -0
  167. package/dist/esm/ultramodern-tooling/commands/options.js +18 -0
  168. package/dist/esm/ultramodern-tooling/commands/routes-generate.js +74 -0
  169. package/dist/esm/ultramodern-tooling/commands/skills.js +11 -0
  170. package/dist/esm/ultramodern-tooling/commands/sync-delivery-unit.js +1 -0
  171. package/dist/esm/ultramodern-tooling/commands/validate.js +15 -0
  172. package/dist/esm/ultramodern-tooling/commands.js +23 -482
  173. package/dist/esm/ultramodern-tooling/config/constants.js +4 -0
  174. package/dist/esm/ultramodern-tooling/config/index.js +7 -0
  175. package/dist/esm/ultramodern-tooling/config/json.js +10 -0
  176. package/dist/esm/ultramodern-tooling/config/load.js +13 -0
  177. package/dist/esm/ultramodern-tooling/config/metadata.js +37 -0
  178. package/dist/esm/ultramodern-tooling/config/normalize.js +173 -0
  179. package/dist/esm/ultramodern-tooling/config/synthesize.js +108 -0
  180. package/dist/esm/ultramodern-tooling/config/types.js +0 -0
  181. package/dist/esm/ultramodern-tooling/config.js +1 -120
  182. package/dist/esm/ultramodern-workspace/add-shell.js +221 -0
  183. package/dist/esm/ultramodern-workspace/add-vertical/constants.js +5 -0
  184. package/dist/esm/ultramodern-workspace/add-vertical/execute.js +135 -0
  185. package/dist/esm/ultramodern-workspace/add-vertical/plan.js +205 -0
  186. package/dist/esm/ultramodern-workspace/add-vertical/preflight.js +198 -0
  187. package/dist/esm/ultramodern-workspace/add-vertical/shell-files.js +65 -0
  188. package/dist/esm/ultramodern-workspace/add-vertical/topology.js +108 -0
  189. package/dist/esm/ultramodern-workspace/add-vertical/transaction.js +254 -0
  190. package/dist/esm/ultramodern-workspace/add-vertical/workspace-state.js +67 -0
  191. package/dist/esm/ultramodern-workspace/add-vertical.js +6 -544
  192. package/dist/esm/ultramodern-workspace/api/checkout-cart.js +86 -0
  193. package/dist/esm/ultramodern-workspace/api/client.js +183 -0
  194. package/dist/esm/ultramodern-workspace/api/contracts.js +201 -0
  195. package/dist/esm/ultramodern-workspace/api/names.js +33 -0
  196. package/dist/esm/ultramodern-workspace/api/rpc.js +205 -0
  197. package/dist/esm/ultramodern-workspace/api/service.js +211 -0
  198. package/dist/esm/ultramodern-workspace/api/shared.js +226 -0
  199. package/dist/esm/ultramodern-workspace/api.js +6 -984
  200. package/dist/esm/ultramodern-workspace/app-files.js +51 -51
  201. package/dist/esm/ultramodern-workspace/backend-federation.js +281 -0
  202. package/dist/esm/ultramodern-workspace/bridge-config/cli.js +30 -0
  203. package/dist/esm/ultramodern-workspace/bridge-config/defaults.js +5 -0
  204. package/dist/esm/ultramodern-workspace/bridge-config/gates.js +52 -0
  205. package/dist/esm/ultramodern-workspace/bridge-config/index.js +3 -0
  206. package/dist/esm/ultramodern-workspace/bridge-config/normalize.js +30 -0
  207. package/dist/esm/ultramodern-workspace/bridge-config/schema.js +31 -0
  208. package/dist/esm/ultramodern-workspace/bridge-config/shared.js +51 -0
  209. package/dist/esm/ultramodern-workspace/bridge-config/validation.js +27 -0
  210. package/dist/esm/ultramodern-workspace/bridge-config/workspace-packages.js +67 -0
  211. package/dist/esm/ultramodern-workspace/bridge-config.js +1 -270
  212. package/dist/esm/ultramodern-workspace/codesmith.js +10 -1
  213. package/dist/esm/ultramodern-workspace/contracts.js +81 -27
  214. package/dist/esm/ultramodern-workspace/delivery-unit-schema/types.js +235 -0
  215. package/dist/esm/ultramodern-workspace/delivery-unit-schema/up-projection.js +129 -0
  216. package/dist/esm/ultramodern-workspace/delivery-unit-stamp.js +18 -0
  217. package/dist/esm/ultramodern-workspace/delivery-unit-sync.js +104 -0
  218. package/dist/esm/ultramodern-workspace/delivery-unit.js +21 -0
  219. package/dist/esm/ultramodern-workspace/demo-components.js +461 -204
  220. package/dist/esm/ultramodern-workspace/descriptors.js +75 -17
  221. package/dist/esm/ultramodern-workspace/effect-diagnostics.js +76 -0
  222. package/dist/esm/ultramodern-workspace/fs-io.js +27 -18
  223. package/dist/esm/ultramodern-workspace/generation-result.js +33 -3
  224. package/dist/esm/ultramodern-workspace/index.js +4 -0
  225. package/dist/esm/ultramodern-workspace/locales.js +3 -4
  226. package/dist/esm/ultramodern-workspace/mf-validation/constants.js +19 -0
  227. package/dist/esm/ultramodern-workspace/mf-validation/discovery.js +28 -0
  228. package/dist/esm/ultramodern-workspace/mf-validation/inspect.js +46 -0
  229. package/dist/esm/ultramodern-workspace/mf-validation/object-literal.js +144 -0
  230. package/dist/esm/ultramodern-workspace/mf-validation/path-utils.js +89 -0
  231. package/dist/esm/ultramodern-workspace/mf-validation/syntax.js +154 -0
  232. package/dist/esm/ultramodern-workspace/mf-validation/types.js +0 -0
  233. package/dist/esm/ultramodern-workspace/mf-validation/validate.js +57 -0
  234. package/dist/esm/ultramodern-workspace/mf-validation.js +3 -516
  235. package/dist/esm/ultramodern-workspace/module-federation/config.js +289 -0
  236. package/dist/esm/ultramodern-workspace/module-federation/index.js +4 -0
  237. package/dist/esm/ultramodern-workspace/module-federation/reexport-module.js +67 -0
  238. package/dist/esm/ultramodern-workspace/module-federation/remote-refs.js +65 -0
  239. package/dist/esm/ultramodern-workspace/module-federation/shared-config.js +12 -0
  240. package/dist/esm/ultramodern-workspace/module-federation.js +2 -458
  241. package/dist/esm/ultramodern-workspace/naming.js +2 -2
  242. package/dist/esm/ultramodern-workspace/overlay-baseline-guard.js +350 -0
  243. package/dist/esm/ultramodern-workspace/overlays.js +28 -5
  244. package/dist/esm/ultramodern-workspace/package-json.js +48 -283
  245. package/dist/esm/ultramodern-workspace/package-source.js +7 -1
  246. package/dist/esm/ultramodern-workspace/policy.js +772 -10
  247. package/dist/esm/ultramodern-workspace/public-surface.js +2 -2
  248. package/dist/esm/ultramodern-workspace/routes.js +9 -143
  249. package/dist/esm/ultramodern-workspace/shared-patches.js +3 -0
  250. package/dist/esm/ultramodern-workspace/shells.js +92 -0
  251. package/dist/esm/ultramodern-workspace/tooling-command-catalog.js +100 -0
  252. package/dist/esm/ultramodern-workspace/tsconfigs.js +137 -0
  253. package/dist/esm/ultramodern-workspace/types.js +16 -1
  254. package/dist/esm/ultramodern-workspace/versions.js +35 -26
  255. package/dist/esm/ultramodern-workspace/workspace-script-plan.js +124 -0
  256. package/dist/esm/ultramodern-workspace/workspace-scripts.js +115 -85
  257. package/dist/esm/ultramodern-workspace/workspace-validation-contract.js +604 -0
  258. package/dist/esm/ultramodern-workspace/write-app.js +105 -0
  259. package/dist/esm/ultramodern-workspace/write-workspace.js +47 -66
  260. package/dist/esm/ultramodern-workspace/zerops.js +70 -0
  261. package/dist/esm-node/cli/flags.js +263 -0
  262. package/dist/esm-node/cli/help.js +68 -0
  263. package/dist/esm-node/cli/package-source.js +125 -0
  264. package/dist/esm-node/cli/project-setup.js +106 -0
  265. package/dist/esm-node/cli/prompts.js +52 -0
  266. package/dist/esm-node/index.js +19 -565
  267. package/dist/esm-node/locale/en.js +5 -6
  268. package/dist/esm-node/locale/zh.js +5 -6
  269. package/dist/esm-node/ultramodern-package-source.js +1 -24
  270. package/dist/esm-node/ultramodern-release-cohort.js +134 -0
  271. package/dist/esm-node/ultramodern-tooling/commands/cloudflare-output-verify.js +89 -0
  272. package/dist/esm-node/ultramodern-tooling/commands/context.js +67 -0
  273. package/dist/esm-node/ultramodern-tooling/commands/mf-types.js +18 -0
  274. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.js +155 -0
  275. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +13 -0
  276. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.js +39 -0
  277. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.js +11 -0
  278. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +23 -0
  279. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +51 -0
  280. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.js +84 -0
  281. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.js +17 -0
  282. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.js +157 -0
  283. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.js +13 -0
  284. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.js +8 -0
  285. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.js +16 -0
  286. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/help.js +17 -0
  287. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/install.js +15 -0
  288. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/io.js +286 -0
  289. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +157 -0
  290. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-source.js +52 -0
  291. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +384 -0
  292. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +312 -0
  293. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +25 -0
  294. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.js +81 -0
  295. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect.js +362 -0
  296. package/dist/esm-node/ultramodern-tooling/commands/options.js +19 -0
  297. package/dist/esm-node/ultramodern-tooling/commands/routes-generate.js +75 -0
  298. package/dist/esm-node/ultramodern-tooling/commands/skills.js +12 -0
  299. package/dist/esm-node/ultramodern-tooling/commands/sync-delivery-unit.js +2 -0
  300. package/dist/esm-node/ultramodern-tooling/commands/validate.js +16 -0
  301. package/dist/esm-node/ultramodern-tooling/commands.js +23 -482
  302. package/dist/esm-node/ultramodern-tooling/config/constants.js +5 -0
  303. package/dist/esm-node/ultramodern-tooling/config/index.js +8 -0
  304. package/dist/esm-node/ultramodern-tooling/config/json.js +11 -0
  305. package/dist/esm-node/ultramodern-tooling/config/load.js +14 -0
  306. package/dist/esm-node/ultramodern-tooling/config/metadata.js +38 -0
  307. package/dist/esm-node/ultramodern-tooling/config/normalize.js +174 -0
  308. package/dist/esm-node/ultramodern-tooling/config/synthesize.js +109 -0
  309. package/dist/esm-node/ultramodern-tooling/config/types.js +1 -0
  310. package/dist/esm-node/ultramodern-tooling/config.js +1 -120
  311. package/dist/esm-node/ultramodern-workspace/add-shell.js +222 -0
  312. package/dist/esm-node/ultramodern-workspace/add-vertical/constants.js +6 -0
  313. package/dist/esm-node/ultramodern-workspace/add-vertical/execute.js +136 -0
  314. package/dist/esm-node/ultramodern-workspace/add-vertical/plan.js +206 -0
  315. package/dist/esm-node/ultramodern-workspace/add-vertical/preflight.js +199 -0
  316. package/dist/esm-node/ultramodern-workspace/add-vertical/shell-files.js +66 -0
  317. package/dist/esm-node/ultramodern-workspace/add-vertical/topology.js +109 -0
  318. package/dist/esm-node/ultramodern-workspace/add-vertical/transaction.js +255 -0
  319. package/dist/esm-node/ultramodern-workspace/add-vertical/workspace-state.js +68 -0
  320. package/dist/esm-node/ultramodern-workspace/add-vertical.js +6 -544
  321. package/dist/esm-node/ultramodern-workspace/api/checkout-cart.js +87 -0
  322. package/dist/esm-node/ultramodern-workspace/api/client.js +184 -0
  323. package/dist/esm-node/ultramodern-workspace/api/contracts.js +202 -0
  324. package/dist/esm-node/ultramodern-workspace/api/names.js +34 -0
  325. package/dist/esm-node/ultramodern-workspace/api/rpc.js +206 -0
  326. package/dist/esm-node/ultramodern-workspace/api/service.js +212 -0
  327. package/dist/esm-node/ultramodern-workspace/api/shared.js +227 -0
  328. package/dist/esm-node/ultramodern-workspace/api.js +6 -984
  329. package/dist/esm-node/ultramodern-workspace/app-files.js +51 -51
  330. package/dist/esm-node/ultramodern-workspace/backend-federation.js +282 -0
  331. package/dist/esm-node/ultramodern-workspace/bridge-config/cli.js +31 -0
  332. package/dist/esm-node/ultramodern-workspace/bridge-config/defaults.js +6 -0
  333. package/dist/esm-node/ultramodern-workspace/bridge-config/gates.js +53 -0
  334. package/dist/esm-node/ultramodern-workspace/bridge-config/index.js +4 -0
  335. package/dist/esm-node/ultramodern-workspace/bridge-config/normalize.js +31 -0
  336. package/dist/esm-node/ultramodern-workspace/bridge-config/schema.js +32 -0
  337. package/dist/esm-node/ultramodern-workspace/bridge-config/shared.js +52 -0
  338. package/dist/esm-node/ultramodern-workspace/bridge-config/validation.js +28 -0
  339. package/dist/esm-node/ultramodern-workspace/bridge-config/workspace-packages.js +68 -0
  340. package/dist/esm-node/ultramodern-workspace/bridge-config.js +1 -270
  341. package/dist/esm-node/ultramodern-workspace/codesmith.js +10 -1
  342. package/dist/esm-node/ultramodern-workspace/contracts.js +81 -27
  343. package/dist/esm-node/ultramodern-workspace/delivery-unit-schema/types.js +236 -0
  344. package/dist/esm-node/ultramodern-workspace/delivery-unit-schema/up-projection.js +130 -0
  345. package/dist/esm-node/ultramodern-workspace/delivery-unit-stamp.js +19 -0
  346. package/dist/esm-node/ultramodern-workspace/delivery-unit-sync.js +105 -0
  347. package/dist/esm-node/ultramodern-workspace/delivery-unit.js +22 -0
  348. package/dist/esm-node/ultramodern-workspace/demo-components.js +461 -204
  349. package/dist/esm-node/ultramodern-workspace/descriptors.js +75 -17
  350. package/dist/esm-node/ultramodern-workspace/effect-diagnostics.js +77 -0
  351. package/dist/esm-node/ultramodern-workspace/fs-io.js +27 -18
  352. package/dist/esm-node/ultramodern-workspace/generation-result.js +33 -3
  353. package/dist/esm-node/ultramodern-workspace/index.js +4 -0
  354. package/dist/esm-node/ultramodern-workspace/locales.js +3 -4
  355. package/dist/esm-node/ultramodern-workspace/mf-validation/constants.js +20 -0
  356. package/dist/esm-node/ultramodern-workspace/mf-validation/discovery.js +29 -0
  357. package/dist/esm-node/ultramodern-workspace/mf-validation/inspect.js +47 -0
  358. package/dist/esm-node/ultramodern-workspace/mf-validation/object-literal.js +145 -0
  359. package/dist/esm-node/ultramodern-workspace/mf-validation/path-utils.js +90 -0
  360. package/dist/esm-node/ultramodern-workspace/mf-validation/syntax.js +155 -0
  361. package/dist/esm-node/ultramodern-workspace/mf-validation/types.js +1 -0
  362. package/dist/esm-node/ultramodern-workspace/mf-validation/validate.js +58 -0
  363. package/dist/esm-node/ultramodern-workspace/mf-validation.js +3 -516
  364. package/dist/esm-node/ultramodern-workspace/module-federation/config.js +290 -0
  365. package/dist/esm-node/ultramodern-workspace/module-federation/index.js +5 -0
  366. package/dist/esm-node/ultramodern-workspace/module-federation/reexport-module.js +68 -0
  367. package/dist/esm-node/ultramodern-workspace/module-federation/remote-refs.js +66 -0
  368. package/dist/esm-node/ultramodern-workspace/module-federation/shared-config.js +13 -0
  369. package/dist/esm-node/ultramodern-workspace/module-federation.js +2 -458
  370. package/dist/esm-node/ultramodern-workspace/naming.js +2 -2
  371. package/dist/esm-node/ultramodern-workspace/overlay-baseline-guard.js +351 -0
  372. package/dist/esm-node/ultramodern-workspace/overlays.js +28 -5
  373. package/dist/esm-node/ultramodern-workspace/package-json.js +48 -283
  374. package/dist/esm-node/ultramodern-workspace/package-source.js +7 -1
  375. package/dist/esm-node/ultramodern-workspace/policy.js +772 -10
  376. package/dist/esm-node/ultramodern-workspace/public-surface.js +2 -2
  377. package/dist/esm-node/ultramodern-workspace/routes.js +9 -143
  378. package/dist/esm-node/ultramodern-workspace/shared-patches.js +4 -0
  379. package/dist/esm-node/ultramodern-workspace/shells.js +93 -0
  380. package/dist/esm-node/ultramodern-workspace/tooling-command-catalog.js +101 -0
  381. package/dist/esm-node/ultramodern-workspace/tsconfigs.js +138 -0
  382. package/dist/esm-node/ultramodern-workspace/types.js +16 -1
  383. package/dist/esm-node/ultramodern-workspace/versions.js +35 -26
  384. package/dist/esm-node/ultramodern-workspace/workspace-script-plan.js +125 -0
  385. package/dist/esm-node/ultramodern-workspace/workspace-scripts.js +115 -85
  386. package/dist/esm-node/ultramodern-workspace/workspace-validation-contract.js +605 -0
  387. package/dist/esm-node/ultramodern-workspace/write-app.js +106 -0
  388. package/dist/esm-node/ultramodern-workspace/write-workspace.js +47 -66
  389. package/dist/esm-node/ultramodern-workspace/zerops.js +71 -0
  390. package/dist/types/cli/flags.d.ts +35 -0
  391. package/dist/types/cli/help.d.ts +2 -0
  392. package/dist/types/cli/package-source.d.ts +15 -0
  393. package/dist/types/cli/project-setup.d.ts +8 -0
  394. package/dist/types/cli/prompts.d.ts +4 -0
  395. package/dist/types/locale/en.d.ts +3 -4
  396. package/dist/types/locale/index.d.ts +6 -8
  397. package/dist/types/locale/zh.d.ts +3 -4
  398. package/dist/types/ultramodern-package-source.d.ts +0 -11
  399. package/dist/types/ultramodern-release-cohort.d.ts +30 -0
  400. package/dist/types/ultramodern-tooling/commands/cloudflare-output-verify.d.ts +2 -0
  401. package/dist/types/ultramodern-tooling/commands/context.d.ts +11 -0
  402. package/dist/types/ultramodern-tooling/commands/mf-types.d.ts +2 -0
  403. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.d.ts +12 -0
  404. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.d.ts +4 -0
  405. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.d.ts +1 -0
  406. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.d.ts +3 -0
  407. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.d.ts +4 -0
  408. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.d.ts +3 -0
  409. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.d.ts +2 -0
  410. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.d.ts +4 -0
  411. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.d.ts +3 -0
  412. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.d.ts +3 -0
  413. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.d.ts +7 -0
  414. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.d.ts +3 -0
  415. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/help.d.ts +1 -0
  416. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/install.d.ts +2 -0
  417. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/io.d.ts +20 -0
  418. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.d.ts +9 -0
  419. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/package-source.d.ts +3 -0
  420. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.d.ts +27 -0
  421. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.d.ts +26 -0
  422. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.d.ts +10 -0
  423. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.d.ts +4 -0
  424. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect.d.ts +2 -0
  425. package/dist/types/ultramodern-tooling/commands/options.d.ts +2 -0
  426. package/dist/types/ultramodern-tooling/commands/routes-generate.d.ts +2 -0
  427. package/dist/types/ultramodern-tooling/commands/skills.d.ts +2 -0
  428. package/dist/types/ultramodern-tooling/commands/sync-delivery-unit.d.ts +1 -0
  429. package/dist/types/ultramodern-tooling/commands/validate.d.ts +2 -0
  430. package/dist/types/ultramodern-tooling/commands.d.ts +1 -1
  431. package/dist/types/ultramodern-tooling/config/constants.d.ts +3 -0
  432. package/dist/types/ultramodern-tooling/config/index.d.ts +7 -0
  433. package/dist/types/ultramodern-tooling/config/json.d.ts +2 -0
  434. package/dist/types/ultramodern-tooling/config/load.d.ts +2 -0
  435. package/dist/types/ultramodern-tooling/config/metadata.d.ts +4 -0
  436. package/dist/types/ultramodern-tooling/config/normalize.d.ts +22 -0
  437. package/dist/types/ultramodern-tooling/config/synthesize.d.ts +5 -0
  438. package/dist/types/ultramodern-tooling/config/types.d.ts +45 -0
  439. package/dist/types/ultramodern-tooling/config.d.ts +1 -43
  440. package/dist/types/ultramodern-workspace/add-shell.d.ts +14 -0
  441. package/dist/types/ultramodern-workspace/add-vertical/constants.d.ts +4 -0
  442. package/dist/types/ultramodern-workspace/add-vertical/execute.d.ts +9 -0
  443. package/dist/types/ultramodern-workspace/add-vertical/plan.d.ts +2 -0
  444. package/dist/types/ultramodern-workspace/add-vertical/preflight.d.ts +42 -0
  445. package/dist/types/ultramodern-workspace/add-vertical/shell-files.d.ts +6 -0
  446. package/dist/types/ultramodern-workspace/add-vertical/topology.d.ts +9 -0
  447. package/dist/types/ultramodern-workspace/add-vertical/transaction.d.ts +80 -0
  448. package/dist/types/ultramodern-workspace/add-vertical/workspace-state.d.ts +15 -0
  449. package/dist/types/ultramodern-workspace/add-vertical.d.ts +7 -39
  450. package/dist/types/ultramodern-workspace/api/checkout-cart.d.ts +33 -0
  451. package/dist/types/ultramodern-workspace/api/client.d.ts +6 -0
  452. package/dist/types/ultramodern-workspace/api/contracts.d.ts +15 -0
  453. package/dist/types/ultramodern-workspace/api/names.d.ts +41 -0
  454. package/dist/types/ultramodern-workspace/api/rpc.d.ts +41 -0
  455. package/dist/types/ultramodern-workspace/api/service.d.ts +6 -0
  456. package/dist/types/ultramodern-workspace/api/shared.d.ts +10 -0
  457. package/dist/types/ultramodern-workspace/api.d.ts +6 -73
  458. package/dist/types/ultramodern-workspace/app-files.d.ts +4 -10
  459. package/dist/types/ultramodern-workspace/backend-federation.d.ts +11 -0
  460. package/dist/types/ultramodern-workspace/bridge-config/cli.d.ts +3 -0
  461. package/dist/types/ultramodern-workspace/bridge-config/defaults.d.ts +1 -0
  462. package/dist/types/ultramodern-workspace/bridge-config/gates.d.ts +3 -0
  463. package/dist/types/ultramodern-workspace/bridge-config/index.d.ts +4 -0
  464. package/dist/types/ultramodern-workspace/bridge-config/normalize.d.ts +2 -0
  465. package/dist/types/ultramodern-workspace/bridge-config/schema.d.ts +61 -0
  466. package/dist/types/ultramodern-workspace/bridge-config/shared.d.ts +12 -0
  467. package/dist/types/ultramodern-workspace/bridge-config/validation.d.ts +3 -0
  468. package/dist/types/ultramodern-workspace/bridge-config/workspace-packages.d.ts +3 -0
  469. package/dist/types/ultramodern-workspace/bridge-config.d.ts +1 -64
  470. package/dist/types/ultramodern-workspace/codesmith.d.ts +12 -6
  471. package/dist/types/ultramodern-workspace/contracts.d.ts +3 -3
  472. package/dist/types/ultramodern-workspace/delivery-unit-schema/types.d.ts +291 -0
  473. package/dist/types/ultramodern-workspace/delivery-unit-schema/up-projection.d.ts +189 -0
  474. package/dist/types/ultramodern-workspace/delivery-unit-stamp.d.ts +3 -0
  475. package/dist/types/ultramodern-workspace/delivery-unit-sync.d.ts +6 -0
  476. package/dist/types/ultramodern-workspace/delivery-unit.d.ts +8 -0
  477. package/dist/types/ultramodern-workspace/demo-components.d.ts +14 -3
  478. package/dist/types/ultramodern-workspace/descriptors.d.ts +27 -3
  479. package/dist/types/ultramodern-workspace/effect-diagnostics.d.ts +1 -0
  480. package/dist/types/ultramodern-workspace/fs-io.d.ts +2 -8
  481. package/dist/types/ultramodern-workspace/generation-result.d.ts +3 -1
  482. package/dist/types/ultramodern-workspace/index.d.ts +6 -1
  483. package/dist/types/ultramodern-workspace/locales.d.ts +1 -133
  484. package/dist/types/ultramodern-workspace/mf-validation/constants.d.ts +5 -0
  485. package/dist/types/ultramodern-workspace/mf-validation/discovery.d.ts +2 -0
  486. package/dist/types/ultramodern-workspace/mf-validation/inspect.d.ts +2 -0
  487. package/dist/types/ultramodern-workspace/mf-validation/object-literal.d.ts +4 -0
  488. package/dist/types/ultramodern-workspace/mf-validation/path-utils.d.ts +11 -0
  489. package/dist/types/ultramodern-workspace/mf-validation/syntax.d.ts +5 -0
  490. package/dist/types/ultramodern-workspace/mf-validation/types.d.ts +33 -0
  491. package/dist/types/ultramodern-workspace/mf-validation/validate.d.ts +4 -0
  492. package/dist/types/ultramodern-workspace/mf-validation.d.ts +4 -27
  493. package/dist/types/ultramodern-workspace/module-federation/config.d.ts +5 -0
  494. package/dist/types/ultramodern-workspace/module-federation/index.d.ts +4 -0
  495. package/dist/types/ultramodern-workspace/module-federation/reexport-module.d.ts +4 -0
  496. package/dist/types/ultramodern-workspace/module-federation/remote-refs.d.ts +3 -0
  497. package/dist/types/ultramodern-workspace/module-federation/shared-config.d.ts +2 -0
  498. package/dist/types/ultramodern-workspace/module-federation.d.ts +2 -17
  499. package/dist/types/ultramodern-workspace/naming.d.ts +0 -2
  500. package/dist/types/ultramodern-workspace/overlay-baseline-guard.d.ts +57 -0
  501. package/dist/types/ultramodern-workspace/package-json.d.ts +2 -17
  502. package/dist/types/ultramodern-workspace/package-source.d.ts +1 -0
  503. package/dist/types/ultramodern-workspace/policy.d.ts +254 -47
  504. package/dist/types/ultramodern-workspace/public-api.d.ts +1 -1
  505. package/dist/types/ultramodern-workspace/public-surface.d.ts +5 -15
  506. package/dist/types/ultramodern-workspace/routes.d.ts +0 -9
  507. package/dist/types/ultramodern-workspace/shared-patches.d.ts +1 -0
  508. package/dist/types/ultramodern-workspace/shells.d.ts +51 -0
  509. package/dist/types/ultramodern-workspace/tooling-command-catalog.d.ts +18 -0
  510. package/dist/types/ultramodern-workspace/tsconfigs.d.ts +13 -0
  511. package/dist/types/ultramodern-workspace/types.d.ts +134 -3
  512. package/dist/types/ultramodern-workspace/versions.d.ts +35 -26
  513. package/dist/types/ultramodern-workspace/workspace-script-plan.d.ts +63 -0
  514. package/dist/types/ultramodern-workspace/workspace-scripts.d.ts +15 -5
  515. package/dist/types/ultramodern-workspace/workspace-validation-contract.d.ts +243 -0
  516. package/dist/types/ultramodern-workspace/write-app.d.ts +4 -0
  517. package/dist/types/ultramodern-workspace/write-workspace.d.ts +3 -3
  518. package/dist/types/ultramodern-workspace/zerops.d.ts +2 -0
  519. package/package.json +15 -13
  520. package/template-workspace/.gitignore.handlebars +8 -0
  521. package/template-workspace/.modernjs/release-cohort.json +208 -0
  522. package/template-workspace/AGENTS.md.handlebars +16 -89
  523. package/template-workspace/README.md.handlebars +17 -16
  524. package/template-workspace/patches/@module-federation__bridge-react@2.8.0.patch +138 -0
  525. package/template-workspace/patches/@module-federation__modern-js-v3@2.8.0.patch +259 -0
  526. package/template-workspace/patches/@tanstack__router-core@1.171.14.patch +123 -0
  527. package/template-workspace/patches/drizzle-orm-ts7-strict-declarations.patch +452 -0
  528. package/template-workspace/patches/effect-schema-error-type-id.patch +18 -0
  529. package/template-workspace/pnpm-workspace.yaml.handlebars +8 -25
  530. package/template-workspace/scripts/bootstrap-agent-skills.mjs +11 -3
  531. package/templates/app/shell-frame.tsx +5 -4
  532. package/templates/workspace/apps/modern.config.shared-module-federation.ts.handlebars +37 -0
  533. package/templates/workspace/apps/modern.config.ts.handlebars +191 -0
  534. package/templates/workspace/apps/shared/src/routes/ultramodern-jsonld.ts.handlebars +119 -0
  535. package/templates/workspace/apps/shared/src/routes/ultramodern-route-metadata.ts.handlebars +21 -0
  536. package/templates/workspace/apps/shell-super-app/src/routes/[lang]/page.tsx.handlebars +49 -0
  537. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.helpers.tsx.handlebars +27 -0
  538. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.imports.tsx.handlebars +4 -0
  539. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.tsx.handlebars +44 -0
  540. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.worker.helpers.tsx.handlebars +17 -0
  541. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.worker.imports.tsx.handlebars +1 -0
  542. package/templates/workspace/packages/shared-design-tokens/tokens.css.handlebars +7 -0
  543. package/templates/workspace/tailwind.config.ts.handlebars +3 -0
  544. package/templates/workspace/verticals/server/checkout-cart-handlers.ts.handlebars +49 -0
  545. package/templates/workspace/verticals/server/checkout-cart-state.ts.handlebars +23 -0
  546. package/templates/workspace/verticals/shared/api.checkout-cart-contract-fields.ts.handlebars +1 -0
  547. package/templates/workspace/verticals/shared/api.checkout-cart-endpoints.ts.handlebars +23 -0
  548. package/templates/workspace/verticals/shared/api.checkout-cart-operation-contexts.ts.handlebars +29 -0
  549. package/templates/workspace/verticals/shared/api.checkout-cart-schemas.ts.handlebars +48 -0
  550. package/templates/workspace/verticals/src/api/checkout-cart-client-exports.ts.handlebars +70 -0
  551. package/templates/workspace-scripts/assert-mf-types.mjs.handlebars +4 -4
  552. package/templates/workspace-scripts/check-ultramodern-api-boundaries.mts +40 -2
  553. package/templates/workspace-scripts/generate-node-backend-federation.mjs +379 -0
  554. package/templates/workspace-scripts/generate-public-surface-assets.mjs +5 -5
  555. package/templates/workspace-scripts/materialize-zerops-runtime.mjs +447 -0
  556. package/templates/workspace-scripts/proof-cloudflare-version.mjs +237 -9
  557. package/templates/workspace-scripts/proof-node-backend-federation.mjs +984 -0
  558. package/templates/workspace-scripts/proof-workerd-ssr.mts +815 -0
  559. package/templates/workspace-scripts/ultramodern-cloudflare-proof.mjs +188 -2
  560. package/templates/workspace-scripts/ultramodern-typecheck.mjs +6 -46
  561. package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +2447 -249
  562. 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,23 @@
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
+ function rewriteLegacyApiMarkerBinding(source) {
9
+ if (!legacyApiMarkerPattern.test(source)) return source;
10
+ return source.replace(legacyApiMarkerPattern, "export { ultramodernApiMarker } from './ultramodern-build.ts';\n");
11
+ }
12
+ function updateGeneratedBuildIdentityModules(io, config) {
13
+ let changed = false;
14
+ for (const app of allWorkspaceAppsFromToolingConfig(config)){
15
+ const sharedApiPath = node_path.join(io.workspaceRoot, app.directory, 'shared/api.ts');
16
+ if (app.api && node_fs.existsSync(sharedApiPath)) changed = writeTextIfChanged(io, sharedApiPath, rewriteLegacyApiMarkerBinding(node_fs.readFileSync(sharedApiPath, 'utf-8'))) || changed;
17
+ changed = writeTextIfChanged(io, node_path.join(io.workspaceRoot, app.directory, 'src/ultramodern-build.ts'), createUltramodernBuildReexportModule()) || changed;
18
+ changed = writeTextIfChanged(io, node_path.join(io.workspaceRoot, app.directory, 'shared/ultramodern-build.ts'), createUltramodernBuildModule(config.workspace.packageScope, app)) || changed;
19
+ changed = writeTextIfChanged(io, node_path.join(io.workspaceRoot, app.directory, 'shared/ultramodern-build.json'), createUltramodernBuildArtifactJson(config.workspace.packageScope, app)) || changed;
20
+ }
21
+ return changed;
22
+ }
23
+ export { rewriteLegacyApiMarkerBinding, updateGeneratedBuildIdentityModules };