@bleedingdev/modern-js-create 3.5.0-ultramodern.30 → 3.5.0-ultramodern.32

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 (421) hide show
  1. package/dist/cjs/cli/flags.cjs +326 -0
  2. package/dist/cjs/cli/help.cjs +106 -0
  3. package/dist/cjs/cli/package-source.cjs +186 -0
  4. package/dist/cjs/cli/project-setup.cjs +138 -0
  5. package/dist/cjs/cli/prompts.cjs +118 -0
  6. package/dist/cjs/index.cjs +24 -581
  7. package/dist/cjs/ultramodern-tooling/commands/cloudflare-output-verify.cjs +132 -0
  8. package/dist/cjs/ultramodern-tooling/commands/context.cjs +131 -0
  9. package/dist/cjs/ultramodern-tooling/commands/mf-types.cjs +55 -0
  10. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.cjs +158 -0
  11. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.cjs +49 -0
  12. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.cjs +87 -0
  13. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.cjs +58 -0
  14. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.cjs +62 -0
  15. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.cjs +60 -0
  16. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.cjs +132 -0
  17. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.cjs +67 -0
  18. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.cjs +93 -0
  19. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.cjs +60 -0
  20. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.cjs +67 -0
  21. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.cjs +67 -0
  22. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/help.cjs +54 -0
  23. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/install.cjs +52 -0
  24. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/io.cjs +133 -0
  25. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.cjs +219 -0
  26. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-source.cjs +76 -0
  27. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.cjs +131 -0
  28. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.cjs +161 -0
  29. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.cjs +88 -0
  30. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect.cjs +149 -0
  31. package/dist/cjs/ultramodern-tooling/commands/options.cjs +59 -0
  32. package/dist/cjs/ultramodern-tooling/commands/routes-generate.cjs +122 -0
  33. package/dist/cjs/ultramodern-tooling/commands/skills.cjs +49 -0
  34. package/dist/cjs/ultramodern-tooling/commands/sync-delivery-unit.cjs +40 -0
  35. package/dist/cjs/ultramodern-tooling/commands/validate.cjs +49 -0
  36. package/dist/cjs/ultramodern-tooling/commands.cjs +17 -1165
  37. package/dist/cjs/ultramodern-tooling/config/constants.cjs +48 -0
  38. package/dist/cjs/ultramodern-tooling/config/index.cjs +104 -0
  39. package/dist/cjs/ultramodern-tooling/config/json.cjs +61 -0
  40. package/dist/cjs/ultramodern-tooling/config/load.cjs +62 -0
  41. package/dist/cjs/ultramodern-tooling/config/metadata.cjs +92 -0
  42. package/dist/cjs/ultramodern-tooling/config/normalize.cjs +160 -0
  43. package/dist/cjs/ultramodern-tooling/config/synthesize.cjs +157 -0
  44. package/dist/cjs/ultramodern-tooling/config/types.cjs +18 -0
  45. package/dist/cjs/ultramodern-tooling/config.cjs +23 -274
  46. package/dist/cjs/ultramodern-workspace/add-vertical/constants.cjs +52 -0
  47. package/dist/cjs/ultramodern-workspace/add-vertical/execute.cjs +156 -0
  48. package/dist/cjs/ultramodern-workspace/add-vertical/plan.cjs +246 -0
  49. package/dist/cjs/ultramodern-workspace/add-vertical/preflight.cjs +198 -0
  50. package/dist/cjs/ultramodern-workspace/add-vertical/shell-files.cjs +116 -0
  51. package/dist/cjs/ultramodern-workspace/add-vertical/topology.cjs +133 -0
  52. package/dist/cjs/ultramodern-workspace/add-vertical/workspace-state.cjs +107 -0
  53. package/dist/cjs/ultramodern-workspace/add-vertical.cjs +22 -596
  54. package/dist/cjs/ultramodern-workspace/api/checkout-cart.cjs +145 -0
  55. package/dist/cjs/ultramodern-workspace/api/client.cjs +218 -0
  56. package/dist/cjs/ultramodern-workspace/api/contracts.cjs +222 -0
  57. package/dist/cjs/ultramodern-workspace/api/names.cjs +98 -0
  58. package/dist/cjs/ultramodern-workspace/api/service.cjs +220 -0
  59. package/dist/cjs/ultramodern-workspace/api/shared.cjs +252 -0
  60. package/dist/cjs/ultramodern-workspace/api.cjs +27 -1046
  61. package/dist/cjs/ultramodern-workspace/app-files.cjs +3 -18
  62. package/dist/cjs/ultramodern-workspace/backend-federation.cjs +38 -24
  63. package/dist/cjs/ultramodern-workspace/bridge-config/cli.cjs +71 -0
  64. package/dist/cjs/ultramodern-workspace/bridge-config/defaults.cjs +43 -0
  65. package/dist/cjs/ultramodern-workspace/bridge-config/gates.cjs +93 -0
  66. package/dist/cjs/ultramodern-workspace/bridge-config/index.cjs +60 -0
  67. package/dist/cjs/ultramodern-workspace/bridge-config/normalize.cjs +68 -0
  68. package/dist/cjs/ultramodern-workspace/bridge-config/schema.cjs +78 -0
  69. package/dist/cjs/ultramodern-workspace/bridge-config/shared.cjs +110 -0
  70. package/dist/cjs/ultramodern-workspace/bridge-config/validation.cjs +68 -0
  71. package/dist/cjs/ultramodern-workspace/bridge-config/workspace-packages.cjs +108 -0
  72. package/dist/cjs/ultramodern-workspace/bridge-config.cjs +32 -297
  73. package/dist/cjs/ultramodern-workspace/delivery-unit-sync.cjs +22 -20
  74. package/dist/cjs/ultramodern-workspace/delivery-unit.cjs +7 -20
  75. package/dist/cjs/ultramodern-workspace/demo-components.cjs +47 -189
  76. package/dist/cjs/ultramodern-workspace/descriptors.cjs +12 -1
  77. package/dist/cjs/ultramodern-workspace/effect-diagnostics.cjs +114 -0
  78. package/dist/cjs/ultramodern-workspace/fs-io.cjs +24 -2
  79. package/dist/cjs/ultramodern-workspace/index.cjs +4 -0
  80. package/dist/cjs/ultramodern-workspace/mf-validation/constants.cjs +69 -0
  81. package/dist/cjs/ultramodern-workspace/mf-validation/discovery.cjs +77 -0
  82. package/dist/cjs/ultramodern-workspace/mf-validation/inspect.cjs +92 -0
  83. package/dist/cjs/ultramodern-workspace/mf-validation/object-literal.cjs +203 -0
  84. package/dist/cjs/ultramodern-workspace/mf-validation/path-utils.cjs +171 -0
  85. package/dist/cjs/ultramodern-workspace/mf-validation/syntax.cjs +228 -0
  86. package/dist/cjs/ultramodern-workspace/mf-validation/types.cjs +18 -0
  87. package/dist/cjs/ultramodern-workspace/mf-validation/validate.cjs +112 -0
  88. package/dist/cjs/ultramodern-workspace/mf-validation.cjs +6 -529
  89. package/dist/cjs/ultramodern-workspace/module-federation/config.cjs +251 -0
  90. package/dist/cjs/ultramodern-workspace/module-federation/index.cjs +73 -0
  91. package/dist/cjs/ultramodern-workspace/module-federation/reexport-module.cjs +73 -0
  92. package/dist/cjs/ultramodern-workspace/module-federation/remote-refs.cjs +105 -0
  93. package/dist/cjs/ultramodern-workspace/module-federation/shared-config.cjs +53 -0
  94. package/dist/cjs/ultramodern-workspace/module-federation.cjs +14 -584
  95. package/dist/cjs/ultramodern-workspace/package-json.cjs +13 -229
  96. package/dist/cjs/ultramodern-workspace/routes.cjs +8 -142
  97. package/dist/cjs/ultramodern-workspace/shared-patches.cjs +44 -0
  98. package/dist/cjs/ultramodern-workspace/tsconfigs.cjs +199 -0
  99. package/dist/cjs/ultramodern-workspace/workspace-script-plan.cjs +2 -2
  100. package/dist/cjs/ultramodern-workspace/write-app.cjs +128 -0
  101. package/dist/cjs/ultramodern-workspace/write-workspace.cjs +4 -61
  102. package/dist/cjs/ultramodern-workspace/zerops.cjs +13 -10
  103. package/dist/esm/cli/flags.js +228 -0
  104. package/dist/esm/cli/help.js +65 -0
  105. package/dist/esm/cli/package-source.js +119 -0
  106. package/dist/esm/cli/project-setup.js +81 -0
  107. package/dist/esm/cli/prompts.js +63 -0
  108. package/dist/esm/index.js +6 -559
  109. package/dist/esm/ultramodern-tooling/commands/cloudflare-output-verify.js +84 -0
  110. package/dist/esm/ultramodern-tooling/commands/context.js +66 -0
  111. package/dist/esm/ultramodern-tooling/commands/mf-types.js +17 -0
  112. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.js +106 -0
  113. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +11 -0
  114. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.js +38 -0
  115. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.js +10 -0
  116. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +14 -0
  117. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +12 -0
  118. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.js +83 -0
  119. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.js +16 -0
  120. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.js +44 -0
  121. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.js +12 -0
  122. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.js +7 -0
  123. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.js +15 -0
  124. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/help.js +16 -0
  125. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/install.js +14 -0
  126. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/io.js +69 -0
  127. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +175 -0
  128. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-source.js +38 -0
  129. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +76 -0
  130. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +105 -0
  131. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +16 -0
  132. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect.js +100 -0
  133. package/dist/esm/ultramodern-tooling/commands/options.js +18 -0
  134. package/dist/esm/ultramodern-tooling/commands/routes-generate.js +74 -0
  135. package/dist/esm/ultramodern-tooling/commands/skills.js +11 -0
  136. package/dist/esm/ultramodern-tooling/commands/sync-delivery-unit.js +1 -0
  137. package/dist/esm/ultramodern-tooling/commands/validate.js +11 -0
  138. package/dist/esm/ultramodern-tooling/commands.js +9 -1152
  139. package/dist/esm/ultramodern-tooling/config/constants.js +4 -0
  140. package/dist/esm/ultramodern-tooling/config/index.js +7 -0
  141. package/dist/esm/ultramodern-tooling/config/json.js +10 -0
  142. package/dist/esm/ultramodern-tooling/config/load.js +13 -0
  143. package/dist/esm/ultramodern-tooling/config/metadata.js +37 -0
  144. package/dist/esm/ultramodern-tooling/config/normalize.js +106 -0
  145. package/dist/esm/ultramodern-tooling/config/synthesize.js +108 -0
  146. package/dist/esm/ultramodern-tooling/config/types.js +0 -0
  147. package/dist/esm/ultramodern-tooling/config.js +1 -255
  148. package/dist/esm/ultramodern-workspace/add-vertical/constants.js +5 -0
  149. package/dist/esm/ultramodern-workspace/add-vertical/execute.js +108 -0
  150. package/dist/esm/ultramodern-workspace/add-vertical/plan.js +184 -0
  151. package/dist/esm/ultramodern-workspace/add-vertical/preflight.js +122 -0
  152. package/dist/esm/ultramodern-workspace/add-vertical/shell-files.js +59 -0
  153. package/dist/esm/ultramodern-workspace/add-vertical/topology.js +89 -0
  154. package/dist/esm/ultramodern-workspace/add-vertical/workspace-state.js +43 -0
  155. package/dist/esm/ultramodern-workspace/add-vertical.js +6 -569
  156. package/dist/esm/ultramodern-workspace/api/checkout-cart.js +86 -0
  157. package/dist/esm/ultramodern-workspace/api/client.js +177 -0
  158. package/dist/esm/ultramodern-workspace/api/contracts.js +172 -0
  159. package/dist/esm/ultramodern-workspace/api/names.js +33 -0
  160. package/dist/esm/ultramodern-workspace/api/service.js +179 -0
  161. package/dist/esm/ultramodern-workspace/api/shared.js +208 -0
  162. package/dist/esm/ultramodern-workspace/api.js +5 -1025
  163. package/dist/esm/ultramodern-workspace/app-files.js +3 -18
  164. package/dist/esm/ultramodern-workspace/backend-federation.js +27 -13
  165. package/dist/esm/ultramodern-workspace/bridge-config/cli.js +30 -0
  166. package/dist/esm/ultramodern-workspace/bridge-config/defaults.js +5 -0
  167. package/dist/esm/ultramodern-workspace/bridge-config/gates.js +52 -0
  168. package/dist/esm/ultramodern-workspace/bridge-config/index.js +3 -0
  169. package/dist/esm/ultramodern-workspace/bridge-config/normalize.js +30 -0
  170. package/dist/esm/ultramodern-workspace/bridge-config/schema.js +31 -0
  171. package/dist/esm/ultramodern-workspace/bridge-config/shared.js +51 -0
  172. package/dist/esm/ultramodern-workspace/bridge-config/validation.js +27 -0
  173. package/dist/esm/ultramodern-workspace/bridge-config/workspace-packages.js +67 -0
  174. package/dist/esm/ultramodern-workspace/bridge-config.js +1 -270
  175. package/dist/esm/ultramodern-workspace/delivery-unit-sync.js +23 -21
  176. package/dist/esm/ultramodern-workspace/delivery-unit.js +6 -16
  177. package/dist/esm/ultramodern-workspace/demo-components.js +47 -189
  178. package/dist/esm/ultramodern-workspace/descriptors.js +12 -1
  179. package/dist/esm/ultramodern-workspace/effect-diagnostics.js +76 -0
  180. package/dist/esm/ultramodern-workspace/fs-io.js +24 -2
  181. package/dist/esm/ultramodern-workspace/index.js +1 -0
  182. package/dist/esm/ultramodern-workspace/mf-validation/constants.js +19 -0
  183. package/dist/esm/ultramodern-workspace/mf-validation/discovery.js +28 -0
  184. package/dist/esm/ultramodern-workspace/mf-validation/inspect.js +45 -0
  185. package/dist/esm/ultramodern-workspace/mf-validation/object-literal.js +144 -0
  186. package/dist/esm/ultramodern-workspace/mf-validation/path-utils.js +89 -0
  187. package/dist/esm/ultramodern-workspace/mf-validation/syntax.js +154 -0
  188. package/dist/esm/ultramodern-workspace/mf-validation/types.js +0 -0
  189. package/dist/esm/ultramodern-workspace/mf-validation/validate.js +57 -0
  190. package/dist/esm/ultramodern-workspace/mf-validation.js +3 -516
  191. package/dist/esm/ultramodern-workspace/module-federation/config.js +204 -0
  192. package/dist/esm/ultramodern-workspace/module-federation/index.js +4 -0
  193. package/dist/esm/ultramodern-workspace/module-federation/reexport-module.js +29 -0
  194. package/dist/esm/ultramodern-workspace/module-federation/remote-refs.js +64 -0
  195. package/dist/esm/ultramodern-workspace/module-federation/shared-config.js +12 -0
  196. package/dist/esm/ultramodern-workspace/module-federation.js +2 -576
  197. package/dist/esm/ultramodern-workspace/package-json.js +7 -210
  198. package/dist/esm/ultramodern-workspace/routes.js +8 -142
  199. package/dist/esm/ultramodern-workspace/shared-patches.js +6 -0
  200. package/dist/esm/ultramodern-workspace/tsconfigs.js +136 -0
  201. package/dist/esm/ultramodern-workspace/workspace-script-plan.js +2 -2
  202. package/dist/esm/ultramodern-workspace/write-app.js +90 -0
  203. package/dist/esm/ultramodern-workspace/write-workspace.js +4 -61
  204. package/dist/esm/ultramodern-workspace/zerops.js +13 -10
  205. package/dist/esm-node/cli/flags.js +229 -0
  206. package/dist/esm-node/cli/help.js +66 -0
  207. package/dist/esm-node/cli/package-source.js +120 -0
  208. package/dist/esm-node/cli/project-setup.js +82 -0
  209. package/dist/esm-node/cli/prompts.js +64 -0
  210. package/dist/esm-node/index.js +6 -559
  211. package/dist/esm-node/ultramodern-tooling/commands/cloudflare-output-verify.js +85 -0
  212. package/dist/esm-node/ultramodern-tooling/commands/context.js +67 -0
  213. package/dist/esm-node/ultramodern-tooling/commands/mf-types.js +18 -0
  214. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.js +107 -0
  215. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +12 -0
  216. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.js +39 -0
  217. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.js +11 -0
  218. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +15 -0
  219. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +13 -0
  220. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.js +84 -0
  221. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.js +17 -0
  222. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.js +45 -0
  223. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.js +13 -0
  224. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.js +8 -0
  225. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.js +16 -0
  226. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/help.js +17 -0
  227. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/install.js +15 -0
  228. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/io.js +70 -0
  229. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +176 -0
  230. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-source.js +39 -0
  231. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +77 -0
  232. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +106 -0
  233. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +17 -0
  234. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect.js +101 -0
  235. package/dist/esm-node/ultramodern-tooling/commands/options.js +19 -0
  236. package/dist/esm-node/ultramodern-tooling/commands/routes-generate.js +75 -0
  237. package/dist/esm-node/ultramodern-tooling/commands/skills.js +12 -0
  238. package/dist/esm-node/ultramodern-tooling/commands/sync-delivery-unit.js +2 -0
  239. package/dist/esm-node/ultramodern-tooling/commands/validate.js +12 -0
  240. package/dist/esm-node/ultramodern-tooling/commands.js +9 -1152
  241. package/dist/esm-node/ultramodern-tooling/config/constants.js +5 -0
  242. package/dist/esm-node/ultramodern-tooling/config/index.js +8 -0
  243. package/dist/esm-node/ultramodern-tooling/config/json.js +11 -0
  244. package/dist/esm-node/ultramodern-tooling/config/load.js +14 -0
  245. package/dist/esm-node/ultramodern-tooling/config/metadata.js +38 -0
  246. package/dist/esm-node/ultramodern-tooling/config/normalize.js +107 -0
  247. package/dist/esm-node/ultramodern-tooling/config/synthesize.js +109 -0
  248. package/dist/esm-node/ultramodern-tooling/config/types.js +1 -0
  249. package/dist/esm-node/ultramodern-tooling/config.js +1 -255
  250. package/dist/esm-node/ultramodern-workspace/add-vertical/constants.js +6 -0
  251. package/dist/esm-node/ultramodern-workspace/add-vertical/execute.js +109 -0
  252. package/dist/esm-node/ultramodern-workspace/add-vertical/plan.js +185 -0
  253. package/dist/esm-node/ultramodern-workspace/add-vertical/preflight.js +123 -0
  254. package/dist/esm-node/ultramodern-workspace/add-vertical/shell-files.js +60 -0
  255. package/dist/esm-node/ultramodern-workspace/add-vertical/topology.js +90 -0
  256. package/dist/esm-node/ultramodern-workspace/add-vertical/workspace-state.js +44 -0
  257. package/dist/esm-node/ultramodern-workspace/add-vertical.js +6 -569
  258. package/dist/esm-node/ultramodern-workspace/api/checkout-cart.js +87 -0
  259. package/dist/esm-node/ultramodern-workspace/api/client.js +178 -0
  260. package/dist/esm-node/ultramodern-workspace/api/contracts.js +173 -0
  261. package/dist/esm-node/ultramodern-workspace/api/names.js +34 -0
  262. package/dist/esm-node/ultramodern-workspace/api/service.js +180 -0
  263. package/dist/esm-node/ultramodern-workspace/api/shared.js +209 -0
  264. package/dist/esm-node/ultramodern-workspace/api.js +5 -1025
  265. package/dist/esm-node/ultramodern-workspace/app-files.js +3 -18
  266. package/dist/esm-node/ultramodern-workspace/backend-federation.js +27 -13
  267. package/dist/esm-node/ultramodern-workspace/bridge-config/cli.js +31 -0
  268. package/dist/esm-node/ultramodern-workspace/bridge-config/defaults.js +6 -0
  269. package/dist/esm-node/ultramodern-workspace/bridge-config/gates.js +53 -0
  270. package/dist/esm-node/ultramodern-workspace/bridge-config/index.js +4 -0
  271. package/dist/esm-node/ultramodern-workspace/bridge-config/normalize.js +31 -0
  272. package/dist/esm-node/ultramodern-workspace/bridge-config/schema.js +32 -0
  273. package/dist/esm-node/ultramodern-workspace/bridge-config/shared.js +52 -0
  274. package/dist/esm-node/ultramodern-workspace/bridge-config/validation.js +28 -0
  275. package/dist/esm-node/ultramodern-workspace/bridge-config/workspace-packages.js +68 -0
  276. package/dist/esm-node/ultramodern-workspace/bridge-config.js +1 -270
  277. package/dist/esm-node/ultramodern-workspace/delivery-unit-sync.js +23 -21
  278. package/dist/esm-node/ultramodern-workspace/delivery-unit.js +6 -16
  279. package/dist/esm-node/ultramodern-workspace/demo-components.js +47 -189
  280. package/dist/esm-node/ultramodern-workspace/descriptors.js +12 -1
  281. package/dist/esm-node/ultramodern-workspace/effect-diagnostics.js +77 -0
  282. package/dist/esm-node/ultramodern-workspace/fs-io.js +24 -2
  283. package/dist/esm-node/ultramodern-workspace/index.js +1 -0
  284. package/dist/esm-node/ultramodern-workspace/mf-validation/constants.js +20 -0
  285. package/dist/esm-node/ultramodern-workspace/mf-validation/discovery.js +29 -0
  286. package/dist/esm-node/ultramodern-workspace/mf-validation/inspect.js +46 -0
  287. package/dist/esm-node/ultramodern-workspace/mf-validation/object-literal.js +145 -0
  288. package/dist/esm-node/ultramodern-workspace/mf-validation/path-utils.js +90 -0
  289. package/dist/esm-node/ultramodern-workspace/mf-validation/syntax.js +155 -0
  290. package/dist/esm-node/ultramodern-workspace/mf-validation/types.js +1 -0
  291. package/dist/esm-node/ultramodern-workspace/mf-validation/validate.js +58 -0
  292. package/dist/esm-node/ultramodern-workspace/mf-validation.js +3 -516
  293. package/dist/esm-node/ultramodern-workspace/module-federation/config.js +205 -0
  294. package/dist/esm-node/ultramodern-workspace/module-federation/index.js +5 -0
  295. package/dist/esm-node/ultramodern-workspace/module-federation/reexport-module.js +30 -0
  296. package/dist/esm-node/ultramodern-workspace/module-federation/remote-refs.js +65 -0
  297. package/dist/esm-node/ultramodern-workspace/module-federation/shared-config.js +13 -0
  298. package/dist/esm-node/ultramodern-workspace/module-federation.js +2 -576
  299. package/dist/esm-node/ultramodern-workspace/package-json.js +7 -210
  300. package/dist/esm-node/ultramodern-workspace/routes.js +8 -142
  301. package/dist/esm-node/ultramodern-workspace/shared-patches.js +7 -0
  302. package/dist/esm-node/ultramodern-workspace/tsconfigs.js +137 -0
  303. package/dist/esm-node/ultramodern-workspace/workspace-script-plan.js +2 -2
  304. package/dist/esm-node/ultramodern-workspace/write-app.js +91 -0
  305. package/dist/esm-node/ultramodern-workspace/write-workspace.js +4 -61
  306. package/dist/esm-node/ultramodern-workspace/zerops.js +13 -10
  307. package/dist/types/cli/flags.d.ts +30 -0
  308. package/dist/types/cli/help.d.ts +2 -0
  309. package/dist/types/cli/package-source.d.ts +15 -0
  310. package/dist/types/cli/project-setup.d.ts +8 -0
  311. package/dist/types/cli/prompts.d.ts +6 -0
  312. package/dist/types/ultramodern-tooling/commands/cloudflare-output-verify.d.ts +2 -0
  313. package/dist/types/ultramodern-tooling/commands/context.d.ts +11 -0
  314. package/dist/types/ultramodern-tooling/commands/mf-types.d.ts +2 -0
  315. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.d.ts +4 -0
  316. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.d.ts +4 -0
  317. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.d.ts +1 -0
  318. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.d.ts +3 -0
  319. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.d.ts +3 -0
  320. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.d.ts +3 -0
  321. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.d.ts +2 -0
  322. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.d.ts +4 -0
  323. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.d.ts +3 -0
  324. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.d.ts +3 -0
  325. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.d.ts +7 -0
  326. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.d.ts +3 -0
  327. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/help.d.ts +1 -0
  328. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/install.d.ts +2 -0
  329. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/io.d.ts +14 -0
  330. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.d.ts +9 -0
  331. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/package-source.d.ts +3 -0
  332. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.d.ts +4 -0
  333. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.d.ts +25 -0
  334. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.d.ts +9 -0
  335. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect.d.ts +2 -0
  336. package/dist/types/ultramodern-tooling/commands/options.d.ts +2 -0
  337. package/dist/types/ultramodern-tooling/commands/routes-generate.d.ts +2 -0
  338. package/dist/types/ultramodern-tooling/commands/skills.d.ts +2 -0
  339. package/dist/types/ultramodern-tooling/commands/sync-delivery-unit.d.ts +1 -0
  340. package/dist/types/ultramodern-tooling/commands/validate.d.ts +2 -0
  341. package/dist/types/ultramodern-tooling/config/constants.d.ts +3 -0
  342. package/dist/types/ultramodern-tooling/config/index.d.ts +7 -0
  343. package/dist/types/ultramodern-tooling/config/json.d.ts +2 -0
  344. package/dist/types/ultramodern-tooling/config/load.d.ts +2 -0
  345. package/dist/types/ultramodern-tooling/config/metadata.d.ts +4 -0
  346. package/dist/types/ultramodern-tooling/config/normalize.d.ts +5 -0
  347. package/dist/types/ultramodern-tooling/config/synthesize.d.ts +5 -0
  348. package/dist/types/ultramodern-tooling/config/types.d.ts +41 -0
  349. package/dist/types/ultramodern-tooling/config.d.ts +1 -49
  350. package/dist/types/ultramodern-workspace/add-vertical/constants.d.ts +4 -0
  351. package/dist/types/ultramodern-workspace/add-vertical/execute.d.ts +2 -0
  352. package/dist/types/ultramodern-workspace/add-vertical/plan.d.ts +7 -0
  353. package/dist/types/ultramodern-workspace/add-vertical/preflight.d.ts +28 -0
  354. package/dist/types/ultramodern-workspace/add-vertical/shell-files.d.ts +6 -0
  355. package/dist/types/ultramodern-workspace/add-vertical/topology.d.ts +9 -0
  356. package/dist/types/ultramodern-workspace/add-vertical/workspace-state.d.ts +8 -0
  357. package/dist/types/ultramodern-workspace/add-vertical.d.ts +7 -39
  358. package/dist/types/ultramodern-workspace/api/checkout-cart.d.ts +33 -0
  359. package/dist/types/ultramodern-workspace/api/client.d.ts +6 -0
  360. package/dist/types/ultramodern-workspace/api/contracts.d.ts +15 -0
  361. package/dist/types/ultramodern-workspace/api/names.d.ts +41 -0
  362. package/dist/types/ultramodern-workspace/api/service.d.ts +6 -0
  363. package/dist/types/ultramodern-workspace/api/shared.d.ts +10 -0
  364. package/dist/types/ultramodern-workspace/api.d.ts +5 -74
  365. package/dist/types/ultramodern-workspace/backend-federation.d.ts +2 -2
  366. package/dist/types/ultramodern-workspace/bridge-config/cli.d.ts +3 -0
  367. package/dist/types/ultramodern-workspace/bridge-config/defaults.d.ts +1 -0
  368. package/dist/types/ultramodern-workspace/bridge-config/gates.d.ts +3 -0
  369. package/dist/types/ultramodern-workspace/bridge-config/index.d.ts +4 -0
  370. package/dist/types/ultramodern-workspace/bridge-config/normalize.d.ts +2 -0
  371. package/dist/types/ultramodern-workspace/bridge-config/schema.d.ts +61 -0
  372. package/dist/types/ultramodern-workspace/bridge-config/shared.d.ts +12 -0
  373. package/dist/types/ultramodern-workspace/bridge-config/validation.d.ts +3 -0
  374. package/dist/types/ultramodern-workspace/bridge-config/workspace-packages.d.ts +3 -0
  375. package/dist/types/ultramodern-workspace/bridge-config.d.ts +1 -64
  376. package/dist/types/ultramodern-workspace/delivery-unit.d.ts +2 -21
  377. package/dist/types/ultramodern-workspace/effect-diagnostics.d.ts +1 -0
  378. package/dist/types/ultramodern-workspace/index.d.ts +1 -0
  379. package/dist/types/ultramodern-workspace/mf-validation/constants.d.ts +5 -0
  380. package/dist/types/ultramodern-workspace/mf-validation/discovery.d.ts +2 -0
  381. package/dist/types/ultramodern-workspace/mf-validation/inspect.d.ts +5 -0
  382. package/dist/types/ultramodern-workspace/mf-validation/object-literal.d.ts +9 -0
  383. package/dist/types/ultramodern-workspace/mf-validation/path-utils.d.ts +13 -0
  384. package/dist/types/ultramodern-workspace/mf-validation/syntax.d.ts +14 -0
  385. package/dist/types/ultramodern-workspace/mf-validation/types.d.ts +33 -0
  386. package/dist/types/ultramodern-workspace/mf-validation/validate.d.ts +4 -0
  387. package/dist/types/ultramodern-workspace/mf-validation.d.ts +4 -27
  388. package/dist/types/ultramodern-workspace/module-federation/config.d.ts +5 -0
  389. package/dist/types/ultramodern-workspace/module-federation/index.d.ts +4 -0
  390. package/dist/types/ultramodern-workspace/module-federation/reexport-module.d.ts +4 -0
  391. package/dist/types/ultramodern-workspace/module-federation/remote-refs.d.ts +3 -0
  392. package/dist/types/ultramodern-workspace/module-federation/shared-config.d.ts +2 -0
  393. package/dist/types/ultramodern-workspace/module-federation.d.ts +1 -11
  394. package/dist/types/ultramodern-workspace/package-json.d.ts +1 -13
  395. package/dist/types/ultramodern-workspace/shared-patches.d.ts +2 -0
  396. package/dist/types/ultramodern-workspace/tsconfigs.d.ts +13 -0
  397. package/dist/types/ultramodern-workspace/workspace-validation-contract.d.ts +1 -1
  398. package/dist/types/ultramodern-workspace/write-app.d.ts +3 -0
  399. package/dist/types/ultramodern-workspace/write-workspace.d.ts +2 -1
  400. package/package.json +4 -3
  401. package/templates/workspace/apps/modern.config.shared-module-federation.ts.handlebars +37 -0
  402. package/templates/workspace/apps/modern.config.ts.handlebars +252 -0
  403. package/templates/workspace/apps/shared/src/routes/ultramodern-jsonld.ts.handlebars +119 -0
  404. package/templates/workspace/apps/shared/src/routes/ultramodern-route-metadata.ts.handlebars +21 -0
  405. package/templates/workspace/apps/shell-super-app/src/routes/[lang]/page.tsx.handlebars +49 -0
  406. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.helpers.tsx.handlebars +79 -0
  407. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.imports.tsx.handlebars +11 -0
  408. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.tsx.handlebars +46 -0
  409. package/templates/workspace/packages/shared-design-tokens/tokens.css.handlebars +7 -0
  410. package/templates/workspace/postcss.config.mjs.handlebars +5 -0
  411. package/templates/workspace/tailwind.config.ts.handlebars +3 -0
  412. package/templates/workspace/verticals/server/checkout-cart-handlers.ts.handlebars +49 -0
  413. package/templates/workspace/verticals/server/checkout-cart-state.ts.handlebars +23 -0
  414. package/templates/workspace/verticals/shared/api.checkout-cart-contract-fields.ts.handlebars +1 -0
  415. package/templates/workspace/verticals/shared/api.checkout-cart-endpoints.ts.handlebars +23 -0
  416. package/templates/workspace/verticals/shared/api.checkout-cart-operation-contexts.ts.handlebars +25 -0
  417. package/templates/workspace/verticals/shared/api.checkout-cart-schemas.ts.handlebars +48 -0
  418. package/templates/workspace/verticals/src/api/checkout-cart-client-exports.ts.handlebars +70 -0
  419. package/templates/workspace-scripts/generate-node-backend-federation.mjs +29 -0
  420. package/templates/workspace-scripts/proof-node-backend-federation.mjs +31 -0
  421. package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +74 -40
