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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (421) hide show
  1. package/dist/cjs/cli/flags.cjs +326 -0
  2. package/dist/cjs/cli/help.cjs +106 -0
  3. package/dist/cjs/cli/package-source.cjs +186 -0
  4. package/dist/cjs/cli/project-setup.cjs +138 -0
  5. package/dist/cjs/cli/prompts.cjs +118 -0
  6. package/dist/cjs/index.cjs +24 -581
  7. package/dist/cjs/ultramodern-tooling/commands/cloudflare-output-verify.cjs +132 -0
  8. package/dist/cjs/ultramodern-tooling/commands/context.cjs +131 -0
  9. package/dist/cjs/ultramodern-tooling/commands/mf-types.cjs +55 -0
  10. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.cjs +158 -0
  11. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.cjs +49 -0
  12. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.cjs +87 -0
  13. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.cjs +58 -0
  14. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.cjs +62 -0
  15. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.cjs +60 -0
  16. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.cjs +132 -0
  17. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.cjs +67 -0
  18. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.cjs +93 -0
  19. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.cjs +60 -0
  20. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.cjs +67 -0
  21. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.cjs +67 -0
  22. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/help.cjs +54 -0
  23. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/install.cjs +52 -0
  24. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/io.cjs +133 -0
  25. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.cjs +219 -0
  26. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-source.cjs +76 -0
  27. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.cjs +131 -0
  28. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.cjs +161 -0
  29. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.cjs +88 -0
  30. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect.cjs +149 -0
  31. package/dist/cjs/ultramodern-tooling/commands/options.cjs +59 -0
  32. package/dist/cjs/ultramodern-tooling/commands/routes-generate.cjs +122 -0
  33. package/dist/cjs/ultramodern-tooling/commands/skills.cjs +49 -0
  34. package/dist/cjs/ultramodern-tooling/commands/sync-delivery-unit.cjs +40 -0
  35. package/dist/cjs/ultramodern-tooling/commands/validate.cjs +49 -0
  36. package/dist/cjs/ultramodern-tooling/commands.cjs +17 -1165
  37. package/dist/cjs/ultramodern-tooling/config/constants.cjs +48 -0
  38. package/dist/cjs/ultramodern-tooling/config/index.cjs +104 -0
  39. package/dist/cjs/ultramodern-tooling/config/json.cjs +61 -0
  40. package/dist/cjs/ultramodern-tooling/config/load.cjs +62 -0
  41. package/dist/cjs/ultramodern-tooling/config/metadata.cjs +92 -0
  42. package/dist/cjs/ultramodern-tooling/config/normalize.cjs +160 -0
  43. package/dist/cjs/ultramodern-tooling/config/synthesize.cjs +157 -0
  44. package/dist/cjs/ultramodern-tooling/config/types.cjs +18 -0
  45. package/dist/cjs/ultramodern-tooling/config.cjs +23 -274
  46. package/dist/cjs/ultramodern-workspace/add-vertical/constants.cjs +52 -0
  47. package/dist/cjs/ultramodern-workspace/add-vertical/execute.cjs +156 -0
  48. package/dist/cjs/ultramodern-workspace/add-vertical/plan.cjs +246 -0
  49. package/dist/cjs/ultramodern-workspace/add-vertical/preflight.cjs +198 -0
  50. package/dist/cjs/ultramodern-workspace/add-vertical/shell-files.cjs +116 -0
  51. package/dist/cjs/ultramodern-workspace/add-vertical/topology.cjs +133 -0
  52. package/dist/cjs/ultramodern-workspace/add-vertical/workspace-state.cjs +107 -0
  53. package/dist/cjs/ultramodern-workspace/add-vertical.cjs +22 -596
  54. package/dist/cjs/ultramodern-workspace/api/checkout-cart.cjs +145 -0
  55. package/dist/cjs/ultramodern-workspace/api/client.cjs +218 -0
  56. package/dist/cjs/ultramodern-workspace/api/contracts.cjs +222 -0
  57. package/dist/cjs/ultramodern-workspace/api/names.cjs +98 -0
  58. package/dist/cjs/ultramodern-workspace/api/service.cjs +220 -0
  59. package/dist/cjs/ultramodern-workspace/api/shared.cjs +252 -0
  60. package/dist/cjs/ultramodern-workspace/api.cjs +27 -1046
  61. package/dist/cjs/ultramodern-workspace/app-files.cjs +3 -18
  62. package/dist/cjs/ultramodern-workspace/backend-federation.cjs +38 -24
  63. package/dist/cjs/ultramodern-workspace/bridge-config/cli.cjs +71 -0
  64. package/dist/cjs/ultramodern-workspace/bridge-config/defaults.cjs +43 -0
  65. package/dist/cjs/ultramodern-workspace/bridge-config/gates.cjs +93 -0
  66. package/dist/cjs/ultramodern-workspace/bridge-config/index.cjs +60 -0
  67. package/dist/cjs/ultramodern-workspace/bridge-config/normalize.cjs +68 -0
  68. package/dist/cjs/ultramodern-workspace/bridge-config/schema.cjs +78 -0
  69. package/dist/cjs/ultramodern-workspace/bridge-config/shared.cjs +110 -0
  70. package/dist/cjs/ultramodern-workspace/bridge-config/validation.cjs +68 -0
  71. package/dist/cjs/ultramodern-workspace/bridge-config/workspace-packages.cjs +108 -0
  72. package/dist/cjs/ultramodern-workspace/bridge-config.cjs +32 -297
  73. package/dist/cjs/ultramodern-workspace/delivery-unit-sync.cjs +22 -20
  74. package/dist/cjs/ultramodern-workspace/delivery-unit.cjs +7 -20
  75. package/dist/cjs/ultramodern-workspace/demo-components.cjs +47 -189
  76. package/dist/cjs/ultramodern-workspace/descriptors.cjs +12 -1
  77. package/dist/cjs/ultramodern-workspace/effect-diagnostics.cjs +114 -0
  78. package/dist/cjs/ultramodern-workspace/fs-io.cjs +24 -2
  79. package/dist/cjs/ultramodern-workspace/index.cjs +4 -0
  80. package/dist/cjs/ultramodern-workspace/mf-validation/constants.cjs +69 -0
  81. package/dist/cjs/ultramodern-workspace/mf-validation/discovery.cjs +77 -0
  82. package/dist/cjs/ultramodern-workspace/mf-validation/inspect.cjs +92 -0
  83. package/dist/cjs/ultramodern-workspace/mf-validation/object-literal.cjs +203 -0
  84. package/dist/cjs/ultramodern-workspace/mf-validation/path-utils.cjs +171 -0
  85. package/dist/cjs/ultramodern-workspace/mf-validation/syntax.cjs +228 -0
  86. package/dist/cjs/ultramodern-workspace/mf-validation/types.cjs +18 -0
  87. package/dist/cjs/ultramodern-workspace/mf-validation/validate.cjs +112 -0
  88. package/dist/cjs/ultramodern-workspace/mf-validation.cjs +6 -529
  89. package/dist/cjs/ultramodern-workspace/module-federation/config.cjs +251 -0
  90. package/dist/cjs/ultramodern-workspace/module-federation/index.cjs +73 -0
  91. package/dist/cjs/ultramodern-workspace/module-federation/reexport-module.cjs +73 -0
  92. package/dist/cjs/ultramodern-workspace/module-federation/remote-refs.cjs +105 -0
  93. package/dist/cjs/ultramodern-workspace/module-federation/shared-config.cjs +53 -0
  94. package/dist/cjs/ultramodern-workspace/module-federation.cjs +14 -584
  95. package/dist/cjs/ultramodern-workspace/package-json.cjs +13 -229
  96. package/dist/cjs/ultramodern-workspace/routes.cjs +8 -142
  97. package/dist/cjs/ultramodern-workspace/shared-patches.cjs +44 -0
  98. package/dist/cjs/ultramodern-workspace/tsconfigs.cjs +199 -0
  99. package/dist/cjs/ultramodern-workspace/workspace-script-plan.cjs +2 -2
  100. package/dist/cjs/ultramodern-workspace/write-app.cjs +128 -0
  101. package/dist/cjs/ultramodern-workspace/write-workspace.cjs +4 -61
  102. package/dist/cjs/ultramodern-workspace/zerops.cjs +13 -10
  103. package/dist/esm/cli/flags.js +228 -0
  104. package/dist/esm/cli/help.js +65 -0
  105. package/dist/esm/cli/package-source.js +119 -0
  106. package/dist/esm/cli/project-setup.js +81 -0
  107. package/dist/esm/cli/prompts.js +63 -0
  108. package/dist/esm/index.js +6 -559
  109. package/dist/esm/ultramodern-tooling/commands/cloudflare-output-verify.js +84 -0
  110. package/dist/esm/ultramodern-tooling/commands/context.js +66 -0
  111. package/dist/esm/ultramodern-tooling/commands/mf-types.js +17 -0
  112. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.js +106 -0
  113. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +11 -0
  114. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.js +38 -0
  115. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.js +10 -0
  116. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +14 -0
  117. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +12 -0
  118. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.js +83 -0
  119. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.js +16 -0
  120. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.js +44 -0
  121. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.js +12 -0
  122. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.js +7 -0
  123. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.js +15 -0
  124. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/help.js +16 -0
  125. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/install.js +14 -0
  126. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/io.js +69 -0
  127. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +175 -0
  128. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-source.js +38 -0
  129. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +76 -0
  130. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +105 -0
  131. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +16 -0
  132. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect.js +100 -0
  133. package/dist/esm/ultramodern-tooling/commands/options.js +18 -0
  134. package/dist/esm/ultramodern-tooling/commands/routes-generate.js +74 -0
  135. package/dist/esm/ultramodern-tooling/commands/skills.js +11 -0
  136. package/dist/esm/ultramodern-tooling/commands/sync-delivery-unit.js +1 -0
  137. package/dist/esm/ultramodern-tooling/commands/validate.js +11 -0
  138. package/dist/esm/ultramodern-tooling/commands.js +9 -1152
  139. package/dist/esm/ultramodern-tooling/config/constants.js +4 -0
  140. package/dist/esm/ultramodern-tooling/config/index.js +7 -0
  141. package/dist/esm/ultramodern-tooling/config/json.js +10 -0
  142. package/dist/esm/ultramodern-tooling/config/load.js +13 -0
  143. package/dist/esm/ultramodern-tooling/config/metadata.js +37 -0
  144. package/dist/esm/ultramodern-tooling/config/normalize.js +106 -0
  145. package/dist/esm/ultramodern-tooling/config/synthesize.js +108 -0
  146. package/dist/esm/ultramodern-tooling/config/types.js +0 -0
  147. package/dist/esm/ultramodern-tooling/config.js +1 -255
  148. package/dist/esm/ultramodern-workspace/add-vertical/constants.js +5 -0
  149. package/dist/esm/ultramodern-workspace/add-vertical/execute.js +108 -0
  150. package/dist/esm/ultramodern-workspace/add-vertical/plan.js +184 -0
  151. package/dist/esm/ultramodern-workspace/add-vertical/preflight.js +122 -0
  152. package/dist/esm/ultramodern-workspace/add-vertical/shell-files.js +59 -0
  153. package/dist/esm/ultramodern-workspace/add-vertical/topology.js +89 -0
  154. package/dist/esm/ultramodern-workspace/add-vertical/workspace-state.js +43 -0
  155. package/dist/esm/ultramodern-workspace/add-vertical.js +6 -569
  156. package/dist/esm/ultramodern-workspace/api/checkout-cart.js +86 -0
  157. package/dist/esm/ultramodern-workspace/api/client.js +177 -0
  158. package/dist/esm/ultramodern-workspace/api/contracts.js +172 -0
  159. package/dist/esm/ultramodern-workspace/api/names.js +33 -0
  160. package/dist/esm/ultramodern-workspace/api/service.js +179 -0
  161. package/dist/esm/ultramodern-workspace/api/shared.js +208 -0
  162. package/dist/esm/ultramodern-workspace/api.js +5 -1025
  163. package/dist/esm/ultramodern-workspace/app-files.js +3 -18
  164. package/dist/esm/ultramodern-workspace/backend-federation.js +27 -13
  165. package/dist/esm/ultramodern-workspace/bridge-config/cli.js +30 -0
  166. package/dist/esm/ultramodern-workspace/bridge-config/defaults.js +5 -0
  167. package/dist/esm/ultramodern-workspace/bridge-config/gates.js +52 -0
  168. package/dist/esm/ultramodern-workspace/bridge-config/index.js +3 -0
  169. package/dist/esm/ultramodern-workspace/bridge-config/normalize.js +30 -0
  170. package/dist/esm/ultramodern-workspace/bridge-config/schema.js +31 -0
  171. package/dist/esm/ultramodern-workspace/bridge-config/shared.js +51 -0
  172. package/dist/esm/ultramodern-workspace/bridge-config/validation.js +27 -0
  173. package/dist/esm/ultramodern-workspace/bridge-config/workspace-packages.js +67 -0
  174. package/dist/esm/ultramodern-workspace/bridge-config.js +1 -270
  175. package/dist/esm/ultramodern-workspace/delivery-unit-sync.js +23 -21
  176. package/dist/esm/ultramodern-workspace/delivery-unit.js +6 -16
  177. package/dist/esm/ultramodern-workspace/demo-components.js +47 -189
  178. package/dist/esm/ultramodern-workspace/descriptors.js +12 -1
  179. package/dist/esm/ultramodern-workspace/effect-diagnostics.js +76 -0
  180. package/dist/esm/ultramodern-workspace/fs-io.js +24 -2
  181. package/dist/esm/ultramodern-workspace/index.js +1 -0
  182. package/dist/esm/ultramodern-workspace/mf-validation/constants.js +19 -0
  183. package/dist/esm/ultramodern-workspace/mf-validation/discovery.js +28 -0
  184. package/dist/esm/ultramodern-workspace/mf-validation/inspect.js +45 -0
  185. package/dist/esm/ultramodern-workspace/mf-validation/object-literal.js +144 -0
  186. package/dist/esm/ultramodern-workspace/mf-validation/path-utils.js +89 -0
  187. package/dist/esm/ultramodern-workspace/mf-validation/syntax.js +154 -0
  188. package/dist/esm/ultramodern-workspace/mf-validation/types.js +0 -0
  189. package/dist/esm/ultramodern-workspace/mf-validation/validate.js +57 -0
  190. package/dist/esm/ultramodern-workspace/mf-validation.js +3 -516
  191. package/dist/esm/ultramodern-workspace/module-federation/config.js +204 -0
  192. package/dist/esm/ultramodern-workspace/module-federation/index.js +4 -0
  193. package/dist/esm/ultramodern-workspace/module-federation/reexport-module.js +29 -0
  194. package/dist/esm/ultramodern-workspace/module-federation/remote-refs.js +64 -0
  195. package/dist/esm/ultramodern-workspace/module-federation/shared-config.js +12 -0
  196. package/dist/esm/ultramodern-workspace/module-federation.js +2 -576
  197. package/dist/esm/ultramodern-workspace/package-json.js +7 -210
  198. package/dist/esm/ultramodern-workspace/routes.js +8 -142
  199. package/dist/esm/ultramodern-workspace/shared-patches.js +6 -0
  200. package/dist/esm/ultramodern-workspace/tsconfigs.js +136 -0
  201. package/dist/esm/ultramodern-workspace/workspace-script-plan.js +2 -2
  202. package/dist/esm/ultramodern-workspace/write-app.js +90 -0
  203. package/dist/esm/ultramodern-workspace/write-workspace.js +4 -61
  204. package/dist/esm/ultramodern-workspace/zerops.js +13 -10
  205. package/dist/esm-node/cli/flags.js +229 -0
  206. package/dist/esm-node/cli/help.js +66 -0
  207. package/dist/esm-node/cli/package-source.js +120 -0
  208. package/dist/esm-node/cli/project-setup.js +82 -0
  209. package/dist/esm-node/cli/prompts.js +64 -0
  210. package/dist/esm-node/index.js +6 -559
  211. package/dist/esm-node/ultramodern-tooling/commands/cloudflare-output-verify.js +85 -0
  212. package/dist/esm-node/ultramodern-tooling/commands/context.js +67 -0
  213. package/dist/esm-node/ultramodern-tooling/commands/mf-types.js +18 -0
  214. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.js +107 -0
  215. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +12 -0
  216. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.js +39 -0
  217. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.js +11 -0
  218. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +15 -0
  219. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +13 -0
  220. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.js +84 -0
  221. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.js +17 -0
  222. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.js +45 -0
  223. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.js +13 -0
  224. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.js +8 -0
  225. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.js +16 -0
  226. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/help.js +17 -0
  227. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/install.js +15 -0
  228. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/io.js +70 -0
  229. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +176 -0
  230. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-source.js +39 -0
  231. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +77 -0
  232. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +106 -0
  233. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +17 -0
  234. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect.js +101 -0
  235. package/dist/esm-node/ultramodern-tooling/commands/options.js +19 -0
  236. package/dist/esm-node/ultramodern-tooling/commands/routes-generate.js +75 -0
  237. package/dist/esm-node/ultramodern-tooling/commands/skills.js +12 -0
  238. package/dist/esm-node/ultramodern-tooling/commands/sync-delivery-unit.js +2 -0
  239. package/dist/esm-node/ultramodern-tooling/commands/validate.js +12 -0
  240. package/dist/esm-node/ultramodern-tooling/commands.js +9 -1152
  241. package/dist/esm-node/ultramodern-tooling/config/constants.js +5 -0
  242. package/dist/esm-node/ultramodern-tooling/config/index.js +8 -0
  243. package/dist/esm-node/ultramodern-tooling/config/json.js +11 -0
  244. package/dist/esm-node/ultramodern-tooling/config/load.js +14 -0
  245. package/dist/esm-node/ultramodern-tooling/config/metadata.js +38 -0
  246. package/dist/esm-node/ultramodern-tooling/config/normalize.js +107 -0
  247. package/dist/esm-node/ultramodern-tooling/config/synthesize.js +109 -0
  248. package/dist/esm-node/ultramodern-tooling/config/types.js +1 -0
  249. package/dist/esm-node/ultramodern-tooling/config.js +1 -255
  250. package/dist/esm-node/ultramodern-workspace/add-vertical/constants.js +6 -0
  251. package/dist/esm-node/ultramodern-workspace/add-vertical/execute.js +109 -0
  252. package/dist/esm-node/ultramodern-workspace/add-vertical/plan.js +185 -0
  253. package/dist/esm-node/ultramodern-workspace/add-vertical/preflight.js +123 -0
  254. package/dist/esm-node/ultramodern-workspace/add-vertical/shell-files.js +60 -0
  255. package/dist/esm-node/ultramodern-workspace/add-vertical/topology.js +90 -0
  256. package/dist/esm-node/ultramodern-workspace/add-vertical/workspace-state.js +44 -0
  257. package/dist/esm-node/ultramodern-workspace/add-vertical.js +6 -569
  258. package/dist/esm-node/ultramodern-workspace/api/checkout-cart.js +87 -0
  259. package/dist/esm-node/ultramodern-workspace/api/client.js +178 -0
  260. package/dist/esm-node/ultramodern-workspace/api/contracts.js +173 -0
  261. package/dist/esm-node/ultramodern-workspace/api/names.js +34 -0
  262. package/dist/esm-node/ultramodern-workspace/api/service.js +180 -0
  263. package/dist/esm-node/ultramodern-workspace/api/shared.js +209 -0
  264. package/dist/esm-node/ultramodern-workspace/api.js +5 -1025
  265. package/dist/esm-node/ultramodern-workspace/app-files.js +3 -18
  266. package/dist/esm-node/ultramodern-workspace/backend-federation.js +27 -13
  267. package/dist/esm-node/ultramodern-workspace/bridge-config/cli.js +31 -0
  268. package/dist/esm-node/ultramodern-workspace/bridge-config/defaults.js +6 -0
  269. package/dist/esm-node/ultramodern-workspace/bridge-config/gates.js +53 -0
  270. package/dist/esm-node/ultramodern-workspace/bridge-config/index.js +4 -0
  271. package/dist/esm-node/ultramodern-workspace/bridge-config/normalize.js +31 -0
  272. package/dist/esm-node/ultramodern-workspace/bridge-config/schema.js +32 -0
  273. package/dist/esm-node/ultramodern-workspace/bridge-config/shared.js +52 -0
  274. package/dist/esm-node/ultramodern-workspace/bridge-config/validation.js +28 -0
  275. package/dist/esm-node/ultramodern-workspace/bridge-config/workspace-packages.js +68 -0
  276. package/dist/esm-node/ultramodern-workspace/bridge-config.js +1 -270
  277. package/dist/esm-node/ultramodern-workspace/delivery-unit-sync.js +23 -21
  278. package/dist/esm-node/ultramodern-workspace/delivery-unit.js +6 -16
  279. package/dist/esm-node/ultramodern-workspace/demo-components.js +47 -189
  280. package/dist/esm-node/ultramodern-workspace/descriptors.js +12 -1
  281. package/dist/esm-node/ultramodern-workspace/effect-diagnostics.js +77 -0
  282. package/dist/esm-node/ultramodern-workspace/fs-io.js +24 -2
  283. package/dist/esm-node/ultramodern-workspace/index.js +1 -0
  284. package/dist/esm-node/ultramodern-workspace/mf-validation/constants.js +20 -0
  285. package/dist/esm-node/ultramodern-workspace/mf-validation/discovery.js +29 -0
  286. package/dist/esm-node/ultramodern-workspace/mf-validation/inspect.js +46 -0
  287. package/dist/esm-node/ultramodern-workspace/mf-validation/object-literal.js +145 -0
  288. package/dist/esm-node/ultramodern-workspace/mf-validation/path-utils.js +90 -0
  289. package/dist/esm-node/ultramodern-workspace/mf-validation/syntax.js +155 -0
  290. package/dist/esm-node/ultramodern-workspace/mf-validation/types.js +1 -0
  291. package/dist/esm-node/ultramodern-workspace/mf-validation/validate.js +58 -0
  292. package/dist/esm-node/ultramodern-workspace/mf-validation.js +3 -516
  293. package/dist/esm-node/ultramodern-workspace/module-federation/config.js +205 -0
  294. package/dist/esm-node/ultramodern-workspace/module-federation/index.js +5 -0
  295. package/dist/esm-node/ultramodern-workspace/module-federation/reexport-module.js +30 -0
  296. package/dist/esm-node/ultramodern-workspace/module-federation/remote-refs.js +65 -0
  297. package/dist/esm-node/ultramodern-workspace/module-federation/shared-config.js +13 -0
  298. package/dist/esm-node/ultramodern-workspace/module-federation.js +2 -576
  299. package/dist/esm-node/ultramodern-workspace/package-json.js +7 -210
  300. package/dist/esm-node/ultramodern-workspace/routes.js +8 -142
  301. package/dist/esm-node/ultramodern-workspace/shared-patches.js +7 -0
  302. package/dist/esm-node/ultramodern-workspace/tsconfigs.js +137 -0
  303. package/dist/esm-node/ultramodern-workspace/workspace-script-plan.js +2 -2
  304. package/dist/esm-node/ultramodern-workspace/write-app.js +91 -0
  305. package/dist/esm-node/ultramodern-workspace/write-workspace.js +4 -61
  306. package/dist/esm-node/ultramodern-workspace/zerops.js +13 -10
  307. package/dist/types/cli/flags.d.ts +30 -0
  308. package/dist/types/cli/help.d.ts +2 -0
  309. package/dist/types/cli/package-source.d.ts +15 -0
  310. package/dist/types/cli/project-setup.d.ts +8 -0
  311. package/dist/types/cli/prompts.d.ts +6 -0
  312. package/dist/types/ultramodern-tooling/commands/cloudflare-output-verify.d.ts +2 -0
  313. package/dist/types/ultramodern-tooling/commands/context.d.ts +11 -0
  314. package/dist/types/ultramodern-tooling/commands/mf-types.d.ts +2 -0
  315. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.d.ts +4 -0
  316. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.d.ts +4 -0
  317. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.d.ts +1 -0
  318. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.d.ts +3 -0
  319. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.d.ts +3 -0
  320. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.d.ts +3 -0
  321. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.d.ts +2 -0
  322. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.d.ts +4 -0
  323. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.d.ts +3 -0
  324. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.d.ts +3 -0
  325. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.d.ts +7 -0
  326. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.d.ts +3 -0
  327. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/help.d.ts +1 -0
  328. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/install.d.ts +2 -0
  329. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/io.d.ts +14 -0
  330. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.d.ts +9 -0
  331. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/package-source.d.ts +3 -0
  332. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.d.ts +4 -0
  333. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.d.ts +25 -0
  334. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.d.ts +9 -0
  335. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect.d.ts +2 -0
  336. package/dist/types/ultramodern-tooling/commands/options.d.ts +2 -0
  337. package/dist/types/ultramodern-tooling/commands/routes-generate.d.ts +2 -0
  338. package/dist/types/ultramodern-tooling/commands/skills.d.ts +2 -0
  339. package/dist/types/ultramodern-tooling/commands/sync-delivery-unit.d.ts +1 -0
  340. package/dist/types/ultramodern-tooling/commands/validate.d.ts +2 -0
  341. package/dist/types/ultramodern-tooling/config/constants.d.ts +3 -0
  342. package/dist/types/ultramodern-tooling/config/index.d.ts +7 -0
  343. package/dist/types/ultramodern-tooling/config/json.d.ts +2 -0
  344. package/dist/types/ultramodern-tooling/config/load.d.ts +2 -0
  345. package/dist/types/ultramodern-tooling/config/metadata.d.ts +4 -0
  346. package/dist/types/ultramodern-tooling/config/normalize.d.ts +5 -0
  347. package/dist/types/ultramodern-tooling/config/synthesize.d.ts +5 -0
  348. package/dist/types/ultramodern-tooling/config/types.d.ts +41 -0
  349. package/dist/types/ultramodern-tooling/config.d.ts +1 -49
  350. package/dist/types/ultramodern-workspace/add-vertical/constants.d.ts +4 -0
  351. package/dist/types/ultramodern-workspace/add-vertical/execute.d.ts +2 -0
  352. package/dist/types/ultramodern-workspace/add-vertical/plan.d.ts +7 -0
  353. package/dist/types/ultramodern-workspace/add-vertical/preflight.d.ts +28 -0
  354. package/dist/types/ultramodern-workspace/add-vertical/shell-files.d.ts +6 -0
  355. package/dist/types/ultramodern-workspace/add-vertical/topology.d.ts +9 -0
  356. package/dist/types/ultramodern-workspace/add-vertical/workspace-state.d.ts +8 -0
  357. package/dist/types/ultramodern-workspace/add-vertical.d.ts +7 -39
  358. package/dist/types/ultramodern-workspace/api/checkout-cart.d.ts +33 -0
  359. package/dist/types/ultramodern-workspace/api/client.d.ts +6 -0
  360. package/dist/types/ultramodern-workspace/api/contracts.d.ts +15 -0
  361. package/dist/types/ultramodern-workspace/api/names.d.ts +41 -0
  362. package/dist/types/ultramodern-workspace/api/service.d.ts +6 -0
  363. package/dist/types/ultramodern-workspace/api/shared.d.ts +10 -0
  364. package/dist/types/ultramodern-workspace/api.d.ts +5 -74
  365. package/dist/types/ultramodern-workspace/backend-federation.d.ts +2 -2
  366. package/dist/types/ultramodern-workspace/bridge-config/cli.d.ts +3 -0
  367. package/dist/types/ultramodern-workspace/bridge-config/defaults.d.ts +1 -0
  368. package/dist/types/ultramodern-workspace/bridge-config/gates.d.ts +3 -0
  369. package/dist/types/ultramodern-workspace/bridge-config/index.d.ts +4 -0
  370. package/dist/types/ultramodern-workspace/bridge-config/normalize.d.ts +2 -0
  371. package/dist/types/ultramodern-workspace/bridge-config/schema.d.ts +61 -0
  372. package/dist/types/ultramodern-workspace/bridge-config/shared.d.ts +12 -0
  373. package/dist/types/ultramodern-workspace/bridge-config/validation.d.ts +3 -0
  374. package/dist/types/ultramodern-workspace/bridge-config/workspace-packages.d.ts +3 -0
  375. package/dist/types/ultramodern-workspace/bridge-config.d.ts +1 -64
  376. package/dist/types/ultramodern-workspace/delivery-unit.d.ts +2 -21
  377. package/dist/types/ultramodern-workspace/effect-diagnostics.d.ts +1 -0
  378. package/dist/types/ultramodern-workspace/index.d.ts +1 -0
  379. package/dist/types/ultramodern-workspace/mf-validation/constants.d.ts +5 -0
  380. package/dist/types/ultramodern-workspace/mf-validation/discovery.d.ts +2 -0
  381. package/dist/types/ultramodern-workspace/mf-validation/inspect.d.ts +5 -0
  382. package/dist/types/ultramodern-workspace/mf-validation/object-literal.d.ts +9 -0
  383. package/dist/types/ultramodern-workspace/mf-validation/path-utils.d.ts +13 -0
  384. package/dist/types/ultramodern-workspace/mf-validation/syntax.d.ts +14 -0
  385. package/dist/types/ultramodern-workspace/mf-validation/types.d.ts +33 -0
  386. package/dist/types/ultramodern-workspace/mf-validation/validate.d.ts +4 -0
  387. package/dist/types/ultramodern-workspace/mf-validation.d.ts +4 -27
  388. package/dist/types/ultramodern-workspace/module-federation/config.d.ts +5 -0
  389. package/dist/types/ultramodern-workspace/module-federation/index.d.ts +4 -0
  390. package/dist/types/ultramodern-workspace/module-federation/reexport-module.d.ts +4 -0
  391. package/dist/types/ultramodern-workspace/module-federation/remote-refs.d.ts +3 -0
  392. package/dist/types/ultramodern-workspace/module-federation/shared-config.d.ts +2 -0
  393. package/dist/types/ultramodern-workspace/module-federation.d.ts +1 -11
  394. package/dist/types/ultramodern-workspace/package-json.d.ts +1 -13
  395. package/dist/types/ultramodern-workspace/shared-patches.d.ts +2 -0
  396. package/dist/types/ultramodern-workspace/tsconfigs.d.ts +13 -0
  397. package/dist/types/ultramodern-workspace/workspace-validation-contract.d.ts +1 -1
  398. package/dist/types/ultramodern-workspace/write-app.d.ts +3 -0
  399. package/dist/types/ultramodern-workspace/write-workspace.d.ts +2 -1
  400. package/package.json +4 -3
  401. package/templates/workspace/apps/modern.config.shared-module-federation.ts.handlebars +37 -0
  402. package/templates/workspace/apps/modern.config.ts.handlebars +252 -0
  403. package/templates/workspace/apps/shared/src/routes/ultramodern-jsonld.ts.handlebars +119 -0
  404. package/templates/workspace/apps/shared/src/routes/ultramodern-route-metadata.ts.handlebars +21 -0
  405. package/templates/workspace/apps/shell-super-app/src/routes/[lang]/page.tsx.handlebars +49 -0
  406. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.helpers.tsx.handlebars +79 -0
  407. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.imports.tsx.handlebars +11 -0
  408. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.tsx.handlebars +46 -0
  409. package/templates/workspace/packages/shared-design-tokens/tokens.css.handlebars +7 -0
  410. package/templates/workspace/postcss.config.mjs.handlebars +5 -0
  411. package/templates/workspace/tailwind.config.ts.handlebars +3 -0
  412. package/templates/workspace/verticals/server/checkout-cart-handlers.ts.handlebars +49 -0
  413. package/templates/workspace/verticals/server/checkout-cart-state.ts.handlebars +23 -0
  414. package/templates/workspace/verticals/shared/api.checkout-cart-contract-fields.ts.handlebars +1 -0
  415. package/templates/workspace/verticals/shared/api.checkout-cart-endpoints.ts.handlebars +23 -0
  416. package/templates/workspace/verticals/shared/api.checkout-cart-operation-contexts.ts.handlebars +25 -0
  417. package/templates/workspace/verticals/shared/api.checkout-cart-schemas.ts.handlebars +48 -0
  418. package/templates/workspace/verticals/src/api/checkout-cart-client-exports.ts.handlebars +70 -0
  419. package/templates/workspace-scripts/generate-node-backend-federation.mjs +29 -0
  420. package/templates/workspace-scripts/proof-node-backend-federation.mjs +31 -0
  421. package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +74 -40
