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