@@ -0,0 +1,175 @@
1
+ import { ULTRAMODERN_SINGLE_APP_MODERN_PACKAGES, ULTRAMODERN_WORKSPACE_MODERN_PACKAGES, modernPackageSpecifier } from "../../../ultramodern-package-source.js";
2
+ import { EFFECT_TSGO_VERSION, OXFMT_VERSION, OXLINT_VERSION, TYPESCRIPT_NATIVE_PREVIEW_VERSION, WRANGLER_VERSION, ZEPHYR_AGENT_VERSION, ZEPHYR_RSPACK_PLUGIN_VERSION } from "../../../ultramodern-workspace/versions.js";
3
+ import { createWorkspaceAppPackageScripts, createWorkspaceRootPackageScripts } from "../../../ultramodern-workspace/workspace-script-plan.js";
4
+ import { migratedWorkspaceScriptBasenames } from "../../../ultramodern-workspace/workspace-scripts.js";
5
+ const modernPackageNames = new Set([
6
+ ...ULTRAMODERN_SINGLE_APP_MODERN_PACKAGES,
7
+ ...ULTRAMODERN_WORKSPACE_MODERN_PACKAGES
8
+ ]);
9
+ function updateModernDependencies(packageJson, packageSource) {
10
+ let changed = false;
11
+ for (const section of [
12
+ 'dependencies',
13
+ 'devDependencies',
14
+ 'peerDependencies',
15
+ 'optionalDependencies'
16
+ ]){
17
+ const dependencies = packageJson[section];
18
+ if (!(!dependencies || 'object' != typeof dependencies || Array.isArray(dependencies))) for (const packageName of Object.keys(dependencies)){
19
+ if (!modernPackageNames.has(packageName)) continue;
20
+ const nextSpecifier = modernPackageSpecifier(packageName, packageSource);
21
+ if (dependencies[packageName] !== nextSpecifier) {
22
+ dependencies[packageName] = nextSpecifier;
23
+ changed = true;
24
+ }
25
+ }
26
+ }
27
+ return changed;
28
+ }
29
+ const generatedToolingDependencyPins = new Map([
30
+ [
31
+ '@effect/tsgo',
32
+ EFFECT_TSGO_VERSION
33
+ ],
34
+ [
35
+ "@typescript/native-preview",
36
+ TYPESCRIPT_NATIVE_PREVIEW_VERSION
37
+ ],
38
+ [
39
+ 'oxfmt',
40
+ OXFMT_VERSION
41
+ ],
42
+ [
43
+ 'oxlint',
44
+ OXLINT_VERSION
45
+ ],
46
+ [
47
+ 'wrangler',
48
+ WRANGLER_VERSION
49
+ ],
50
+ [
51
+ 'zephyr-agent',
52
+ ZEPHYR_AGENT_VERSION
53
+ ],
54
+ [
55
+ 'zephyr-rspack-plugin',
56
+ ZEPHYR_RSPACK_PLUGIN_VERSION
57
+ ]
58
+ ]);
59
+ function updateGeneratedToolingDependencies(packageJson) {
60
+ let changed = false;
61
+ for (const section of [
62
+ 'dependencies',
63
+ 'devDependencies',
64
+ 'peerDependencies',
65
+ 'optionalDependencies'
66
+ ]){
67
+ const dependencies = packageJson[section];
68
+ if (!(!dependencies || 'object' != typeof dependencies || Array.isArray(dependencies))) {
69
+ for (const [packageName, version] of generatedToolingDependencyPins)if (Object.prototype.hasOwnProperty.call(dependencies, packageName) && dependencies[packageName] !== version) {
70
+ dependencies[packageName] = version;
71
+ changed = true;
72
+ }
73
+ }
74
+ }
75
+ return changed;
76
+ }
77
+ const cloudflareModernDeployCommand = 'ULTRAMODERN_ZEPHYR=false MODERNJS_DEPLOY=cloudflare modern deploy';
78
+ const cloudflareModernDeploySkipBuildCommand = `${cloudflareModernDeployCommand} --skip-build`;
79
+ const cloudflareWranglerDeployCommand = 'wrangler deploy --config .output/wrangler.json';
80
+ const cloudflareWranglerDeployInvalidSkipBuildCommand = `${cloudflareWranglerDeployCommand} --skip-build`;
81
+ function removeStaleBackendFederationCommandSegments(command) {
82
+ return command.replace(/\s+&&\s+node\s+\S*scripts\/generate-node-backend-federation\.m[ct]s(?:\s+--app\s+\S+)?(?:\s+--target\s+\S+)?(?=\s+&&|$)/gu, '');
83
+ }
84
+ const SHELL_ONLY_OMITTED_ROOT_SCRIPTS = [
85
+ 'node:backend-federation:generate',
86
+ 'node:proof',
87
+ 'zerops:materialize'
88
+ ];
89
+ const splitScriptSegments = (command)=>command.split('&&').map((segment)=>segment.trim()).filter((segment)=>segment.length > 0);
90
+ const scriptSegmentTarget = (segment)=>segment.replace(/^pnpm\s+/u, '').split(/\s+/u)[0] ?? segment;
91
+ const FRAMEWORK_CHECK_TARGETS = new Set([
92
+ 'format:check',
93
+ 'lint',
94
+ 'typecheck',
95
+ 'skills:check',
96
+ 'i18n:boundaries',
97
+ 'api:check',
98
+ 'contract:check',
99
+ 'node:backend-federation:generate',
100
+ 'node:proof',
101
+ 'performance:readiness',
102
+ 'bridge:check'
103
+ ]);
104
+ function mergeAggregateCheckScript(consumer, framework) {
105
+ const frameworkSegments = splitScriptSegments(framework);
106
+ const consumerExtras = splitScriptSegments(consumer).filter((segment)=>!FRAMEWORK_CHECK_TARGETS.has(scriptSegmentTarget(segment)));
107
+ return [
108
+ ...consumerExtras,
109
+ ...frameworkSegments
110
+ ].join(' && ');
111
+ }
112
+ function rewriteMigratedScriptReferences(scripts) {
113
+ let changed = false;
114
+ const pattern = new RegExp(`(scripts/(?:${migratedWorkspaceScriptBasenames.join('|')}))\\.mjs`, 'gu');
115
+ for (const [name, value] of Object.entries(scripts)){
116
+ if ('string' != typeof value) continue;
117
+ const next = value.replace(pattern, '$1.mts');
118
+ if (next !== value) {
119
+ scripts[name] = next;
120
+ changed = true;
121
+ }
122
+ }
123
+ return changed;
124
+ }
125
+ function updateGeneratedPackageScripts(packageJson, options = {}) {
126
+ const scripts = packageJson.scripts;
127
+ if (!scripts || 'object' != typeof scripts || Array.isArray(scripts)) return false;
128
+ let changed = false;
129
+ const apps = options.apps ?? [];
130
+ const shellOnly = options.shellOnly ?? false;
131
+ const app = apps.find((candidate)=>`${candidate.directory}/package.json` === options.relativePackageFile);
132
+ const isRootPackage = 'package.json' === options.relativePackageFile;
133
+ const expectedScripts = isRootPackage ? createWorkspaceRootPackageScripts(apps.filter((candidate)=>'shell' !== candidate.kind)) : app ? createWorkspaceAppPackageScripts(app) : void 0;
134
+ if (expectedScripts) for (const [name, value] of Object.entries(expectedScripts)){
135
+ if (isRootPackage && shellOnly && SHELL_ONLY_OMITTED_ROOT_SCRIPTS.includes(name)) {
136
+ if (name in scripts) {
137
+ delete scripts[name];
138
+ changed = true;
139
+ }
140
+ continue;
141
+ }
142
+ const nextValue = 'check' === name && 'string' == typeof scripts[name] ? mergeAggregateCheckScript(scripts[name], value) : value;
143
+ if (scripts[name] !== nextValue) {
144
+ scripts[name] = nextValue;
145
+ changed = true;
146
+ }
147
+ }
148
+ if (rewriteMigratedScriptReferences(scripts)) changed = true;
149
+ const build = scripts.build;
150
+ if ('string' == typeof build) {
151
+ const nextBuild = removeStaleBackendFederationCommandSegments(build);
152
+ if (nextBuild !== build) {
153
+ scripts.build = nextBuild;
154
+ changed = true;
155
+ }
156
+ }
157
+ const cloudflareBuild = scripts['cloudflare:build'];
158
+ if ('string' == typeof cloudflareBuild) {
159
+ let nextCloudflareBuild = removeStaleBackendFederationCommandSegments(cloudflareBuild);
160
+ if (nextCloudflareBuild.includes(cloudflareModernDeployCommand) && !nextCloudflareBuild.includes(cloudflareModernDeploySkipBuildCommand)) nextCloudflareBuild = nextCloudflareBuild.replace(cloudflareModernDeployCommand, cloudflareModernDeploySkipBuildCommand);
161
+ nextCloudflareBuild = nextCloudflareBuild.replace(/ && node \S*scripts\/generate-public-surface-assets\.m[ct]s --app [^&]+ --target dist(?= && ULTRAMODERN_ZEPHYR=false MODERNJS_DEPLOY=cloudflare modern deploy --skip-build)/u, '');
162
+ nextCloudflareBuild = nextCloudflareBuild.replace(/ && node \S*scripts\/verify-cloudflare-output\.m[ct]s(?: --app [^&]+)?/u, '');
163
+ if (nextCloudflareBuild !== cloudflareBuild) {
164
+ scripts['cloudflare:build'] = nextCloudflareBuild;
165
+ changed = true;
166
+ }
167
+ }
168
+ const cloudflareDeploy = scripts['cloudflare:deploy'];
169
+ if ('string' == typeof cloudflareDeploy && cloudflareDeploy.includes(cloudflareWranglerDeployInvalidSkipBuildCommand)) {
170
+ scripts['cloudflare:deploy'] = cloudflareDeploy.replace(cloudflareWranglerDeployInvalidSkipBuildCommand, cloudflareWranglerDeployCommand);
171
+ changed = true;
172
+ }
173
+ return changed;
174
+ }
175
+ export { updateGeneratedPackageScripts, updateGeneratedToolingDependencies, updateModernDependencies };
@@ -0,0 +1,38 @@
1
+ import { BLEEDINGDEV_PACKAGE_NAME_PREFIX, BLEEDINGDEV_PACKAGE_SCOPE, WORKSPACE_PACKAGE_VERSION } from "../../../ultramodern-package-source.js";
2
+ import { hasFlag, readOption } from "../options.js";
3
+ function createMigrationPackageSource(args, current) {
4
+ const strategy = hasFlag(args, '--workspace') ? 'workspace' : 'install';
5
+ const registry = readOption(args, '--registry') ?? readOption(args, '--ultramodern-package-registry');
6
+ const explicitAliasScope = readOption(args, '--alias-scope') ?? readOption(args, '--ultramodern-package-scope');
7
+ const aliasScope = explicitAliasScope ?? ('install' === strategy && void 0 === registry ? current.packageSource?.aliasScope ?? BLEEDINGDEV_PACKAGE_SCOPE : current.packageSource?.aliasScope);
8
+ const aliasPackageNamePrefix = readOption(args, '--alias-package-name-prefix') ?? readOption(args, '--ultramodern-package-name-prefix') ?? current.packageSource?.aliasPackageNamePrefix ?? (aliasScope ? BLEEDINGDEV_PACKAGE_NAME_PREFIX : void 0);
9
+ if ('workspace' === strategy) return {
10
+ strategy,
11
+ modernPackageVersion: WORKSPACE_PACKAGE_VERSION,
12
+ ...registry ? {
13
+ registry
14
+ } : {},
15
+ ...aliasScope ? {
16
+ aliasScope
17
+ } : {},
18
+ ...aliasPackageNamePrefix ? {
19
+ aliasPackageNamePrefix
20
+ } : {}
21
+ };
22
+ const version = readOption(args, '--version') ?? readOption(args, '--ultramodern-package-version') ?? current.packageSource?.modernPackageVersion;
23
+ if (!version || version === WORKSPACE_PACKAGE_VERSION) throw new Error('migrate-strict-effect needs --version <published-ultramodern-version> for install package source.');
24
+ return {
25
+ strategy,
26
+ modernPackageVersion: version,
27
+ ...registry ? {
28
+ registry
29
+ } : {},
30
+ ...aliasScope ? {
31
+ aliasScope
32
+ } : {},
33
+ ...aliasPackageNamePrefix ? {
34
+ aliasPackageNamePrefix
35
+ } : {}
36
+ };
37
+ }
38
+ export { createMigrationPackageSource };
@@ -0,0 +1,76 @@
1
+ import node_fs from "node:fs";
2
+ import node_path from "node:path";
3
+ import { DRIZZLE_ORM_VERSION, EFFECT_VERSION, EFFECT_VITEST_VERSION, MODULE_FEDERATION_VERSION } from "../../../ultramodern-workspace/versions.js";
4
+ import { workspaceUsesDependency } from "./dependency-usage.js";
5
+ import { ensureYamlListItem, ensureYamlMapEntry, ensureYamlScalarMapEntry, removeYamlMapEntry, replaceYamlLine } from "./pnpm-yaml.js";
6
+ import { drizzleOrmDeclarationPatchPath, effectDeclarationPatchPath, moduleFederationBridgeReactPatchPath, moduleFederationModernJsPatchPath, strictEffectPackageVersionPolicyExclusions } from "./policy-constants.js";
7
+ function updateGeneratedPnpmWorkspacePolicy(io) {
8
+ const workspaceFile = node_path.join(io.workspaceRoot, 'pnpm-workspace.yaml');
9
+ if (!node_fs.existsSync(workspaceFile)) return false;
10
+ let source = node_fs.readFileSync(workspaceFile, 'utf-8');
11
+ let changed = false;
12
+ const usesDrizzleOrm = workspaceUsesDependency(io.workspaceRoot, 'drizzle-orm');
13
+ const replacements = [
14
+ [
15
+ /^ {4}'@effect\/vitest>effect': .+$/mu,
16
+ ` '@effect/vitest>effect': '${EFFECT_VERSION}'`
17
+ ]
18
+ ];
19
+ for (const [pattern, replacement] of replacements){
20
+ const result = replaceYamlLine(source, pattern, replacement);
21
+ source = result.source;
22
+ changed = result.changed || changed;
23
+ }
24
+ for (const [entryKey, version] of [
25
+ [
26
+ "'@effect/opentelemetry'",
27
+ EFFECT_VERSION
28
+ ],
29
+ [
30
+ "'@effect/vitest'",
31
+ EFFECT_VITEST_VERSION
32
+ ],
33
+ [
34
+ 'effect',
35
+ EFFECT_VERSION
36
+ ]
37
+ ]){
38
+ const result = ensureYamlScalarMapEntry(source, 'overrides', entryKey, version);
39
+ source = result.source;
40
+ changed = result.changed || changed;
41
+ }
42
+ const parcelWatcherBuildPolicy = ensureYamlScalarMapEntry(source, 'allowBuilds', "'@parcel/watcher'", 'true');
43
+ source = parcelWatcherBuildPolicy.source;
44
+ changed = parcelWatcherBuildPolicy.changed || changed;
45
+ for (const item of strictEffectPackageVersionPolicyExclusions){
46
+ const packageName = item.slice(0, item.lastIndexOf('@'));
47
+ const escapedPackageName = packageName.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
48
+ const currentVersion = replaceYamlLine(source, new RegExp(`^ {2}- '${escapedPackageName}@[^']+'$`, 'gmu'), ` - '${item}'`);
49
+ source = currentVersion.source;
50
+ changed = currentVersion.changed || changed;
51
+ for (const policyKey of [
52
+ 'minimumReleaseAgeExclude',
53
+ 'trustPolicyExclude'
54
+ ]){
55
+ const policyExclude = ensureYamlListItem(source, policyKey, item);
56
+ source = policyExclude.source;
57
+ changed = policyExclude.changed || changed;
58
+ }
59
+ }
60
+ const effectPatch = ensureYamlMapEntry(source, 'patchedDependencies', `effect@${EFFECT_VERSION}`, effectDeclarationPatchPath);
61
+ source = effectPatch.source;
62
+ changed = effectPatch.changed || changed;
63
+ const moduleFederationModernJsPatch = ensureYamlMapEntry(source, 'patchedDependencies', `@module-federation/modern-js-v3@${MODULE_FEDERATION_VERSION}`, moduleFederationModernJsPatchPath);
64
+ source = moduleFederationModernJsPatch.source;
65
+ changed = moduleFederationModernJsPatch.changed || changed;
66
+ const moduleFederationBridgeReactPatch = ensureYamlMapEntry(source, 'patchedDependencies', `@module-federation/bridge-react@${MODULE_FEDERATION_VERSION}`, moduleFederationBridgeReactPatchPath);
67
+ source = moduleFederationBridgeReactPatch.source;
68
+ changed = moduleFederationBridgeReactPatch.changed || changed;
69
+ const drizzleOrmPatch = usesDrizzleOrm ? ensureYamlMapEntry(source, 'patchedDependencies', `drizzle-orm@${DRIZZLE_ORM_VERSION}`, drizzleOrmDeclarationPatchPath) : removeYamlMapEntry(source, `drizzle-orm@${DRIZZLE_ORM_VERSION}`);
70
+ source = drizzleOrmPatch.source;
71
+ changed = drizzleOrmPatch.changed || changed;
72
+ if (changed) io.write(workspaceFile, source);
73
+ return changed;
74
+ }
75
+ export { ensureGeneratedDeclarationPatches } from "./declaration-patches.js";
76
+ export { updateGeneratedPnpmWorkspacePolicy, workspaceUsesDependency };
@@ -0,0 +1,105 @@
1
+ function replaceYamlLine(source, pattern, replacement) {
2
+ const updated = source.replace(pattern, replacement);
3
+ return {
4
+ source: updated,
5
+ changed: updated !== source
6
+ };
7
+ }
8
+ function ensureYamlListItem(source, key, item) {
9
+ const itemLine = ` - '${item}'`;
10
+ const headerPattern = new RegExp(`^${key}:\\n(?:(?: - .+\\n)*)`, 'mu');
11
+ const header = source.match(headerPattern);
12
+ if (header) {
13
+ if (header[0].split('\n').includes(itemLine)) return {
14
+ source,
15
+ changed: false
16
+ };
17
+ return {
18
+ source: source.replace(headerPattern, `${header[0]}${itemLine}\n`),
19
+ changed: true
20
+ };
21
+ }
22
+ const block = `${key}:\n${itemLine}\n`;
23
+ const afterTrustPolicyIgnore = source.replace(/^(trustPolicyIgnoreAfter: .+\n)/mu, `$1${block}`);
24
+ if (afterTrustPolicyIgnore !== source) return {
25
+ source: afterTrustPolicyIgnore,
26
+ changed: true
27
+ };
28
+ return {
29
+ source: `${source.trimEnd()}\n${block}`,
30
+ changed: true
31
+ };
32
+ }
33
+ function yamlEntryPattern(entryKey, scalar = false) {
34
+ const bareKey = entryKey.replace(/^['"]|['"]$/gu, '');
35
+ if (scalar) {
36
+ const esc = bareKey.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
37
+ return new RegExp(`^ {2}(?:'${esc}'|"${esc}"|${esc}): .+$`, 'gmu');
38
+ }
39
+ const packageName = bareKey.includes('@') ? bareKey.slice(0, bareKey.lastIndexOf('@')) : bareKey;
40
+ const esc = packageName.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
41
+ return new RegExp(`^ {2}(?:'${esc}@[^']+'|"${esc}@[^"]+"|${esc}@[^:'"\\s]+): .+$`, 'gmu');
42
+ }
43
+ function upsertYamlEntry(source, key, entryLine, pattern) {
44
+ const linePattern = new RegExp(pattern.source, 'u');
45
+ const lines = source.split('\n');
46
+ let seen = false;
47
+ let changed = false;
48
+ const out = [];
49
+ for (const line of lines)if (linePattern.test(line)) {
50
+ if (seen) {
51
+ changed = true;
52
+ continue;
53
+ }
54
+ seen = true;
55
+ if (line !== entryLine) changed = true;
56
+ out.push(entryLine);
57
+ } else out.push(line);
58
+ if (seen) return {
59
+ source: out.join('\n'),
60
+ changed
61
+ };
62
+ const headerPattern = new RegExp(`^${key}:\\n(?:(?: .+\\n)*)`, 'mu');
63
+ const header = source.match(headerPattern);
64
+ if (header) {
65
+ if (header[0].split('\n').includes(entryLine)) return {
66
+ source,
67
+ changed: false
68
+ };
69
+ return {
70
+ source: source.replace(headerPattern, `${header[0]}${entryLine}\n`),
71
+ changed: true
72
+ };
73
+ }
74
+ return {
75
+ source: `${source.trimEnd()}\n${key}:\n${entryLine}\n`,
76
+ changed: true
77
+ };
78
+ }
79
+ function ensureYamlMapEntry(source, key, entryKey, value) {
80
+ return upsertYamlEntry(source, key, ` '${entryKey}': ${value}`, yamlEntryPattern(entryKey));
81
+ }
82
+ function ensureYamlScalarMapEntry(source, key, entryKey, value) {
83
+ return upsertYamlEntry(source, key, ` ${entryKey}: ${value}`, yamlEntryPattern(entryKey, true));
84
+ }
85
+ function removeYamlMapEntry(source, entryKey) {
86
+ const linePattern = new RegExp(yamlEntryPattern(entryKey).source, 'u');
87
+ const lines = source.split('\n');
88
+ let changed = false;
89
+ const out = [];
90
+ for (const line of lines){
91
+ if (linePattern.test(line)) {
92
+ changed = true;
93
+ continue;
94
+ }
95
+ out.push(line);
96
+ }
97
+ return changed ? {
98
+ source: out.join('\n'),
99
+ changed
100
+ } : {
101
+ source,
102
+ changed
103
+ };
104
+ }
105
+ export { ensureYamlListItem, ensureYamlMapEntry, ensureYamlScalarMapEntry, removeYamlMapEntry, replaceYamlLine, upsertYamlEntry, yamlEntryPattern };
@@ -0,0 +1,16 @@
1
+ import node_path from "node:path";
2
+ import { EFFECT_VERSION, MODULE_FEDERATION_VERSION } from "../../../ultramodern-workspace/versions.js";
3
+ import { createPackageRoot } from "../context.js";
4
+ const strictEffectPackageVersionPolicyExclusions = [
5
+ `effect@${EFFECT_VERSION}`,
6
+ `@effect/opentelemetry@${EFFECT_VERSION}`
7
+ ];
8
+ const moduleFederationModernJsPatchPath = `patches/@module-federation__modern-js-v3@${MODULE_FEDERATION_VERSION}.patch`;
9
+ const moduleFederationModernJsPatchSourcePath = node_path.join(createPackageRoot, 'template-workspace', moduleFederationModernJsPatchPath);
10
+ const moduleFederationBridgeReactPatchPath = `patches/@module-federation__bridge-react@${MODULE_FEDERATION_VERSION}.patch`;
11
+ const moduleFederationBridgeReactPatchSourcePath = node_path.join(createPackageRoot, 'template-workspace', moduleFederationBridgeReactPatchPath);
12
+ const effectDeclarationPatchPath = 'patches/effect-schema-error-type-id.patch';
13
+ const effectDeclarationPatchSourcePath = node_path.join(createPackageRoot, 'template-workspace', effectDeclarationPatchPath);
14
+ const drizzleOrmDeclarationPatchPath = 'patches/drizzle-orm-ts7-strict-declarations.patch';
15
+ const drizzleOrmDeclarationPatchSourcePath = node_path.join(createPackageRoot, 'template-workspace', drizzleOrmDeclarationPatchPath);
16
+ export { drizzleOrmDeclarationPatchPath, drizzleOrmDeclarationPatchSourcePath, effectDeclarationPatchPath, effectDeclarationPatchSourcePath, moduleFederationBridgeReactPatchPath, moduleFederationBridgeReactPatchSourcePath, moduleFederationModernJsPatchPath, moduleFederationModernJsPatchSourcePath, strictEffectPackageVersionPolicyExclusions };
@@ -0,0 +1,100 @@
1
+ import node_fs from "node:fs";
2
+ import node_path from "node:path";
3
+ import { migratedWorkspaceScriptArtifacts } from "../../ultramodern-workspace/workspace-scripts.js";
4
+ import { normalizeCompactUltramodernConfig, synthesizeCompactUltramodernConfig, workspaceAppsFromToolingConfig } from "../config.js";
5
+ import { updateReferenceTopology, updateUltramodernConfig } from "./migrate-strict-effect/api-metadata.js";
6
+ import { ensureGeneratedOxfmtIgnorePatterns, removeGeneratedFileIfExists, removeStaleBackendFederationArtifacts, updateGeneratedBackendFederationContractFiles, updateGeneratedBuildIdentityModules, updateGeneratedModernConfigs, updateGeneratedTypeScriptSurfaces, updateGeneratedZeropsArtifacts } from "./migrate-strict-effect/generated-artifacts.js";
7
+ import { migrateStrictEffectHelp } from "./migrate-strict-effect/help.js";
8
+ import { runPnpmLockfileRefresh } from "./migrate-strict-effect/install.js";
9
+ import { createMigrationIo, listWorkspacePackageFiles, readJsonFile, writeJsonFile } from "./migrate-strict-effect/io.js";
10
+ import { updateGeneratedPackageScripts, updateGeneratedToolingDependencies, updateModernDependencies } from "./migrate-strict-effect/package-cohort.js";
11
+ import { createMigrationPackageSource } from "./migrate-strict-effect/package-source.js";
12
+ import { ensureGeneratedDeclarationPatches, updateGeneratedPnpmWorkspacePolicy, workspaceUsesDependency } from "./migrate-strict-effect/pnpm-policy.js";
13
+ import { hasFlag } from "./options.js";
14
+ function runMigrateStrictEffect(args, context) {
15
+ if (args.includes('--help') || args.includes('-h')) {
16
+ process.stdout.write(migrateStrictEffectHelp);
17
+ return 0;
18
+ }
19
+ const dryRun = hasFlag(args, '--dry-run');
20
+ const skipInstall = dryRun || hasFlag(args, '--skip-install');
21
+ const io = createMigrationIo(context.workspaceRoot, dryRun);
22
+ const compactPath = node_path.join(io.workspaceRoot, '.modernjs/ultramodern.json');
23
+ let raw;
24
+ if (node_fs.existsSync(compactPath)) raw = readJsonFile(compactPath);
25
+ else {
26
+ const synthesized = synthesizeCompactUltramodernConfig(io.workspaceRoot);
27
+ if (!synthesized) throw new Error("Missing .modernjs/ultramodern.json and no legacy UltraModern metadata (.modernjs/ultramodern-generated-contract.json) was found to synthesize it from.");
28
+ raw = synthesized.compact;
29
+ io.write(compactPath, `${JSON.stringify(raw, null, 2)}\n`);
30
+ io.log(`Synthesized .modernjs/ultramodern.json from legacy metadata: ${synthesized.sources.join(', ')}.`);
31
+ if (synthesized.missing.length > 0) io.log(`Legacy metadata not found (using defaults): ${synthesized.missing.join(', ')}.`);
32
+ }
33
+ const current = normalizeCompactUltramodernConfig(io.workspaceRoot, raw);
34
+ const packageSource = createMigrationPackageSource(args, current);
35
+ updateUltramodernConfig(io, raw, packageSource);
36
+ updateReferenceTopology(io);
37
+ const migrated = normalizeCompactUltramodernConfig(io.workspaceRoot, raw);
38
+ const migratedApps = workspaceAppsFromToolingConfig(migrated);
39
+ const shellOnly = !migrated.topology.apps.some((app)=>app.api);
40
+ if (shellOnly) {
41
+ io.log('Shell-only workspace: skipping backend-federation and Zerops runtime stages.');
42
+ for (const relativePath of [
43
+ "scripts/generate-node-backend-federation.mts",
44
+ "scripts/generate-node-backend-federation.mjs",
45
+ "scripts/proof-node-backend-federation.mts",
46
+ "scripts/proof-node-backend-federation.mjs",
47
+ "scripts/materialize-zerops-runtime.mjs",
48
+ 'zerops.yaml'
49
+ ])removeGeneratedFileIfExists(io, relativePath);
50
+ } else {
51
+ removeStaleBackendFederationArtifacts(io, migrated);
52
+ updateGeneratedZeropsArtifacts(io, migrated);
53
+ updateGeneratedBackendFederationContractFiles(io, migrated);
54
+ }
55
+ for (const artifact of migratedWorkspaceScriptArtifacts({
56
+ shellOnly
57
+ })){
58
+ if (artifact.legacyPath) io.remove(node_path.join(io.workspaceRoot, artifact.legacyPath));
59
+ io.write(node_path.join(io.workspaceRoot, artifact.relativePath), artifact.content);
60
+ }
61
+ updateGeneratedBuildIdentityModules(io, migrated);
62
+ updateGeneratedTypeScriptSurfaces(io, migrated);
63
+ updateGeneratedModernConfigs(io, migrated);
64
+ for (const relativePackageFile of listWorkspacePackageFiles(io.workspaceRoot)){
65
+ const packageFile = node_path.join(io.workspaceRoot, relativePackageFile);
66
+ const packageJson = readJsonFile(packageFile);
67
+ if ('package.json' === relativePackageFile) {
68
+ packageJson.modernjs ??= {};
69
+ packageJson.modernjs.packageSource = {
70
+ strategy: packageSource.strategy,
71
+ config: './.modernjs/ultramodern.json'
72
+ };
73
+ }
74
+ updateModernDependencies(packageJson, packageSource);
75
+ updateGeneratedToolingDependencies(packageJson);
76
+ updateGeneratedPackageScripts(packageJson, {
77
+ relativePackageFile,
78
+ apps: migratedApps,
79
+ shellOnly
80
+ });
81
+ writeJsonFile(io, packageFile, packageJson);
82
+ }
83
+ updateGeneratedPnpmWorkspacePolicy(io);
84
+ ensureGeneratedDeclarationPatches(io, {
85
+ includeDrizzleOrmPatch: workspaceUsesDependency(io.workspaceRoot, 'drizzle-orm')
86
+ });
87
+ ensureGeneratedOxfmtIgnorePatterns(io);
88
+ if (!skipInstall) {
89
+ const status = runPnpmLockfileRefresh(context);
90
+ if (0 !== status) return status;
91
+ }
92
+ if (dryRun) {
93
+ for (const line of io.plan)process.stdout.write(`${line}\n`);
94
+ process.stdout.write(`[dry-run] migrate-strict-effect would migrate UltraModern strict Effect metadata to ${packageSource.modernPackageVersion}.\n`);
95
+ return 0;
96
+ }
97
+ process.stdout.write(`UltraModern strict Effect metadata migrated to ${packageSource.modernPackageVersion}. Run pnpm api:check && pnpm contract:check next.\n`);
98
+ return 0;
99
+ }
100
+ export { runMigrateStrictEffect };
@@ -0,0 +1,18 @@
1
+ function readOption(args, name) {
2
+ const prefix = `${name}=`;
3
+ const inline = args.find((arg)=>arg.startsWith(prefix));
4
+ if (inline) {
5
+ const value = inline.slice(prefix.length);
6
+ if (!value) throw new Error(`${name} needs a value.`);
7
+ return value;
8
+ }
9
+ const index = args.indexOf(name);
10
+ if (-1 === index) return;
11
+ const value = args[index + 1];
12
+ if (!value || value.startsWith('--')) throw new Error(`${name} needs a value.`);
13
+ return value;
14
+ }
15
+ function hasFlag(args, name) {
16
+ return args.includes(name);
17
+ }
18
+ export { hasFlag, readOption };
@@ -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 };