@bleedingdev/modern-js-create 3.5.0-ultramodern.30 → 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 (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
@@ -113,28 +113,13 @@ function createAppStyles(enableTailwind, scope, app) {
113
113
  return 'shell' === app.kind ? createShellStyles(enableTailwind, scope) : createRemoteStyles(enableTailwind, scope, app);
114
114
  }
115
115
  function createPostcssConfig() {
116
- return `export default {
117
- plugins: {
118
- '@tailwindcss/postcss': {},
119
- },
120
- };
121
- `;
116
+ return renderFileTemplate('workspace/postcss.config.mjs', {});
122
117
  }
123
118
  function createTailwindConfig() {
124
- return `import type { Config } from 'tailwindcss';
125
-
126
- export default {} satisfies Config;
127
- `;
119
+ return renderFileTemplate('workspace/tailwind.config.ts', {});
128
120
  }
129
121
  function createSharedDesignTokensCss() {
130
- return `@theme {
131
- --color-um-accent: #2f8f68;
132
- --color-um-canvas: #f1eadc;
133
- --color-um-foreground: #133225;
134
- --color-um-link: #166b4b;
135
- --color-um-surface: #f6fbf7;
136
- }
137
- `;
122
+ return renderFileTemplate('workspace/packages/shared-design-tokens/tokens.css', {});
138
123
  }
139
124
  function createRouteHeadModule(app) {
140
125
  return renderFileTemplate('app/ultramodern-route-head.tsx', {
@@ -1,11 +1,10 @@
1
1
  import "node:module";
2
+ import { BACKEND_FEDERATION_CONTRACT_VERSION, BACKEND_FEDERATION_EFFECT_EXPOSE, BACKEND_FEDERATION_NODE_ADAPTER_VERSION, formatBackendFederationValidationErrors, validateBackendFederationMetadata } from "@modern-js/utils/universal";
2
3
  import { verticalApiExport, verticalApiGroupName } from "./api.js";
3
4
  import { createDeliveryUnitRecord, deliveryUnitContractBlock } from "./delivery-unit.js";
4
5
  import { appHasApi, createBackendFederationContainerEntry, createBackendFederationManifestEnv, createBackendFederationManifestUrl, createBackendFederationName, createCloudflarePublicUrlEnv, createCloudflareWorkerName, createRemoteManifestEnv, resolveApiPrefix, resolveApiStem } from "./descriptors.js";
5
6
  import { packageName, toEnvSegment } from "./naming.js";
6
7
  import { EFFECT_VERSION, MODULE_FEDERATION_VERSION } from "./versions.js";
7
- const BACKEND_FEDERATION_CONTRACT_VERSION = 'microvertical-server-effect-v1';
8
- const BACKEND_FEDERATION_NODE_ADAPTER_VERSION = 'backend-mf-effect-v1';
9
8
  function createZephyrEnv(app, suffix) {
10
9
  return `ZEPHYR_${toEnvSegment(app.domain ?? app.id)}_${suffix}`;
11
10
  }
@@ -61,7 +60,7 @@ function createCloudflareExecutionSurface(scope, app) {
61
60
  }
62
61
  };
63
62
  }
64
- function createNodeExecutionSurface(app) {
63
+ function createNodeExecutionSurface(app, deliveryUnit) {
65
64
  return {
66
65
  kind: 'node-mf-runtime',
67
66
  adapterVersion: BACKEND_FEDERATION_NODE_ADAPTER_VERSION,
@@ -70,8 +69,14 @@ function createNodeExecutionSurface(app) {
70
69
  manifestUrl: createBackendFederationManifestUrl(app),
71
70
  containerEntry: createBackendFederationContainerEntry(app),
72
71
  remoteType: 'module',
73
- expose: './effect-api',
74
- runtimePackage: '@modern-js/plugin-bff/effect'
72
+ expose: BACKEND_FEDERATION_EFFECT_EXPOSE,
73
+ runtimePackage: '@modern-js/plugin-bff/effect',
74
+ ...deliveryUnit ? {
75
+ expected: {
76
+ unitId: deliveryUnit.unitId,
77
+ buildMarker: deliveryUnit.buildMarker
78
+ }
79
+ } : {}
75
80
  };
76
81
  }
77
82
  function createServerExecutionOverlay(scope, app) {
@@ -85,21 +90,21 @@ function createServerExecutionOverlay(scope, app) {
85
90
  buildMarker: deliveryUnit.buildMarker
86
91
  },
87
92
  cloudflare: createCloudflareExecutionSurface(scope, app),
88
- node: createNodeExecutionSurface(app)
93
+ node: createNodeExecutionSurface(app, deliveryUnit)
89
94
  };
90
95
  }
91
96
  function createBackendFederationContract(scope, app) {
92
97
  if (!appHasApi(app)) return;
93
98
  const readiness = `${app.api.prefix}/${resolveApiStem(app)}/readiness`;
94
99
  const deliveryUnit = createDeliveryUnitRecord(scope, app);
95
- return {
100
+ const contract = {
96
101
  role: 'microvertical-server',
97
102
  name: createBackendFederationName(app),
98
103
  runtimeFramework: 'effect',
99
104
  strictEffectApproach: true,
100
105
  deliveryUnit: deliveryUnitContractBlock(deliveryUnit),
101
106
  exposes: {
102
- './effect-api': createEffectExpose(app)
107
+ [BACKEND_FEDERATION_EFFECT_EXPOSE]: createEffectExpose(app)
103
108
  },
104
109
  versionBoundary: {
105
110
  invariant: 'web-and-api-same-build',
@@ -118,7 +123,7 @@ function createBackendFederationContract(scope, app) {
118
123
  },
119
124
  executionSurfaces: {
120
125
  cloudflare: createCloudflareExecutionSurface(scope, app),
121
- node: createNodeExecutionSurface(app)
126
+ node: createNodeExecutionSurface(app, deliveryUnit)
122
127
  },
123
128
  compatibility: {
124
129
  contractVersion: BACKEND_FEDERATION_CONTRACT_VERSION,
@@ -138,6 +143,14 @@ function createBackendFederationContract(scope, app) {
138
143
  strategy: 'typed-effect-error'
139
144
  }
140
145
  };
146
+ const validation = validateBackendFederationMetadata(contract, {
147
+ path: `${app.id}.backendFederation`,
148
+ requireEffectExpose: true,
149
+ requireEffectRuntime: true,
150
+ requireVersionFields: true
151
+ });
152
+ if (!validation.ok) throw new Error(`Backend federation contract invalid for ${app.id}: ${formatBackendFederationValidationErrors(validation.errors)}.`);
153
+ return contract;
141
154
  }
142
155
  function createBackendFederationMetadata(scope, app) {
143
156
  if (!appHasApi(app)) return;
@@ -148,7 +161,7 @@ function createBackendFederationMetadata(scope, app) {
148
161
  'node-mf-runtime'
149
162
  ],
150
163
  exposes: [
151
- './effect-api'
164
+ BACKEND_FEDERATION_EFFECT_EXPOSE
152
165
  ],
153
166
  name: createBackendFederationName(app),
154
167
  nodeAdapterVersion: BACKEND_FEDERATION_NODE_ADAPTER_VERSION,
@@ -183,7 +196,7 @@ export const backendFederationContract = {
183
196
  },
184
197
  contractVersion: '${BACKEND_FEDERATION_CONTRACT_VERSION}',
185
198
  executionSurfaces: ['node-mf-runtime'],
186
- exposes: ['./effect-api'],
199
+ exposes: ['${BACKEND_FEDERATION_EFFECT_EXPOSE}'],
187
200
  name: '${createBackendFederationName(app)}',
188
201
  nodeAdapterVersion: '${BACKEND_FEDERATION_NODE_ADAPTER_VERSION}',
189
202
  openapiPath: '${app.api.prefix}/openapi.json',
@@ -200,6 +213,7 @@ export default runtime;
200
213
  }
201
214
  function createBackendFederationSummary(scope, app) {
202
215
  if (!appHasApi(app)) return;
216
+ const deliveryUnit = createDeliveryUnitRecord(scope, app);
203
217
  return {
204
218
  id: app.id,
205
219
  path: app.directory,
@@ -208,10 +222,10 @@ function createBackendFederationSummary(scope, app) {
208
222
  runtimeFramework: 'effect',
209
223
  strictEffectApproach: true,
210
224
  contractVersion: BACKEND_FEDERATION_CONTRACT_VERSION,
211
- deliveryUnit: deliveryUnitContractBlock(createDeliveryUnitRecord(scope, app)),
225
+ deliveryUnit: deliveryUnitContractBlock(deliveryUnit),
212
226
  executionSurfaces: {
213
227
  cloudflare: createCloudflareExecutionSurface(scope, app),
214
- node: createNodeExecutionSurface(app)
228
+ node: createNodeExecutionSurface(app, deliveryUnit)
215
229
  }
216
230
  };
217
231
  }
@@ -0,0 +1,31 @@
1
+ import "node:module";
2
+ import { readBridgeGates } from "./gates.js";
3
+ import { normalizeUltramodernBridgeConfig } from "./normalize.js";
4
+ import { ultramodernBridgeCliBooleanFlags, ultramodernBridgeCliFlags, ultramodernBridgeCliValueFlags } from "./schema.js";
5
+ import { parseLockfilePolicy, readCsvOptionValues, readSingleValue, rejectBooleanFlagValues, requireNonEmptyValue } from "./shared.js";
6
+ import { readWorkspacePackages } from "./workspace-packages.js";
7
+ function hasUltramodernBridgeCliOptions(args) {
8
+ return args.some((arg)=>[
9
+ ...ultramodernBridgeCliBooleanFlags,
10
+ ...ultramodernBridgeCliValueFlags
11
+ ].some((flag)=>arg === flag || arg.startsWith(`${flag}=`)));
12
+ }
13
+ function parseUltramodernBridgeCliOptions(args) {
14
+ rejectBooleanFlagValues(args);
15
+ if (!hasUltramodernBridgeCliOptions(args)) return;
16
+ const parentRoot = readSingleValue(args, ultramodernBridgeCliFlags.parentRoot);
17
+ const lockfilePolicy = readSingleValue(args, ultramodernBridgeCliFlags.lockfilePolicy) ?? 'nested';
18
+ const workspacePackages = readWorkspacePackages(args);
19
+ const gates = readBridgeGates(args);
20
+ const reactSingletons = readCsvOptionValues(args, ultramodernBridgeCliFlags.reactSingleton);
21
+ return normalizeUltramodernBridgeConfig({
22
+ enabled: true,
23
+ parentRoot: requireNonEmptyValue(parentRoot, ultramodernBridgeCliFlags.parentRoot),
24
+ workspacePackages,
25
+ dependencies: readCsvOptionValues(args, ultramodernBridgeCliFlags.dependency),
26
+ lockfilePolicy: parseLockfilePolicy(lockfilePolicy),
27
+ gates,
28
+ reactSingletons: reactSingletons.length > 0 ? reactSingletons : void 0
29
+ });
30
+ }
31
+ export { hasUltramodernBridgeCliOptions, parseUltramodernBridgeCliOptions };
@@ -0,0 +1,6 @@
1
+ import "node:module";
2
+ const defaultReactSingletons = [
3
+ 'react',
4
+ 'react-dom'
5
+ ];
6
+ export { defaultReactSingletons };
@@ -0,0 +1,53 @@
1
+ import "node:module";
2
+ import { ultramodernBridgeCliFlags } from "./schema.js";
3
+ import { readRepeatedOptionValues, requireNonEmptyValue, splitAssignment } from "./shared.js";
4
+ function readBridgeGates(args) {
5
+ const gates = new Map();
6
+ const getGate = (name)=>{
7
+ const normalizedName = requireNonEmptyValue(name, `${ultramodernBridgeCliFlags.gate} name`);
8
+ const existing = gates.get(normalizedName);
9
+ if (existing) return existing;
10
+ const draft = {
11
+ name: normalizedName
12
+ };
13
+ gates.set(normalizedName, draft);
14
+ return draft;
15
+ };
16
+ for (const value of readRepeatedOptionValues(args, ultramodernBridgeCliFlags.gate)){
17
+ const { left: name, right: command } = splitAssignment(value, ultramodernBridgeCliFlags.gate, '<name>=<command>');
18
+ getGate(name).command = requireNonEmptyValue(command, `${ultramodernBridgeCliFlags.gate} command`);
19
+ }
20
+ for (const value of readRepeatedOptionValues(args, ultramodernBridgeCliFlags.gateCwd)){
21
+ const { left: name, right: cwd } = splitAssignment(value, ultramodernBridgeCliFlags.gateCwd, '<name>=<cwd>');
22
+ getGate(name).cwd = requireNonEmptyValue(cwd, `${ultramodernBridgeCliFlags.gateCwd} cwd`);
23
+ }
24
+ const missingCommand = [
25
+ ...gates.values()
26
+ ].find((gate)=>!gate.command);
27
+ if (missingCommand) throw new Error(`${ultramodernBridgeCliFlags.gateCwd} references "${missingCommand.name}" without a matching ${ultramodernBridgeCliFlags.gate}.`);
28
+ return normalizeBridgeGates([
29
+ ...gates.values()
30
+ ].map((gate)=>({
31
+ name: gate.name,
32
+ command: gate.command,
33
+ cwd: gate.cwd
34
+ })));
35
+ }
36
+ function normalizeBridgeGates(gates) {
37
+ const normalized = new Map();
38
+ for (const [index, gate] of gates.entries()){
39
+ const label = `bridge.gates[${index}]`;
40
+ const name = requireNonEmptyValue(gate.name, `${label}.name`);
41
+ normalized.set(name, {
42
+ name,
43
+ command: requireNonEmptyValue(gate.command, `${label}.command`),
44
+ ...gate.cwd ? {
45
+ cwd: requireNonEmptyValue(gate.cwd, `${label}.cwd`)
46
+ } : {}
47
+ });
48
+ }
49
+ return [
50
+ ...normalized.values()
51
+ ];
52
+ }
53
+ export { normalizeBridgeGates, readBridgeGates };
@@ -0,0 +1,4 @@
1
+ import "node:module";
2
+ export { hasUltramodernBridgeCliOptions, parseUltramodernBridgeCliOptions } from "./cli.js";
3
+ export { normalizeUltramodernBridgeConfig } from "./normalize.js";
4
+ export { ultramodernBridgeCliBooleanFlags, ultramodernBridgeCliFlags, ultramodernBridgeCliValueFlags, ultramodernBridgeLockfilePolicies } from "./schema.js";
@@ -0,0 +1,31 @@
1
+ import "node:module";
2
+ import { defaultReactSingletons } from "./defaults.js";
3
+ import { normalizeBridgeGates } from "./gates.js";
4
+ import { parseLockfilePolicy, requireNonEmptyValue, uniqueNonEmptyValues } from "./shared.js";
5
+ import { validateParentPackageCoverage, validateReactSingletons } from "./validation.js";
6
+ import { normalizeWorkspacePackages } from "./workspace-packages.js";
7
+ function normalizeUltramodernBridgeConfig(bridge) {
8
+ if (!bridge || false === bridge.enabled) return;
9
+ const parentRoot = requireNonEmptyValue(bridge.parentRoot, 'bridge.parentRoot');
10
+ const workspacePackages = normalizeWorkspacePackages(bridge.workspacePackages);
11
+ const dependencies = uniqueNonEmptyValues(bridge.dependencies, 'bridge.dependencies');
12
+ const gates = normalizeBridgeGates(bridge.gates);
13
+ const reactSingletons = bridge.reactSingletons && bridge.reactSingletons.length > 0 ? uniqueNonEmptyValues(bridge.reactSingletons, 'bridge.reactSingletons') : [
14
+ ...defaultReactSingletons
15
+ ];
16
+ if (0 === workspacePackages.length) throw new Error('Bridge mode requires at least one bridge.workspacePackages entry.');
17
+ if (0 === dependencies.length) throw new Error('Bridge mode requires at least one explicit bridge.dependencies package name.');
18
+ if (0 === gates.length) throw new Error('Bridge mode requires at least one bridge.gates delegated parent command.');
19
+ validateParentPackageCoverage(workspacePackages, dependencies);
20
+ validateReactSingletons(reactSingletons);
21
+ return {
22
+ enabled: true,
23
+ parentRoot,
24
+ workspacePackages,
25
+ dependencies,
26
+ lockfilePolicy: parseLockfilePolicy(bridge.lockfilePolicy ?? 'nested'),
27
+ gates,
28
+ reactSingletons
29
+ };
30
+ }
31
+ export { normalizeUltramodernBridgeConfig };
@@ -0,0 +1,32 @@
1
+ import "node:module";
2
+ const ultramodernBridgeCliFlags = {
3
+ enabled: '--bridge',
4
+ parentRoot: '--bridge-parent-root',
5
+ workspacePackage: '--bridge-workspace-package',
6
+ workspacePackageName: '--bridge-workspace-package-name',
7
+ testAlias: '--bridge-test-alias',
8
+ dependency: '--bridge-dependency',
9
+ lockfilePolicy: '--bridge-lockfile-policy',
10
+ gate: '--bridge-gate',
11
+ gateCwd: '--bridge-gate-cwd',
12
+ reactSingleton: '--bridge-react-singleton'
13
+ };
14
+ const ultramodernBridgeCliValueFlags = [
15
+ ultramodernBridgeCliFlags.parentRoot,
16
+ ultramodernBridgeCliFlags.workspacePackage,
17
+ ultramodernBridgeCliFlags.workspacePackageName,
18
+ ultramodernBridgeCliFlags.testAlias,
19
+ ultramodernBridgeCliFlags.dependency,
20
+ ultramodernBridgeCliFlags.lockfilePolicy,
21
+ ultramodernBridgeCliFlags.gate,
22
+ ultramodernBridgeCliFlags.gateCwd,
23
+ ultramodernBridgeCliFlags.reactSingleton
24
+ ];
25
+ const ultramodernBridgeCliBooleanFlags = [
26
+ ultramodernBridgeCliFlags.enabled
27
+ ];
28
+ const ultramodernBridgeLockfilePolicies = [
29
+ 'nested',
30
+ 'parent'
31
+ ];
32
+ export { ultramodernBridgeCliBooleanFlags, ultramodernBridgeCliFlags, ultramodernBridgeCliValueFlags, ultramodernBridgeLockfilePolicies };
@@ -0,0 +1,52 @@
1
+ import "node:module";
2
+ import { ultramodernBridgeCliBooleanFlags, ultramodernBridgeCliFlags, ultramodernBridgeLockfilePolicies } from "./schema.js";
3
+ function rejectBooleanFlagValues(args) {
4
+ for (const flag of ultramodernBridgeCliBooleanFlags)if (args.some((arg)=>arg.startsWith(`${flag}=`))) throw new Error(`${flag} does not accept a value.`);
5
+ }
6
+ function readRepeatedOptionValues(args, flag) {
7
+ const values = [];
8
+ for(let index = 0; index < args.length; index++){
9
+ const arg = args[index];
10
+ if (arg === flag) {
11
+ const value = args[index + 1];
12
+ if (!value || value.startsWith('-')) throw new Error(`${flag} requires a value.`);
13
+ values.push(value);
14
+ index += 1;
15
+ continue;
16
+ }
17
+ if (arg.startsWith(`${flag}=`)) values.push(arg.slice(flag.length + 1));
18
+ }
19
+ return values;
20
+ }
21
+ function readSingleValue(args, flag) {
22
+ const values = readRepeatedOptionValues(args, flag);
23
+ if (values.length > 1) throw new Error(`${flag} can be provided only once.`);
24
+ return values[0];
25
+ }
26
+ function readCsvOptionValues(args, flag) {
27
+ return readRepeatedOptionValues(args, flag).flatMap((value)=>value.split(',').map((entry)=>entry.trim()).filter(Boolean));
28
+ }
29
+ function requireNonEmptyValue(value, label) {
30
+ if ('string' != typeof value || 0 === value.trim().length) throw new Error(`${label} must be a non-empty string.`);
31
+ return value.trim();
32
+ }
33
+ function parseLockfilePolicy(value) {
34
+ if (!ultramodernBridgeLockfilePolicies.includes(value)) throw new Error(`${ultramodernBridgeCliFlags.lockfilePolicy} must be "nested" or "parent".`);
35
+ return value;
36
+ }
37
+ function splitAssignment(value, flag, usage) {
38
+ const separator = value.indexOf('=');
39
+ if (-1 === separator) throw new Error(`${flag} must use ${usage}.`);
40
+ return {
41
+ left: value.slice(0, separator),
42
+ right: value.slice(separator + 1)
43
+ };
44
+ }
45
+ function uniqueNonEmptyValues(values, label) {
46
+ const unique = new Set();
47
+ for (const [index, value] of values.entries())unique.add(requireNonEmptyValue(value, `${label}[${index}]`));
48
+ return [
49
+ ...unique
50
+ ];
51
+ }
52
+ export { parseLockfilePolicy, readCsvOptionValues, readRepeatedOptionValues, readSingleValue, rejectBooleanFlagValues, requireNonEmptyValue, splitAssignment, uniqueNonEmptyValues };
@@ -0,0 +1,28 @@
1
+ import "node:module";
2
+ import { defaultReactSingletons } from "./defaults.js";
3
+ function validateParentPackageCoverage(workspacePackages, dependencies) {
4
+ const declaredPackages = new Set();
5
+ for (const [index, entry] of workspacePackages.entries()){
6
+ const label = `bridge.workspacePackages[${index}]`;
7
+ const packageNames = entry.packageNames ?? [];
8
+ 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.`);
9
+ for (const packageName of packageNames)declaredPackages.add(packageName);
10
+ for (const alias of entry.testAliases ?? []){
11
+ if (!packageNames.some((packageName)=>aliasMatchesPackage(alias.alias, packageName))) throw new Error(`${label}.testAliases entry "${alias.alias}" must match one of ${label}.packageNames.`);
12
+ if (pointsAtBuildOutput(alias.target)) throw new Error(`${label}.testAliases target "${alias.target}" must point at source files, not dist output.`);
13
+ }
14
+ }
15
+ const missingDependencies = dependencies.filter((dependency)=>!declaredPackages.has(dependency));
16
+ if (declaredPackages.size > 0 && missingDependencies.length > 0) throw new Error(`Bridge mode dependencies must be declared by bridge.workspacePackages[].packageNames: ${missingDependencies.join(', ')}.`);
17
+ }
18
+ function aliasMatchesPackage(alias, packageName) {
19
+ return alias === packageName || alias.startsWith(`${packageName}/`);
20
+ }
21
+ function pointsAtBuildOutput(target) {
22
+ return target.split(/[\\/]/u).includes('dist');
23
+ }
24
+ function validateReactSingletons(reactSingletons) {
25
+ const missing = defaultReactSingletons.filter((packageName)=>!reactSingletons.includes(packageName));
26
+ if (missing.length > 0) throw new Error(`Bridge mode React singleton/dedupe declarations must include ${defaultReactSingletons.join(' and ')}. Missing: ${missing.join(', ')}.`);
27
+ }
28
+ export { validateParentPackageCoverage, validateReactSingletons };
@@ -0,0 +1,68 @@
1
+ import "node:module";
2
+ import { ultramodernBridgeCliFlags } from "./schema.js";
3
+ import { readRepeatedOptionValues, requireNonEmptyValue, splitAssignment, uniqueNonEmptyValues } from "./shared.js";
4
+ function readWorkspacePackages(args) {
5
+ const drafts = new Map();
6
+ const getDraft = (pattern)=>{
7
+ const normalizedPattern = requireNonEmptyValue(pattern, ultramodernBridgeCliFlags.workspacePackage);
8
+ const existing = drafts.get(normalizedPattern);
9
+ if (existing) return existing;
10
+ const draft = {
11
+ pattern: normalizedPattern,
12
+ packageNames: [],
13
+ testAliases: []
14
+ };
15
+ drafts.set(normalizedPattern, draft);
16
+ return draft;
17
+ };
18
+ for (const pattern of readRepeatedOptionValues(args, ultramodernBridgeCliFlags.workspacePackage))getDraft(pattern);
19
+ for (const value of readRepeatedOptionValues(args, ultramodernBridgeCliFlags.workspacePackageName)){
20
+ const { left: pattern, right: packageNames } = splitAssignment(value, ultramodernBridgeCliFlags.workspacePackageName, '<pattern>=<package-name>[,<package-name>]');
21
+ getDraft(pattern).packageNames.push(...packageNames.split(',').map((packageName)=>packageName.trim()).filter(Boolean));
22
+ }
23
+ for (const value of readRepeatedOptionValues(args, ultramodernBridgeCliFlags.testAlias)){
24
+ const separator = value.indexOf(':');
25
+ if (-1 === separator) throw new Error(`${ultramodernBridgeCliFlags.testAlias} must use <pattern>:<alias>=<target>.`);
26
+ const pattern = value.slice(0, separator);
27
+ const aliasDefinition = value.slice(separator + 1);
28
+ const { left: alias, right: target } = splitAssignment(aliasDefinition, ultramodernBridgeCliFlags.testAlias, '<pattern>:<alias>=<target>');
29
+ getDraft(pattern).testAliases.push({
30
+ alias: requireNonEmptyValue(alias, `${ultramodernBridgeCliFlags.testAlias} alias`),
31
+ target: requireNonEmptyValue(target, `${ultramodernBridgeCliFlags.testAlias} target`)
32
+ });
33
+ }
34
+ return normalizeWorkspacePackages([
35
+ ...drafts.values()
36
+ ]);
37
+ }
38
+ function normalizeWorkspacePackages(workspacePackages) {
39
+ return workspacePackages.map((entry, index)=>{
40
+ const label = `bridge.workspacePackages[${index}]`;
41
+ const packageNames = entry.packageNames && entry.packageNames.length > 0 ? uniqueNonEmptyValues(entry.packageNames, `${label}.packageNames`) : void 0;
42
+ const testAliases = entry.testAliases && entry.testAliases.length > 0 ? normalizeTestAliases(entry.testAliases, label) : void 0;
43
+ return {
44
+ pattern: requireNonEmptyValue(entry.pattern, `${label}.pattern`),
45
+ ...packageNames ? {
46
+ packageNames
47
+ } : {},
48
+ ...testAliases ? {
49
+ testAliases
50
+ } : {}
51
+ };
52
+ });
53
+ }
54
+ function normalizeTestAliases(testAliases, parentLabel) {
55
+ const aliases = new Map();
56
+ for (const [index, alias] of testAliases.entries()){
57
+ const label = `${parentLabel}.testAliases[${index}]`;
58
+ const normalizedAlias = requireNonEmptyValue(alias.alias, `${label}.alias`);
59
+ aliases.set(normalizedAlias, {
60
+ alias: normalizedAlias,
61
+ target: requireNonEmptyValue(alias.target, `${label}.target`)
62
+ });
63
+ }
64
+ return [
65
+ ...aliases.values()
66
+ ];
67
+ }
68
+ export { normalizeWorkspacePackages, readWorkspacePackages };