@@ -112,28 +112,13 @@ function createAppStyles(enableTailwind, scope, app) {
112
112
  return 'shell' === app.kind ? createShellStyles(enableTailwind, scope) : createRemoteStyles(enableTailwind, scope, app);
113
113
  }
114
114
  function createPostcssConfig() {
115
- return `export default {
116
- plugins: {
117
- '@tailwindcss/postcss': {},
118
- },
119
- };
120
- `;
115
+ return renderFileTemplate('workspace/postcss.config.mjs', {});
121
116
  }
122
117
  function createTailwindConfig() {
123
- return `import type { Config } from 'tailwindcss';
124
-
125
- export default {} satisfies Config;
126
- `;
118
+ return renderFileTemplate('workspace/tailwind.config.ts', {});
127
119
  }
128
120
  function createSharedDesignTokensCss() {
129
- return `@theme {
130
- --color-um-accent: #2f8f68;
131
- --color-um-canvas: #f1eadc;
132
- --color-um-foreground: #133225;
133
- --color-um-link: #166b4b;
134
- --color-um-surface: #f6fbf7;
135
- }
136
- `;
121
+ return renderFileTemplate('workspace/packages/shared-design-tokens/tokens.css', {});
137
122
  }
138
123
  function createRouteHeadModule(app) {
139
124
  return renderFileTemplate('app/ultramodern-route-head.tsx', {
@@ -1,10 +1,9 @@
1
+ import { BACKEND_FEDERATION_CONTRACT_VERSION, BACKEND_FEDERATION_EFFECT_EXPOSE, BACKEND_FEDERATION_NODE_ADAPTER_VERSION, formatBackendFederationValidationErrors, validateBackendFederationMetadata } from "@modern-js/utils/universal";
1
2
  import { verticalApiExport, verticalApiGroupName } from "./api.js";
2
3
  import { createDeliveryUnitRecord, deliveryUnitContractBlock } from "./delivery-unit.js";
3
4
  import { appHasApi, createBackendFederationContainerEntry, createBackendFederationManifestEnv, createBackendFederationManifestUrl, createBackendFederationName, createCloudflarePublicUrlEnv, createCloudflareWorkerName, createRemoteManifestEnv, resolveApiPrefix, resolveApiStem } from "./descriptors.js";
4
5
  import { packageName, toEnvSegment } from "./naming.js";
5
6
  import { EFFECT_VERSION, MODULE_FEDERATION_VERSION } from "./versions.js";
6
- const BACKEND_FEDERATION_CONTRACT_VERSION = 'microvertical-server-effect-v1';
7
- const BACKEND_FEDERATION_NODE_ADAPTER_VERSION = 'backend-mf-effect-v1';
8
7
  function createZephyrEnv(app, suffix) {
9
8
  return `ZEPHYR_${toEnvSegment(app.domain ?? app.id)}_${suffix}`;
10
9
  }
@@ -60,7 +59,7 @@ function createCloudflareExecutionSurface(scope, app) {
60
59
  }
61
60
  };
62
61
  }
63
- function createNodeExecutionSurface(app) {
62
+ function createNodeExecutionSurface(app, deliveryUnit) {
64
63
  return {
65
64
  kind: 'node-mf-runtime',
66
65
  adapterVersion: BACKEND_FEDERATION_NODE_ADAPTER_VERSION,
@@ -69,8 +68,14 @@ function createNodeExecutionSurface(app) {
69
68
  manifestUrl: createBackendFederationManifestUrl(app),
70
69
  containerEntry: createBackendFederationContainerEntry(app),
71
70
  remoteType: 'module',
72
- expose: './effect-api',
73
- runtimePackage: '@modern-js/plugin-bff/effect'
71
+ expose: BACKEND_FEDERATION_EFFECT_EXPOSE,
72
+ runtimePackage: '@modern-js/plugin-bff/effect',
73
+ ...deliveryUnit ? {
74
+ expected: {
75
+ unitId: deliveryUnit.unitId,
76
+ buildMarker: deliveryUnit.buildMarker
77
+ }
78
+ } : {}
74
79
  };
75
80
  }
76
81
  function createServerExecutionOverlay(scope, app) {
@@ -84,21 +89,21 @@ function createServerExecutionOverlay(scope, app) {
84
89
  buildMarker: deliveryUnit.buildMarker
85
90
  },
86
91
  cloudflare: createCloudflareExecutionSurface(scope, app),
87
- node: createNodeExecutionSurface(app)
92
+ node: createNodeExecutionSurface(app, deliveryUnit)
88
93
  };
89
94
  }
90
95
  function createBackendFederationContract(scope, app) {
91
96
  if (!appHasApi(app)) return;
92
97
  const readiness = `${app.api.prefix}/${resolveApiStem(app)}/readiness`;
93
98
  const deliveryUnit = createDeliveryUnitRecord(scope, app);
94
- return {
99
+ const contract = {
95
100
  role: 'microvertical-server',
96
101
  name: createBackendFederationName(app),
97
102
  runtimeFramework: 'effect',
98
103
  strictEffectApproach: true,
99
104
  deliveryUnit: deliveryUnitContractBlock(deliveryUnit),
100
105
  exposes: {
101
- './effect-api': createEffectExpose(app)
106
+ [BACKEND_FEDERATION_EFFECT_EXPOSE]: createEffectExpose(app)
102
107
  },
103
108
  versionBoundary: {
104
109
  invariant: 'web-and-api-same-build',
@@ -117,7 +122,7 @@ function createBackendFederationContract(scope, app) {
117
122
  },
118
123
  executionSurfaces: {
119
124
  cloudflare: createCloudflareExecutionSurface(scope, app),
120
- node: createNodeExecutionSurface(app)
125
+ node: createNodeExecutionSurface(app, deliveryUnit)
121
126
  },
122
127
  compatibility: {
123
128
  contractVersion: BACKEND_FEDERATION_CONTRACT_VERSION,
@@ -137,6 +142,14 @@ function createBackendFederationContract(scope, app) {
137
142
  strategy: 'typed-effect-error'
138
143
  }
139
144
  };
145
+ const validation = validateBackendFederationMetadata(contract, {
146
+ path: `${app.id}.backendFederation`,
147
+ requireEffectExpose: true,
148
+ requireEffectRuntime: true,
149
+ requireVersionFields: true
150
+ });
151
+ if (!validation.ok) throw new Error(`Backend federation contract invalid for ${app.id}: ${formatBackendFederationValidationErrors(validation.errors)}.`);
152
+ return contract;
140
153
  }
141
154
  function createBackendFederationMetadata(scope, app) {
142
155
  if (!appHasApi(app)) return;
@@ -147,7 +160,7 @@ function createBackendFederationMetadata(scope, app) {
147
160
  'node-mf-runtime'
148
161
  ],
149
162
  exposes: [
150
- './effect-api'
163
+ BACKEND_FEDERATION_EFFECT_EXPOSE
151
164
  ],
152
165
  name: createBackendFederationName(app),
153
166
  nodeAdapterVersion: BACKEND_FEDERATION_NODE_ADAPTER_VERSION,
@@ -182,7 +195,7 @@ export const backendFederationContract = {
182
195
  },
183
196
  contractVersion: '${BACKEND_FEDERATION_CONTRACT_VERSION}',
184
197
  executionSurfaces: ['node-mf-runtime'],
185
- exposes: ['./effect-api'],
198
+ exposes: ['${BACKEND_FEDERATION_EFFECT_EXPOSE}'],
186
199
  name: '${createBackendFederationName(app)}',
187
200
  nodeAdapterVersion: '${BACKEND_FEDERATION_NODE_ADAPTER_VERSION}',
188
201
  openapiPath: '${app.api.prefix}/openapi.json',
@@ -199,6 +212,7 @@ export default runtime;
199
212
  }
200
213
  function createBackendFederationSummary(scope, app) {
201
214
  if (!appHasApi(app)) return;
215
+ const deliveryUnit = createDeliveryUnitRecord(scope, app);
202
216
  return {
203
217
  id: app.id,
204
218
  path: app.directory,
@@ -207,10 +221,10 @@ function createBackendFederationSummary(scope, app) {
207
221
  runtimeFramework: 'effect',
208
222
  strictEffectApproach: true,
209
223
  contractVersion: BACKEND_FEDERATION_CONTRACT_VERSION,
210
- deliveryUnit: deliveryUnitContractBlock(createDeliveryUnitRecord(scope, app)),
224
+ deliveryUnit: deliveryUnitContractBlock(deliveryUnit),
211
225
  executionSurfaces: {
212
226
  cloudflare: createCloudflareExecutionSurface(scope, app),
213
- node: createNodeExecutionSurface(app)
227
+ node: createNodeExecutionSurface(app, deliveryUnit)
214
228
  }
215
229
  };
216
230
  }
@@ -0,0 +1,30 @@
1
+ import { readBridgeGates } from "./gates.js";
2
+ import { normalizeUltramodernBridgeConfig } from "./normalize.js";
3
+ import { ultramodernBridgeCliBooleanFlags, ultramodernBridgeCliFlags, ultramodernBridgeCliValueFlags } from "./schema.js";
4
+ import { parseLockfilePolicy, readCsvOptionValues, readSingleValue, rejectBooleanFlagValues, requireNonEmptyValue } from "./shared.js";
5
+ import { readWorkspacePackages } from "./workspace-packages.js";
6
+ function hasUltramodernBridgeCliOptions(args) {
7
+ return args.some((arg)=>[
8
+ ...ultramodernBridgeCliBooleanFlags,
9
+ ...ultramodernBridgeCliValueFlags
10
+ ].some((flag)=>arg === flag || arg.startsWith(`${flag}=`)));
11
+ }
12
+ function parseUltramodernBridgeCliOptions(args) {
13
+ rejectBooleanFlagValues(args);
14
+ if (!hasUltramodernBridgeCliOptions(args)) return;
15
+ const parentRoot = readSingleValue(args, ultramodernBridgeCliFlags.parentRoot);
16
+ const lockfilePolicy = readSingleValue(args, ultramodernBridgeCliFlags.lockfilePolicy) ?? 'nested';
17
+ const workspacePackages = readWorkspacePackages(args);
18
+ const gates = readBridgeGates(args);
19
+ const reactSingletons = readCsvOptionValues(args, ultramodernBridgeCliFlags.reactSingleton);
20
+ return normalizeUltramodernBridgeConfig({
21
+ enabled: true,
22
+ parentRoot: requireNonEmptyValue(parentRoot, ultramodernBridgeCliFlags.parentRoot),
23
+ workspacePackages,
24
+ dependencies: readCsvOptionValues(args, ultramodernBridgeCliFlags.dependency),
25
+ lockfilePolicy: parseLockfilePolicy(lockfilePolicy),
26
+ gates,
27
+ reactSingletons: reactSingletons.length > 0 ? reactSingletons : void 0
28
+ });
29
+ }
30
+ export { hasUltramodernBridgeCliOptions, parseUltramodernBridgeCliOptions };
@@ -0,0 +1,5 @@
1
+ const defaultReactSingletons = [
2
+ 'react',
3
+ 'react-dom'
4
+ ];
5
+ export { defaultReactSingletons };
@@ -0,0 +1,52 @@
1
+ import { ultramodernBridgeCliFlags } from "./schema.js";
2
+ import { readRepeatedOptionValues, requireNonEmptyValue, splitAssignment } from "./shared.js";
3
+ function readBridgeGates(args) {
4
+ const gates = new Map();
5
+ const getGate = (name)=>{
6
+ const normalizedName = requireNonEmptyValue(name, `${ultramodernBridgeCliFlags.gate} name`);
7
+ const existing = gates.get(normalizedName);
8
+ if (existing) return existing;
9
+ const draft = {
10
+ name: normalizedName
11
+ };
12
+ gates.set(normalizedName, draft);
13
+ return draft;
14
+ };
15
+ for (const value of readRepeatedOptionValues(args, ultramodernBridgeCliFlags.gate)){
16
+ const { left: name, right: command } = splitAssignment(value, ultramodernBridgeCliFlags.gate, '<name>=<command>');
17
+ getGate(name).command = requireNonEmptyValue(command, `${ultramodernBridgeCliFlags.gate} command`);
18
+ }
19
+ for (const value of readRepeatedOptionValues(args, ultramodernBridgeCliFlags.gateCwd)){
20
+ const { left: name, right: cwd } = splitAssignment(value, ultramodernBridgeCliFlags.gateCwd, '<name>=<cwd>');
21
+ getGate(name).cwd = requireNonEmptyValue(cwd, `${ultramodernBridgeCliFlags.gateCwd} cwd`);
22
+ }
23
+ const missingCommand = [
24
+ ...gates.values()
25
+ ].find((gate)=>!gate.command);
26
+ if (missingCommand) throw new Error(`${ultramodernBridgeCliFlags.gateCwd} references "${missingCommand.name}" without a matching ${ultramodernBridgeCliFlags.gate}.`);
27
+ return normalizeBridgeGates([
28
+ ...gates.values()
29
+ ].map((gate)=>({
30
+ name: gate.name,
31
+ command: gate.command,
32
+ cwd: gate.cwd
33
+ })));
34
+ }
35
+ function normalizeBridgeGates(gates) {
36
+ const normalized = new Map();
37
+ for (const [index, gate] of gates.entries()){
38
+ const label = `bridge.gates[${index}]`;
39
+ const name = requireNonEmptyValue(gate.name, `${label}.name`);
40
+ normalized.set(name, {
41
+ name,
42
+ command: requireNonEmptyValue(gate.command, `${label}.command`),
43
+ ...gate.cwd ? {
44
+ cwd: requireNonEmptyValue(gate.cwd, `${label}.cwd`)
45
+ } : {}
46
+ });
47
+ }
48
+ return [
49
+ ...normalized.values()
50
+ ];
51
+ }
52
+ export { normalizeBridgeGates, readBridgeGates };
@@ -0,0 +1,3 @@
1
+ export { hasUltramodernBridgeCliOptions, parseUltramodernBridgeCliOptions } from "./cli.js";
2
+ export { normalizeUltramodernBridgeConfig } from "./normalize.js";
3
+ export { ultramodernBridgeCliBooleanFlags, ultramodernBridgeCliFlags, ultramodernBridgeCliValueFlags, ultramodernBridgeLockfilePolicies } from "./schema.js";
@@ -0,0 +1,30 @@
1
+ import { defaultReactSingletons } from "./defaults.js";
2
+ import { normalizeBridgeGates } from "./gates.js";
3
+ import { parseLockfilePolicy, requireNonEmptyValue, uniqueNonEmptyValues } from "./shared.js";
4
+ import { validateParentPackageCoverage, validateReactSingletons } from "./validation.js";
5
+ import { normalizeWorkspacePackages } from "./workspace-packages.js";
6
+ function normalizeUltramodernBridgeConfig(bridge) {
7
+ if (!bridge || false === bridge.enabled) return;
8
+ const parentRoot = requireNonEmptyValue(bridge.parentRoot, 'bridge.parentRoot');
9
+ const workspacePackages = normalizeWorkspacePackages(bridge.workspacePackages);
10
+ const dependencies = uniqueNonEmptyValues(bridge.dependencies, 'bridge.dependencies');
11
+ const gates = normalizeBridgeGates(bridge.gates);
12
+ const reactSingletons = bridge.reactSingletons && bridge.reactSingletons.length > 0 ? uniqueNonEmptyValues(bridge.reactSingletons, 'bridge.reactSingletons') : [
13
+ ...defaultReactSingletons
14
+ ];
15
+ if (0 === workspacePackages.length) throw new Error('Bridge mode requires at least one bridge.workspacePackages entry.');
16
+ if (0 === dependencies.length) throw new Error('Bridge mode requires at least one explicit bridge.dependencies package name.');
17
+ if (0 === gates.length) throw new Error('Bridge mode requires at least one bridge.gates delegated parent command.');
18
+ validateParentPackageCoverage(workspacePackages, dependencies);
19
+ validateReactSingletons(reactSingletons);
20
+ return {
21
+ enabled: true,
22
+ parentRoot,
23
+ workspacePackages,
24
+ dependencies,
25
+ lockfilePolicy: parseLockfilePolicy(bridge.lockfilePolicy ?? 'nested'),
26
+ gates,
27
+ reactSingletons
28
+ };
29
+ }
30
+ export { normalizeUltramodernBridgeConfig };
@@ -0,0 +1,31 @@
1
+ const ultramodernBridgeCliFlags = {
2
+ enabled: '--bridge',
3
+ parentRoot: '--bridge-parent-root',
4
+ workspacePackage: '--bridge-workspace-package',
5
+ workspacePackageName: '--bridge-workspace-package-name',
6
+ testAlias: '--bridge-test-alias',
7
+ dependency: '--bridge-dependency',
8
+ lockfilePolicy: '--bridge-lockfile-policy',
9
+ gate: '--bridge-gate',
10
+ gateCwd: '--bridge-gate-cwd',
11
+ reactSingleton: '--bridge-react-singleton'
12
+ };
13
+ const ultramodernBridgeCliValueFlags = [
14
+ ultramodernBridgeCliFlags.parentRoot,
15
+ ultramodernBridgeCliFlags.workspacePackage,
16
+ ultramodernBridgeCliFlags.workspacePackageName,
17
+ ultramodernBridgeCliFlags.testAlias,
18
+ ultramodernBridgeCliFlags.dependency,
19
+ ultramodernBridgeCliFlags.lockfilePolicy,
20
+ ultramodernBridgeCliFlags.gate,
21
+ ultramodernBridgeCliFlags.gateCwd,
22
+ ultramodernBridgeCliFlags.reactSingleton
23
+ ];
24
+ const ultramodernBridgeCliBooleanFlags = [
25
+ ultramodernBridgeCliFlags.enabled
26
+ ];
27
+ const ultramodernBridgeLockfilePolicies = [
28
+ 'nested',
29
+ 'parent'
30
+ ];
31
+ export { ultramodernBridgeCliBooleanFlags, ultramodernBridgeCliFlags, ultramodernBridgeCliValueFlags, ultramodernBridgeLockfilePolicies };
@@ -0,0 +1,51 @@
1
+ import { ultramodernBridgeCliBooleanFlags, ultramodernBridgeCliFlags, ultramodernBridgeLockfilePolicies } from "./schema.js";
2
+ function rejectBooleanFlagValues(args) {
3
+ for (const flag of ultramodernBridgeCliBooleanFlags)if (args.some((arg)=>arg.startsWith(`${flag}=`))) throw new Error(`${flag} does not accept a value.`);
4
+ }
5
+ function readRepeatedOptionValues(args, flag) {
6
+ const values = [];
7
+ for(let index = 0; index < args.length; index++){
8
+ const arg = args[index];
9
+ if (arg === flag) {
10
+ const value = args[index + 1];
11
+ if (!value || value.startsWith('-')) throw new Error(`${flag} requires a value.`);
12
+ values.push(value);
13
+ index += 1;
14
+ continue;
15
+ }
16
+ if (arg.startsWith(`${flag}=`)) values.push(arg.slice(flag.length + 1));
17
+ }
18
+ return values;
19
+ }
20
+ function readSingleValue(args, flag) {
21
+ const values = readRepeatedOptionValues(args, flag);
22
+ if (values.length > 1) throw new Error(`${flag} can be provided only once.`);
23
+ return values[0];
24
+ }
25
+ function readCsvOptionValues(args, flag) {
26
+ return readRepeatedOptionValues(args, flag).flatMap((value)=>value.split(',').map((entry)=>entry.trim()).filter(Boolean));
27
+ }
28
+ function requireNonEmptyValue(value, label) {
29
+ if ('string' != typeof value || 0 === value.trim().length) throw new Error(`${label} must be a non-empty string.`);
30
+ return value.trim();
31
+ }
32
+ function parseLockfilePolicy(value) {
33
+ if (!ultramodernBridgeLockfilePolicies.includes(value)) throw new Error(`${ultramodernBridgeCliFlags.lockfilePolicy} must be "nested" or "parent".`);
34
+ return value;
35
+ }
36
+ function splitAssignment(value, flag, usage) {
37
+ const separator = value.indexOf('=');
38
+ if (-1 === separator) throw new Error(`${flag} must use ${usage}.`);
39
+ return {
40
+ left: value.slice(0, separator),
41
+ right: value.slice(separator + 1)
42
+ };
43
+ }
44
+ function uniqueNonEmptyValues(values, label) {
45
+ const unique = new Set();
46
+ for (const [index, value] of values.entries())unique.add(requireNonEmptyValue(value, `${label}[${index}]`));
47
+ return [
48
+ ...unique
49
+ ];
50
+ }
51
+ export { parseLockfilePolicy, readCsvOptionValues, readRepeatedOptionValues, readSingleValue, rejectBooleanFlagValues, requireNonEmptyValue, splitAssignment, uniqueNonEmptyValues };
@@ -0,0 +1,27 @@
1
+ import { defaultReactSingletons } from "./defaults.js";
2
+ function validateParentPackageCoverage(workspacePackages, dependencies) {
3
+ const declaredPackages = new Set();
4
+ for (const [index, entry] of workspacePackages.entries()){
5
+ const label = `bridge.workspacePackages[${index}]`;
6
+ const packageNames = entry.packageNames ?? [];
7
+ if (0 === packageNames.length && (entry.testAliases ?? []).length > 0) throw new Error(`${label}.packageNames must declare the parent package names covered by "${entry.pattern}" before testAliases can be checked.`);
8
+ for (const packageName of packageNames)declaredPackages.add(packageName);
9
+ for (const alias of entry.testAliases ?? []){
10
+ if (!packageNames.some((packageName)=>aliasMatchesPackage(alias.alias, packageName))) throw new Error(`${label}.testAliases entry "${alias.alias}" must match one of ${label}.packageNames.`);
11
+ if (pointsAtBuildOutput(alias.target)) throw new Error(`${label}.testAliases target "${alias.target}" must point at source files, not dist output.`);
12
+ }
13
+ }
14
+ const missingDependencies = dependencies.filter((dependency)=>!declaredPackages.has(dependency));
15
+ if (declaredPackages.size > 0 && missingDependencies.length > 0) throw new Error(`Bridge mode dependencies must be declared by bridge.workspacePackages[].packageNames: ${missingDependencies.join(', ')}.`);
16
+ }
17
+ function aliasMatchesPackage(alias, packageName) {
18
+ return alias === packageName || alias.startsWith(`${packageName}/`);
19
+ }
20
+ function pointsAtBuildOutput(target) {
21
+ return target.split(/[\\/]/u).includes('dist');
22
+ }
23
+ function validateReactSingletons(reactSingletons) {
24
+ const missing = defaultReactSingletons.filter((packageName)=>!reactSingletons.includes(packageName));
25
+ if (missing.length > 0) throw new Error(`Bridge mode React singleton/dedupe declarations must include ${defaultReactSingletons.join(' and ')}. Missing: ${missing.join(', ')}.`);
26
+ }
27
+ export { validateParentPackageCoverage, validateReactSingletons };
@@ -0,0 +1,67 @@
1
+ import { ultramodernBridgeCliFlags } from "./schema.js";
2
+ import { readRepeatedOptionValues, requireNonEmptyValue, splitAssignment, uniqueNonEmptyValues } from "./shared.js";
3
+ function readWorkspacePackages(args) {
4
+ const drafts = new Map();
5
+ const getDraft = (pattern)=>{
6
+ const normalizedPattern = requireNonEmptyValue(pattern, ultramodernBridgeCliFlags.workspacePackage);
7
+ const existing = drafts.get(normalizedPattern);
8
+ if (existing) return existing;
9
+ const draft = {
10
+ pattern: normalizedPattern,
11
+ packageNames: [],
12
+ testAliases: []
13
+ };
14
+ drafts.set(normalizedPattern, draft);
15
+ return draft;
16
+ };
17
+ for (const pattern of readRepeatedOptionValues(args, ultramodernBridgeCliFlags.workspacePackage))getDraft(pattern);
18
+ for (const value of readRepeatedOptionValues(args, ultramodernBridgeCliFlags.workspacePackageName)){
19
+ const { left: pattern, right: packageNames } = splitAssignment(value, ultramodernBridgeCliFlags.workspacePackageName, '<pattern>=<package-name>[,<package-name>]');
20
+ getDraft(pattern).packageNames.push(...packageNames.split(',').map((packageName)=>packageName.trim()).filter(Boolean));
21
+ }
22
+ for (const value of readRepeatedOptionValues(args, ultramodernBridgeCliFlags.testAlias)){
23
+ const separator = value.indexOf(':');
24
+ if (-1 === separator) throw new Error(`${ultramodernBridgeCliFlags.testAlias} must use <pattern>:<alias>=<target>.`);
25
+ const pattern = value.slice(0, separator);
26
+ const aliasDefinition = value.slice(separator + 1);
27
+ const { left: alias, right: target } = splitAssignment(aliasDefinition, ultramodernBridgeCliFlags.testAlias, '<pattern>:<alias>=<target>');
28
+ getDraft(pattern).testAliases.push({
29
+ alias: requireNonEmptyValue(alias, `${ultramodernBridgeCliFlags.testAlias} alias`),
30
+ target: requireNonEmptyValue(target, `${ultramodernBridgeCliFlags.testAlias} target`)
31
+ });
32
+ }
33
+ return normalizeWorkspacePackages([
34
+ ...drafts.values()
35
+ ]);
36
+ }
37
+ function normalizeWorkspacePackages(workspacePackages) {
38
+ return workspacePackages.map((entry, index)=>{
39
+ const label = `bridge.workspacePackages[${index}]`;
40
+ const packageNames = entry.packageNames && entry.packageNames.length > 0 ? uniqueNonEmptyValues(entry.packageNames, `${label}.packageNames`) : void 0;
41
+ const testAliases = entry.testAliases && entry.testAliases.length > 0 ? normalizeTestAliases(entry.testAliases, label) : void 0;
42
+ return {
43
+ pattern: requireNonEmptyValue(entry.pattern, `${label}.pattern`),
44
+ ...packageNames ? {
45
+ packageNames
46
+ } : {},
47
+ ...testAliases ? {
48
+ testAliases
49
+ } : {}
50
+ };
51
+ });
52
+ }
53
+ function normalizeTestAliases(testAliases, parentLabel) {
54
+ const aliases = new Map();
55
+ for (const [index, alias] of testAliases.entries()){
56
+ const label = `${parentLabel}.testAliases[${index}]`;
57
+ const normalizedAlias = requireNonEmptyValue(alias.alias, `${label}.alias`);
58
+ aliases.set(normalizedAlias, {
59
+ alias: normalizedAlias,
60
+ target: requireNonEmptyValue(alias.target, `${label}.target`)
61
+ });
62
+ }
63
+ return [
64
+ ...aliases.values()
65
+ ];
66
+ }
67
+ export { normalizeWorkspacePackages, readWorkspacePackages };