@bleedingdev/modern-js-create 3.5.0-ultramodern.3 → 3.5.0-ultramodern.31

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 (461) hide show
  1. package/README.md +21 -17
  2. package/dist/cjs/cli/flags.cjs +326 -0
  3. package/dist/cjs/cli/help.cjs +106 -0
  4. package/dist/cjs/cli/package-source.cjs +186 -0
  5. package/dist/cjs/cli/project-setup.cjs +138 -0
  6. package/dist/cjs/cli/prompts.cjs +118 -0
  7. package/dist/cjs/index.cjs +24 -581
  8. package/dist/cjs/ultramodern-tooling/commands/cloudflare-output-verify.cjs +132 -0
  9. package/dist/cjs/ultramodern-tooling/commands/context.cjs +131 -0
  10. package/dist/cjs/ultramodern-tooling/commands/mf-types.cjs +55 -0
  11. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.cjs +158 -0
  12. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.cjs +49 -0
  13. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.cjs +87 -0
  14. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.cjs +58 -0
  15. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.cjs +62 -0
  16. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.cjs +60 -0
  17. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.cjs +132 -0
  18. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.cjs +67 -0
  19. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.cjs +93 -0
  20. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.cjs +60 -0
  21. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.cjs +67 -0
  22. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.cjs +67 -0
  23. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/help.cjs +54 -0
  24. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/install.cjs +52 -0
  25. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/io.cjs +133 -0
  26. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.cjs +219 -0
  27. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-source.cjs +76 -0
  28. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.cjs +131 -0
  29. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.cjs +161 -0
  30. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.cjs +88 -0
  31. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect.cjs +149 -0
  32. package/dist/cjs/ultramodern-tooling/commands/options.cjs +59 -0
  33. package/dist/cjs/ultramodern-tooling/commands/routes-generate.cjs +122 -0
  34. package/dist/cjs/ultramodern-tooling/commands/skills.cjs +49 -0
  35. package/dist/cjs/ultramodern-tooling/commands/sync-delivery-unit.cjs +40 -0
  36. package/dist/cjs/ultramodern-tooling/commands/validate.cjs +49 -0
  37. package/dist/cjs/ultramodern-tooling/commands.cjs +27 -478
  38. package/dist/cjs/ultramodern-tooling/config/constants.cjs +48 -0
  39. package/dist/cjs/ultramodern-tooling/config/index.cjs +104 -0
  40. package/dist/cjs/ultramodern-tooling/config/json.cjs +61 -0
  41. package/dist/cjs/ultramodern-tooling/config/load.cjs +62 -0
  42. package/dist/cjs/ultramodern-tooling/config/metadata.cjs +92 -0
  43. package/dist/cjs/ultramodern-tooling/config/normalize.cjs +160 -0
  44. package/dist/cjs/ultramodern-tooling/config/synthesize.cjs +157 -0
  45. package/dist/cjs/ultramodern-tooling/config/types.cjs +18 -0
  46. package/dist/cjs/ultramodern-tooling/config.cjs +23 -133
  47. package/dist/cjs/ultramodern-workspace/add-vertical/constants.cjs +52 -0
  48. package/dist/cjs/ultramodern-workspace/add-vertical/execute.cjs +156 -0
  49. package/dist/cjs/ultramodern-workspace/add-vertical/plan.cjs +246 -0
  50. package/dist/cjs/ultramodern-workspace/add-vertical/preflight.cjs +198 -0
  51. package/dist/cjs/ultramodern-workspace/add-vertical/shell-files.cjs +116 -0
  52. package/dist/cjs/ultramodern-workspace/add-vertical/topology.cjs +133 -0
  53. package/dist/cjs/ultramodern-workspace/add-vertical/workspace-state.cjs +107 -0
  54. package/dist/cjs/ultramodern-workspace/add-vertical.cjs +22 -571
  55. package/dist/cjs/ultramodern-workspace/api/checkout-cart.cjs +145 -0
  56. package/dist/cjs/ultramodern-workspace/api/client.cjs +218 -0
  57. package/dist/cjs/ultramodern-workspace/api/contracts.cjs +222 -0
  58. package/dist/cjs/ultramodern-workspace/api/names.cjs +98 -0
  59. package/dist/cjs/ultramodern-workspace/api/service.cjs +220 -0
  60. package/dist/cjs/ultramodern-workspace/api/shared.cjs +252 -0
  61. package/dist/cjs/ultramodern-workspace/api.cjs +29 -1004
  62. package/dist/cjs/ultramodern-workspace/app-files.cjs +11 -29
  63. package/dist/cjs/ultramodern-workspace/backend-federation.cjs +296 -0
  64. package/dist/cjs/ultramodern-workspace/bridge-config/cli.cjs +71 -0
  65. package/dist/cjs/ultramodern-workspace/bridge-config/defaults.cjs +43 -0
  66. package/dist/cjs/ultramodern-workspace/bridge-config/gates.cjs +93 -0
  67. package/dist/cjs/ultramodern-workspace/bridge-config/index.cjs +60 -0
  68. package/dist/cjs/ultramodern-workspace/bridge-config/normalize.cjs +68 -0
  69. package/dist/cjs/ultramodern-workspace/bridge-config/schema.cjs +78 -0
  70. package/dist/cjs/ultramodern-workspace/bridge-config/shared.cjs +110 -0
  71. package/dist/cjs/ultramodern-workspace/bridge-config/validation.cjs +68 -0
  72. package/dist/cjs/ultramodern-workspace/bridge-config/workspace-packages.cjs +108 -0
  73. package/dist/cjs/ultramodern-workspace/bridge-config.cjs +32 -297
  74. package/dist/cjs/ultramodern-workspace/contracts.cjs +24 -8
  75. package/dist/cjs/ultramodern-workspace/delivery-unit-sync.cjs +159 -0
  76. package/dist/cjs/ultramodern-workspace/delivery-unit.cjs +75 -0
  77. package/dist/cjs/ultramodern-workspace/demo-components.cjs +47 -189
  78. package/dist/cjs/ultramodern-workspace/descriptors.cjs +36 -1
  79. package/dist/cjs/ultramodern-workspace/effect-diagnostics.cjs +114 -0
  80. package/dist/cjs/ultramodern-workspace/fs-io.cjs +24 -2
  81. package/dist/cjs/ultramodern-workspace/index.cjs +4 -0
  82. package/dist/cjs/ultramodern-workspace/mf-validation/constants.cjs +69 -0
  83. package/dist/cjs/ultramodern-workspace/mf-validation/discovery.cjs +77 -0
  84. package/dist/cjs/ultramodern-workspace/mf-validation/inspect.cjs +92 -0
  85. package/dist/cjs/ultramodern-workspace/mf-validation/object-literal.cjs +203 -0
  86. package/dist/cjs/ultramodern-workspace/mf-validation/path-utils.cjs +171 -0
  87. package/dist/cjs/ultramodern-workspace/mf-validation/syntax.cjs +228 -0
  88. package/dist/cjs/ultramodern-workspace/mf-validation/types.cjs +18 -0
  89. package/dist/cjs/ultramodern-workspace/mf-validation/validate.cjs +112 -0
  90. package/dist/cjs/ultramodern-workspace/mf-validation.cjs +6 -529
  91. package/dist/cjs/ultramodern-workspace/module-federation/config.cjs +251 -0
  92. package/dist/cjs/ultramodern-workspace/module-federation/index.cjs +73 -0
  93. package/dist/cjs/ultramodern-workspace/module-federation/reexport-module.cjs +73 -0
  94. package/dist/cjs/ultramodern-workspace/module-federation/remote-refs.cjs +105 -0
  95. package/dist/cjs/ultramodern-workspace/module-federation/shared-config.cjs +53 -0
  96. package/dist/cjs/ultramodern-workspace/module-federation.cjs +18 -477
  97. package/dist/cjs/ultramodern-workspace/package-json.cjs +25 -258
  98. package/dist/cjs/ultramodern-workspace/pnpm-workspace-policy-plan.cjs +166 -0
  99. package/dist/cjs/ultramodern-workspace/routes.cjs +8 -142
  100. package/dist/cjs/ultramodern-workspace/shared-patches.cjs +44 -0
  101. package/dist/cjs/ultramodern-workspace/tooling-command-catalog.cjs +153 -0
  102. package/dist/cjs/ultramodern-workspace/tsconfigs.cjs +199 -0
  103. package/dist/cjs/ultramodern-workspace/versions.cjs +8 -3
  104. package/dist/cjs/ultramodern-workspace/workspace-script-plan.cjs +175 -0
  105. package/dist/cjs/ultramodern-workspace/workspace-scripts.cjs +104 -63
  106. package/dist/cjs/ultramodern-workspace/workspace-validation-contract.cjs +97 -0
  107. package/dist/cjs/ultramodern-workspace/write-app.cjs +128 -0
  108. package/dist/cjs/ultramodern-workspace/write-workspace.cjs +10 -59
  109. package/dist/cjs/ultramodern-workspace/zerops.cjs +103 -0
  110. package/dist/esm/cli/flags.js +228 -0
  111. package/dist/esm/cli/help.js +65 -0
  112. package/dist/esm/cli/package-source.js +119 -0
  113. package/dist/esm/cli/project-setup.js +81 -0
  114. package/dist/esm/cli/prompts.js +63 -0
  115. package/dist/esm/index.js +6 -559
  116. package/dist/esm/ultramodern-tooling/commands/cloudflare-output-verify.js +84 -0
  117. package/dist/esm/ultramodern-tooling/commands/context.js +66 -0
  118. package/dist/esm/ultramodern-tooling/commands/mf-types.js +17 -0
  119. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.js +106 -0
  120. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +11 -0
  121. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.js +38 -0
  122. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.js +10 -0
  123. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +14 -0
  124. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +12 -0
  125. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.js +83 -0
  126. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.js +16 -0
  127. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.js +44 -0
  128. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.js +12 -0
  129. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.js +7 -0
  130. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.js +15 -0
  131. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/help.js +16 -0
  132. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/install.js +14 -0
  133. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/io.js +69 -0
  134. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +175 -0
  135. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-source.js +38 -0
  136. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +76 -0
  137. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +105 -0
  138. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +16 -0
  139. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect.js +100 -0
  140. package/dist/esm/ultramodern-tooling/commands/options.js +18 -0
  141. package/dist/esm/ultramodern-tooling/commands/routes-generate.js +74 -0
  142. package/dist/esm/ultramodern-tooling/commands/skills.js +11 -0
  143. package/dist/esm/ultramodern-tooling/commands/sync-delivery-unit.js +1 -0
  144. package/dist/esm/ultramodern-tooling/commands/validate.js +11 -0
  145. package/dist/esm/ultramodern-tooling/commands.js +22 -468
  146. package/dist/esm/ultramodern-tooling/config/constants.js +4 -0
  147. package/dist/esm/ultramodern-tooling/config/index.js +7 -0
  148. package/dist/esm/ultramodern-tooling/config/json.js +10 -0
  149. package/dist/esm/ultramodern-tooling/config/load.js +13 -0
  150. package/dist/esm/ultramodern-tooling/config/metadata.js +37 -0
  151. package/dist/esm/ultramodern-tooling/config/normalize.js +106 -0
  152. package/dist/esm/ultramodern-tooling/config/synthesize.js +108 -0
  153. package/dist/esm/ultramodern-tooling/config/types.js +0 -0
  154. package/dist/esm/ultramodern-tooling/config.js +1 -120
  155. package/dist/esm/ultramodern-workspace/add-vertical/constants.js +5 -0
  156. package/dist/esm/ultramodern-workspace/add-vertical/execute.js +108 -0
  157. package/dist/esm/ultramodern-workspace/add-vertical/plan.js +184 -0
  158. package/dist/esm/ultramodern-workspace/add-vertical/preflight.js +122 -0
  159. package/dist/esm/ultramodern-workspace/add-vertical/shell-files.js +59 -0
  160. package/dist/esm/ultramodern-workspace/add-vertical/topology.js +89 -0
  161. package/dist/esm/ultramodern-workspace/add-vertical/workspace-state.js +43 -0
  162. package/dist/esm/ultramodern-workspace/add-vertical.js +6 -544
  163. package/dist/esm/ultramodern-workspace/api/checkout-cart.js +86 -0
  164. package/dist/esm/ultramodern-workspace/api/client.js +177 -0
  165. package/dist/esm/ultramodern-workspace/api/contracts.js +172 -0
  166. package/dist/esm/ultramodern-workspace/api/names.js +33 -0
  167. package/dist/esm/ultramodern-workspace/api/service.js +179 -0
  168. package/dist/esm/ultramodern-workspace/api/shared.js +208 -0
  169. package/dist/esm/ultramodern-workspace/api.js +5 -984
  170. package/dist/esm/ultramodern-workspace/app-files.js +11 -29
  171. package/dist/esm/ultramodern-workspace/backend-federation.js +231 -0
  172. package/dist/esm/ultramodern-workspace/bridge-config/cli.js +30 -0
  173. package/dist/esm/ultramodern-workspace/bridge-config/defaults.js +5 -0
  174. package/dist/esm/ultramodern-workspace/bridge-config/gates.js +52 -0
  175. package/dist/esm/ultramodern-workspace/bridge-config/index.js +3 -0
  176. package/dist/esm/ultramodern-workspace/bridge-config/normalize.js +30 -0
  177. package/dist/esm/ultramodern-workspace/bridge-config/schema.js +31 -0
  178. package/dist/esm/ultramodern-workspace/bridge-config/shared.js +51 -0
  179. package/dist/esm/ultramodern-workspace/bridge-config/validation.js +27 -0
  180. package/dist/esm/ultramodern-workspace/bridge-config/workspace-packages.js +67 -0
  181. package/dist/esm/ultramodern-workspace/bridge-config.js +1 -270
  182. package/dist/esm/ultramodern-workspace/contracts.js +24 -8
  183. package/dist/esm/ultramodern-workspace/delivery-unit-sync.js +110 -0
  184. package/dist/esm/ultramodern-workspace/delivery-unit.js +21 -0
  185. package/dist/esm/ultramodern-workspace/demo-components.js +47 -189
  186. package/dist/esm/ultramodern-workspace/descriptors.js +25 -2
  187. package/dist/esm/ultramodern-workspace/effect-diagnostics.js +76 -0
  188. package/dist/esm/ultramodern-workspace/fs-io.js +24 -2
  189. package/dist/esm/ultramodern-workspace/index.js +1 -0
  190. package/dist/esm/ultramodern-workspace/mf-validation/constants.js +19 -0
  191. package/dist/esm/ultramodern-workspace/mf-validation/discovery.js +28 -0
  192. package/dist/esm/ultramodern-workspace/mf-validation/inspect.js +45 -0
  193. package/dist/esm/ultramodern-workspace/mf-validation/object-literal.js +144 -0
  194. package/dist/esm/ultramodern-workspace/mf-validation/path-utils.js +89 -0
  195. package/dist/esm/ultramodern-workspace/mf-validation/syntax.js +154 -0
  196. package/dist/esm/ultramodern-workspace/mf-validation/types.js +0 -0
  197. package/dist/esm/ultramodern-workspace/mf-validation/validate.js +57 -0
  198. package/dist/esm/ultramodern-workspace/mf-validation.js +3 -516
  199. package/dist/esm/ultramodern-workspace/module-federation/config.js +204 -0
  200. package/dist/esm/ultramodern-workspace/module-federation/index.js +4 -0
  201. package/dist/esm/ultramodern-workspace/module-federation/reexport-module.js +29 -0
  202. package/dist/esm/ultramodern-workspace/module-federation/remote-refs.js +64 -0
  203. package/dist/esm/ultramodern-workspace/module-federation/shared-config.js +12 -0
  204. package/dist/esm/ultramodern-workspace/module-federation.js +2 -458
  205. package/dist/esm/ultramodern-workspace/package-json.js +18 -245
  206. package/dist/esm/ultramodern-workspace/pnpm-workspace-policy-plan.js +113 -0
  207. package/dist/esm/ultramodern-workspace/routes.js +8 -142
  208. package/dist/esm/ultramodern-workspace/shared-patches.js +6 -0
  209. package/dist/esm/ultramodern-workspace/tooling-command-catalog.js +100 -0
  210. package/dist/esm/ultramodern-workspace/tsconfigs.js +136 -0
  211. package/dist/esm/ultramodern-workspace/versions.js +6 -4
  212. package/dist/esm/ultramodern-workspace/workspace-script-plan.js +110 -0
  213. package/dist/esm/ultramodern-workspace/workspace-scripts.js +88 -65
  214. package/dist/esm/ultramodern-workspace/workspace-validation-contract.js +59 -0
  215. package/dist/esm/ultramodern-workspace/write-app.js +90 -0
  216. package/dist/esm/ultramodern-workspace/write-workspace.js +11 -60
  217. package/dist/esm/ultramodern-workspace/zerops.js +65 -0
  218. package/dist/esm-node/cli/flags.js +229 -0
  219. package/dist/esm-node/cli/help.js +66 -0
  220. package/dist/esm-node/cli/package-source.js +120 -0
  221. package/dist/esm-node/cli/project-setup.js +82 -0
  222. package/dist/esm-node/cli/prompts.js +64 -0
  223. package/dist/esm-node/index.js +6 -559
  224. package/dist/esm-node/ultramodern-tooling/commands/cloudflare-output-verify.js +85 -0
  225. package/dist/esm-node/ultramodern-tooling/commands/context.js +67 -0
  226. package/dist/esm-node/ultramodern-tooling/commands/mf-types.js +18 -0
  227. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.js +107 -0
  228. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +12 -0
  229. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.js +39 -0
  230. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.js +11 -0
  231. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +15 -0
  232. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +13 -0
  233. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.js +84 -0
  234. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.js +17 -0
  235. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.js +45 -0
  236. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.js +13 -0
  237. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.js +8 -0
  238. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.js +16 -0
  239. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/help.js +17 -0
  240. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/install.js +15 -0
  241. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/io.js +70 -0
  242. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +176 -0
  243. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-source.js +39 -0
  244. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +77 -0
  245. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +106 -0
  246. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +17 -0
  247. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect.js +101 -0
  248. package/dist/esm-node/ultramodern-tooling/commands/options.js +19 -0
  249. package/dist/esm-node/ultramodern-tooling/commands/routes-generate.js +75 -0
  250. package/dist/esm-node/ultramodern-tooling/commands/skills.js +12 -0
  251. package/dist/esm-node/ultramodern-tooling/commands/sync-delivery-unit.js +2 -0
  252. package/dist/esm-node/ultramodern-tooling/commands/validate.js +12 -0
  253. package/dist/esm-node/ultramodern-tooling/commands.js +22 -468
  254. package/dist/esm-node/ultramodern-tooling/config/constants.js +5 -0
  255. package/dist/esm-node/ultramodern-tooling/config/index.js +8 -0
  256. package/dist/esm-node/ultramodern-tooling/config/json.js +11 -0
  257. package/dist/esm-node/ultramodern-tooling/config/load.js +14 -0
  258. package/dist/esm-node/ultramodern-tooling/config/metadata.js +38 -0
  259. package/dist/esm-node/ultramodern-tooling/config/normalize.js +107 -0
  260. package/dist/esm-node/ultramodern-tooling/config/synthesize.js +109 -0
  261. package/dist/esm-node/ultramodern-tooling/config/types.js +1 -0
  262. package/dist/esm-node/ultramodern-tooling/config.js +1 -120
  263. package/dist/esm-node/ultramodern-workspace/add-vertical/constants.js +6 -0
  264. package/dist/esm-node/ultramodern-workspace/add-vertical/execute.js +109 -0
  265. package/dist/esm-node/ultramodern-workspace/add-vertical/plan.js +185 -0
  266. package/dist/esm-node/ultramodern-workspace/add-vertical/preflight.js +123 -0
  267. package/dist/esm-node/ultramodern-workspace/add-vertical/shell-files.js +60 -0
  268. package/dist/esm-node/ultramodern-workspace/add-vertical/topology.js +90 -0
  269. package/dist/esm-node/ultramodern-workspace/add-vertical/workspace-state.js +44 -0
  270. package/dist/esm-node/ultramodern-workspace/add-vertical.js +6 -544
  271. package/dist/esm-node/ultramodern-workspace/api/checkout-cart.js +87 -0
  272. package/dist/esm-node/ultramodern-workspace/api/client.js +178 -0
  273. package/dist/esm-node/ultramodern-workspace/api/contracts.js +173 -0
  274. package/dist/esm-node/ultramodern-workspace/api/names.js +34 -0
  275. package/dist/esm-node/ultramodern-workspace/api/service.js +180 -0
  276. package/dist/esm-node/ultramodern-workspace/api/shared.js +209 -0
  277. package/dist/esm-node/ultramodern-workspace/api.js +5 -984
  278. package/dist/esm-node/ultramodern-workspace/app-files.js +11 -29
  279. package/dist/esm-node/ultramodern-workspace/backend-federation.js +232 -0
  280. package/dist/esm-node/ultramodern-workspace/bridge-config/cli.js +31 -0
  281. package/dist/esm-node/ultramodern-workspace/bridge-config/defaults.js +6 -0
  282. package/dist/esm-node/ultramodern-workspace/bridge-config/gates.js +53 -0
  283. package/dist/esm-node/ultramodern-workspace/bridge-config/index.js +4 -0
  284. package/dist/esm-node/ultramodern-workspace/bridge-config/normalize.js +31 -0
  285. package/dist/esm-node/ultramodern-workspace/bridge-config/schema.js +32 -0
  286. package/dist/esm-node/ultramodern-workspace/bridge-config/shared.js +52 -0
  287. package/dist/esm-node/ultramodern-workspace/bridge-config/validation.js +28 -0
  288. package/dist/esm-node/ultramodern-workspace/bridge-config/workspace-packages.js +68 -0
  289. package/dist/esm-node/ultramodern-workspace/bridge-config.js +1 -270
  290. package/dist/esm-node/ultramodern-workspace/contracts.js +24 -8
  291. package/dist/esm-node/ultramodern-workspace/delivery-unit-sync.js +111 -0
  292. package/dist/esm-node/ultramodern-workspace/delivery-unit.js +22 -0
  293. package/dist/esm-node/ultramodern-workspace/demo-components.js +47 -189
  294. package/dist/esm-node/ultramodern-workspace/descriptors.js +25 -2
  295. package/dist/esm-node/ultramodern-workspace/effect-diagnostics.js +77 -0
  296. package/dist/esm-node/ultramodern-workspace/fs-io.js +24 -2
  297. package/dist/esm-node/ultramodern-workspace/index.js +1 -0
  298. package/dist/esm-node/ultramodern-workspace/mf-validation/constants.js +20 -0
  299. package/dist/esm-node/ultramodern-workspace/mf-validation/discovery.js +29 -0
  300. package/dist/esm-node/ultramodern-workspace/mf-validation/inspect.js +46 -0
  301. package/dist/esm-node/ultramodern-workspace/mf-validation/object-literal.js +145 -0
  302. package/dist/esm-node/ultramodern-workspace/mf-validation/path-utils.js +90 -0
  303. package/dist/esm-node/ultramodern-workspace/mf-validation/syntax.js +155 -0
  304. package/dist/esm-node/ultramodern-workspace/mf-validation/types.js +1 -0
  305. package/dist/esm-node/ultramodern-workspace/mf-validation/validate.js +58 -0
  306. package/dist/esm-node/ultramodern-workspace/mf-validation.js +3 -516
  307. package/dist/esm-node/ultramodern-workspace/module-federation/config.js +205 -0
  308. package/dist/esm-node/ultramodern-workspace/module-federation/index.js +5 -0
  309. package/dist/esm-node/ultramodern-workspace/module-federation/reexport-module.js +30 -0
  310. package/dist/esm-node/ultramodern-workspace/module-federation/remote-refs.js +65 -0
  311. package/dist/esm-node/ultramodern-workspace/module-federation/shared-config.js +13 -0
  312. package/dist/esm-node/ultramodern-workspace/module-federation.js +2 -458
  313. package/dist/esm-node/ultramodern-workspace/package-json.js +18 -245
  314. package/dist/esm-node/ultramodern-workspace/pnpm-workspace-policy-plan.js +114 -0
  315. package/dist/esm-node/ultramodern-workspace/routes.js +8 -142
  316. package/dist/esm-node/ultramodern-workspace/shared-patches.js +7 -0
  317. package/dist/esm-node/ultramodern-workspace/tooling-command-catalog.js +101 -0
  318. package/dist/esm-node/ultramodern-workspace/tsconfigs.js +137 -0
  319. package/dist/esm-node/ultramodern-workspace/versions.js +6 -4
  320. package/dist/esm-node/ultramodern-workspace/workspace-script-plan.js +111 -0
  321. package/dist/esm-node/ultramodern-workspace/workspace-scripts.js +88 -65
  322. package/dist/esm-node/ultramodern-workspace/workspace-validation-contract.js +60 -0
  323. package/dist/esm-node/ultramodern-workspace/write-app.js +91 -0
  324. package/dist/esm-node/ultramodern-workspace/write-workspace.js +11 -60
  325. package/dist/esm-node/ultramodern-workspace/zerops.js +66 -0
  326. package/dist/types/cli/flags.d.ts +30 -0
  327. package/dist/types/cli/help.d.ts +2 -0
  328. package/dist/types/cli/package-source.d.ts +15 -0
  329. package/dist/types/cli/project-setup.d.ts +8 -0
  330. package/dist/types/cli/prompts.d.ts +6 -0
  331. package/dist/types/ultramodern-tooling/commands/cloudflare-output-verify.d.ts +2 -0
  332. package/dist/types/ultramodern-tooling/commands/context.d.ts +11 -0
  333. package/dist/types/ultramodern-tooling/commands/mf-types.d.ts +2 -0
  334. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.d.ts +4 -0
  335. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.d.ts +4 -0
  336. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.d.ts +1 -0
  337. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.d.ts +3 -0
  338. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.d.ts +3 -0
  339. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.d.ts +3 -0
  340. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.d.ts +2 -0
  341. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.d.ts +4 -0
  342. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.d.ts +3 -0
  343. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.d.ts +3 -0
  344. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.d.ts +7 -0
  345. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.d.ts +3 -0
  346. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/help.d.ts +1 -0
  347. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/install.d.ts +2 -0
  348. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/io.d.ts +14 -0
  349. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.d.ts +9 -0
  350. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/package-source.d.ts +3 -0
  351. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.d.ts +4 -0
  352. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.d.ts +25 -0
  353. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.d.ts +9 -0
  354. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect.d.ts +2 -0
  355. package/dist/types/ultramodern-tooling/commands/options.d.ts +2 -0
  356. package/dist/types/ultramodern-tooling/commands/routes-generate.d.ts +2 -0
  357. package/dist/types/ultramodern-tooling/commands/skills.d.ts +2 -0
  358. package/dist/types/ultramodern-tooling/commands/sync-delivery-unit.d.ts +1 -0
  359. package/dist/types/ultramodern-tooling/commands/validate.d.ts +2 -0
  360. package/dist/types/ultramodern-tooling/config/constants.d.ts +3 -0
  361. package/dist/types/ultramodern-tooling/config/index.d.ts +7 -0
  362. package/dist/types/ultramodern-tooling/config/json.d.ts +2 -0
  363. package/dist/types/ultramodern-tooling/config/load.d.ts +2 -0
  364. package/dist/types/ultramodern-tooling/config/metadata.d.ts +4 -0
  365. package/dist/types/ultramodern-tooling/config/normalize.d.ts +5 -0
  366. package/dist/types/ultramodern-tooling/config/synthesize.d.ts +5 -0
  367. package/dist/types/ultramodern-tooling/config/types.d.ts +41 -0
  368. package/dist/types/ultramodern-tooling/config.d.ts +1 -43
  369. package/dist/types/ultramodern-workspace/add-vertical/constants.d.ts +4 -0
  370. package/dist/types/ultramodern-workspace/add-vertical/execute.d.ts +2 -0
  371. package/dist/types/ultramodern-workspace/add-vertical/plan.d.ts +7 -0
  372. package/dist/types/ultramodern-workspace/add-vertical/preflight.d.ts +28 -0
  373. package/dist/types/ultramodern-workspace/add-vertical/shell-files.d.ts +6 -0
  374. package/dist/types/ultramodern-workspace/add-vertical/topology.d.ts +9 -0
  375. package/dist/types/ultramodern-workspace/add-vertical/workspace-state.d.ts +8 -0
  376. package/dist/types/ultramodern-workspace/add-vertical.d.ts +7 -39
  377. package/dist/types/ultramodern-workspace/api/checkout-cart.d.ts +33 -0
  378. package/dist/types/ultramodern-workspace/api/client.d.ts +6 -0
  379. package/dist/types/ultramodern-workspace/api/contracts.d.ts +15 -0
  380. package/dist/types/ultramodern-workspace/api/names.d.ts +41 -0
  381. package/dist/types/ultramodern-workspace/api/service.d.ts +6 -0
  382. package/dist/types/ultramodern-workspace/api/shared.d.ts +10 -0
  383. package/dist/types/ultramodern-workspace/api.d.ts +5 -73
  384. package/dist/types/ultramodern-workspace/backend-federation.d.ts +11 -0
  385. package/dist/types/ultramodern-workspace/bridge-config/cli.d.ts +3 -0
  386. package/dist/types/ultramodern-workspace/bridge-config/defaults.d.ts +1 -0
  387. package/dist/types/ultramodern-workspace/bridge-config/gates.d.ts +3 -0
  388. package/dist/types/ultramodern-workspace/bridge-config/index.d.ts +4 -0
  389. package/dist/types/ultramodern-workspace/bridge-config/normalize.d.ts +2 -0
  390. package/dist/types/ultramodern-workspace/bridge-config/schema.d.ts +61 -0
  391. package/dist/types/ultramodern-workspace/bridge-config/shared.d.ts +12 -0
  392. package/dist/types/ultramodern-workspace/bridge-config/validation.d.ts +3 -0
  393. package/dist/types/ultramodern-workspace/bridge-config/workspace-packages.d.ts +3 -0
  394. package/dist/types/ultramodern-workspace/bridge-config.d.ts +1 -64
  395. package/dist/types/ultramodern-workspace/contracts.d.ts +1 -1
  396. package/dist/types/ultramodern-workspace/delivery-unit-sync.d.ts +6 -0
  397. package/dist/types/ultramodern-workspace/delivery-unit.d.ts +8 -0
  398. package/dist/types/ultramodern-workspace/descriptors.d.ts +4 -0
  399. package/dist/types/ultramodern-workspace/effect-diagnostics.d.ts +1 -0
  400. package/dist/types/ultramodern-workspace/index.d.ts +1 -0
  401. package/dist/types/ultramodern-workspace/mf-validation/constants.d.ts +5 -0
  402. package/dist/types/ultramodern-workspace/mf-validation/discovery.d.ts +2 -0
  403. package/dist/types/ultramodern-workspace/mf-validation/inspect.d.ts +5 -0
  404. package/dist/types/ultramodern-workspace/mf-validation/object-literal.d.ts +9 -0
  405. package/dist/types/ultramodern-workspace/mf-validation/path-utils.d.ts +13 -0
  406. package/dist/types/ultramodern-workspace/mf-validation/syntax.d.ts +14 -0
  407. package/dist/types/ultramodern-workspace/mf-validation/types.d.ts +33 -0
  408. package/dist/types/ultramodern-workspace/mf-validation/validate.d.ts +4 -0
  409. package/dist/types/ultramodern-workspace/mf-validation.d.ts +4 -27
  410. package/dist/types/ultramodern-workspace/module-federation/config.d.ts +5 -0
  411. package/dist/types/ultramodern-workspace/module-federation/index.d.ts +4 -0
  412. package/dist/types/ultramodern-workspace/module-federation/reexport-module.d.ts +4 -0
  413. package/dist/types/ultramodern-workspace/module-federation/remote-refs.d.ts +3 -0
  414. package/dist/types/ultramodern-workspace/module-federation/shared-config.d.ts +2 -0
  415. package/dist/types/ultramodern-workspace/module-federation.d.ts +2 -17
  416. package/dist/types/ultramodern-workspace/package-json.d.ts +1 -14
  417. package/dist/types/ultramodern-workspace/pnpm-workspace-policy-plan.d.ts +39 -0
  418. package/dist/types/ultramodern-workspace/shared-patches.d.ts +2 -0
  419. package/dist/types/ultramodern-workspace/tooling-command-catalog.d.ts +18 -0
  420. package/dist/types/ultramodern-workspace/tsconfigs.d.ts +13 -0
  421. package/dist/types/ultramodern-workspace/versions.d.ts +5 -3
  422. package/dist/types/ultramodern-workspace/workspace-script-plan.d.ts +72 -0
  423. package/dist/types/ultramodern-workspace/workspace-scripts.d.ts +13 -0
  424. package/dist/types/ultramodern-workspace/workspace-validation-contract.d.ts +42 -0
  425. package/dist/types/ultramodern-workspace/write-app.d.ts +3 -0
  426. package/dist/types/ultramodern-workspace/write-workspace.d.ts +2 -1
  427. package/dist/types/ultramodern-workspace/zerops.d.ts +2 -0
  428. package/package.json +4 -3
  429. package/template-workspace/.gitignore.handlebars +4 -0
  430. package/template-workspace/README.md.handlebars +18 -15
  431. package/template-workspace/patches/@module-federation__bridge-react@2.6.0.patch +140 -0
  432. package/template-workspace/patches/@module-federation__modern-js-v3@2.6.0.patch +57 -0
  433. package/template-workspace/patches/drizzle-orm-ts7-strict-declarations.patch +452 -0
  434. package/template-workspace/patches/effect-schema-error-type-id.patch +18 -0
  435. package/template-workspace/pnpm-workspace.yaml.handlebars +8 -0
  436. package/template-workspace/scripts/bootstrap-agent-skills.mjs +11 -3
  437. package/templates/workspace/apps/modern.config.shared-module-federation.ts.handlebars +37 -0
  438. package/templates/workspace/apps/modern.config.ts.handlebars +252 -0
  439. package/templates/workspace/apps/shared/src/routes/ultramodern-jsonld.ts.handlebars +119 -0
  440. package/templates/workspace/apps/shared/src/routes/ultramodern-route-metadata.ts.handlebars +21 -0
  441. package/templates/workspace/apps/shell-super-app/src/routes/[lang]/page.tsx.handlebars +49 -0
  442. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.helpers.tsx.handlebars +79 -0
  443. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.imports.tsx.handlebars +11 -0
  444. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.tsx.handlebars +46 -0
  445. package/templates/workspace/packages/shared-design-tokens/tokens.css.handlebars +7 -0
  446. package/templates/workspace/postcss.config.mjs.handlebars +5 -0
  447. package/templates/workspace/tailwind.config.ts.handlebars +3 -0
  448. package/templates/workspace/verticals/server/checkout-cart-handlers.ts.handlebars +49 -0
  449. package/templates/workspace/verticals/server/checkout-cart-state.ts.handlebars +23 -0
  450. package/templates/workspace/verticals/shared/api.checkout-cart-contract-fields.ts.handlebars +1 -0
  451. package/templates/workspace/verticals/shared/api.checkout-cart-endpoints.ts.handlebars +23 -0
  452. package/templates/workspace/verticals/shared/api.checkout-cart-operation-contexts.ts.handlebars +25 -0
  453. package/templates/workspace/verticals/shared/api.checkout-cart-schemas.ts.handlebars +48 -0
  454. package/templates/workspace/verticals/src/api/checkout-cart-client-exports.ts.handlebars +70 -0
  455. package/templates/workspace-scripts/check-ultramodern-api-boundaries.mts +40 -2
  456. package/templates/workspace-scripts/generate-node-backend-federation.mjs +299 -0
  457. package/templates/workspace-scripts/materialize-zerops-runtime.mjs +448 -0
  458. package/templates/workspace-scripts/proof-cloudflare-version.mjs +237 -9
  459. package/templates/workspace-scripts/proof-node-backend-federation.mjs +760 -0
  460. package/templates/workspace-scripts/ultramodern-cloudflare-proof.mjs +188 -2
  461. package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +476 -26
