@bleedingdev/modern-js-create 3.5.0-ultramodern.4 → 3.5.0-ultramodern.40

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 (499) hide show
  1. package/README.md +28 -28
  2. package/dist/cjs/cli/flags.cjs +295 -0
  3. package/dist/cjs/cli/help.cjs +105 -0
  4. package/dist/cjs/cli/package-source.cjs +183 -0
  5. package/dist/cjs/cli/project-setup.cjs +138 -0
  6. package/dist/cjs/cli/prompts.cjs +100 -0
  7. package/dist/cjs/index.cjs +22 -584
  8. package/dist/cjs/locale/en.cjs +2 -6
  9. package/dist/cjs/locale/zh.cjs +2 -6
  10. package/dist/cjs/ultramodern-package-source.cjs +0 -32
  11. package/dist/cjs/ultramodern-tooling/commands/cloudflare-output-verify.cjs +132 -0
  12. package/dist/cjs/ultramodern-tooling/commands/context.cjs +131 -0
  13. package/dist/cjs/ultramodern-tooling/commands/mf-types.cjs +55 -0
  14. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.cjs +158 -0
  15. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.cjs +50 -0
  16. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.cjs +87 -0
  17. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.cjs +58 -0
  18. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.cjs +62 -0
  19. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.cjs +60 -0
  20. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.cjs +132 -0
  21. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.cjs +67 -0
  22. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.cjs +93 -0
  23. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.cjs +60 -0
  24. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.cjs +67 -0
  25. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.cjs +67 -0
  26. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/help.cjs +54 -0
  27. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/install.cjs +52 -0
  28. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/io.cjs +133 -0
  29. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.cjs +245 -0
  30. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-source.cjs +76 -0
  31. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.cjs +142 -0
  32. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.cjs +155 -0
  33. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.cjs +155 -0
  34. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect.cjs +149 -0
  35. package/dist/cjs/ultramodern-tooling/commands/options.cjs +59 -0
  36. package/dist/cjs/ultramodern-tooling/commands/routes-generate.cjs +122 -0
  37. package/dist/cjs/ultramodern-tooling/commands/skills.cjs +49 -0
  38. package/dist/cjs/ultramodern-tooling/commands/sync-delivery-unit.cjs +40 -0
  39. package/dist/cjs/ultramodern-tooling/commands/validate.cjs +49 -0
  40. package/dist/cjs/ultramodern-tooling/commands.cjs +27 -485
  41. package/dist/cjs/ultramodern-tooling/config/constants.cjs +48 -0
  42. package/dist/cjs/ultramodern-tooling/config/index.cjs +104 -0
  43. package/dist/cjs/ultramodern-tooling/config/json.cjs +61 -0
  44. package/dist/cjs/ultramodern-tooling/config/load.cjs +62 -0
  45. package/dist/cjs/ultramodern-tooling/config/metadata.cjs +92 -0
  46. package/dist/cjs/ultramodern-tooling/config/normalize.cjs +160 -0
  47. package/dist/cjs/ultramodern-tooling/config/synthesize.cjs +157 -0
  48. package/dist/cjs/ultramodern-tooling/config/types.cjs +18 -0
  49. package/dist/cjs/ultramodern-tooling/config.cjs +23 -133
  50. package/dist/cjs/ultramodern-workspace/add-vertical/constants.cjs +52 -0
  51. package/dist/cjs/ultramodern-workspace/add-vertical/execute.cjs +156 -0
  52. package/dist/cjs/ultramodern-workspace/add-vertical/plan.cjs +234 -0
  53. package/dist/cjs/ultramodern-workspace/add-vertical/preflight.cjs +174 -0
  54. package/dist/cjs/ultramodern-workspace/add-vertical/shell-files.cjs +116 -0
  55. package/dist/cjs/ultramodern-workspace/add-vertical/topology.cjs +135 -0
  56. package/dist/cjs/ultramodern-workspace/add-vertical/workspace-state.cjs +107 -0
  57. package/dist/cjs/ultramodern-workspace/add-vertical.cjs +22 -571
  58. package/dist/cjs/ultramodern-workspace/api/checkout-cart.cjs +145 -0
  59. package/dist/cjs/ultramodern-workspace/api/client.cjs +218 -0
  60. package/dist/cjs/ultramodern-workspace/api/contracts.cjs +222 -0
  61. package/dist/cjs/ultramodern-workspace/api/names.cjs +98 -0
  62. package/dist/cjs/ultramodern-workspace/api/service.cjs +220 -0
  63. package/dist/cjs/ultramodern-workspace/api/shared.cjs +252 -0
  64. package/dist/cjs/ultramodern-workspace/api.cjs +29 -1004
  65. package/dist/cjs/ultramodern-workspace/app-files.cjs +12 -51
  66. package/dist/cjs/ultramodern-workspace/backend-federation.cjs +296 -0
  67. package/dist/cjs/ultramodern-workspace/bridge-config/cli.cjs +71 -0
  68. package/dist/cjs/ultramodern-workspace/bridge-config/defaults.cjs +43 -0
  69. package/dist/cjs/ultramodern-workspace/bridge-config/gates.cjs +93 -0
  70. package/dist/cjs/ultramodern-workspace/bridge-config/index.cjs +60 -0
  71. package/dist/cjs/ultramodern-workspace/bridge-config/normalize.cjs +68 -0
  72. package/dist/cjs/ultramodern-workspace/bridge-config/schema.cjs +78 -0
  73. package/dist/cjs/ultramodern-workspace/bridge-config/shared.cjs +110 -0
  74. package/dist/cjs/ultramodern-workspace/bridge-config/validation.cjs +68 -0
  75. package/dist/cjs/ultramodern-workspace/bridge-config/workspace-packages.cjs +108 -0
  76. package/dist/cjs/ultramodern-workspace/bridge-config.cjs +32 -297
  77. package/dist/cjs/ultramodern-workspace/contracts.cjs +40 -15
  78. package/dist/cjs/ultramodern-workspace/delivery-unit-sync.cjs +159 -0
  79. package/dist/cjs/ultramodern-workspace/delivery-unit.cjs +75 -0
  80. package/dist/cjs/ultramodern-workspace/demo-components.cjs +47 -192
  81. package/dist/cjs/ultramodern-workspace/descriptors.cjs +36 -1
  82. package/dist/cjs/ultramodern-workspace/effect-diagnostics.cjs +114 -0
  83. package/dist/cjs/ultramodern-workspace/fs-io.cjs +24 -35
  84. package/dist/cjs/ultramodern-workspace/index.cjs +4 -0
  85. package/dist/cjs/ultramodern-workspace/locales.cjs +1 -14
  86. package/dist/cjs/ultramodern-workspace/mf-validation/constants.cjs +69 -0
  87. package/dist/cjs/ultramodern-workspace/mf-validation/discovery.cjs +77 -0
  88. package/dist/cjs/ultramodern-workspace/mf-validation/inspect.cjs +84 -0
  89. package/dist/cjs/ultramodern-workspace/mf-validation/object-literal.cjs +188 -0
  90. package/dist/cjs/ultramodern-workspace/mf-validation/path-utils.cjs +165 -0
  91. package/dist/cjs/ultramodern-workspace/mf-validation/syntax.cjs +201 -0
  92. package/dist/cjs/ultramodern-workspace/mf-validation/types.cjs +18 -0
  93. package/dist/cjs/ultramodern-workspace/mf-validation/validate.cjs +112 -0
  94. package/dist/cjs/ultramodern-workspace/mf-validation.cjs +6 -529
  95. package/dist/cjs/ultramodern-workspace/module-federation/config.cjs +262 -0
  96. package/dist/cjs/ultramodern-workspace/module-federation/index.cjs +73 -0
  97. package/dist/cjs/ultramodern-workspace/module-federation/reexport-module.cjs +74 -0
  98. package/dist/cjs/ultramodern-workspace/module-federation/remote-refs.cjs +105 -0
  99. package/dist/cjs/ultramodern-workspace/module-federation/shared-config.cjs +53 -0
  100. package/dist/cjs/ultramodern-workspace/module-federation.cjs +18 -477
  101. package/dist/cjs/ultramodern-workspace/naming.cjs +0 -6
  102. package/dist/cjs/ultramodern-workspace/package-json.cjs +27 -269
  103. package/dist/cjs/ultramodern-workspace/policy.cjs +0 -21
  104. package/dist/cjs/ultramodern-workspace/public-surface.cjs +0 -21
  105. package/dist/cjs/ultramodern-workspace/routes.cjs +8 -157
  106. package/dist/cjs/ultramodern-workspace/shared-patches.cjs +45 -0
  107. package/dist/cjs/ultramodern-workspace/tooling-command-catalog.cjs +147 -0
  108. package/dist/cjs/ultramodern-workspace/tsconfigs.cjs +199 -0
  109. package/dist/cjs/ultramodern-workspace/versions.cjs +31 -38
  110. package/dist/cjs/ultramodern-workspace/workspace-script-plan.cjs +163 -0
  111. package/dist/cjs/ultramodern-workspace/workspace-scripts.cjs +96 -73
  112. package/dist/cjs/ultramodern-workspace/workspace-validation-contract.cjs +97 -0
  113. package/dist/cjs/ultramodern-workspace/write-app.cjs +125 -0
  114. package/dist/cjs/ultramodern-workspace/write-workspace.cjs +13 -63
  115. package/dist/cjs/ultramodern-workspace/zerops.cjs +103 -0
  116. package/dist/esm/cli/flags.js +218 -0
  117. package/dist/esm/cli/help.js +64 -0
  118. package/dist/esm/cli/package-source.js +119 -0
  119. package/dist/esm/cli/project-setup.js +81 -0
  120. package/dist/esm/cli/prompts.js +51 -0
  121. package/dist/esm/index.js +6 -564
  122. package/dist/esm/locale/en.js +2 -6
  123. package/dist/esm/locale/zh.js +2 -6
  124. package/dist/esm/ultramodern-package-source.js +1 -24
  125. package/dist/esm/ultramodern-tooling/commands/cloudflare-output-verify.js +84 -0
  126. package/dist/esm/ultramodern-tooling/commands/context.js +66 -0
  127. package/dist/esm/ultramodern-tooling/commands/mf-types.js +17 -0
  128. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.js +106 -0
  129. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +12 -0
  130. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.js +38 -0
  131. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.js +10 -0
  132. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +14 -0
  133. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +12 -0
  134. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.js +83 -0
  135. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.js +16 -0
  136. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.js +44 -0
  137. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.js +12 -0
  138. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.js +7 -0
  139. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.js +15 -0
  140. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/help.js +16 -0
  141. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/install.js +14 -0
  142. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/io.js +69 -0
  143. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +201 -0
  144. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-source.js +38 -0
  145. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +87 -0
  146. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +105 -0
  147. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +71 -0
  148. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect.js +100 -0
  149. package/dist/esm/ultramodern-tooling/commands/options.js +18 -0
  150. package/dist/esm/ultramodern-tooling/commands/routes-generate.js +74 -0
  151. package/dist/esm/ultramodern-tooling/commands/skills.js +11 -0
  152. package/dist/esm/ultramodern-tooling/commands/sync-delivery-unit.js +1 -0
  153. package/dist/esm/ultramodern-tooling/commands/validate.js +11 -0
  154. package/dist/esm/ultramodern-tooling/commands.js +22 -475
  155. package/dist/esm/ultramodern-tooling/config/constants.js +4 -0
  156. package/dist/esm/ultramodern-tooling/config/index.js +7 -0
  157. package/dist/esm/ultramodern-tooling/config/json.js +10 -0
  158. package/dist/esm/ultramodern-tooling/config/load.js +13 -0
  159. package/dist/esm/ultramodern-tooling/config/metadata.js +37 -0
  160. package/dist/esm/ultramodern-tooling/config/normalize.js +106 -0
  161. package/dist/esm/ultramodern-tooling/config/synthesize.js +108 -0
  162. package/dist/esm/ultramodern-tooling/config/types.js +0 -0
  163. package/dist/esm/ultramodern-tooling/config.js +1 -120
  164. package/dist/esm/ultramodern-workspace/add-vertical/constants.js +5 -0
  165. package/dist/esm/ultramodern-workspace/add-vertical/execute.js +108 -0
  166. package/dist/esm/ultramodern-workspace/add-vertical/plan.js +184 -0
  167. package/dist/esm/ultramodern-workspace/add-vertical/preflight.js +122 -0
  168. package/dist/esm/ultramodern-workspace/add-vertical/shell-files.js +59 -0
  169. package/dist/esm/ultramodern-workspace/add-vertical/topology.js +91 -0
  170. package/dist/esm/ultramodern-workspace/add-vertical/workspace-state.js +43 -0
  171. package/dist/esm/ultramodern-workspace/add-vertical.js +6 -544
  172. package/dist/esm/ultramodern-workspace/api/checkout-cart.js +86 -0
  173. package/dist/esm/ultramodern-workspace/api/client.js +177 -0
  174. package/dist/esm/ultramodern-workspace/api/contracts.js +172 -0
  175. package/dist/esm/ultramodern-workspace/api/names.js +33 -0
  176. package/dist/esm/ultramodern-workspace/api/service.js +179 -0
  177. package/dist/esm/ultramodern-workspace/api/shared.js +208 -0
  178. package/dist/esm/ultramodern-workspace/api.js +5 -984
  179. package/dist/esm/ultramodern-workspace/app-files.js +11 -32
  180. package/dist/esm/ultramodern-workspace/backend-federation.js +231 -0
  181. package/dist/esm/ultramodern-workspace/bridge-config/cli.js +30 -0
  182. package/dist/esm/ultramodern-workspace/bridge-config/defaults.js +5 -0
  183. package/dist/esm/ultramodern-workspace/bridge-config/gates.js +52 -0
  184. package/dist/esm/ultramodern-workspace/bridge-config/index.js +3 -0
  185. package/dist/esm/ultramodern-workspace/bridge-config/normalize.js +30 -0
  186. package/dist/esm/ultramodern-workspace/bridge-config/schema.js +31 -0
  187. package/dist/esm/ultramodern-workspace/bridge-config/shared.js +51 -0
  188. package/dist/esm/ultramodern-workspace/bridge-config/validation.js +27 -0
  189. package/dist/esm/ultramodern-workspace/bridge-config/workspace-packages.js +67 -0
  190. package/dist/esm/ultramodern-workspace/bridge-config.js +1 -270
  191. package/dist/esm/ultramodern-workspace/contracts.js +40 -15
  192. package/dist/esm/ultramodern-workspace/delivery-unit-sync.js +110 -0
  193. package/dist/esm/ultramodern-workspace/delivery-unit.js +21 -0
  194. package/dist/esm/ultramodern-workspace/demo-components.js +48 -190
  195. package/dist/esm/ultramodern-workspace/descriptors.js +25 -2
  196. package/dist/esm/ultramodern-workspace/effect-diagnostics.js +76 -0
  197. package/dist/esm/ultramodern-workspace/fs-io.js +25 -17
  198. package/dist/esm/ultramodern-workspace/index.js +1 -0
  199. package/dist/esm/ultramodern-workspace/locales.js +1 -1
  200. package/dist/esm/ultramodern-workspace/mf-validation/constants.js +19 -0
  201. package/dist/esm/ultramodern-workspace/mf-validation/discovery.js +28 -0
  202. package/dist/esm/ultramodern-workspace/mf-validation/inspect.js +46 -0
  203. package/dist/esm/ultramodern-workspace/mf-validation/object-literal.js +144 -0
  204. package/dist/esm/ultramodern-workspace/mf-validation/path-utils.js +89 -0
  205. package/dist/esm/ultramodern-workspace/mf-validation/syntax.js +154 -0
  206. package/dist/esm/ultramodern-workspace/mf-validation/types.js +0 -0
  207. package/dist/esm/ultramodern-workspace/mf-validation/validate.js +57 -0
  208. package/dist/esm/ultramodern-workspace/mf-validation.js +3 -516
  209. package/dist/esm/ultramodern-workspace/module-federation/config.js +215 -0
  210. package/dist/esm/ultramodern-workspace/module-federation/index.js +4 -0
  211. package/dist/esm/ultramodern-workspace/module-federation/reexport-module.js +30 -0
  212. package/dist/esm/ultramodern-workspace/module-federation/remote-refs.js +64 -0
  213. package/dist/esm/ultramodern-workspace/module-federation/shared-config.js +12 -0
  214. package/dist/esm/ultramodern-workspace/module-federation.js +2 -458
  215. package/dist/esm/ultramodern-workspace/naming.js +1 -1
  216. package/dist/esm/ultramodern-workspace/package-json.js +22 -252
  217. package/dist/esm/ultramodern-workspace/policy.js +1 -7
  218. package/dist/esm/ultramodern-workspace/public-surface.js +1 -1
  219. package/dist/esm/ultramodern-workspace/routes.js +9 -143
  220. package/dist/esm/ultramodern-workspace/shared-patches.js +7 -0
  221. package/dist/esm/ultramodern-workspace/tooling-command-catalog.js +100 -0
  222. package/dist/esm/ultramodern-workspace/tsconfigs.js +136 -0
  223. package/dist/esm/ultramodern-workspace/versions.js +23 -24
  224. package/dist/esm/ultramodern-workspace/workspace-script-plan.js +116 -0
  225. package/dist/esm/ultramodern-workspace/workspace-scripts.js +92 -69
  226. package/dist/esm/ultramodern-workspace/workspace-validation-contract.js +59 -0
  227. package/dist/esm/ultramodern-workspace/write-app.js +87 -0
  228. package/dist/esm/ultramodern-workspace/write-workspace.js +14 -61
  229. package/dist/esm/ultramodern-workspace/zerops.js +65 -0
  230. package/dist/esm-node/cli/flags.js +219 -0
  231. package/dist/esm-node/cli/help.js +65 -0
  232. package/dist/esm-node/cli/package-source.js +120 -0
  233. package/dist/esm-node/cli/project-setup.js +82 -0
  234. package/dist/esm-node/cli/prompts.js +52 -0
  235. package/dist/esm-node/index.js +6 -564
  236. package/dist/esm-node/locale/en.js +2 -6
  237. package/dist/esm-node/locale/zh.js +2 -6
  238. package/dist/esm-node/ultramodern-package-source.js +1 -24
  239. package/dist/esm-node/ultramodern-tooling/commands/cloudflare-output-verify.js +85 -0
  240. package/dist/esm-node/ultramodern-tooling/commands/context.js +67 -0
  241. package/dist/esm-node/ultramodern-tooling/commands/mf-types.js +18 -0
  242. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.js +107 -0
  243. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +13 -0
  244. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.js +39 -0
  245. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.js +11 -0
  246. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +15 -0
  247. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +13 -0
  248. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.js +84 -0
  249. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.js +17 -0
  250. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.js +45 -0
  251. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.js +13 -0
  252. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.js +8 -0
  253. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.js +16 -0
  254. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/help.js +17 -0
  255. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/install.js +15 -0
  256. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/io.js +70 -0
  257. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +202 -0
  258. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-source.js +39 -0
  259. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +88 -0
  260. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +106 -0
  261. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +72 -0
  262. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect.js +101 -0
  263. package/dist/esm-node/ultramodern-tooling/commands/options.js +19 -0
  264. package/dist/esm-node/ultramodern-tooling/commands/routes-generate.js +75 -0
  265. package/dist/esm-node/ultramodern-tooling/commands/skills.js +12 -0
  266. package/dist/esm-node/ultramodern-tooling/commands/sync-delivery-unit.js +2 -0
  267. package/dist/esm-node/ultramodern-tooling/commands/validate.js +12 -0
  268. package/dist/esm-node/ultramodern-tooling/commands.js +22 -475
  269. package/dist/esm-node/ultramodern-tooling/config/constants.js +5 -0
  270. package/dist/esm-node/ultramodern-tooling/config/index.js +8 -0
  271. package/dist/esm-node/ultramodern-tooling/config/json.js +11 -0
  272. package/dist/esm-node/ultramodern-tooling/config/load.js +14 -0
  273. package/dist/esm-node/ultramodern-tooling/config/metadata.js +38 -0
  274. package/dist/esm-node/ultramodern-tooling/config/normalize.js +107 -0
  275. package/dist/esm-node/ultramodern-tooling/config/synthesize.js +109 -0
  276. package/dist/esm-node/ultramodern-tooling/config/types.js +1 -0
  277. package/dist/esm-node/ultramodern-tooling/config.js +1 -120
  278. package/dist/esm-node/ultramodern-workspace/add-vertical/constants.js +6 -0
  279. package/dist/esm-node/ultramodern-workspace/add-vertical/execute.js +109 -0
  280. package/dist/esm-node/ultramodern-workspace/add-vertical/plan.js +185 -0
  281. package/dist/esm-node/ultramodern-workspace/add-vertical/preflight.js +123 -0
  282. package/dist/esm-node/ultramodern-workspace/add-vertical/shell-files.js +60 -0
  283. package/dist/esm-node/ultramodern-workspace/add-vertical/topology.js +92 -0
  284. package/dist/esm-node/ultramodern-workspace/add-vertical/workspace-state.js +44 -0
  285. package/dist/esm-node/ultramodern-workspace/add-vertical.js +6 -544
  286. package/dist/esm-node/ultramodern-workspace/api/checkout-cart.js +87 -0
  287. package/dist/esm-node/ultramodern-workspace/api/client.js +178 -0
  288. package/dist/esm-node/ultramodern-workspace/api/contracts.js +173 -0
  289. package/dist/esm-node/ultramodern-workspace/api/names.js +34 -0
  290. package/dist/esm-node/ultramodern-workspace/api/service.js +180 -0
  291. package/dist/esm-node/ultramodern-workspace/api/shared.js +209 -0
  292. package/dist/esm-node/ultramodern-workspace/api.js +5 -984
  293. package/dist/esm-node/ultramodern-workspace/app-files.js +11 -32
  294. package/dist/esm-node/ultramodern-workspace/backend-federation.js +232 -0
  295. package/dist/esm-node/ultramodern-workspace/bridge-config/cli.js +31 -0
  296. package/dist/esm-node/ultramodern-workspace/bridge-config/defaults.js +6 -0
  297. package/dist/esm-node/ultramodern-workspace/bridge-config/gates.js +53 -0
  298. package/dist/esm-node/ultramodern-workspace/bridge-config/index.js +4 -0
  299. package/dist/esm-node/ultramodern-workspace/bridge-config/normalize.js +31 -0
  300. package/dist/esm-node/ultramodern-workspace/bridge-config/schema.js +32 -0
  301. package/dist/esm-node/ultramodern-workspace/bridge-config/shared.js +52 -0
  302. package/dist/esm-node/ultramodern-workspace/bridge-config/validation.js +28 -0
  303. package/dist/esm-node/ultramodern-workspace/bridge-config/workspace-packages.js +68 -0
  304. package/dist/esm-node/ultramodern-workspace/bridge-config.js +1 -270
  305. package/dist/esm-node/ultramodern-workspace/contracts.js +40 -15
  306. package/dist/esm-node/ultramodern-workspace/delivery-unit-sync.js +111 -0
  307. package/dist/esm-node/ultramodern-workspace/delivery-unit.js +22 -0
  308. package/dist/esm-node/ultramodern-workspace/demo-components.js +48 -190
  309. package/dist/esm-node/ultramodern-workspace/descriptors.js +25 -2
  310. package/dist/esm-node/ultramodern-workspace/effect-diagnostics.js +77 -0
  311. package/dist/esm-node/ultramodern-workspace/fs-io.js +25 -17
  312. package/dist/esm-node/ultramodern-workspace/index.js +1 -0
  313. package/dist/esm-node/ultramodern-workspace/locales.js +1 -1
  314. package/dist/esm-node/ultramodern-workspace/mf-validation/constants.js +20 -0
  315. package/dist/esm-node/ultramodern-workspace/mf-validation/discovery.js +29 -0
  316. package/dist/esm-node/ultramodern-workspace/mf-validation/inspect.js +47 -0
  317. package/dist/esm-node/ultramodern-workspace/mf-validation/object-literal.js +145 -0
  318. package/dist/esm-node/ultramodern-workspace/mf-validation/path-utils.js +90 -0
  319. package/dist/esm-node/ultramodern-workspace/mf-validation/syntax.js +155 -0
  320. package/dist/esm-node/ultramodern-workspace/mf-validation/types.js +1 -0
  321. package/dist/esm-node/ultramodern-workspace/mf-validation/validate.js +58 -0
  322. package/dist/esm-node/ultramodern-workspace/mf-validation.js +3 -516
  323. package/dist/esm-node/ultramodern-workspace/module-federation/config.js +216 -0
  324. package/dist/esm-node/ultramodern-workspace/module-federation/index.js +5 -0
  325. package/dist/esm-node/ultramodern-workspace/module-federation/reexport-module.js +31 -0
  326. package/dist/esm-node/ultramodern-workspace/module-federation/remote-refs.js +65 -0
  327. package/dist/esm-node/ultramodern-workspace/module-federation/shared-config.js +13 -0
  328. package/dist/esm-node/ultramodern-workspace/module-federation.js +2 -458
  329. package/dist/esm-node/ultramodern-workspace/naming.js +1 -1
  330. package/dist/esm-node/ultramodern-workspace/package-json.js +22 -252
  331. package/dist/esm-node/ultramodern-workspace/policy.js +1 -7
  332. package/dist/esm-node/ultramodern-workspace/public-surface.js +1 -1
  333. package/dist/esm-node/ultramodern-workspace/routes.js +9 -143
  334. package/dist/esm-node/ultramodern-workspace/shared-patches.js +8 -0
  335. package/dist/esm-node/ultramodern-workspace/tooling-command-catalog.js +101 -0
  336. package/dist/esm-node/ultramodern-workspace/tsconfigs.js +137 -0
  337. package/dist/esm-node/ultramodern-workspace/versions.js +23 -24
  338. package/dist/esm-node/ultramodern-workspace/workspace-script-plan.js +117 -0
  339. package/dist/esm-node/ultramodern-workspace/workspace-scripts.js +92 -69
  340. package/dist/esm-node/ultramodern-workspace/workspace-validation-contract.js +60 -0
  341. package/dist/esm-node/ultramodern-workspace/write-app.js +88 -0
  342. package/dist/esm-node/ultramodern-workspace/write-workspace.js +14 -61
  343. package/dist/esm-node/ultramodern-workspace/zerops.js +66 -0
  344. package/dist/types/cli/flags.d.ts +25 -0
  345. package/dist/types/cli/help.d.ts +2 -0
  346. package/dist/types/cli/package-source.d.ts +15 -0
  347. package/dist/types/cli/project-setup.d.ts +8 -0
  348. package/dist/types/cli/prompts.d.ts +4 -0
  349. package/dist/types/locale/en.d.ts +0 -4
  350. package/dist/types/locale/index.d.ts +0 -8
  351. package/dist/types/locale/zh.d.ts +0 -4
  352. package/dist/types/ultramodern-package-source.d.ts +0 -11
  353. package/dist/types/ultramodern-tooling/commands/cloudflare-output-verify.d.ts +2 -0
  354. package/dist/types/ultramodern-tooling/commands/context.d.ts +11 -0
  355. package/dist/types/ultramodern-tooling/commands/mf-types.d.ts +2 -0
  356. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.d.ts +4 -0
  357. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.d.ts +4 -0
  358. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.d.ts +1 -0
  359. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.d.ts +3 -0
  360. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.d.ts +3 -0
  361. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.d.ts +3 -0
  362. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.d.ts +2 -0
  363. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.d.ts +4 -0
  364. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.d.ts +3 -0
  365. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.d.ts +3 -0
  366. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.d.ts +7 -0
  367. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.d.ts +3 -0
  368. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/help.d.ts +1 -0
  369. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/install.d.ts +2 -0
  370. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/io.d.ts +14 -0
  371. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.d.ts +9 -0
  372. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/package-source.d.ts +3 -0
  373. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.d.ts +4 -0
  374. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.d.ts +20 -0
  375. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.d.ts +13 -0
  376. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect.d.ts +2 -0
  377. package/dist/types/ultramodern-tooling/commands/options.d.ts +2 -0
  378. package/dist/types/ultramodern-tooling/commands/routes-generate.d.ts +2 -0
  379. package/dist/types/ultramodern-tooling/commands/skills.d.ts +2 -0
  380. package/dist/types/ultramodern-tooling/commands/sync-delivery-unit.d.ts +1 -0
  381. package/dist/types/ultramodern-tooling/commands/validate.d.ts +2 -0
  382. package/dist/types/ultramodern-tooling/commands.d.ts +1 -1
  383. package/dist/types/ultramodern-tooling/config/constants.d.ts +3 -0
  384. package/dist/types/ultramodern-tooling/config/index.d.ts +7 -0
  385. package/dist/types/ultramodern-tooling/config/json.d.ts +2 -0
  386. package/dist/types/ultramodern-tooling/config/load.d.ts +2 -0
  387. package/dist/types/ultramodern-tooling/config/metadata.d.ts +4 -0
  388. package/dist/types/ultramodern-tooling/config/normalize.d.ts +5 -0
  389. package/dist/types/ultramodern-tooling/config/synthesize.d.ts +5 -0
  390. package/dist/types/ultramodern-tooling/config/types.d.ts +41 -0
  391. package/dist/types/ultramodern-tooling/config.d.ts +1 -43
  392. package/dist/types/ultramodern-workspace/add-vertical/constants.d.ts +4 -0
  393. package/dist/types/ultramodern-workspace/add-vertical/execute.d.ts +2 -0
  394. package/dist/types/ultramodern-workspace/add-vertical/plan.d.ts +2 -0
  395. package/dist/types/ultramodern-workspace/add-vertical/preflight.d.ts +20 -0
  396. package/dist/types/ultramodern-workspace/add-vertical/shell-files.d.ts +6 -0
  397. package/dist/types/ultramodern-workspace/add-vertical/topology.d.ts +9 -0
  398. package/dist/types/ultramodern-workspace/add-vertical/workspace-state.d.ts +8 -0
  399. package/dist/types/ultramodern-workspace/add-vertical.d.ts +7 -39
  400. package/dist/types/ultramodern-workspace/api/checkout-cart.d.ts +33 -0
  401. package/dist/types/ultramodern-workspace/api/client.d.ts +6 -0
  402. package/dist/types/ultramodern-workspace/api/contracts.d.ts +15 -0
  403. package/dist/types/ultramodern-workspace/api/names.d.ts +41 -0
  404. package/dist/types/ultramodern-workspace/api/service.d.ts +6 -0
  405. package/dist/types/ultramodern-workspace/api/shared.d.ts +10 -0
  406. package/dist/types/ultramodern-workspace/api.d.ts +5 -73
  407. package/dist/types/ultramodern-workspace/app-files.d.ts +1 -7
  408. package/dist/types/ultramodern-workspace/backend-federation.d.ts +11 -0
  409. package/dist/types/ultramodern-workspace/bridge-config/cli.d.ts +3 -0
  410. package/dist/types/ultramodern-workspace/bridge-config/defaults.d.ts +1 -0
  411. package/dist/types/ultramodern-workspace/bridge-config/gates.d.ts +3 -0
  412. package/dist/types/ultramodern-workspace/bridge-config/index.d.ts +4 -0
  413. package/dist/types/ultramodern-workspace/bridge-config/normalize.d.ts +2 -0
  414. package/dist/types/ultramodern-workspace/bridge-config/schema.d.ts +61 -0
  415. package/dist/types/ultramodern-workspace/bridge-config/shared.d.ts +12 -0
  416. package/dist/types/ultramodern-workspace/bridge-config/validation.d.ts +3 -0
  417. package/dist/types/ultramodern-workspace/bridge-config/workspace-packages.d.ts +3 -0
  418. package/dist/types/ultramodern-workspace/bridge-config.d.ts +1 -64
  419. package/dist/types/ultramodern-workspace/codesmith.d.ts +5 -5
  420. package/dist/types/ultramodern-workspace/contracts.d.ts +1 -1
  421. package/dist/types/ultramodern-workspace/delivery-unit-sync.d.ts +6 -0
  422. package/dist/types/ultramodern-workspace/delivery-unit.d.ts +8 -0
  423. package/dist/types/ultramodern-workspace/demo-components.d.ts +0 -1
  424. package/dist/types/ultramodern-workspace/descriptors.d.ts +4 -0
  425. package/dist/types/ultramodern-workspace/effect-diagnostics.d.ts +1 -0
  426. package/dist/types/ultramodern-workspace/fs-io.d.ts +1 -7
  427. package/dist/types/ultramodern-workspace/generation-result.d.ts +2 -1
  428. package/dist/types/ultramodern-workspace/index.d.ts +1 -0
  429. package/dist/types/ultramodern-workspace/locales.d.ts +0 -181
  430. package/dist/types/ultramodern-workspace/mf-validation/constants.d.ts +5 -0
  431. package/dist/types/ultramodern-workspace/mf-validation/discovery.d.ts +2 -0
  432. package/dist/types/ultramodern-workspace/mf-validation/inspect.d.ts +2 -0
  433. package/dist/types/ultramodern-workspace/mf-validation/object-literal.d.ts +4 -0
  434. package/dist/types/ultramodern-workspace/mf-validation/path-utils.d.ts +11 -0
  435. package/dist/types/ultramodern-workspace/mf-validation/syntax.d.ts +5 -0
  436. package/dist/types/ultramodern-workspace/mf-validation/types.d.ts +33 -0
  437. package/dist/types/ultramodern-workspace/mf-validation/validate.d.ts +4 -0
  438. package/dist/types/ultramodern-workspace/mf-validation.d.ts +4 -27
  439. package/dist/types/ultramodern-workspace/module-federation/config.d.ts +5 -0
  440. package/dist/types/ultramodern-workspace/module-federation/index.d.ts +4 -0
  441. package/dist/types/ultramodern-workspace/module-federation/reexport-module.d.ts +4 -0
  442. package/dist/types/ultramodern-workspace/module-federation/remote-refs.d.ts +3 -0
  443. package/dist/types/ultramodern-workspace/module-federation/shared-config.d.ts +2 -0
  444. package/dist/types/ultramodern-workspace/module-federation.d.ts +2 -17
  445. package/dist/types/ultramodern-workspace/naming.d.ts +0 -2
  446. package/dist/types/ultramodern-workspace/package-json.d.ts +1 -16
  447. package/dist/types/ultramodern-workspace/policy.d.ts +0 -47
  448. package/dist/types/ultramodern-workspace/public-surface.d.ts +5 -15
  449. package/dist/types/ultramodern-workspace/routes.d.ts +0 -9
  450. package/dist/types/ultramodern-workspace/shared-patches.d.ts +1 -0
  451. package/dist/types/ultramodern-workspace/tooling-command-catalog.d.ts +18 -0
  452. package/dist/types/ultramodern-workspace/tsconfigs.d.ts +13 -0
  453. package/dist/types/ultramodern-workspace/types.d.ts +3 -2
  454. package/dist/types/ultramodern-workspace/versions.d.ts +23 -24
  455. package/dist/types/ultramodern-workspace/workspace-script-plan.d.ts +58 -0
  456. package/dist/types/ultramodern-workspace/workspace-scripts.d.ts +12 -4
  457. package/dist/types/ultramodern-workspace/workspace-validation-contract.d.ts +41 -0
  458. package/dist/types/ultramodern-workspace/write-app.d.ts +3 -0
  459. package/dist/types/ultramodern-workspace/write-workspace.d.ts +2 -2
  460. package/dist/types/ultramodern-workspace/zerops.d.ts +2 -0
  461. package/package.json +14 -11
  462. package/template-workspace/.gitignore.handlebars +4 -0
  463. package/template-workspace/AGENTS.md.handlebars +2 -2
  464. package/template-workspace/README.md.handlebars +21 -20
  465. package/template-workspace/patches/@module-federation__bridge-react@2.7.0.patch +140 -0
  466. package/template-workspace/patches/@module-federation__dts-plugin@2.7.0.patch +37 -0
  467. package/template-workspace/patches/@module-federation__modern-js-v3@2.7.0.patch +57 -0
  468. package/template-workspace/patches/@tanstack__router-core@1.171.14.patch +123 -0
  469. package/template-workspace/patches/drizzle-orm-ts7-strict-declarations.patch +452 -0
  470. package/template-workspace/patches/effect-schema-error-type-id.patch +18 -0
  471. package/template-workspace/pnpm-workspace.yaml.handlebars +80 -2
  472. package/template-workspace/scripts/bootstrap-agent-skills.mjs +11 -3
  473. package/templates/workspace/apps/modern.config.shared-module-federation.ts.handlebars +37 -0
  474. package/templates/workspace/apps/modern.config.ts.handlebars +252 -0
  475. package/templates/workspace/apps/shared/src/routes/ultramodern-jsonld.ts.handlebars +119 -0
  476. package/templates/workspace/apps/shared/src/routes/ultramodern-route-metadata.ts.handlebars +21 -0
  477. package/templates/workspace/apps/shell-super-app/src/routes/[lang]/page.tsx.handlebars +49 -0
  478. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.helpers.tsx.handlebars +79 -0
  479. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.imports.tsx.handlebars +11 -0
  480. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.tsx.handlebars +46 -0
  481. package/templates/workspace/packages/shared-design-tokens/tokens.css.handlebars +7 -0
  482. package/templates/workspace/tailwind.config.ts.handlebars +3 -0
  483. package/templates/workspace/verticals/server/checkout-cart-handlers.ts.handlebars +49 -0
  484. package/templates/workspace/verticals/server/checkout-cart-state.ts.handlebars +23 -0
  485. package/templates/workspace/verticals/shared/api.checkout-cart-contract-fields.ts.handlebars +1 -0
  486. package/templates/workspace/verticals/shared/api.checkout-cart-endpoints.ts.handlebars +23 -0
  487. package/templates/workspace/verticals/shared/api.checkout-cart-operation-contexts.ts.handlebars +25 -0
  488. package/templates/workspace/verticals/shared/api.checkout-cart-schemas.ts.handlebars +48 -0
  489. package/templates/workspace/verticals/src/api/checkout-cart-client-exports.ts.handlebars +70 -0
  490. package/templates/workspace-scripts/assert-mf-types.mjs.handlebars +4 -4
  491. package/templates/workspace-scripts/check-ultramodern-api-boundaries.mts +40 -2
  492. package/templates/workspace-scripts/generate-node-backend-federation.mjs +299 -0
  493. package/templates/workspace-scripts/materialize-zerops-runtime.mjs +448 -0
  494. package/templates/workspace-scripts/proof-cloudflare-version.mjs +237 -9
  495. package/templates/workspace-scripts/proof-node-backend-federation.mjs +760 -0
  496. package/templates/workspace-scripts/ultramodern-cloudflare-proof.mjs +188 -2
  497. package/templates/workspace-scripts/ultramodern-typecheck.mjs +1 -1
  498. package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +479 -31
  499. package/template-workspace/patches/@tanstack__router-core@1.171.13.patch +0 -51