@@ -1,459 +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
- function updateGeneratedToolingDependencies(packageJson) {
186
- let changed = false;
187
- for (const section of [
188
- 'dependencies',
189
- 'devDependencies',
190
- 'peerDependencies',
191
- 'optionalDependencies'
192
- ]){
193
- const dependencies = packageJson[section];
194
- if (!(!dependencies || 'object' != typeof dependencies || Array.isArray(dependencies))) {
195
- for (const [packageName, version] of generatedToolingDependencyPins)if (Object.prototype.hasOwnProperty.call(dependencies, packageName) && dependencies[packageName] !== version) {
196
- dependencies[packageName] = version;
197
- changed = true;
198
- }
199
- }
200
- }
201
- return changed;
202
- }
203
- function normalizeStrictEffectApiMetadata(value) {
204
- const api = value.api;
205
- if (!api || 'object' != typeof api || Array.isArray(api)) return false;
206
- let changed = false;
207
- const oldEffect = api.effect;
208
- if (oldEffect && 'object' == typeof oldEffect && !Array.isArray(oldEffect)) {
209
- if (void 0 === api.stem && 'string' == typeof oldEffect.stem) {
210
- api.stem = oldEffect.stem;
211
- changed = true;
212
- }
213
- if (void 0 === api.prefix && 'string' == typeof oldEffect.prefix) {
214
- api.prefix = oldEffect.prefix;
215
- changed = true;
216
- }
217
- if (void 0 === api.consumedBy && Array.isArray(oldEffect.consumedBy)) {
218
- api.consumedBy = oldEffect.consumedBy;
219
- changed = true;
220
- }
221
- delete api.effect;
222
- changed = true;
223
- }
224
- if (void 0 !== api.runtime && 'effect' !== api.runtime) {
225
- api.runtime = 'effect';
226
- changed = true;
227
- }
228
- if (api.bff && 'object' == typeof api.bff && !Array.isArray(api.bff)) {
229
- if (true !== api.bff.strictEffectApproach) {
230
- api.bff.strictEffectApproach = true;
231
- changed = true;
232
- }
233
- }
234
- if ('string' == typeof value.path) {
235
- const directServerEntry = `${value.path}/api/index.ts`;
236
- if ('string' == typeof api.serverEntry && /\/api\/effect\/index\.[cm]?[jt]sx?$/u.test(api.serverEntry)) {
237
- api.serverEntry = directServerEntry;
238
- changed = true;
239
- }
240
- if (api.contract && 'object' == typeof api.contract && !Array.isArray(api.contract)) {
241
- if ('./shared/effect/api' === api.contract.export) {
242
- api.contract.export = './api';
243
- changed = true;
244
- }
245
- if ('string' == typeof api.contract.path && /\/shared\/effect\/api\.[cm]?[jt]sx?$/u.test(api.contract.path)) {
246
- api.contract.path = `${value.path}/shared/api.ts`;
247
- changed = true;
248
- }
249
- }
250
- if (api.client && 'object' == typeof api.client && !Array.isArray(api.client)) {
251
- if ('./effect/client' === api.client.export) {
252
- api.client.export = './api/client';
253
- changed = true;
254
- }
255
- if ('string' == typeof api.client.path && /\/src\/effect\/[^/]+-client\.[cm]?ts$/u.test(api.client.path)) {
256
- const basename = node_path.basename(api.client.path);
257
- api.client.path = `${value.path}/src/api/${basename}`;
258
- changed = true;
259
- }
260
- }
261
- if (void 0 === api.serverEntry && 'effect' === api.runtime) {
262
- api.serverEntry = directServerEntry;
263
- changed = true;
264
- }
265
- }
266
- return changed;
267
- }
268
- function replaceYamlLine(source, pattern, replacement) {
269
- const updated = source.replace(pattern, replacement);
270
- return {
271
- source: updated,
272
- changed: updated !== source
273
- };
274
- }
275
- function ensureYamlListItem(source, key, item) {
276
- const itemLine = ` - '${item}'`;
277
- const headerPattern = new RegExp(`^${key}:\\n(?:(?: - .+\\n)*)`, 'mu');
278
- const existingItemPattern = new RegExp(`^ - '${item.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&')}'$`, 'mu');
279
- if (existingItemPattern.test(source)) return {
280
- source,
281
- changed: false
282
- };
283
- const header = source.match(headerPattern);
284
- if (header) return {
285
- source: source.replace(headerPattern, `${header[0]}${itemLine}\n`),
286
- changed: true
287
- };
288
- const block = `${key}:\n${itemLine}\n`;
289
- const afterTrustPolicyIgnore = source.replace(/^(trustPolicyIgnoreAfter: .+\n)/mu, `$1${block}`);
290
- if (afterTrustPolicyIgnore !== source) return {
291
- source: afterTrustPolicyIgnore,
292
- changed: true
293
- };
294
- return {
295
- source: `${source.trimEnd()}\n${block}`,
296
- changed: true
297
- };
298
- }
299
- function updateGeneratedPnpmWorkspacePolicy(workspaceRoot) {
300
- const workspaceFile = node_path.join(workspaceRoot, 'pnpm-workspace.yaml');
301
- if (!node_fs.existsSync(workspaceFile)) return false;
302
- let source = node_fs.readFileSync(workspaceFile, 'utf-8');
303
- let changed = false;
304
- const replacements = [
305
- [
306
- /^ {4}'@effect\/vitest>effect': .+$/mu,
307
- ` '@effect/vitest>effect': '${EFFECT_VERSION}'`
308
- ],
309
- [
310
- /^ {2}'@effect\/vitest': .+$/mu,
311
- ` '@effect/vitest': ${EFFECT_VITEST_VERSION}`
312
- ],
313
- [
314
- /^ {2}effect: .+$/mu,
315
- ` effect: ${EFFECT_VERSION}`
316
- ],
317
- [
318
- /^ {2}- '@effect\/opentelemetry@[^']+'$/mu,
319
- ` - '@effect/opentelemetry@${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
- const trustPolicyExclude = ensureYamlListItem(source, 'trustPolicyExclude', `@effect/opentelemetry@${EFFECT_VERSION}`);
328
- source = trustPolicyExclude.source;
329
- changed = trustPolicyExclude.changed || changed;
330
- if (changed) node_fs.writeFileSync(workspaceFile, source, 'utf-8');
331
- return changed;
332
- }
333
- function updateUltramodernConfig(workspaceRoot, packageSource) {
334
- const configPath = node_path.join(workspaceRoot, '.modernjs/ultramodern.json');
335
- const config = readJsonFile(configPath);
336
- config.packageSource = {
337
- strategy: packageSource.strategy,
338
- modernPackageVersion: packageSource.modernPackageVersion,
339
- ...packageSource.registry ? {
340
- registry: packageSource.registry
341
- } : {},
342
- ...packageSource.aliasScope ? {
343
- aliasScope: packageSource.aliasScope
344
- } : {},
345
- ...packageSource.aliasPackageNamePrefix ? {
346
- aliasPackageNamePrefix: packageSource.aliasPackageNamePrefix
347
- } : {}
348
- };
349
- for (const app of config.topology?.apps ?? [])if (app && 'object' == typeof app && !Array.isArray(app)) normalizeStrictEffectApiMetadata(app);
350
- writeJsonFile(configPath, config);
351
- }
352
- function updateReferenceTopology(workspaceRoot) {
353
- const topologyPath = node_path.join(workspaceRoot, 'topology/reference-topology.json');
354
- if (!node_fs.existsSync(topologyPath)) return false;
355
- const topology = readJsonFile(topologyPath);
356
- let changed = false;
357
- for (const vertical of topology.verticals ?? [])if (vertical && 'object' == typeof vertical && !Array.isArray(vertical)) changed = normalizeStrictEffectApiMetadata(vertical) || changed;
358
- if (changed) writeJsonFile(topologyPath, topology);
359
- return changed;
360
- }
361
- function createMigrationPackageSource(args, current) {
362
- const strategy = hasFlag(args, '--workspace') ? 'workspace' : 'install';
363
- const registry = readOption(args, '--registry') ?? readOption(args, '--ultramodern-package-registry');
364
- const explicitAliasScope = readOption(args, '--alias-scope') ?? readOption(args, '--ultramodern-package-scope');
365
- const aliasScope = explicitAliasScope ?? ('install' === strategy && void 0 === registry ? current.packageSource?.aliasScope ?? BLEEDINGDEV_PACKAGE_SCOPE : current.packageSource?.aliasScope);
366
- const aliasPackageNamePrefix = readOption(args, '--alias-package-name-prefix') ?? readOption(args, '--ultramodern-package-name-prefix') ?? current.packageSource?.aliasPackageNamePrefix ?? (aliasScope ? BLEEDINGDEV_PACKAGE_NAME_PREFIX : void 0);
367
- if ('workspace' === strategy) return {
368
- strategy,
369
- modernPackageVersion: WORKSPACE_PACKAGE_VERSION,
370
- ...registry ? {
371
- registry
372
- } : {},
373
- ...aliasScope ? {
374
- aliasScope
375
- } : {},
376
- ...aliasPackageNamePrefix ? {
377
- aliasPackageNamePrefix
378
- } : {}
379
- };
380
- const version = readOption(args, '--version') ?? readOption(args, '--ultramodern-package-version') ?? current.packageSource?.modernPackageVersion;
381
- if (!version || version === WORKSPACE_PACKAGE_VERSION) throw new Error('migrate-strict-effect needs --version <published-ultramodern-version> for install package source.');
382
- return {
383
- strategy,
384
- modernPackageVersion: version,
385
- ...registry ? {
386
- registry
387
- } : {},
388
- ...aliasScope ? {
389
- aliasScope
390
- } : {},
391
- ...aliasPackageNamePrefix ? {
392
- aliasPackageNamePrefix
393
- } : {}
394
- };
395
- }
396
- function runPnpmLockfileRefresh(context) {
397
- const result = spawnSync('pnpm', [
398
- 'install',
399
- '--lockfile-only',
400
- "--ignore-scripts"
401
- ], {
402
- cwd: context.workspaceRoot,
403
- stdio: 'inherit'
404
- });
405
- if (result.error) throw result.error;
406
- return result.status ?? 1;
407
- }
408
- function runMigrateStrictEffect(args, context) {
409
- if (args.includes('--help') || args.includes('-h')) {
410
- process.stdout.write(`Usage:
411
- modern-js-create ultramodern migrate-strict-effect --version <version> [--skip-install]
412
-
413
- Updates generated UltraModern package-source metadata, Modern package aliases,
414
- framework-owned toolchain pins, direct Effect API topology metadata, strict
415
- Effect pnpm overrides/trust policy, and the pnpm lockfile. Source code still
416
- has to pass pnpm api:check and pnpm contract:check.
417
- `);
418
- return 0;
419
- }
420
- const current = readUltramodernConfig(context.workspaceRoot);
421
- const packageSource = createMigrationPackageSource(args, current);
422
- updateUltramodernConfig(context.workspaceRoot, packageSource);
423
- updateReferenceTopology(context.workspaceRoot);
424
- for (const relativePackageFile of listWorkspacePackageFiles(context.workspaceRoot)){
425
- const packageFile = node_path.join(context.workspaceRoot, relativePackageFile);
426
- const packageJson = readJsonFile(packageFile);
427
- if ('package.json' === relativePackageFile) {
428
- packageJson.modernjs ??= {};
429
- packageJson.modernjs.packageSource = {
430
- strategy: packageSource.strategy,
431
- config: './.modernjs/ultramodern.json'
432
- };
433
- }
434
- const modernDependenciesChanged = updateModernDependencies(packageJson, packageSource);
435
- const toolingDependenciesChanged = updateGeneratedToolingDependencies(packageJson);
436
- const changed = modernDependenciesChanged || toolingDependenciesChanged;
437
- if (changed) writeJsonFile(packageFile, packageJson);
438
- else if ('package.json' === relativePackageFile) writeJsonFile(packageFile, packageJson);
439
- }
440
- updateGeneratedPnpmWorkspacePolicy(context.workspaceRoot);
441
- if (!hasFlag(args, '--skip-install')) {
442
- const status = runPnpmLockfileRefresh(context);
443
- if (0 !== status) return status;
444
- }
445
- process.stdout.write(`UltraModern strict Effect metadata migrated to ${packageSource.modernPackageVersion}. Run pnpm api:check && pnpm contract:check next.\n`);
446
- return 0;
447
- }
448
- function runSkills(args, context) {
449
- const [subcommand, ...rest] = args;
450
- if ('install' === subcommand) return spawnNodeScript("template-workspace/scripts/bootstrap-agent-skills.mjs", rest, context);
451
- if ('check' === subcommand) return spawnNodeScript("template-workspace/scripts/bootstrap-agent-skills.mjs", [
452
- '--check',
453
- ...rest
454
- ], context);
455
- throw new Error('Usage: modern-js-create ultramodern skills <install|check>');
456
- }
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";
457
11
  async function runUltramodernToolingCli(args, workspaceRoot = process.env.ULTRAMODERN_WORKSPACE_ROOT ?? process.cwd()) {
458
12
  try {
459
13
  const [command, ...rest] = args;
@@ -467,25 +21,25 @@ async function runUltramodernToolingCli(args, workspaceRoot = process.env.ULTRAM
467
21
  case '-h':
468
22
  printHelp();
469
23
  return 0;
470
- case 'validate':
24
+ case GENERATED_TOOLING_COMMANDS.validate.command:
471
25
  return runValidate(context);
472
- case 'typecheck':
473
- return spawnNodeScript("templates/workspace-scripts/ultramodern-typecheck.mjs", rest, context, {
474
- cwd: context.invocationCwd
475
- });
476
- case 'mf-types':
26
+ case GENERATED_TOOLING_COMMANDS.mfTypes.command:
477
27
  return runMfTypes(rest, context);
478
- case 'migrate-strict-effect':
28
+ case GENERATED_TOOLING_COMMANDS.migrateStrictEffect.command:
479
29
  return runMigrateStrictEffect(rest, context);
480
- case 'public-surface':
481
- return spawnNodeScript("templates/workspace-scripts/generate-public-surface-assets.mjs", rest, context);
482
- case 'cloudflare-proof':
483
- return spawnNodeScript("templates/workspace-scripts/proof-cloudflare-version.mjs", rest, context);
484
- case 'performance-readiness':
485
- 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);
486
36
  case 'skills':
487
37
  return runSkills(rest, context);
488
38
  default:
39
+ {
40
+ const templateBackedStatus = runTemplateBackedToolingCommand(command ?? '', rest, context);
41
+ if (void 0 !== templateBackedStatus) return templateBackedStatus;
42
+ }
489
43
  throw new Error(`Unknown UltraModern command: ${command}`);
490
44
  }
491
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 };
@@ -0,0 +1,37 @@
1
+ import node_fs from "node:fs";
2
+ import node_path from "node:path";
3
+ import { LEGACY_DEVELOPMENT_OVERLAY_PATH, LEGACY_PACKAGE_SOURCE_METADATA_PATH } from "./constants.js";
4
+ import { readJsonObject, readOptionalJsonObject } from "./json.js";
5
+ function packageScopeFromRoot(workspaceRoot) {
6
+ const rootPackage = readOptionalJsonObject(node_path.join(workspaceRoot, 'package.json'));
7
+ return 'string' == typeof rootPackage.name && rootPackage.name.length > 0 ? rootPackage.name : node_path.basename(workspaceRoot);
8
+ }
9
+ function packageSourceFromMetadata(workspaceRoot) {
10
+ const metadataPath = node_path.join(workspaceRoot, LEGACY_PACKAGE_SOURCE_METADATA_PATH);
11
+ if (!node_fs.existsSync(metadataPath)) return;
12
+ const metadata = readJsonObject(metadataPath);
13
+ const aliases = metadata.modernPackages?.aliases ?? {};
14
+ const firstAliasEntry = Object.entries(aliases).find((entry)=>'string' == typeof entry[1]);
15
+ const firstPackage = firstAliasEntry?.[0];
16
+ const firstAlias = firstAliasEntry?.[1];
17
+ const aliasScope = firstAlias?.match(/^@([^/]+)\//u)?.[1];
18
+ const unscopedName = firstPackage?.split('/').at(-1) ?? '';
19
+ const aliasUnscopedName = firstAlias?.split('/').at(-1) ?? '';
20
+ const aliasPackageNamePrefix = aliasUnscopedName && unscopedName && aliasUnscopedName.endsWith(unscopedName) ? aliasUnscopedName.slice(0, -unscopedName.length) : void 0;
21
+ return {
22
+ strategy: 'install' === metadata.strategy ? 'install' : 'workspace',
23
+ modernPackageVersion: 'string' == typeof metadata.modernPackages?.specifier ? metadata.modernPackages.specifier : 'workspace:*',
24
+ registry: 'string' == typeof metadata.modernPackages?.registry ? metadata.modernPackages.registry : void 0,
25
+ aliasScope,
26
+ aliasPackageNamePrefix
27
+ };
28
+ }
29
+ function readOverlayPorts(workspaceRoot) {
30
+ const overlayPath = node_path.join(workspaceRoot, LEGACY_DEVELOPMENT_OVERLAY_PATH);
31
+ if (!node_fs.existsSync(overlayPath)) return {};
32
+ const overlay = readJsonObject(overlayPath);
33
+ const ports = overlay.ports;
34
+ if (null === ports || 'object' != typeof ports || Array.isArray(ports)) return {};
35
+ return Object.fromEntries(Object.entries(ports).filter((entry)=>'number' == typeof entry[1]));
36
+ }
37
+ export { packageScopeFromRoot, packageSourceFromMetadata, readOverlayPorts };