@@ -0,0 +1,74 @@
1
+ import node_path from "node:path";
2
+ import { readUltramodernConfig, workspaceAppsFromToolingConfig } from "../config.js";
3
+ import { runRenderedModule } from "./context.js";
4
+ import { readOption } from "./options.js";
5
+ const resolveRoutesGenerateTargets = (args, context)=>{
6
+ const appId = readOption(args, '--app');
7
+ const targets = workspaceAppsFromToolingConfig(readUltramodernConfig(context.workspaceRoot)).filter((app)=>!appId || app.id === appId).map((app)=>({
8
+ label: app.id,
9
+ appDirectory: node_path.join(context.workspaceRoot, app.directory)
10
+ }));
11
+ if (0 === targets.length) throw new Error(`No generated UltraModern app matched ${appId ?? '<any>'}.`);
12
+ return targets;
13
+ };
14
+ const renderRoutesGenerateModule = ({ workspaceRoot, targets })=>`
15
+ import { createRequire } from 'node:module';
16
+ import path from 'node:path';
17
+ import { pathToFileURL } from 'node:url';
18
+
19
+ const workspaceRoot = ${JSON.stringify(workspaceRoot)};
20
+ const targets = ${JSON.stringify(targets, null, 2)};
21
+ const appRequire = createRequire(path.join(workspaceRoot, 'package.json'));
22
+ const pluginUrl = pathToFileURL(
23
+ appRequire.resolve('@modern-js/plugin-tanstack'),
24
+ ).href;
25
+ const { generateTanstackRouteArtifacts } = await import(pluginUrl);
26
+
27
+ let failed = false;
28
+ // Sequential — the app-tools cli singleton is not re-entrant.
29
+ for (const target of targets) {
30
+ try {
31
+ await generateTanstackRouteArtifacts({ appDirectory: target.appDirectory });
32
+ console.log(\`[ultramodern] TanStack route artifacts generated: \${target.label}\`);
33
+ } catch (error) {
34
+ failed = true;
35
+ console.error(\`[ultramodern] TanStack route generation failed: \${target.label}\`);
36
+ // Print the full underlying failure, including the cause chain. The
37
+ // route-generate crash is often an opaque node error thrown deep inside
38
+ // app-tools/plugin (e.g. a path TypeError), so surfacing only
39
+ // \`error.message\` swallows the stack that points at the real culprit.
40
+ let current = error;
41
+ let depth = 0;
42
+ while (current) {
43
+ const label = depth === 0 ? '-' : ' caused by:';
44
+ const detail =
45
+ current instanceof Error
46
+ ? current.stack ?? \`\${current.name}: \${current.message}\`
47
+ : String(current);
48
+ console.error(\`\${label} \${detail}\`);
49
+ current = current instanceof Error ? current.cause : undefined;
50
+ depth += 1;
51
+ }
52
+ }
53
+ }
54
+
55
+ process.exit(failed ? 1 : 0);
56
+ `;
57
+ function runRoutesGenerate(args, context) {
58
+ if (args.includes('--help') || args.includes('-h')) {
59
+ process.stdout.write(`Usage:
60
+ modern-js-create ultramodern routes-generate [--app <id>]
61
+
62
+ Regenerates TanStack route artifacts (router.gen.ts, register.gen.d.ts) for
63
+ generated UltraModern apps without running dev or build. Without --app, every
64
+ generated workspace app is regenerated.
65
+ `);
66
+ return 0;
67
+ }
68
+ const source = renderRoutesGenerateModule({
69
+ workspaceRoot: context.workspaceRoot,
70
+ targets: resolveRoutesGenerateTargets(args, context)
71
+ });
72
+ return runRenderedModule(source, context);
73
+ }
74
+ export { runRoutesGenerate };
@@ -0,0 +1,11 @@
1
+ import { spawnNodeScript } from "./context.js";
2
+ function runSkills(args, context) {
3
+ const [subcommand, ...rest] = args;
4
+ if ('install' === subcommand) return spawnNodeScript("template-workspace/scripts/bootstrap-agent-skills.mjs", rest, context);
5
+ if ('check' === subcommand) return spawnNodeScript("template-workspace/scripts/bootstrap-agent-skills.mjs", [
6
+ '--check',
7
+ ...rest
8
+ ], context);
9
+ throw new Error('Usage: modern-js-create ultramodern skills <install|check>');
10
+ }
11
+ export { runSkills };
@@ -0,0 +1 @@
1
+ export { runSyncDeliveryUnit } from "../../ultramodern-workspace/delivery-unit-sync.js";
@@ -0,0 +1,11 @@
1
+ import { createWorkspaceValidationScript } from "../../ultramodern-workspace/workspace-scripts.js";
2
+ import { readUltramodernConfig, workspaceAppsFromToolingConfig } from "../config.js";
3
+ import { runRenderedModule } from "./context.js";
4
+ function runValidate(context) {
5
+ const config = readUltramodernConfig(context.workspaceRoot);
6
+ const apps = workspaceAppsFromToolingConfig(config);
7
+ const remotes = apps.filter((app)=>'shell' !== app.kind);
8
+ const source = createWorkspaceValidationScript(config.workspace.packageScope, config.features.tailwind, remotes);
9
+ return runRenderedModule(source, context);
10
+ }
11
+ export { runValidate };
@@ -1,466 +1,13 @@
1
- import { spawnSync } from "node:child_process";
2
- import node_fs from "node:fs";
3
- import node_os from "node:os";
4
1
  import node_path from "node:path";
5
- import { fileURLToPath } from "node:url";
6
- import { resolveCreatePackageRoot } from "../create-package-root.js";
7
- import { BLEEDINGDEV_PACKAGE_NAME_PREFIX, BLEEDINGDEV_PACKAGE_SCOPE, ULTRAMODERN_SINGLE_APP_MODERN_PACKAGES, ULTRAMODERN_WORKSPACE_MODERN_PACKAGES, WORKSPACE_PACKAGE_VERSION, modernPackageSpecifier } from "../ultramodern-package-source.js";
8
- import { validateModuleFederationTypes } from "../ultramodern-workspace/mf-validation.js";
9
- import { EFFECT_TSGO_VERSION, EFFECT_VERSION, EFFECT_VITEST_VERSION, OXFMT_VERSION, OXLINT_VERSION, TYPESCRIPT_NATIVE_PREVIEW_VERSION, WRANGLER_VERSION, ZEPHYR_AGENT_VERSION, ZEPHYR_RSPACK_PLUGIN_VERSION } from "../ultramodern-workspace/versions.js";
10
- import { createWorkspaceValidationScript } from "../ultramodern-workspace/workspace-scripts.js";
11
- import { readUltramodernConfig, workspaceAppsFromToolingConfig } from "./config.js";
12
- const commands_dirname = node_path.dirname(fileURLToPath(import.meta.url));
13
- const createPackageRoot = resolveCreatePackageRoot(commands_dirname);
14
- function printHelp() {
15
- process.stdout.write(`Usage:
16
- modern-js-create ultramodern <command> [args]
17
-
18
- Commands:
19
- validate
20
- typecheck
21
- mf-types
22
- migrate-strict-effect
23
- public-surface
24
- cloudflare-proof
25
- performance-readiness
26
- skills install
27
- skills check
28
- `);
29
- }
30
- function spawnNodeScript(relativeScriptPath, args, context, options = {}) {
31
- const scriptPath = node_path.join(createPackageRoot, relativeScriptPath);
32
- const result = spawnSync(process.execPath, [
33
- scriptPath,
34
- ...args
35
- ], {
36
- cwd: options.cwd ?? context.workspaceRoot,
37
- env: {
38
- ...process.env,
39
- ULTRAMODERN_WORKSPACE_ROOT: context.workspaceRoot
40
- },
41
- stdio: 'inherit'
42
- });
43
- if (result.error) throw result.error;
44
- return result.status ?? 1;
45
- }
46
- function runRenderedModule(source, context) {
47
- const tempDir = node_fs.mkdtempSync(node_path.join(node_os.tmpdir(), 'ultramodern-tool-'));
48
- const tempFile = node_path.join(tempDir, 'command.mjs');
49
- try {
50
- node_fs.writeFileSync(tempFile, source, 'utf-8');
51
- const result = spawnSync(process.execPath, [
52
- tempFile
53
- ], {
54
- cwd: context.workspaceRoot,
55
- stdio: 'inherit'
56
- });
57
- if (result.error) throw result.error;
58
- return result.status ?? 1;
59
- } finally{
60
- node_fs.rmSync(tempDir, {
61
- force: true,
62
- recursive: true
63
- });
64
- }
65
- }
66
- function runValidate(context) {
67
- const config = readUltramodernConfig(context.workspaceRoot);
68
- const apps = workspaceAppsFromToolingConfig(config);
69
- const remotes = apps.filter((app)=>'shell' !== app.kind);
70
- const source = createWorkspaceValidationScript(config.workspace.packageScope, config.features.tailwind, remotes);
71
- return runRenderedModule(source, context);
72
- }
73
- function runMfTypes(args, context) {
74
- if (args.includes('--help') || args.includes('-h')) {
75
- process.stdout.write(`Usage:
76
- modern-js-create ultramodern mf-types [app-dir...]
77
-
78
- Checks real Module Federation config files and DTS archives for exposed apps.
79
- `);
80
- return 0;
81
- }
82
- validateModuleFederationTypes({
83
- workspaceRoot: context.workspaceRoot,
84
- appDirs: args.length > 0 ? args : void 0
85
- });
86
- return 0;
87
- }
88
- const modernPackageNames = new Set([
89
- ...ULTRAMODERN_SINGLE_APP_MODERN_PACKAGES,
90
- ...ULTRAMODERN_WORKSPACE_MODERN_PACKAGES
91
- ]);
92
- function readJsonFile(filePath) {
93
- return JSON.parse(node_fs.readFileSync(filePath, 'utf-8'));
94
- }
95
- function writeJsonFile(filePath, value) {
96
- node_fs.writeFileSync(filePath, `${JSON.stringify(value, null, 2)}\n`, 'utf-8');
97
- }
98
- function readOption(args, name) {
99
- const prefix = `${name}=`;
100
- const inline = args.find((arg)=>arg.startsWith(prefix));
101
- if (inline) {
102
- const value = inline.slice(prefix.length);
103
- if (!value) throw new Error(`${name} needs a value.`);
104
- return value;
105
- }
106
- const index = args.indexOf(name);
107
- if (-1 === index) return;
108
- const value = args[index + 1];
109
- if (!value || value.startsWith('--')) throw new Error(`${name} needs a value.`);
110
- return value;
111
- }
112
- function hasFlag(args, name) {
113
- return args.includes(name);
114
- }
115
- function listWorkspacePackageFiles(workspaceRoot) {
116
- const packageFiles = [
117
- 'package.json'
118
- ];
119
- for (const directory of [
120
- 'apps',
121
- 'verticals',
122
- 'packages'
123
- ]){
124
- const absoluteDirectory = node_path.join(workspaceRoot, directory);
125
- if (node_fs.existsSync(absoluteDirectory)) for (const entry of node_fs.readdirSync(absoluteDirectory, {
126
- withFileTypes: true
127
- })){
128
- if (!entry.isDirectory()) continue;
129
- const packageFile = node_path.join(directory, entry.name, 'package.json');
130
- if (node_fs.existsSync(node_path.join(workspaceRoot, packageFile))) packageFiles.push(packageFile);
131
- }
132
- }
133
- return packageFiles;
134
- }
135
- function updateModernDependencies(packageJson, packageSource) {
136
- let changed = false;
137
- for (const section of [
138
- 'dependencies',
139
- 'devDependencies',
140
- 'peerDependencies',
141
- 'optionalDependencies'
142
- ]){
143
- const dependencies = packageJson[section];
144
- if (!(!dependencies || 'object' != typeof dependencies || Array.isArray(dependencies))) for (const packageName of Object.keys(dependencies)){
145
- if (!modernPackageNames.has(packageName)) continue;
146
- const nextSpecifier = modernPackageSpecifier(packageName, packageSource);
147
- if (dependencies[packageName] !== nextSpecifier) {
148
- dependencies[packageName] = nextSpecifier;
149
- changed = true;
150
- }
151
- }
152
- }
153
- return changed;
154
- }
155
- const generatedToolingDependencyPins = new Map([
156
- [
157
- '@effect/tsgo',
158
- EFFECT_TSGO_VERSION
159
- ],
160
- [
161
- "@typescript/native-preview",
162
- TYPESCRIPT_NATIVE_PREVIEW_VERSION
163
- ],
164
- [
165
- 'oxfmt',
166
- OXFMT_VERSION
167
- ],
168
- [
169
- 'oxlint',
170
- OXLINT_VERSION
171
- ],
172
- [
173
- 'wrangler',
174
- WRANGLER_VERSION
175
- ],
176
- [
177
- 'zephyr-agent',
178
- ZEPHYR_AGENT_VERSION
179
- ],
180
- [
181
- 'zephyr-rspack-plugin',
182
- ZEPHYR_RSPACK_PLUGIN_VERSION
183
- ]
184
- ]);
185
- const strictEffectTrustPolicyExclusions = [
186
- `effect@${EFFECT_VERSION}`,
187
- `@effect/opentelemetry@${EFFECT_VERSION}`
188
- ];
189
- function updateGeneratedToolingDependencies(packageJson) {
190
- let changed = false;
191
- for (const section of [
192
- 'dependencies',
193
- 'devDependencies',
194
- 'peerDependencies',
195
- 'optionalDependencies'
196
- ]){
197
- const dependencies = packageJson[section];
198
- if (!(!dependencies || 'object' != typeof dependencies || Array.isArray(dependencies))) {
199
- for (const [packageName, version] of generatedToolingDependencyPins)if (Object.prototype.hasOwnProperty.call(dependencies, packageName) && dependencies[packageName] !== version) {
200
- dependencies[packageName] = version;
201
- changed = true;
202
- }
203
- }
204
- }
205
- return changed;
206
- }
207
- function normalizeStrictEffectApiMetadata(value) {
208
- const api = value.api;
209
- if (!api || 'object' != typeof api || Array.isArray(api)) return false;
210
- let changed = false;
211
- const oldEffect = api.effect;
212
- if (oldEffect && 'object' == typeof oldEffect && !Array.isArray(oldEffect)) {
213
- if (void 0 === api.stem && 'string' == typeof oldEffect.stem) {
214
- api.stem = oldEffect.stem;
215
- changed = true;
216
- }
217
- if (void 0 === api.prefix && 'string' == typeof oldEffect.prefix) {
218
- api.prefix = oldEffect.prefix;
219
- changed = true;
220
- }
221
- if (void 0 === api.consumedBy && Array.isArray(oldEffect.consumedBy)) {
222
- api.consumedBy = oldEffect.consumedBy;
223
- changed = true;
224
- }
225
- delete api.effect;
226
- changed = true;
227
- }
228
- if (void 0 !== api.runtime && 'effect' !== api.runtime) {
229
- api.runtime = 'effect';
230
- changed = true;
231
- }
232
- if (api.bff && 'object' == typeof api.bff && !Array.isArray(api.bff)) {
233
- if (true !== api.bff.strictEffectApproach) {
234
- api.bff.strictEffectApproach = true;
235
- changed = true;
236
- }
237
- }
238
- if ('string' == typeof value.path) {
239
- const directServerEntry = `${value.path}/api/index.ts`;
240
- if ('string' == typeof api.serverEntry && /\/api\/effect\/index\.[cm]?[jt]sx?$/u.test(api.serverEntry)) {
241
- api.serverEntry = directServerEntry;
242
- changed = true;
243
- }
244
- if (api.contract && 'object' == typeof api.contract && !Array.isArray(api.contract)) {
245
- if ('./shared/effect/api' === api.contract.export) {
246
- api.contract.export = './api';
247
- changed = true;
248
- }
249
- if ('string' == typeof api.contract.path && /\/shared\/effect\/api\.[cm]?[jt]sx?$/u.test(api.contract.path)) {
250
- api.contract.path = `${value.path}/shared/api.ts`;
251
- changed = true;
252
- }
253
- }
254
- if (api.client && 'object' == typeof api.client && !Array.isArray(api.client)) {
255
- if ('./effect/client' === api.client.export) {
256
- api.client.export = './api/client';
257
- changed = true;
258
- }
259
- if ('string' == typeof api.client.path && /\/src\/effect\/[^/]+-client\.[cm]?ts$/u.test(api.client.path)) {
260
- const basename = node_path.basename(api.client.path);
261
- api.client.path = `${value.path}/src/api/${basename}`;
262
- changed = true;
263
- }
264
- }
265
- if (void 0 === api.serverEntry && 'effect' === api.runtime) {
266
- api.serverEntry = directServerEntry;
267
- changed = true;
268
- }
269
- }
270
- return changed;
271
- }
272
- function replaceYamlLine(source, pattern, replacement) {
273
- const updated = source.replace(pattern, replacement);
274
- return {
275
- source: updated,
276
- changed: updated !== source
277
- };
278
- }
279
- function ensureYamlListItem(source, key, item) {
280
- const itemLine = ` - '${item}'`;
281
- const headerPattern = new RegExp(`^${key}:\\n(?:(?: - .+\\n)*)`, 'mu');
282
- const existingItemPattern = new RegExp(`^ - '${item.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&')}'$`, 'mu');
283
- if (existingItemPattern.test(source)) return {
284
- source,
285
- changed: false
286
- };
287
- const header = source.match(headerPattern);
288
- if (header) return {
289
- source: source.replace(headerPattern, `${header[0]}${itemLine}\n`),
290
- changed: true
291
- };
292
- const block = `${key}:\n${itemLine}\n`;
293
- const afterTrustPolicyIgnore = source.replace(/^(trustPolicyIgnoreAfter: .+\n)/mu, `$1${block}`);
294
- if (afterTrustPolicyIgnore !== source) return {
295
- source: afterTrustPolicyIgnore,
296
- changed: true
297
- };
298
- return {
299
- source: `${source.trimEnd()}\n${block}`,
300
- changed: true
301
- };
302
- }
303
- function updateGeneratedPnpmWorkspacePolicy(workspaceRoot) {
304
- const workspaceFile = node_path.join(workspaceRoot, 'pnpm-workspace.yaml');
305
- if (!node_fs.existsSync(workspaceFile)) return false;
306
- let source = node_fs.readFileSync(workspaceFile, 'utf-8');
307
- let changed = false;
308
- const replacements = [
309
- [
310
- /^ {4}'@effect\/vitest>effect': .+$/mu,
311
- ` '@effect/vitest>effect': '${EFFECT_VERSION}'`
312
- ],
313
- [
314
- /^ {2}'@effect\/vitest': .+$/mu,
315
- ` '@effect/vitest': ${EFFECT_VITEST_VERSION}`
316
- ],
317
- [
318
- /^ {2}effect: .+$/mu,
319
- ` effect: ${EFFECT_VERSION}`
320
- ]
321
- ];
322
- for (const [pattern, replacement] of replacements){
323
- const result = replaceYamlLine(source, pattern, replacement);
324
- source = result.source;
325
- changed = result.changed || changed;
326
- }
327
- for (const item of strictEffectTrustPolicyExclusions){
328
- const packageName = item.slice(0, item.lastIndexOf('@'));
329
- const escapedPackageName = packageName.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
330
- const currentVersion = replaceYamlLine(source, new RegExp(`^ {2}- '${escapedPackageName}@[^']+'$`, 'mu'), ` - '${item}'`);
331
- source = currentVersion.source;
332
- changed = currentVersion.changed || changed;
333
- const trustPolicyExclude = ensureYamlListItem(source, 'trustPolicyExclude', item);
334
- source = trustPolicyExclude.source;
335
- changed = trustPolicyExclude.changed || changed;
336
- }
337
- if (changed) node_fs.writeFileSync(workspaceFile, source, 'utf-8');
338
- return changed;
339
- }
340
- function updateUltramodernConfig(workspaceRoot, packageSource) {
341
- const configPath = node_path.join(workspaceRoot, '.modernjs/ultramodern.json');
342
- const config = readJsonFile(configPath);
343
- config.packageSource = {
344
- strategy: packageSource.strategy,
345
- modernPackageVersion: packageSource.modernPackageVersion,
346
- ...packageSource.registry ? {
347
- registry: packageSource.registry
348
- } : {},
349
- ...packageSource.aliasScope ? {
350
- aliasScope: packageSource.aliasScope
351
- } : {},
352
- ...packageSource.aliasPackageNamePrefix ? {
353
- aliasPackageNamePrefix: packageSource.aliasPackageNamePrefix
354
- } : {}
355
- };
356
- for (const app of config.topology?.apps ?? [])if (app && 'object' == typeof app && !Array.isArray(app)) normalizeStrictEffectApiMetadata(app);
357
- writeJsonFile(configPath, config);
358
- }
359
- function updateReferenceTopology(workspaceRoot) {
360
- const topologyPath = node_path.join(workspaceRoot, 'topology/reference-topology.json');
361
- if (!node_fs.existsSync(topologyPath)) return false;
362
- const topology = readJsonFile(topologyPath);
363
- let changed = false;
364
- for (const vertical of topology.verticals ?? [])if (vertical && 'object' == typeof vertical && !Array.isArray(vertical)) changed = normalizeStrictEffectApiMetadata(vertical) || changed;
365
- if (changed) writeJsonFile(topologyPath, topology);
366
- return changed;
367
- }
368
- function createMigrationPackageSource(args, current) {
369
- const strategy = hasFlag(args, '--workspace') ? 'workspace' : 'install';
370
- const registry = readOption(args, '--registry') ?? readOption(args, '--ultramodern-package-registry');
371
- const explicitAliasScope = readOption(args, '--alias-scope') ?? readOption(args, '--ultramodern-package-scope');
372
- const aliasScope = explicitAliasScope ?? ('install' === strategy && void 0 === registry ? current.packageSource?.aliasScope ?? BLEEDINGDEV_PACKAGE_SCOPE : current.packageSource?.aliasScope);
373
- const aliasPackageNamePrefix = readOption(args, '--alias-package-name-prefix') ?? readOption(args, '--ultramodern-package-name-prefix') ?? current.packageSource?.aliasPackageNamePrefix ?? (aliasScope ? BLEEDINGDEV_PACKAGE_NAME_PREFIX : void 0);
374
- if ('workspace' === strategy) return {
375
- strategy,
376
- modernPackageVersion: WORKSPACE_PACKAGE_VERSION,
377
- ...registry ? {
378
- registry
379
- } : {},
380
- ...aliasScope ? {
381
- aliasScope
382
- } : {},
383
- ...aliasPackageNamePrefix ? {
384
- aliasPackageNamePrefix
385
- } : {}
386
- };
387
- const version = readOption(args, '--version') ?? readOption(args, '--ultramodern-package-version') ?? current.packageSource?.modernPackageVersion;
388
- if (!version || version === WORKSPACE_PACKAGE_VERSION) throw new Error('migrate-strict-effect needs --version <published-ultramodern-version> for install package source.');
389
- return {
390
- strategy,
391
- modernPackageVersion: version,
392
- ...registry ? {
393
- registry
394
- } : {},
395
- ...aliasScope ? {
396
- aliasScope
397
- } : {},
398
- ...aliasPackageNamePrefix ? {
399
- aliasPackageNamePrefix
400
- } : {}
401
- };
402
- }
403
- function runPnpmLockfileRefresh(context) {
404
- const result = spawnSync('pnpm', [
405
- 'install',
406
- '--lockfile-only',
407
- "--ignore-scripts"
408
- ], {
409
- cwd: context.workspaceRoot,
410
- stdio: 'inherit'
411
- });
412
- if (result.error) throw result.error;
413
- return result.status ?? 1;
414
- }
415
- function runMigrateStrictEffect(args, context) {
416
- if (args.includes('--help') || args.includes('-h')) {
417
- process.stdout.write(`Usage:
418
- modern-js-create ultramodern migrate-strict-effect --version <version> [--skip-install]
419
-
420
- Updates generated UltraModern package-source metadata, Modern package aliases,
421
- framework-owned toolchain pins, direct Effect API topology metadata, strict
422
- Effect pnpm overrides/trust policy, and the pnpm lockfile. Source code still
423
- has to pass pnpm api:check and pnpm contract:check.
424
- `);
425
- return 0;
426
- }
427
- const current = readUltramodernConfig(context.workspaceRoot);
428
- const packageSource = createMigrationPackageSource(args, current);
429
- updateUltramodernConfig(context.workspaceRoot, packageSource);
430
- updateReferenceTopology(context.workspaceRoot);
431
- for (const relativePackageFile of listWorkspacePackageFiles(context.workspaceRoot)){
432
- const packageFile = node_path.join(context.workspaceRoot, relativePackageFile);
433
- const packageJson = readJsonFile(packageFile);
434
- if ('package.json' === relativePackageFile) {
435
- packageJson.modernjs ??= {};
436
- packageJson.modernjs.packageSource = {
437
- strategy: packageSource.strategy,
438
- config: './.modernjs/ultramodern.json'
439
- };
440
- }
441
- const modernDependenciesChanged = updateModernDependencies(packageJson, packageSource);
442
- const toolingDependenciesChanged = updateGeneratedToolingDependencies(packageJson);
443
- const changed = modernDependenciesChanged || toolingDependenciesChanged;
444
- if (changed) writeJsonFile(packageFile, packageJson);
445
- else if ('package.json' === relativePackageFile) writeJsonFile(packageFile, packageJson);
446
- }
447
- updateGeneratedPnpmWorkspacePolicy(context.workspaceRoot);
448
- if (!hasFlag(args, '--skip-install')) {
449
- const status = runPnpmLockfileRefresh(context);
450
- if (0 !== status) return status;
451
- }
452
- process.stdout.write(`UltraModern strict Effect metadata migrated to ${packageSource.modernPackageVersion}. Run pnpm api:check && pnpm contract:check next.\n`);
453
- return 0;
454
- }
455
- function runSkills(args, context) {
456
- const [subcommand, ...rest] = args;
457
- if ('install' === subcommand) return spawnNodeScript("template-workspace/scripts/bootstrap-agent-skills.mjs", rest, context);
458
- if ('check' === subcommand) return spawnNodeScript("template-workspace/scripts/bootstrap-agent-skills.mjs", [
459
- '--check',
460
- ...rest
461
- ], context);
462
- throw new Error('Usage: modern-js-create ultramodern skills <install|check>');
463
- }
2
+ import { GENERATED_TOOLING_COMMANDS } from "../ultramodern-workspace/tooling-command-catalog.js";
3
+ import { runCloudflareOutputVerify } from "./commands/cloudflare-output-verify.js";
4
+ import { printHelp, runTemplateBackedToolingCommand } from "./commands/context.js";
5
+ import { runMfTypes } from "./commands/mf-types.js";
6
+ import { runMigrateStrictEffect } from "./commands/migrate-strict-effect.js";
7
+ import { runRoutesGenerate } from "./commands/routes-generate.js";
8
+ import { runSkills } from "./commands/skills.js";
9
+ import { runSyncDeliveryUnit } from "./commands/sync-delivery-unit.js";
10
+ import { runValidate } from "./commands/validate.js";
464
11
  async function runUltramodernToolingCli(args, workspaceRoot = process.env.ULTRAMODERN_WORKSPACE_ROOT ?? process.cwd()) {
465
12
  try {
466
13
  const [command, ...rest] = args;
@@ -474,25 +21,25 @@ async function runUltramodernToolingCli(args, workspaceRoot = process.env.ULTRAM
474
21
  case '-h':
475
22
  printHelp();
476
23
  return 0;
477
- case 'validate':
24
+ case GENERATED_TOOLING_COMMANDS.validate.command:
478
25
  return runValidate(context);
479
- case 'typecheck':
480
- return spawnNodeScript("templates/workspace-scripts/ultramodern-typecheck.mjs", rest, context, {
481
- cwd: context.invocationCwd
482
- });
483
- case 'mf-types':
26
+ case GENERATED_TOOLING_COMMANDS.mfTypes.command:
484
27
  return runMfTypes(rest, context);
485
- case 'migrate-strict-effect':
28
+ case GENERATED_TOOLING_COMMANDS.migrateStrictEffect.command:
486
29
  return runMigrateStrictEffect(rest, context);
487
- case 'public-surface':
488
- return spawnNodeScript("templates/workspace-scripts/generate-public-surface-assets.mjs", rest, context);
489
- case 'cloudflare-proof':
490
- return spawnNodeScript("templates/workspace-scripts/proof-cloudflare-version.mjs", rest, context);
491
- case 'performance-readiness':
492
- return spawnNodeScript("templates/workspace-scripts/ultramodern-performance-readiness.mjs", rest, context);
30
+ case GENERATED_TOOLING_COMMANDS.cloudflareOutputVerify.command:
31
+ return runCloudflareOutputVerify(rest, context);
32
+ case GENERATED_TOOLING_COMMANDS.routesGenerate.command:
33
+ return runRoutesGenerate(rest, context);
34
+ case 'sync-delivery-unit':
35
+ return runSyncDeliveryUnit(rest, context);
493
36
  case 'skills':
494
37
  return runSkills(rest, context);
495
38
  default:
39
+ {
40
+ const templateBackedStatus = runTemplateBackedToolingCommand(command ?? '', rest, context);
41
+ if (void 0 !== templateBackedStatus) return templateBackedStatus;
42
+ }
496
43
  throw new Error(`Unknown UltraModern command: ${command}`);
497
44
  }
498
45
  } catch (error) {
@@ -0,0 +1,4 @@
1
+ const LEGACY_GENERATED_CONTRACT_PATH = '.modernjs/ultramodern-generated-contract.json';
2
+ const LEGACY_PACKAGE_SOURCE_METADATA_PATH = '.modernjs/ultramodern-package-source.json';
3
+ const LEGACY_DEVELOPMENT_OVERLAY_PATH = 'topology/local-overlays/development.json';
4
+ export { LEGACY_DEVELOPMENT_OVERLAY_PATH, LEGACY_GENERATED_CONTRACT_PATH, LEGACY_PACKAGE_SOURCE_METADATA_PATH };
@@ -0,0 +1,7 @@
1
+ export * from "./constants.js";
2
+ export * from "./json.js";
3
+ export * from "./load.js";
4
+ export * from "./metadata.js";
5
+ export * from "./normalize.js";
6
+ export * from "./synthesize.js";
7
+ export * from "./types.js";
@@ -0,0 +1,10 @@
1
+ import node_fs from "node:fs";
2
+ function readJsonObject(filePath) {
3
+ const value = JSON.parse(node_fs.readFileSync(filePath, 'utf-8'));
4
+ if (null === value || 'object' != typeof value || Array.isArray(value)) throw new Error(`UltraModern config must contain a JSON object: ${filePath}`);
5
+ return value;
6
+ }
7
+ function readOptionalJsonObject(filePath) {
8
+ return node_fs.existsSync(filePath) ? readJsonObject(filePath) : {};
9
+ }
10
+ export { readJsonObject, readOptionalJsonObject };
@@ -0,0 +1,13 @@
1
+ import node_fs from "node:fs";
2
+ import node_path from "node:path";
3
+ import { ULTRAMODERN_CONFIG_PATH } from "../../ultramodern-workspace/descriptors.js";
4
+ import { LEGACY_GENERATED_CONTRACT_PATH } from "./constants.js";
5
+ import { readJsonObject } from "./json.js";
6
+ import { normalizeCompactConfig } from "./normalize.js";
7
+ function readUltramodernConfig(workspaceRoot = process.cwd()) {
8
+ const compactPath = node_path.join(workspaceRoot, ULTRAMODERN_CONFIG_PATH);
9
+ if (node_fs.existsSync(compactPath)) return normalizeCompactConfig(workspaceRoot, compactPath, readJsonObject(compactPath));
10
+ if (node_fs.existsSync(node_path.join(workspaceRoot, LEGACY_GENERATED_CONTRACT_PATH))) throw new Error(`Missing ${ULTRAMODERN_CONFIG_PATH}. Legacy UltraModern metadata detected — run \`modern-js-create ultramodern migrate-strict-effect\` to synthesize it.`);
11
+ throw new Error(`Missing UltraModern config. Expected ${ULTRAMODERN_CONFIG_PATH}. Run \`modern-js-create ultramodern migrate-strict-effect\` if you have legacy UltraModern metadata to migrate.`);
12
+ }
13
+ export { readUltramodernConfig };