@bleedingdev/modern-js-create 3.5.0-ultramodern.9 → 3.5.0-ultramodern.90

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 (566) hide show
  1. package/README.md +25 -25
  2. package/bin/run.js +0 -0
  3. package/dist/cjs/cli/flags.cjs +357 -0
  4. package/dist/cjs/cli/help.cjs +108 -0
  5. package/dist/cjs/cli/package-source.cjs +188 -0
  6. package/dist/cjs/cli/project-setup.cjs +162 -0
  7. package/dist/cjs/cli/prompts.cjs +100 -0
  8. package/dist/cjs/index.cjs +35 -585
  9. package/dist/cjs/locale/en.cjs +5 -6
  10. package/dist/cjs/locale/zh.cjs +5 -6
  11. package/dist/cjs/ultramodern-package-source.cjs +0 -32
  12. package/dist/cjs/ultramodern-release-cohort.cjs +206 -0
  13. package/dist/cjs/ultramodern-tooling/commands/cloudflare-output-verify.cjs +136 -0
  14. package/dist/cjs/ultramodern-tooling/commands/context.cjs +131 -0
  15. package/dist/cjs/ultramodern-tooling/commands/mf-types.cjs +55 -0
  16. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.cjs +212 -0
  17. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.cjs +50 -0
  18. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.cjs +87 -0
  19. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.cjs +58 -0
  20. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.cjs +100 -0
  21. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.cjs +100 -0
  22. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.cjs +132 -0
  23. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.cjs +67 -0
  24. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.cjs +206 -0
  25. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.cjs +60 -0
  26. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.cjs +67 -0
  27. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.cjs +67 -0
  28. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-ui-source.cjs +148 -0
  29. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/help.cjs +54 -0
  30. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/install.cjs +52 -0
  31. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/io.cjs +350 -0
  32. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.cjs +200 -0
  33. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-source.cjs +89 -0
  34. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.cjs +476 -0
  35. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.cjs +376 -0
  36. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.cjs +99 -0
  37. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.cjs +135 -0
  38. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect.cjs +425 -0
  39. package/dist/cjs/ultramodern-tooling/commands/options.cjs +59 -0
  40. package/dist/cjs/ultramodern-tooling/commands/routes-generate.cjs +122 -0
  41. package/dist/cjs/ultramodern-tooling/commands/skills.cjs +49 -0
  42. package/dist/cjs/ultramodern-tooling/commands/sync-delivery-unit.cjs +40 -0
  43. package/dist/cjs/ultramodern-tooling/commands/validate.cjs +53 -0
  44. package/dist/cjs/ultramodern-tooling/commands.cjs +27 -491
  45. package/dist/cjs/ultramodern-tooling/config/constants.cjs +48 -0
  46. package/dist/cjs/ultramodern-tooling/config/index.cjs +104 -0
  47. package/dist/cjs/ultramodern-tooling/config/json.cjs +61 -0
  48. package/dist/cjs/ultramodern-tooling/config/load.cjs +62 -0
  49. package/dist/cjs/ultramodern-tooling/config/metadata.cjs +92 -0
  50. package/dist/cjs/ultramodern-tooling/config/normalize.cjs +236 -0
  51. package/dist/cjs/ultramodern-tooling/config/synthesize.cjs +157 -0
  52. package/dist/cjs/ultramodern-tooling/config/types.cjs +18 -0
  53. package/dist/cjs/ultramodern-tooling/config.cjs +23 -133
  54. package/dist/cjs/ultramodern-workspace/add-shell.cjs +274 -0
  55. package/dist/cjs/ultramodern-workspace/add-vertical/constants.cjs +52 -0
  56. package/dist/cjs/ultramodern-workspace/add-vertical/execute.cjs +183 -0
  57. package/dist/cjs/ultramodern-workspace/add-vertical/plan.cjs +255 -0
  58. package/dist/cjs/ultramodern-workspace/add-vertical/preflight.cjs +256 -0
  59. package/dist/cjs/ultramodern-workspace/add-vertical/shell-files.cjs +122 -0
  60. package/dist/cjs/ultramodern-workspace/add-vertical/topology.cjs +152 -0
  61. package/dist/cjs/ultramodern-workspace/add-vertical/transaction.cjs +327 -0
  62. package/dist/cjs/ultramodern-workspace/add-vertical/workspace-state.cjs +137 -0
  63. package/dist/cjs/ultramodern-workspace/add-vertical.cjs +22 -571
  64. package/dist/cjs/ultramodern-workspace/api/checkout-cart.cjs +145 -0
  65. package/dist/cjs/ultramodern-workspace/api/client.cjs +224 -0
  66. package/dist/cjs/ultramodern-workspace/api/contracts.cjs +251 -0
  67. package/dist/cjs/ultramodern-workspace/api/names.cjs +98 -0
  68. package/dist/cjs/ultramodern-workspace/api/rpc.cjs +264 -0
  69. package/dist/cjs/ultramodern-workspace/api/service.cjs +252 -0
  70. package/dist/cjs/ultramodern-workspace/api/shared.cjs +270 -0
  71. package/dist/cjs/ultramodern-workspace/api.cjs +49 -1005
  72. package/dist/cjs/ultramodern-workspace/app-files.cjs +51 -69
  73. package/dist/cjs/ultramodern-workspace/backend-federation.cjs +346 -0
  74. package/dist/cjs/ultramodern-workspace/bridge-config/cli.cjs +71 -0
  75. package/dist/cjs/ultramodern-workspace/bridge-config/defaults.cjs +43 -0
  76. package/dist/cjs/ultramodern-workspace/bridge-config/gates.cjs +93 -0
  77. package/dist/cjs/ultramodern-workspace/bridge-config/index.cjs +60 -0
  78. package/dist/cjs/ultramodern-workspace/bridge-config/normalize.cjs +68 -0
  79. package/dist/cjs/ultramodern-workspace/bridge-config/schema.cjs +78 -0
  80. package/dist/cjs/ultramodern-workspace/bridge-config/shared.cjs +110 -0
  81. package/dist/cjs/ultramodern-workspace/bridge-config/validation.cjs +68 -0
  82. package/dist/cjs/ultramodern-workspace/bridge-config/workspace-packages.cjs +108 -0
  83. package/dist/cjs/ultramodern-workspace/bridge-config.cjs +32 -297
  84. package/dist/cjs/ultramodern-workspace/codesmith.cjs +10 -1
  85. package/dist/cjs/ultramodern-workspace/contracts.cjs +80 -26
  86. package/dist/cjs/ultramodern-workspace/delivery-unit-schema/types.cjs +291 -0
  87. package/dist/cjs/ultramodern-workspace/delivery-unit-schema/up-projection.cjs +188 -0
  88. package/dist/cjs/ultramodern-workspace/delivery-unit-stamp.cjs +56 -0
  89. package/dist/cjs/ultramodern-workspace/delivery-unit-sync.cjs +153 -0
  90. package/dist/cjs/ultramodern-workspace/delivery-unit.cjs +75 -0
  91. package/dist/cjs/ultramodern-workspace/demo-components.cjs +474 -205
  92. package/dist/cjs/ultramodern-workspace/descriptors.cjs +101 -16
  93. package/dist/cjs/ultramodern-workspace/effect-diagnostics.cjs +114 -0
  94. package/dist/cjs/ultramodern-workspace/fs-io.cjs +26 -36
  95. package/dist/cjs/ultramodern-workspace/generation-result.cjs +36 -3
  96. package/dist/cjs/ultramodern-workspace/index.cjs +28 -0
  97. package/dist/cjs/ultramodern-workspace/locales.cjs +3 -17
  98. package/dist/cjs/ultramodern-workspace/mf-validation/constants.cjs +69 -0
  99. package/dist/cjs/ultramodern-workspace/mf-validation/discovery.cjs +77 -0
  100. package/dist/cjs/ultramodern-workspace/mf-validation/inspect.cjs +84 -0
  101. package/dist/cjs/ultramodern-workspace/mf-validation/object-literal.cjs +188 -0
  102. package/dist/cjs/ultramodern-workspace/mf-validation/path-utils.cjs +165 -0
  103. package/dist/cjs/ultramodern-workspace/mf-validation/syntax.cjs +201 -0
  104. package/dist/cjs/ultramodern-workspace/mf-validation/types.cjs +18 -0
  105. package/dist/cjs/ultramodern-workspace/mf-validation/validate.cjs +112 -0
  106. package/dist/cjs/ultramodern-workspace/mf-validation.cjs +6 -529
  107. package/dist/cjs/ultramodern-workspace/module-federation/config.cjs +336 -0
  108. package/dist/cjs/ultramodern-workspace/module-federation/index.cjs +73 -0
  109. package/dist/cjs/ultramodern-workspace/module-federation/reexport-module.cjs +111 -0
  110. package/dist/cjs/ultramodern-workspace/module-federation/remote-refs.cjs +106 -0
  111. package/dist/cjs/ultramodern-workspace/module-federation/shared-config.cjs +53 -0
  112. package/dist/cjs/ultramodern-workspace/module-federation.cjs +18 -477
  113. package/dist/cjs/ultramodern-workspace/naming.cjs +1 -7
  114. package/dist/cjs/ultramodern-workspace/overlay-baseline-guard.cjs +408 -0
  115. package/dist/cjs/ultramodern-workspace/overlays.cjs +39 -5
  116. package/dist/cjs/ultramodern-workspace/package-json.cjs +54 -301
  117. package/dist/cjs/ultramodern-workspace/package-source.cjs +11 -2
  118. package/dist/cjs/ultramodern-workspace/policy.cjs +801 -24
  119. package/dist/cjs/ultramodern-workspace/public-surface.cjs +1 -22
  120. package/dist/cjs/ultramodern-workspace/routes.cjs +8 -157
  121. package/dist/cjs/ultramodern-workspace/shared-patches.cjs +41 -0
  122. package/dist/cjs/ultramodern-workspace/shells.cjs +151 -0
  123. package/dist/cjs/ultramodern-workspace/tooling-command-catalog.cjs +147 -0
  124. package/dist/cjs/ultramodern-workspace/tsconfigs.cjs +200 -0
  125. package/dist/cjs/ultramodern-workspace/types.cjs +27 -0
  126. package/dist/cjs/ultramodern-workspace/versions.cjs +52 -37
  127. package/dist/cjs/ultramodern-workspace/workspace-script-plan.cjs +174 -0
  128. package/dist/cjs/ultramodern-workspace/workspace-scripts.cjs +118 -88
  129. package/dist/cjs/ultramodern-workspace/workspace-validation-contract.cjs +642 -0
  130. package/dist/cjs/ultramodern-workspace/write-app.cjs +148 -0
  131. package/dist/cjs/ultramodern-workspace/write-workspace.cjs +45 -67
  132. package/dist/cjs/ultramodern-workspace/zerops.cjs +108 -0
  133. package/dist/esm/cli/flags.js +262 -0
  134. package/dist/esm/cli/help.js +67 -0
  135. package/dist/esm/cli/package-source.js +124 -0
  136. package/dist/esm/cli/project-setup.js +105 -0
  137. package/dist/esm/cli/prompts.js +51 -0
  138. package/dist/esm/index.js +19 -565
  139. package/dist/esm/locale/en.js +5 -6
  140. package/dist/esm/locale/zh.js +5 -6
  141. package/dist/esm/ultramodern-package-source.js +1 -24
  142. package/dist/esm/ultramodern-release-cohort.js +133 -0
  143. package/dist/esm/ultramodern-tooling/commands/cloudflare-output-verify.js +88 -0
  144. package/dist/esm/ultramodern-tooling/commands/context.js +66 -0
  145. package/dist/esm/ultramodern-tooling/commands/mf-types.js +17 -0
  146. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.js +154 -0
  147. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +12 -0
  148. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.js +38 -0
  149. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.js +10 -0
  150. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +45 -0
  151. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +51 -0
  152. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.js +83 -0
  153. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.js +16 -0
  154. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.js +157 -0
  155. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.js +12 -0
  156. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.js +7 -0
  157. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.js +15 -0
  158. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-ui-source.js +97 -0
  159. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/help.js +16 -0
  160. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/install.js +14 -0
  161. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/io.js +285 -0
  162. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +156 -0
  163. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-source.js +51 -0
  164. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +417 -0
  165. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +329 -0
  166. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +24 -0
  167. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.js +80 -0
  168. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect.js +376 -0
  169. package/dist/esm/ultramodern-tooling/commands/options.js +18 -0
  170. package/dist/esm/ultramodern-tooling/commands/routes-generate.js +74 -0
  171. package/dist/esm/ultramodern-tooling/commands/skills.js +11 -0
  172. package/dist/esm/ultramodern-tooling/commands/sync-delivery-unit.js +1 -0
  173. package/dist/esm/ultramodern-tooling/commands/validate.js +15 -0
  174. package/dist/esm/ultramodern-tooling/commands.js +23 -482
  175. package/dist/esm/ultramodern-tooling/config/constants.js +4 -0
  176. package/dist/esm/ultramodern-tooling/config/index.js +7 -0
  177. package/dist/esm/ultramodern-tooling/config/json.js +10 -0
  178. package/dist/esm/ultramodern-tooling/config/load.js +13 -0
  179. package/dist/esm/ultramodern-tooling/config/metadata.js +37 -0
  180. package/dist/esm/ultramodern-tooling/config/normalize.js +173 -0
  181. package/dist/esm/ultramodern-tooling/config/synthesize.js +108 -0
  182. package/dist/esm/ultramodern-tooling/config/types.js +0 -0
  183. package/dist/esm/ultramodern-tooling/config.js +1 -120
  184. package/dist/esm/ultramodern-workspace/add-shell.js +221 -0
  185. package/dist/esm/ultramodern-workspace/add-vertical/constants.js +5 -0
  186. package/dist/esm/ultramodern-workspace/add-vertical/execute.js +135 -0
  187. package/dist/esm/ultramodern-workspace/add-vertical/plan.js +205 -0
  188. package/dist/esm/ultramodern-workspace/add-vertical/preflight.js +198 -0
  189. package/dist/esm/ultramodern-workspace/add-vertical/shell-files.js +65 -0
  190. package/dist/esm/ultramodern-workspace/add-vertical/topology.js +108 -0
  191. package/dist/esm/ultramodern-workspace/add-vertical/transaction.js +254 -0
  192. package/dist/esm/ultramodern-workspace/add-vertical/workspace-state.js +67 -0
  193. package/dist/esm/ultramodern-workspace/add-vertical.js +6 -544
  194. package/dist/esm/ultramodern-workspace/api/checkout-cart.js +86 -0
  195. package/dist/esm/ultramodern-workspace/api/client.js +183 -0
  196. package/dist/esm/ultramodern-workspace/api/contracts.js +201 -0
  197. package/dist/esm/ultramodern-workspace/api/names.js +33 -0
  198. package/dist/esm/ultramodern-workspace/api/rpc.js +205 -0
  199. package/dist/esm/ultramodern-workspace/api/service.js +211 -0
  200. package/dist/esm/ultramodern-workspace/api/shared.js +226 -0
  201. package/dist/esm/ultramodern-workspace/api.js +6 -984
  202. package/dist/esm/ultramodern-workspace/app-files.js +51 -51
  203. package/dist/esm/ultramodern-workspace/backend-federation.js +281 -0
  204. package/dist/esm/ultramodern-workspace/bridge-config/cli.js +30 -0
  205. package/dist/esm/ultramodern-workspace/bridge-config/defaults.js +5 -0
  206. package/dist/esm/ultramodern-workspace/bridge-config/gates.js +52 -0
  207. package/dist/esm/ultramodern-workspace/bridge-config/index.js +3 -0
  208. package/dist/esm/ultramodern-workspace/bridge-config/normalize.js +30 -0
  209. package/dist/esm/ultramodern-workspace/bridge-config/schema.js +31 -0
  210. package/dist/esm/ultramodern-workspace/bridge-config/shared.js +51 -0
  211. package/dist/esm/ultramodern-workspace/bridge-config/validation.js +27 -0
  212. package/dist/esm/ultramodern-workspace/bridge-config/workspace-packages.js +67 -0
  213. package/dist/esm/ultramodern-workspace/bridge-config.js +1 -270
  214. package/dist/esm/ultramodern-workspace/codesmith.js +10 -1
  215. package/dist/esm/ultramodern-workspace/contracts.js +81 -27
  216. package/dist/esm/ultramodern-workspace/delivery-unit-schema/types.js +235 -0
  217. package/dist/esm/ultramodern-workspace/delivery-unit-schema/up-projection.js +129 -0
  218. package/dist/esm/ultramodern-workspace/delivery-unit-stamp.js +18 -0
  219. package/dist/esm/ultramodern-workspace/delivery-unit-sync.js +104 -0
  220. package/dist/esm/ultramodern-workspace/delivery-unit.js +21 -0
  221. package/dist/esm/ultramodern-workspace/demo-components.js +461 -204
  222. package/dist/esm/ultramodern-workspace/descriptors.js +75 -17
  223. package/dist/esm/ultramodern-workspace/effect-diagnostics.js +76 -0
  224. package/dist/esm/ultramodern-workspace/fs-io.js +27 -18
  225. package/dist/esm/ultramodern-workspace/generation-result.js +33 -3
  226. package/dist/esm/ultramodern-workspace/index.js +4 -0
  227. package/dist/esm/ultramodern-workspace/locales.js +3 -4
  228. package/dist/esm/ultramodern-workspace/mf-validation/constants.js +19 -0
  229. package/dist/esm/ultramodern-workspace/mf-validation/discovery.js +28 -0
  230. package/dist/esm/ultramodern-workspace/mf-validation/inspect.js +46 -0
  231. package/dist/esm/ultramodern-workspace/mf-validation/object-literal.js +144 -0
  232. package/dist/esm/ultramodern-workspace/mf-validation/path-utils.js +89 -0
  233. package/dist/esm/ultramodern-workspace/mf-validation/syntax.js +154 -0
  234. package/dist/esm/ultramodern-workspace/mf-validation/types.js +0 -0
  235. package/dist/esm/ultramodern-workspace/mf-validation/validate.js +57 -0
  236. package/dist/esm/ultramodern-workspace/mf-validation.js +3 -516
  237. package/dist/esm/ultramodern-workspace/module-federation/config.js +289 -0
  238. package/dist/esm/ultramodern-workspace/module-federation/index.js +4 -0
  239. package/dist/esm/ultramodern-workspace/module-federation/reexport-module.js +67 -0
  240. package/dist/esm/ultramodern-workspace/module-federation/remote-refs.js +65 -0
  241. package/dist/esm/ultramodern-workspace/module-federation/shared-config.js +12 -0
  242. package/dist/esm/ultramodern-workspace/module-federation.js +2 -458
  243. package/dist/esm/ultramodern-workspace/naming.js +2 -2
  244. package/dist/esm/ultramodern-workspace/overlay-baseline-guard.js +350 -0
  245. package/dist/esm/ultramodern-workspace/overlays.js +28 -5
  246. package/dist/esm/ultramodern-workspace/package-json.js +48 -283
  247. package/dist/esm/ultramodern-workspace/package-source.js +7 -1
  248. package/dist/esm/ultramodern-workspace/policy.js +784 -10
  249. package/dist/esm/ultramodern-workspace/public-surface.js +2 -2
  250. package/dist/esm/ultramodern-workspace/routes.js +9 -143
  251. package/dist/esm/ultramodern-workspace/shared-patches.js +3 -0
  252. package/dist/esm/ultramodern-workspace/shells.js +92 -0
  253. package/dist/esm/ultramodern-workspace/tooling-command-catalog.js +100 -0
  254. package/dist/esm/ultramodern-workspace/tsconfigs.js +137 -0
  255. package/dist/esm/ultramodern-workspace/types.js +16 -1
  256. package/dist/esm/ultramodern-workspace/versions.js +35 -26
  257. package/dist/esm/ultramodern-workspace/workspace-script-plan.js +124 -0
  258. package/dist/esm/ultramodern-workspace/workspace-scripts.js +115 -85
  259. package/dist/esm/ultramodern-workspace/workspace-validation-contract.js +604 -0
  260. package/dist/esm/ultramodern-workspace/write-app.js +105 -0
  261. package/dist/esm/ultramodern-workspace/write-workspace.js +47 -66
  262. package/dist/esm/ultramodern-workspace/zerops.js +70 -0
  263. package/dist/esm-node/cli/flags.js +263 -0
  264. package/dist/esm-node/cli/help.js +68 -0
  265. package/dist/esm-node/cli/package-source.js +125 -0
  266. package/dist/esm-node/cli/project-setup.js +106 -0
  267. package/dist/esm-node/cli/prompts.js +52 -0
  268. package/dist/esm-node/index.js +19 -565
  269. package/dist/esm-node/locale/en.js +5 -6
  270. package/dist/esm-node/locale/zh.js +5 -6
  271. package/dist/esm-node/ultramodern-package-source.js +1 -24
  272. package/dist/esm-node/ultramodern-release-cohort.js +134 -0
  273. package/dist/esm-node/ultramodern-tooling/commands/cloudflare-output-verify.js +89 -0
  274. package/dist/esm-node/ultramodern-tooling/commands/context.js +67 -0
  275. package/dist/esm-node/ultramodern-tooling/commands/mf-types.js +18 -0
  276. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.js +155 -0
  277. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +13 -0
  278. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.js +39 -0
  279. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.js +11 -0
  280. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +46 -0
  281. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +52 -0
  282. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.js +84 -0
  283. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.js +17 -0
  284. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.js +158 -0
  285. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.js +13 -0
  286. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.js +8 -0
  287. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.js +16 -0
  288. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-ui-source.js +98 -0
  289. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/help.js +17 -0
  290. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/install.js +15 -0
  291. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/io.js +286 -0
  292. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +157 -0
  293. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-source.js +52 -0
  294. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +418 -0
  295. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +330 -0
  296. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +25 -0
  297. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.js +81 -0
  298. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect.js +377 -0
  299. package/dist/esm-node/ultramodern-tooling/commands/options.js +19 -0
  300. package/dist/esm-node/ultramodern-tooling/commands/routes-generate.js +75 -0
  301. package/dist/esm-node/ultramodern-tooling/commands/skills.js +12 -0
  302. package/dist/esm-node/ultramodern-tooling/commands/sync-delivery-unit.js +2 -0
  303. package/dist/esm-node/ultramodern-tooling/commands/validate.js +16 -0
  304. package/dist/esm-node/ultramodern-tooling/commands.js +23 -482
  305. package/dist/esm-node/ultramodern-tooling/config/constants.js +5 -0
  306. package/dist/esm-node/ultramodern-tooling/config/index.js +8 -0
  307. package/dist/esm-node/ultramodern-tooling/config/json.js +11 -0
  308. package/dist/esm-node/ultramodern-tooling/config/load.js +14 -0
  309. package/dist/esm-node/ultramodern-tooling/config/metadata.js +38 -0
  310. package/dist/esm-node/ultramodern-tooling/config/normalize.js +174 -0
  311. package/dist/esm-node/ultramodern-tooling/config/synthesize.js +109 -0
  312. package/dist/esm-node/ultramodern-tooling/config/types.js +1 -0
  313. package/dist/esm-node/ultramodern-tooling/config.js +1 -120
  314. package/dist/esm-node/ultramodern-workspace/add-shell.js +222 -0
  315. package/dist/esm-node/ultramodern-workspace/add-vertical/constants.js +6 -0
  316. package/dist/esm-node/ultramodern-workspace/add-vertical/execute.js +136 -0
  317. package/dist/esm-node/ultramodern-workspace/add-vertical/plan.js +206 -0
  318. package/dist/esm-node/ultramodern-workspace/add-vertical/preflight.js +199 -0
  319. package/dist/esm-node/ultramodern-workspace/add-vertical/shell-files.js +66 -0
  320. package/dist/esm-node/ultramodern-workspace/add-vertical/topology.js +109 -0
  321. package/dist/esm-node/ultramodern-workspace/add-vertical/transaction.js +255 -0
  322. package/dist/esm-node/ultramodern-workspace/add-vertical/workspace-state.js +68 -0
  323. package/dist/esm-node/ultramodern-workspace/add-vertical.js +6 -544
  324. package/dist/esm-node/ultramodern-workspace/api/checkout-cart.js +87 -0
  325. package/dist/esm-node/ultramodern-workspace/api/client.js +184 -0
  326. package/dist/esm-node/ultramodern-workspace/api/contracts.js +202 -0
  327. package/dist/esm-node/ultramodern-workspace/api/names.js +34 -0
  328. package/dist/esm-node/ultramodern-workspace/api/rpc.js +206 -0
  329. package/dist/esm-node/ultramodern-workspace/api/service.js +212 -0
  330. package/dist/esm-node/ultramodern-workspace/api/shared.js +227 -0
  331. package/dist/esm-node/ultramodern-workspace/api.js +6 -984
  332. package/dist/esm-node/ultramodern-workspace/app-files.js +51 -51
  333. package/dist/esm-node/ultramodern-workspace/backend-federation.js +282 -0
  334. package/dist/esm-node/ultramodern-workspace/bridge-config/cli.js +31 -0
  335. package/dist/esm-node/ultramodern-workspace/bridge-config/defaults.js +6 -0
  336. package/dist/esm-node/ultramodern-workspace/bridge-config/gates.js +53 -0
  337. package/dist/esm-node/ultramodern-workspace/bridge-config/index.js +4 -0
  338. package/dist/esm-node/ultramodern-workspace/bridge-config/normalize.js +31 -0
  339. package/dist/esm-node/ultramodern-workspace/bridge-config/schema.js +32 -0
  340. package/dist/esm-node/ultramodern-workspace/bridge-config/shared.js +52 -0
  341. package/dist/esm-node/ultramodern-workspace/bridge-config/validation.js +28 -0
  342. package/dist/esm-node/ultramodern-workspace/bridge-config/workspace-packages.js +68 -0
  343. package/dist/esm-node/ultramodern-workspace/bridge-config.js +1 -270
  344. package/dist/esm-node/ultramodern-workspace/codesmith.js +10 -1
  345. package/dist/esm-node/ultramodern-workspace/contracts.js +81 -27
  346. package/dist/esm-node/ultramodern-workspace/delivery-unit-schema/types.js +236 -0
  347. package/dist/esm-node/ultramodern-workspace/delivery-unit-schema/up-projection.js +130 -0
  348. package/dist/esm-node/ultramodern-workspace/delivery-unit-stamp.js +19 -0
  349. package/dist/esm-node/ultramodern-workspace/delivery-unit-sync.js +105 -0
  350. package/dist/esm-node/ultramodern-workspace/delivery-unit.js +22 -0
  351. package/dist/esm-node/ultramodern-workspace/demo-components.js +461 -204
  352. package/dist/esm-node/ultramodern-workspace/descriptors.js +75 -17
  353. package/dist/esm-node/ultramodern-workspace/effect-diagnostics.js +77 -0
  354. package/dist/esm-node/ultramodern-workspace/fs-io.js +27 -18
  355. package/dist/esm-node/ultramodern-workspace/generation-result.js +33 -3
  356. package/dist/esm-node/ultramodern-workspace/index.js +4 -0
  357. package/dist/esm-node/ultramodern-workspace/locales.js +3 -4
  358. package/dist/esm-node/ultramodern-workspace/mf-validation/constants.js +20 -0
  359. package/dist/esm-node/ultramodern-workspace/mf-validation/discovery.js +29 -0
  360. package/dist/esm-node/ultramodern-workspace/mf-validation/inspect.js +47 -0
  361. package/dist/esm-node/ultramodern-workspace/mf-validation/object-literal.js +145 -0
  362. package/dist/esm-node/ultramodern-workspace/mf-validation/path-utils.js +90 -0
  363. package/dist/esm-node/ultramodern-workspace/mf-validation/syntax.js +155 -0
  364. package/dist/esm-node/ultramodern-workspace/mf-validation/types.js +1 -0
  365. package/dist/esm-node/ultramodern-workspace/mf-validation/validate.js +58 -0
  366. package/dist/esm-node/ultramodern-workspace/mf-validation.js +3 -516
  367. package/dist/esm-node/ultramodern-workspace/module-federation/config.js +290 -0
  368. package/dist/esm-node/ultramodern-workspace/module-federation/index.js +5 -0
  369. package/dist/esm-node/ultramodern-workspace/module-federation/reexport-module.js +68 -0
  370. package/dist/esm-node/ultramodern-workspace/module-federation/remote-refs.js +66 -0
  371. package/dist/esm-node/ultramodern-workspace/module-federation/shared-config.js +13 -0
  372. package/dist/esm-node/ultramodern-workspace/module-federation.js +2 -458
  373. package/dist/esm-node/ultramodern-workspace/naming.js +2 -2
  374. package/dist/esm-node/ultramodern-workspace/overlay-baseline-guard.js +351 -0
  375. package/dist/esm-node/ultramodern-workspace/overlays.js +28 -5
  376. package/dist/esm-node/ultramodern-workspace/package-json.js +48 -283
  377. package/dist/esm-node/ultramodern-workspace/package-source.js +7 -1
  378. package/dist/esm-node/ultramodern-workspace/policy.js +784 -10
  379. package/dist/esm-node/ultramodern-workspace/public-surface.js +2 -2
  380. package/dist/esm-node/ultramodern-workspace/routes.js +9 -143
  381. package/dist/esm-node/ultramodern-workspace/shared-patches.js +4 -0
  382. package/dist/esm-node/ultramodern-workspace/shells.js +93 -0
  383. package/dist/esm-node/ultramodern-workspace/tooling-command-catalog.js +101 -0
  384. package/dist/esm-node/ultramodern-workspace/tsconfigs.js +138 -0
  385. package/dist/esm-node/ultramodern-workspace/types.js +16 -1
  386. package/dist/esm-node/ultramodern-workspace/versions.js +35 -26
  387. package/dist/esm-node/ultramodern-workspace/workspace-script-plan.js +125 -0
  388. package/dist/esm-node/ultramodern-workspace/workspace-scripts.js +115 -85
  389. package/dist/esm-node/ultramodern-workspace/workspace-validation-contract.js +605 -0
  390. package/dist/esm-node/ultramodern-workspace/write-app.js +106 -0
  391. package/dist/esm-node/ultramodern-workspace/write-workspace.js +47 -66
  392. package/dist/esm-node/ultramodern-workspace/zerops.js +71 -0
  393. package/dist/types/cli/flags.d.ts +35 -0
  394. package/dist/types/cli/help.d.ts +2 -0
  395. package/dist/types/cli/package-source.d.ts +15 -0
  396. package/dist/types/cli/project-setup.d.ts +8 -0
  397. package/dist/types/cli/prompts.d.ts +4 -0
  398. package/dist/types/locale/en.d.ts +3 -4
  399. package/dist/types/locale/index.d.ts +6 -8
  400. package/dist/types/locale/zh.d.ts +3 -4
  401. package/dist/types/ultramodern-package-source.d.ts +0 -11
  402. package/dist/types/ultramodern-release-cohort.d.ts +30 -0
  403. package/dist/types/ultramodern-tooling/commands/cloudflare-output-verify.d.ts +2 -0
  404. package/dist/types/ultramodern-tooling/commands/context.d.ts +11 -0
  405. package/dist/types/ultramodern-tooling/commands/mf-types.d.ts +2 -0
  406. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.d.ts +12 -0
  407. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.d.ts +4 -0
  408. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.d.ts +1 -0
  409. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.d.ts +3 -0
  410. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.d.ts +5 -0
  411. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.d.ts +3 -0
  412. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.d.ts +2 -0
  413. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.d.ts +4 -0
  414. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.d.ts +3 -0
  415. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.d.ts +3 -0
  416. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.d.ts +7 -0
  417. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.d.ts +3 -0
  418. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-ui-source.d.ts +3 -0
  419. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/help.d.ts +1 -0
  420. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/install.d.ts +2 -0
  421. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/io.d.ts +20 -0
  422. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.d.ts +9 -0
  423. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/package-source.d.ts +3 -0
  424. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.d.ts +27 -0
  425. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.d.ts +26 -0
  426. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.d.ts +10 -0
  427. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.d.ts +4 -0
  428. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect.d.ts +2 -0
  429. package/dist/types/ultramodern-tooling/commands/options.d.ts +2 -0
  430. package/dist/types/ultramodern-tooling/commands/routes-generate.d.ts +2 -0
  431. package/dist/types/ultramodern-tooling/commands/skills.d.ts +2 -0
  432. package/dist/types/ultramodern-tooling/commands/sync-delivery-unit.d.ts +1 -0
  433. package/dist/types/ultramodern-tooling/commands/validate.d.ts +2 -0
  434. package/dist/types/ultramodern-tooling/commands.d.ts +1 -1
  435. package/dist/types/ultramodern-tooling/config/constants.d.ts +3 -0
  436. package/dist/types/ultramodern-tooling/config/index.d.ts +7 -0
  437. package/dist/types/ultramodern-tooling/config/json.d.ts +2 -0
  438. package/dist/types/ultramodern-tooling/config/load.d.ts +2 -0
  439. package/dist/types/ultramodern-tooling/config/metadata.d.ts +4 -0
  440. package/dist/types/ultramodern-tooling/config/normalize.d.ts +22 -0
  441. package/dist/types/ultramodern-tooling/config/synthesize.d.ts +5 -0
  442. package/dist/types/ultramodern-tooling/config/types.d.ts +45 -0
  443. package/dist/types/ultramodern-tooling/config.d.ts +1 -43
  444. package/dist/types/ultramodern-workspace/add-shell.d.ts +14 -0
  445. package/dist/types/ultramodern-workspace/add-vertical/constants.d.ts +4 -0
  446. package/dist/types/ultramodern-workspace/add-vertical/execute.d.ts +9 -0
  447. package/dist/types/ultramodern-workspace/add-vertical/plan.d.ts +2 -0
  448. package/dist/types/ultramodern-workspace/add-vertical/preflight.d.ts +42 -0
  449. package/dist/types/ultramodern-workspace/add-vertical/shell-files.d.ts +6 -0
  450. package/dist/types/ultramodern-workspace/add-vertical/topology.d.ts +9 -0
  451. package/dist/types/ultramodern-workspace/add-vertical/transaction.d.ts +80 -0
  452. package/dist/types/ultramodern-workspace/add-vertical/workspace-state.d.ts +15 -0
  453. package/dist/types/ultramodern-workspace/add-vertical.d.ts +7 -39
  454. package/dist/types/ultramodern-workspace/api/checkout-cart.d.ts +33 -0
  455. package/dist/types/ultramodern-workspace/api/client.d.ts +6 -0
  456. package/dist/types/ultramodern-workspace/api/contracts.d.ts +15 -0
  457. package/dist/types/ultramodern-workspace/api/names.d.ts +41 -0
  458. package/dist/types/ultramodern-workspace/api/rpc.d.ts +41 -0
  459. package/dist/types/ultramodern-workspace/api/service.d.ts +6 -0
  460. package/dist/types/ultramodern-workspace/api/shared.d.ts +10 -0
  461. package/dist/types/ultramodern-workspace/api.d.ts +6 -73
  462. package/dist/types/ultramodern-workspace/app-files.d.ts +4 -10
  463. package/dist/types/ultramodern-workspace/backend-federation.d.ts +11 -0
  464. package/dist/types/ultramodern-workspace/bridge-config/cli.d.ts +3 -0
  465. package/dist/types/ultramodern-workspace/bridge-config/defaults.d.ts +1 -0
  466. package/dist/types/ultramodern-workspace/bridge-config/gates.d.ts +3 -0
  467. package/dist/types/ultramodern-workspace/bridge-config/index.d.ts +4 -0
  468. package/dist/types/ultramodern-workspace/bridge-config/normalize.d.ts +2 -0
  469. package/dist/types/ultramodern-workspace/bridge-config/schema.d.ts +61 -0
  470. package/dist/types/ultramodern-workspace/bridge-config/shared.d.ts +12 -0
  471. package/dist/types/ultramodern-workspace/bridge-config/validation.d.ts +3 -0
  472. package/dist/types/ultramodern-workspace/bridge-config/workspace-packages.d.ts +3 -0
  473. package/dist/types/ultramodern-workspace/bridge-config.d.ts +1 -64
  474. package/dist/types/ultramodern-workspace/codesmith.d.ts +12 -6
  475. package/dist/types/ultramodern-workspace/contracts.d.ts +3 -3
  476. package/dist/types/ultramodern-workspace/delivery-unit-schema/types.d.ts +291 -0
  477. package/dist/types/ultramodern-workspace/delivery-unit-schema/up-projection.d.ts +189 -0
  478. package/dist/types/ultramodern-workspace/delivery-unit-stamp.d.ts +3 -0
  479. package/dist/types/ultramodern-workspace/delivery-unit-sync.d.ts +6 -0
  480. package/dist/types/ultramodern-workspace/delivery-unit.d.ts +8 -0
  481. package/dist/types/ultramodern-workspace/demo-components.d.ts +14 -3
  482. package/dist/types/ultramodern-workspace/descriptors.d.ts +27 -3
  483. package/dist/types/ultramodern-workspace/effect-diagnostics.d.ts +1 -0
  484. package/dist/types/ultramodern-workspace/fs-io.d.ts +2 -8
  485. package/dist/types/ultramodern-workspace/generation-result.d.ts +3 -1
  486. package/dist/types/ultramodern-workspace/index.d.ts +6 -1
  487. package/dist/types/ultramodern-workspace/locales.d.ts +1 -133
  488. package/dist/types/ultramodern-workspace/mf-validation/constants.d.ts +5 -0
  489. package/dist/types/ultramodern-workspace/mf-validation/discovery.d.ts +2 -0
  490. package/dist/types/ultramodern-workspace/mf-validation/inspect.d.ts +2 -0
  491. package/dist/types/ultramodern-workspace/mf-validation/object-literal.d.ts +4 -0
  492. package/dist/types/ultramodern-workspace/mf-validation/path-utils.d.ts +11 -0
  493. package/dist/types/ultramodern-workspace/mf-validation/syntax.d.ts +5 -0
  494. package/dist/types/ultramodern-workspace/mf-validation/types.d.ts +33 -0
  495. package/dist/types/ultramodern-workspace/mf-validation/validate.d.ts +4 -0
  496. package/dist/types/ultramodern-workspace/mf-validation.d.ts +4 -27
  497. package/dist/types/ultramodern-workspace/module-federation/config.d.ts +5 -0
  498. package/dist/types/ultramodern-workspace/module-federation/index.d.ts +4 -0
  499. package/dist/types/ultramodern-workspace/module-federation/reexport-module.d.ts +4 -0
  500. package/dist/types/ultramodern-workspace/module-federation/remote-refs.d.ts +3 -0
  501. package/dist/types/ultramodern-workspace/module-federation/shared-config.d.ts +2 -0
  502. package/dist/types/ultramodern-workspace/module-federation.d.ts +2 -17
  503. package/dist/types/ultramodern-workspace/naming.d.ts +0 -2
  504. package/dist/types/ultramodern-workspace/overlay-baseline-guard.d.ts +57 -0
  505. package/dist/types/ultramodern-workspace/package-json.d.ts +2 -17
  506. package/dist/types/ultramodern-workspace/package-source.d.ts +1 -0
  507. package/dist/types/ultramodern-workspace/policy.d.ts +254 -47
  508. package/dist/types/ultramodern-workspace/public-api.d.ts +1 -1
  509. package/dist/types/ultramodern-workspace/public-surface.d.ts +5 -15
  510. package/dist/types/ultramodern-workspace/routes.d.ts +0 -9
  511. package/dist/types/ultramodern-workspace/shared-patches.d.ts +1 -0
  512. package/dist/types/ultramodern-workspace/shells.d.ts +51 -0
  513. package/dist/types/ultramodern-workspace/tooling-command-catalog.d.ts +18 -0
  514. package/dist/types/ultramodern-workspace/tsconfigs.d.ts +13 -0
  515. package/dist/types/ultramodern-workspace/types.d.ts +134 -3
  516. package/dist/types/ultramodern-workspace/versions.d.ts +35 -26
  517. package/dist/types/ultramodern-workspace/workspace-script-plan.d.ts +63 -0
  518. package/dist/types/ultramodern-workspace/workspace-scripts.d.ts +15 -5
  519. package/dist/types/ultramodern-workspace/workspace-validation-contract.d.ts +243 -0
  520. package/dist/types/ultramodern-workspace/write-app.d.ts +4 -0
  521. package/dist/types/ultramodern-workspace/write-workspace.d.ts +3 -3
  522. package/dist/types/ultramodern-workspace/zerops.d.ts +2 -0
  523. package/package.json +15 -13
  524. package/template-workspace/.gitignore.handlebars +8 -0
  525. package/template-workspace/.modernjs/release-cohort.json +208 -0
  526. package/template-workspace/AGENTS.md.handlebars +16 -89
  527. package/template-workspace/README.md.handlebars +17 -16
  528. package/template-workspace/patches/@module-federation__bridge-react@2.8.0.patch +185 -0
  529. package/template-workspace/patches/@module-federation__modern-js-v3@2.8.0.patch +259 -0
  530. package/template-workspace/patches/@tanstack__router-core@1.171.14.patch +123 -0
  531. package/template-workspace/patches/drizzle-orm-ts7-strict-declarations.patch +452 -0
  532. package/template-workspace/patches/effect-schema-error-type-id.patch +18 -0
  533. package/template-workspace/pnpm-workspace.yaml.handlebars +8 -25
  534. package/template-workspace/scripts/bootstrap-agent-skills.mjs +11 -3
  535. package/templates/app/shell-frame.tsx +5 -4
  536. package/templates/workspace/apps/modern.config.shared-module-federation.ts.handlebars +37 -0
  537. package/templates/workspace/apps/modern.config.ts.handlebars +191 -0
  538. package/templates/workspace/apps/shared/src/routes/ultramodern-jsonld.ts.handlebars +119 -0
  539. package/templates/workspace/apps/shared/src/routes/ultramodern-route-metadata.ts.handlebars +21 -0
  540. package/templates/workspace/apps/shell-super-app/src/routes/[lang]/page.tsx.handlebars +49 -0
  541. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.helpers.tsx.handlebars +27 -0
  542. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.imports.tsx.handlebars +4 -0
  543. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.tsx.handlebars +44 -0
  544. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.worker.helpers.tsx.handlebars +17 -0
  545. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.worker.imports.tsx.handlebars +1 -0
  546. package/templates/workspace/packages/shared-design-tokens/tokens.css.handlebars +7 -0
  547. package/templates/workspace/tailwind.config.ts.handlebars +3 -0
  548. package/templates/workspace/verticals/server/checkout-cart-handlers.ts.handlebars +49 -0
  549. package/templates/workspace/verticals/server/checkout-cart-state.ts.handlebars +23 -0
  550. package/templates/workspace/verticals/shared/api.checkout-cart-contract-fields.ts.handlebars +1 -0
  551. package/templates/workspace/verticals/shared/api.checkout-cart-endpoints.ts.handlebars +23 -0
  552. package/templates/workspace/verticals/shared/api.checkout-cart-operation-contexts.ts.handlebars +29 -0
  553. package/templates/workspace/verticals/shared/api.checkout-cart-schemas.ts.handlebars +48 -0
  554. package/templates/workspace/verticals/src/api/checkout-cart-client-exports.ts.handlebars +70 -0
  555. package/templates/workspace-scripts/assert-mf-types.mjs.handlebars +4 -4
  556. package/templates/workspace-scripts/check-ultramodern-api-boundaries.mts +40 -2
  557. package/templates/workspace-scripts/generate-node-backend-federation.mjs +379 -0
  558. package/templates/workspace-scripts/generate-public-surface-assets.mjs +5 -5
  559. package/templates/workspace-scripts/materialize-zerops-runtime.mjs +447 -0
  560. package/templates/workspace-scripts/proof-cloudflare-version.mjs +237 -9
  561. package/templates/workspace-scripts/proof-node-backend-federation.mjs +1223 -0
  562. package/templates/workspace-scripts/proof-workerd-ssr.mts +815 -0
  563. package/templates/workspace-scripts/ultramodern-cloudflare-proof.mjs +188 -2
  564. package/templates/workspace-scripts/ultramodern-typecheck.mjs +6 -46
  565. package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +2436 -258
  566. package/template-workspace/patches/@tanstack__router-core@1.171.13.patch +0 -51
@@ -28,228 +28,213 @@ var __webpack_require__ = {};
28
28
  var __webpack_exports__ = {};
29
29
  __webpack_require__.r(__webpack_exports__);
30
30
  __webpack_require__.d(__webpack_exports__, {
31
+ createFederatedComponentsRegistry: ()=>createFederatedComponentsRegistry,
31
32
  createLayout: ()=>createLayout,
32
33
  createRemoteEntry: ()=>createRemoteEntry,
33
34
  createRemoteExposeComponent: ()=>createRemoteExposeComponent,
35
+ createRemoteExposeFragmentPage: ()=>createRemoteExposeFragmentPage,
34
36
  createRemotePage: ()=>createRemotePage,
35
- createRemoteWidget: ()=>createRemoteWidget,
37
+ createRemoteWidgetFragmentPage: ()=>createRemoteWidgetFragmentPage,
36
38
  createShellPage: ()=>createShellPage,
37
39
  createShellRemoteComponents: ()=>createShellRemoteComponents,
40
+ createShellWorkerRemoteComponents: ()=>createShellWorkerRemoteComponents,
41
+ regenerateGeneratedNavigationSurface: ()=>regenerateGeneratedNavigationSurface,
38
42
  remoteComponentOutputPath: ()=>remoteComponentOutputPath
39
43
  });
40
44
  const external_descriptors_cjs_namespaceObject = require("./descriptors.cjs");
45
+ const external_fs_io_cjs_namespaceObject = require("./fs-io.cjs");
41
46
  const external_naming_cjs_namespaceObject = require("./naming.cjs");
42
- function createShellPage(remotes = []) {
43
- const tw = (0, external_naming_cjs_namespaceObject.createTw)((0, external_naming_cjs_namespaceObject.tailwindPrefixForApp)(external_descriptors_cjs_namespaceObject.shellApp));
44
- const remoteCount = String(remotes.length);
45
- return `import { Link, useModernI18n } from '@modern-js/plugin-i18n/runtime';
46
- import ShellFrame from '../shell-frame';
47
- import { UltramodernRouteHead } from '../ultramodern-route-head';
48
- import { VerticalShowcase } from '../vertical-components';
49
- import { ultramodernUiMarker } from '../../ultramodern-build';
50
-
51
- export default function ShellHome() {
52
- const { t } = useModernI18n();
47
+ function createFederatedI18nSetup(app, localeRoot) {
48
+ const namespace = (0, external_descriptors_cjs_namespaceObject.appI18nNamespace)(app);
49
+ return `import { FederatedI18nBoundary, useModernI18n } from '@modern-js/plugin-i18n/runtime';
50
+ import csResource from '${localeRoot}/cs/${namespace}.json';
51
+ import enResource from '${localeRoot}/en/${namespace}.json';
53
52
 
54
- return (
55
- <ShellFrame>
56
- <UltramodernRouteHead />
57
- <section className="${tw('mx-auto grid max-w-7xl items-center gap-8 py-8 md:grid-cols-[0.9fr_1.1fr] lg:gap-14')}">
58
- <div className="${tw('min-w-0')}">
59
- <p className="${tw('text-xs font-black uppercase tracking-[0.18em] text-emerald-800')}">{t('shell.hero.eyebrow')}</p>
60
- <h1 className="${tw('mt-3 max-w-3xl text-5xl font-black leading-none tracking-normal text-stone-950 md:text-7xl')}">{t('shell.title')}</h1>
61
- <p className="${tw('mt-5 max-w-2xl text-lg leading-8 text-stone-600')}">{t('shell.hero.lede')}</p>
62
- <div className="${tw('mt-7 flex flex-wrap gap-3')}">
63
- <Link className="${tw('inline-flex min-h-11 items-center justify-center rounded-full bg-emerald-800 px-5 font-bold text-white shadow-lg shadow-stone-900/10')}" to="/">
64
- {t('shell.hero.primary')}
65
- </Link>
66
- <span className="${tw('inline-flex min-h-11 items-center justify-center rounded-full border border-stone-900/15 bg-white/90 px-5 font-bold text-stone-950 shadow-lg shadow-stone-900/10')}">
67
- {t('shell.hero.secondary')}
68
- </span>
69
- </div>
70
- </div>
71
- <div className="${tw('rounded-3xl bg-white/90 p-6 shadow-2xl shadow-stone-900/15')}">
72
- <div className="${tw('grid gap-4 sm:grid-cols-2')}">
73
- <article className="${tw('rounded-2xl bg-emerald-50 p-5')}">
74
- <span className="${tw('text-sm font-black uppercase tracking-[0.16em] text-emerald-800')}">{t('shell.hero.cardOneKicker')}</span>
75
- <strong className="${tw('mt-3 block text-3xl font-black text-stone-950')}">${remoteCount}</strong>
76
- <p className="${tw('mt-2 text-sm font-semibold text-stone-600')}">{t('shell.hero.cardOne')}</p>
77
- </article>
78
- <article className="${tw('rounded-2xl bg-amber-50 p-5')}">
79
- <span className="${tw('text-sm font-black uppercase tracking-[0.16em] text-amber-800')}">{t('shell.hero.cardTwoKicker')}</span>
80
- <strong className="${tw('mt-3 block text-3xl font-black text-stone-950')}">SSR</strong>
81
- <p className="${tw('mt-2 text-sm font-semibold text-stone-600')}">{t('shell.hero.cardTwo')}</p>
82
- </article>
83
- </div>
84
- </div>
85
- </section>
86
- <VerticalShowcase />
87
- <p className="${tw('sr-only')}" data-testid="ultramodern-preset">presetUltramodern workspace</p>
88
- <p className="${tw('sr-only')}" data-build-marker={ultramodernUiMarker.build} data-testid="ultramodern-ui-marker">
89
- {ultramodernUiMarker.appId}:{ultramodernUiMarker.version}
90
- </p>
91
- </ShellFrame>
92
- );
53
+ const federatedI18nLanguages = ['en', 'cs'];
54
+ const federatedI18nResources = {
55
+ cs: { ${JSON.stringify(namespace)}: csResource },
56
+ en: { ${JSON.stringify(namespace)}: enResource },
57
+ };`;
93
58
  }
94
- `;
59
+ function createFederatedI18nBoundary(namespace, content) {
60
+ return `<FederatedI18nBoundary
61
+ defaultNamespace="${namespace}"
62
+ fallbackLanguage="en"
63
+ resources={federatedI18nResources}
64
+ supportedLanguages={federatedI18nLanguages}
65
+ >
66
+ ${content}
67
+ </FederatedI18nBoundary>`;
95
68
  }
96
- function createShellRemoteComponents(scope, remotes = []) {
97
- const tw = (0, external_naming_cjs_namespaceObject.createTw)((0, external_naming_cjs_namespaceObject.tailwindPrefixForApp)(external_descriptors_cjs_namespaceObject.shellApp));
69
+ function createShellPage(shell, remotes = []) {
70
+ const tw = (0, external_naming_cjs_namespaceObject.createTw)((0, external_naming_cjs_namespaceObject.tailwindPrefixForApp)(shell));
71
+ const remoteCount = String(remotes.length);
72
+ return (0, external_fs_io_cjs_namespaceObject.renderFileTemplate)('workspace/apps/shell-super-app/src/routes/[lang]/page.tsx', {
73
+ value0: tw('mx-auto grid max-w-7xl items-center gap-8 py-8 md:grid-cols-[0.9fr_1.1fr] lg:gap-14'),
74
+ value1: tw('min-w-0'),
75
+ value2: tw('text-xs font-black uppercase tracking-[0.18em] text-emerald-800'),
76
+ value3: tw('mt-3 max-w-3xl text-5xl font-black leading-none tracking-normal text-stone-950 md:text-7xl'),
77
+ value4: tw('mt-5 max-w-2xl text-lg leading-8 text-stone-600'),
78
+ value5: tw('mt-7 flex flex-wrap gap-3'),
79
+ value6: tw('inline-flex min-h-11 items-center justify-center rounded-full bg-emerald-800 px-5 font-bold text-white shadow-lg shadow-stone-900/10'),
80
+ value7: tw('inline-flex min-h-11 items-center justify-center rounded-full border border-stone-900/15 bg-white/90 px-5 font-bold text-stone-950 shadow-lg shadow-stone-900/10'),
81
+ value8: tw('rounded-3xl bg-white/90 p-6 shadow-2xl shadow-stone-900/15'),
82
+ value9: tw('grid gap-4 sm:grid-cols-2'),
83
+ value10: tw('rounded-2xl bg-emerald-50 p-5'),
84
+ value11: tw('text-sm font-black uppercase tracking-[0.16em] text-emerald-800'),
85
+ value12: tw('mt-3 block text-3xl font-black text-stone-950'),
86
+ value13: remoteCount,
87
+ value14: tw('mt-2 text-sm font-semibold text-stone-600'),
88
+ value15: tw('rounded-2xl bg-amber-50 p-5'),
89
+ value16: tw('text-sm font-black uppercase tracking-[0.16em] text-amber-800'),
90
+ value17: tw('mt-3 block text-3xl font-black text-stone-950'),
91
+ value18: tw('mt-2 text-sm font-semibold text-stone-600'),
92
+ value19: tw('sr-only'),
93
+ value20: tw('sr-only')
94
+ });
95
+ }
96
+ function createShellRemoteComponentsSource(shell, remotes = [], worker = false) {
97
+ const tw = (0, external_naming_cjs_namespaceObject.createTw)((0, external_naming_cjs_namespaceObject.tailwindPrefixForApp)(shell));
98
98
  const widgetRemotes = remotes.filter((remote)=>Object.hasOwn(remote.exposes ?? {}, './Widget'));
99
- const serverImports = widgetRemotes.map((remote)=>`import ${(0, external_naming_cjs_namespaceObject.toPascalCase)(remote.id)}WidgetServer from '${(0, external_naming_cjs_namespaceObject.packageName)(scope, remote.packageSuffix)}/Widget';`).join('\n');
100
- const hydratedExports = widgetRemotes.map((remote)=>{
99
+ const remoteComponentExports = widgetRemotes.map((remote)=>{
101
100
  const componentName = `${(0, external_naming_cjs_namespaceObject.toPascalCase)(remote.id)}Widget`;
102
- return `const ${componentName} = createHydratedRemote(${componentName}Server, '${(0, external_descriptors_cjs_namespaceObject.remoteDependencyAlias)(remote)}/Widget');`;
101
+ return worker ? `const ${componentName} = createRemoteComponent(
102
+ '${remote.id}',
103
+ './Widget',
104
+ );` : `const ${componentName} = createRemoteComponent(
105
+ '${remote.id}',
106
+ './Widget',
107
+ () => import('${(0, external_descriptors_cjs_namespaceObject.remoteDependencyAlias)(remote)}/Widget'),
108
+ );`;
103
109
  }).join('\n');
104
- const federationImports = widgetRemotes.length > 0 ? `import {
105
- classifyModuleFederationFallback,
106
- createModuleFederationFallbackTelemetry,
107
- emitModuleFederationFallbackTelemetry,
108
- toModuleFederationFallbackAttributes,
109
- } from '@modern-js/runtime/module-federation';
110
- import { createLazyComponent } from '@module-federation/bridge-react';
111
- import { getInstance, loadRemote } from '@module-federation/modern-js-v3/runtime';
112
- import { Suspense, useEffect, useMemo, useState } from 'react';
113
- import type { ComponentType } from 'react';
114
- ${serverImports}
115
- ` : '';
116
- const federationHelpers = widgetRemotes.length > 0 ? `interface RemoteComponentModule {
117
- default: ComponentType;
118
- }
119
-
120
- const loadRemoteComponent = (specifier: string) =>
121
- loadRemote<RemoteComponentModule>(specifier) as Promise<RemoteComponentModule>;
122
-
123
- const createRemoteFallback = (specifier: string) =>
124
- ({ error }: { error: Error }) => {
125
- const { t } = useModernI18n();
126
- const classification = classifyModuleFederationFallback(error);
127
- const telemetryEntry =
128
- typeof window === 'undefined' ? undefined : window.location.href;
129
- const telemetry = createModuleFederationFallbackTelemetry({
130
- appName: '${external_descriptors_cjs_namespaceObject.shellApp.id}',
131
- classification,
132
- ...(telemetryEntry === undefined ? {} : { entry: telemetryEntry }),
133
- error,
134
- eventName: 'mf.client.remote.fallback',
135
- exportName: 'default',
136
- phase: 'load',
137
- remote: specifier,
138
- status: 'degraded',
139
- });
140
-
141
- useEffect(() => {
142
- void emitModuleFederationFallbackTelemetry({
143
- appName: telemetry.appName,
144
- classification,
145
- ...(telemetry.entry === undefined ? {} : { entry: telemetry.entry }),
146
- error,
147
- eventName: telemetry.eventName,
148
- exportName: 'default',
149
- metadata: telemetry.metadata,
150
- phase: telemetry.phase,
151
- remote: specifier,
152
- status: 'degraded',
153
- });
154
- }, [classification, error, telemetry]);
155
-
156
- return <div className="${tw('rounded-xl border border-red-900/20 bg-red-50 px-4 py-3 text-sm font-semibold text-red-900')}" data-remote-error={error.name} {...toModuleFederationFallbackAttributes(telemetry)}>{t('shell.remoteUnavailable')}</div>;
157
- };
158
-
159
- const createHydratedRemote =
160
- (ServerComponent: ComponentType, specifier: string) =>
161
- function HydratedRemote() {
162
- const [hydrated, setHydrated] = useState(false);
163
-
164
- useEffect(() => {
165
- setHydrated(true);
166
- }, []);
167
-
168
- const FederatedComponent = useMemo(() => {
169
- if (!hydrated) {
170
- return null;
171
- }
172
- const instance = getInstance();
173
- if (instance === null || instance === undefined) {
174
- return null;
175
- }
176
- return createLazyComponent({
177
- export: 'default',
178
- fallback: createRemoteFallback(specifier),
179
- instance,
180
- loader: () => loadRemoteComponent(specifier),
181
- loading: <ServerComponent />,
182
- });
183
- }, [hydrated]);
184
-
185
- if (FederatedComponent === null) {
186
- return <ServerComponent />;
187
- }
188
-
189
- return (
190
- <Suspense fallback={<ServerComponent />}>
191
- <FederatedComponent />
192
- </Suspense>
193
- );
194
- };
195
- ` : '';
110
+ const federationImports = widgetRemotes.length > 0 ? (0, external_fs_io_cjs_namespaceObject.renderFileTemplate)(worker ? 'workspace/apps/shell-super-app/src/routes/vertical-components.worker.imports.tsx' : 'workspace/apps/shell-super-app/src/routes/vertical-components.imports.tsx', {}) : '';
111
+ const federationHelpers = widgetRemotes.length > 0 ? (0, external_fs_io_cjs_namespaceObject.renderFileTemplate)(worker ? 'workspace/apps/shell-super-app/src/routes/vertical-components.worker.helpers.tsx' : 'workspace/apps/shell-super-app/src/routes/vertical-components.helpers.tsx', {
112
+ value0: shell.id,
113
+ value1: tw('rounded-xl border border-red-900/20 bg-red-50 px-4 py-3 text-sm font-semibold text-red-900')
114
+ }) : '';
196
115
  const showcaseItems = widgetRemotes.map((remote)=>{
197
116
  const componentName = `${(0, external_naming_cjs_namespaceObject.toPascalCase)(remote.id)}Widget`;
198
117
  return ` <${componentName} key="${remote.id}" />`;
199
118
  }).join('\n');
119
+ const showcaseGridClassName = tw('grid gap-4 md:grid-cols-2');
120
+ const showcaseGrid = 0 === widgetRemotes.length ? `<div className="${showcaseGridClassName}" />` : `<div className="${showcaseGridClassName}">
121
+ ${showcaseItems}
122
+ </div>`;
200
123
  const remoteCount = String(widgetRemotes.length);
201
- return `${federationImports}import { Link, useModernI18n } from '@modern-js/plugin-i18n/runtime';
202
-
203
- const widgetCount = Number('${remoteCount}');
204
-
205
- ${federationHelpers}
206
- ${hydratedExports}
207
-
208
- export const Header = () => {
209
- const { t } = useModernI18n();
210
-
211
- return (
212
- <header className="${tw('flex min-w-0 flex-wrap items-center gap-x-8 gap-y-2 md:flex-1')}" data-modern-boundary-id="${external_descriptors_cjs_namespaceObject.shellApp.mfName}" data-modern-mf-expose="shell/Header">
213
- <Link className="${tw('whitespace-nowrap text-xl font-black tracking-normal text-stone-950 no-underline')}" to="/">{t('shell.title')}</Link>
214
- </header>
215
- );
216
- };
217
-
218
- export const StatusBadge = () => {
219
- const { t } = useModernI18n();
220
-
221
- return (
222
- <span className="${tw('inline-flex h-10 shrink-0 items-center justify-center rounded-full border border-stone-900/15 bg-white px-4 text-sm font-extrabold text-stone-950 shadow-lg shadow-stone-900/5')}">
223
- {widgetCount} {t('shell.hero.cardOneKicker')}
224
- </span>
225
- );
226
- };
227
-
228
- export const VerticalShowcase = () => {
229
- const { t } = useModernI18n();
230
-
231
- if (widgetCount === 0) {
232
- return (
233
- <section className="${tw('mx-auto mt-12 max-w-7xl rounded-2xl bg-white/90 p-6 shadow-xl shadow-stone-900/10')}">
234
- <p className="${tw('text-lg font-bold text-stone-700')}">{t('shell.hero.empty')}</p>
235
- </section>
236
- );
237
- }
124
+ return (0, external_fs_io_cjs_namespaceObject.renderFileTemplate)('workspace/apps/shell-super-app/src/routes/vertical-components.tsx', {
125
+ value0: federationImports,
126
+ value1: remoteCount,
127
+ value2: federationHelpers,
128
+ value3: remoteComponentExports,
129
+ value4: tw('flex min-w-0 flex-wrap items-center gap-x-8 gap-y-2 md:flex-1'),
130
+ value5: shell.mfName,
131
+ value6: tw('whitespace-nowrap text-xl font-black tracking-normal text-stone-950 no-underline'),
132
+ value7: tw('inline-flex h-10 shrink-0 items-center justify-center rounded-full border border-stone-900/15 bg-white px-4 text-sm font-extrabold text-stone-950 shadow-lg shadow-stone-900/5'),
133
+ value8: tw('mx-auto mt-12 max-w-7xl rounded-2xl bg-white/90 p-6 shadow-xl shadow-stone-900/10'),
134
+ value9: tw('text-lg font-bold text-stone-700'),
135
+ value10: tw('mx-auto mt-12 max-w-7xl'),
136
+ value11: shell.mfName,
137
+ value12: showcaseGrid
138
+ });
139
+ }
140
+ function createShellRemoteComponents(shell, remotes = []) {
141
+ return createShellRemoteComponentsSource(shell, remotes);
142
+ }
143
+ function createShellWorkerRemoteComponents(shell, remotes = []) {
144
+ return createShellRemoteComponentsSource(shell, remotes, true);
145
+ }
146
+ function federatedRegistryEntries(scope, host, remotes) {
147
+ const referencedRemotes = (0, external_descriptors_cjs_namespaceObject.resolveRemoteRefs)(host, remotes);
148
+ const entries = referencedRemotes.flatMap((remote)=>(0, external_descriptors_cjs_namespaceObject.distributedSsrExposes)(remote).map((expose)=>({
149
+ remote,
150
+ expose
151
+ })));
152
+ const exposeNameCounts = new Map();
153
+ for (const { expose } of entries){
154
+ const exposeName = (0, external_naming_cjs_namespaceObject.toPascalCase)(expose.replace(/^\.\//u, ''));
155
+ exposeNameCounts.set(exposeName, (exposeNameCounts.get(exposeName) ?? 0) + 1);
156
+ }
157
+ return entries.map(({ remote, expose })=>{
158
+ const exposeName = (0, external_naming_cjs_namespaceObject.toPascalCase)(expose.replace(/^\.\//u, ''));
159
+ const exportName = 1 === exposeNameCounts.get(exposeName) ? exposeName : `${(0, external_naming_cjs_namespaceObject.toPascalCase)(remote.id)}${exposeName}`;
160
+ const exposeSubpath = expose.replace(/^\.\//u, '');
161
+ return {
162
+ expose,
163
+ exportName,
164
+ packageSpecifier: `${(0, external_naming_cjs_namespaceObject.packageName)(scope, remote.packageSuffix)}/${exposeSubpath}`,
165
+ remoteAlias: `${(0, external_descriptors_cjs_namespaceObject.remoteDependencyAlias)(remote)}/${exposeSubpath}`,
166
+ remoteId: remote.id
167
+ };
168
+ }).toSorted((left, right)=>left.exportName.localeCompare(right.exportName));
169
+ }
170
+ function createFederatedComponentsRegistry(scope, host, remotes, worker = false) {
171
+ const entries = federatedRegistryEntries(scope, host, remotes);
172
+ const typeImports = entries.map((entry)=>`import type ${entry.exportName}Component from '${entry.packageSpecifier}';`).join('\n');
173
+ const propTypes = entries.map((entry)=>`type ${entry.exportName}Props = RemoteComponentProps<typeof ${entry.exportName}Component>;`).join('\n');
174
+ const componentEntries = entries.map((entry)=>worker ? ` ${entry.exportName}: (props: ${entry.exportName}Props) => (
175
+ <DistributedSsrBoundary
176
+ expose="${entry.expose}"
177
+ fallback={fallback}
178
+ fragmentProps={props}
179
+ remote="${entry.remoteId}"
180
+ >
181
+ {null}
182
+ </DistributedSsrBoundary>
183
+ ),` : ` ${entry.exportName}: createDistributedSsrComponent<${entry.exportName}Props>({
184
+ createComponent: () =>
185
+ createLazyComponent<
186
+ RemoteComponentModule<${entry.exportName}Props>,
187
+ 'default'
188
+ >({
189
+ export: 'default',
190
+ fallback,
191
+ instance: getInstance(),
192
+ loader: () =>
193
+ import('${entry.remoteAlias}') as Promise<
194
+ RemoteComponentModule<${entry.exportName}Props>
195
+ >,
196
+ loading: null,
197
+ }),
198
+ expose: '${entry.expose}',
199
+ fallback,
200
+ remote: '${entry.remoteId}',
201
+ }),`).join('\n');
202
+ const runtimeImports = worker ? "import { DistributedSsrBoundary } from '@modern-js/runtime/module-federation';\nimport type { ComponentType, ReactNode } from 'react';" : "import { createLazyComponent } from '@module-federation/modern-js-v3/react';\nimport { getInstance } from '@module-federation/modern-js-v3/runtime';\nimport { createDistributedSsrComponent } from '@modern-js/runtime/module-federation';\nimport type { ComponentType, FunctionComponent, ReactNode } from 'react';";
203
+ const moduleType = `
204
+ ${worker ? '' : `interface RemoteComponentModule<Props extends object> {
205
+ default: FunctionComponent<Props>;
206
+ }
207
+ `}type RemoteComponentProps<Component> =
208
+ Component extends ComponentType<infer Props>
209
+ ? Props extends object
210
+ ? Props
211
+ : Record<string, never>
212
+ : Record<string, never>;
213
+ `;
214
+ return `${runtimeImports}
215
+ ${typeImports}
238
216
 
239
- return (
240
- <section className="${tw('mx-auto mt-12 max-w-7xl')}" data-modern-boundary-id="${external_descriptors_cjs_namespaceObject.shellApp.mfName}">
241
- <div className="${tw('grid gap-4 md:grid-cols-2')}">
242
- ${showcaseItems}
243
- </div>
244
- </section>
245
- );
246
- };
217
+ ${propTypes}
218
+ ${moduleType}
219
+ export const createFederatedComponents = (fallback: ReactNode) => ({
220
+ ${componentEntries}
221
+ });
247
222
  `;
248
223
  }
249
224
  function createRemotePage(app) {
250
225
  const tw = (0, external_naming_cjs_namespaceObject.createTw)((0, external_naming_cjs_namespaceObject.tailwindPrefixForApp)(app));
251
226
  const listApiItems = `list${(0, external_naming_cjs_namespaceObject.toPascalCase)((0, external_descriptors_cjs_namespaceObject.resolveApiStem)(app))}`;
252
- const apiImport = (0, external_descriptors_cjs_namespaceObject.appHasApi)(app) ? `import { useModernI18n } from '@modern-js/plugin-i18n/runtime';
227
+ const rpcApi = 'rpc' === (0, external_descriptors_cjs_namespaceObject.resolveApiProtocol)(app);
228
+ const apiImport = (0, external_descriptors_cjs_namespaceObject.appHasApi)(app) ? rpcApi ? `import { useModernI18n } from '@modern-js/plugin-i18n/runtime';
229
+ import { Link } from '@modern-js/plugin-tanstack/runtime';
230
+ import { useEffect, useState } from 'react';
231
+ import {
232
+ Effect,
233
+ ${listApiItems}Rpc,
234
+ } from '../../api/${(0, external_descriptors_cjs_namespaceObject.resolveApiStem)(app)}-rpc-client';
235
+ import { UltramodernRouteHead } from '../ultramodern-route-head';
236
+ import { ultramodernUiMarker } from '../../ultramodern-build';
237
+ ` : `import { useModernI18n } from '@modern-js/plugin-i18n/runtime';
253
238
  import { Link } from '@modern-js/plugin-tanstack/runtime';
254
239
  import { useEffect, useState } from 'react';
255
240
  import {
@@ -264,8 +249,8 @@ import { ultramodernUiMarker } from '../../ultramodern-build';
264
249
 
265
250
  useEffect(() => {
266
251
  let cancelled = false;
267
- void runEffectRequest(
268
- ${listApiItems}({ limit: 1 }).pipe(
252
+ void ${rpcApi ? 'Effect.runPromise' : 'runEffectRequest'}(
253
+ ${rpcApi ? `${listApiItems}Rpc(1)` : `${listApiItems}({ limit: 1 })`}.pipe(
269
254
  Effect.match({
270
255
  onFailure: () => {
271
256
  if (cancelled) {
@@ -336,9 +321,11 @@ export default function Layout() {
336
321
  function createRemoteEntry(app) {
337
322
  const tw = (0, external_naming_cjs_namespaceObject.createTw)((0, external_naming_cjs_namespaceObject.tailwindPrefixForApp)(app));
338
323
  const domain = app.domain ?? app.id;
339
- return `import { useModernI18n } from '@modern-js/plugin-i18n/runtime';
324
+ const namespace = (0, external_descriptors_cjs_namespaceObject.appI18nNamespace)(app);
325
+ const componentName = `${(0, external_naming_cjs_namespaceObject.toPascalCase)(domain)}Route`;
326
+ return `${createFederatedI18nSetup(app, '../locales')}
340
327
 
341
- export default function ${(0, external_naming_cjs_namespaceObject.toPascalCase)(domain)}Route() {
328
+ const ${componentName}Content = () => {
342
329
  const { t } = useModernI18n();
343
330
 
344
331
  return (
@@ -347,6 +334,12 @@ export default function ${(0, external_naming_cjs_namespaceObject.toPascalCase)(
347
334
  <p className="${tw('mt-2 text-stone-600')}">{t('${domain}.routeSurface')}</p>
348
335
  </section>
349
336
  );
337
+ };
338
+
339
+ export default function ${componentName}() {
340
+ return (
341
+ ${createFederatedI18nBoundary(namespace, `<${componentName}Content />`)}
342
+ );
350
343
  }
351
344
  `;
352
345
  }
@@ -354,9 +347,10 @@ function createRemoteWidget(app) {
354
347
  const tw = (0, external_naming_cjs_namespaceObject.createTw)((0, external_naming_cjs_namespaceObject.tailwindPrefixForApp)(app));
355
348
  const domain = app.domain ?? app.id;
356
349
  const componentName = `${(0, external_naming_cjs_namespaceObject.toPascalCase)(domain)}Widget`;
357
- return `import { useModernI18n } from '@modern-js/plugin-i18n/runtime';
350
+ const namespace = (0, external_descriptors_cjs_namespaceObject.appI18nNamespace)(app);
351
+ return `${createFederatedI18nSetup(app, '../../locales')}
358
352
 
359
- export default function ${componentName}() {
353
+ const ${componentName}Content = () => {
360
354
  const { t } = useModernI18n();
361
355
 
362
356
  return (
@@ -365,6 +359,41 @@ export default function ${componentName}() {
365
359
  <p className="${tw('mt-2 text-stone-600')}">{t('${domain}.widgetBody')}</p>
366
360
  </section>
367
361
  );
362
+ };
363
+
364
+ export default function ${componentName}() {
365
+ return (
366
+ ${createFederatedI18nBoundary(namespace, `<${componentName}Content />`)}
367
+ );
368
+ }
369
+ `;
370
+ }
371
+ function createRemoteWidgetFragmentPage(app) {
372
+ return createRemoteExposeFragmentPage(app, './Widget');
373
+ }
374
+ function createRemoteExposeFragmentPage(app, expose) {
375
+ const componentPath = app.exposes?.[expose];
376
+ if (!componentPath?.startsWith('./src/')) throw new Error(`Cannot generate an SSR fragment route for ${app.id} ${expose}: invalid expose path`);
377
+ const importPath = `../../../../../${componentPath.replace(/^\.\/src\//u, '').replace(/\.[cm]?[jt]sx?$/u, '')}`;
378
+ const componentName = (0, external_naming_cjs_namespaceObject.toPascalCase)(expose.replace(/^\.\//u, ''));
379
+ const pageName = `${componentName}FragmentPage`;
380
+ return `import type { ComponentProps } from 'react';
381
+ import { useDistributedSsrFragmentProps } from '@modern-js/runtime/module-federation/distributed-ssr';
382
+ import ${componentName} from '${importPath}';
383
+
384
+ export default function ${pageName}() {
385
+ const props = useDistributedSsrFragmentProps<ComponentProps<typeof ${componentName}>>({
386
+ boundaryId: '${app.mfName}',
387
+ expose: '${expose}',
388
+ });
389
+
390
+ return (
391
+ <>
392
+ <template data-modern-boundary-id="${app.mfName}" data-modern-distributed-ssr-marker="start" data-modern-mf-expose="${expose}" />
393
+ <${componentName} {...props} />
394
+ <template data-modern-boundary-id="${app.mfName}" data-modern-distributed-ssr-marker="end" data-modern-mf-expose="${expose}" />
395
+ </>
396
+ );
368
397
  }
369
398
  `;
370
399
  }
@@ -373,9 +402,10 @@ function createRemoteExposeComponent(app, expose) {
373
402
  if ('./Widget' === expose) return createRemoteWidget(app);
374
403
  const componentName = `${(0, external_naming_cjs_namespaceObject.toPascalCase)(app.domain ?? app.id)}${(0, external_naming_cjs_namespaceObject.toPascalCase)(expose.replace(/^\.\//u, ''))}`;
375
404
  const domain = app.domain ?? app.id;
376
- return `import { useModernI18n } from '@modern-js/plugin-i18n/runtime';
405
+ const namespace = (0, external_descriptors_cjs_namespaceObject.appI18nNamespace)(app);
406
+ return `${createFederatedI18nSetup(app, '../../locales')}
377
407
 
378
- export default function ${componentName}() {
408
+ const ${componentName}Content = () => {
379
409
  const { t } = useModernI18n();
380
410
 
381
411
  return (
@@ -384,6 +414,12 @@ export default function ${componentName}() {
384
414
  <p className="${tw('mt-2 text-stone-600')}">{t('${domain}.federatedSurface')}</p>
385
415
  </section>
386
416
  );
417
+ };
418
+
419
+ export default function ${componentName}() {
420
+ return (
421
+ ${createFederatedI18nBoundary(namespace, `<${componentName}Content />`)}
422
+ );
387
423
  }
388
424
  `;
389
425
  }
@@ -392,22 +428,255 @@ function remoteComponentOutputPath(app, expose) {
392
428
  if (!exposePath?.startsWith('./src/components/')) return;
393
429
  return `${app.directory}/${exposePath.replace(/^\.\//u, '')}`;
394
430
  }
431
+ const tanstackRuntimeModule = '@modern-js/plugin-tanstack/runtime';
432
+ function ensureNamedImport(source, moduleName, names) {
433
+ const importEndMarker = `from '${moduleName}';`;
434
+ const importEnd = source.indexOf(importEndMarker);
435
+ if (importEnd >= 0) {
436
+ const importStart = source.lastIndexOf('import ', importEnd);
437
+ const openBrace = source.indexOf('{', importStart);
438
+ const closeBrace = source.indexOf('}', openBrace);
439
+ if (openBrace >= 0 && closeBrace >= 0 && closeBrace < importEnd) {
440
+ const existingNames = source.slice(openBrace + 1, closeBrace).split(',').map((name)=>name.trim()).filter(Boolean);
441
+ const missingNames = names.filter((name)=>!existingNames.includes(name));
442
+ if (0 === missingNames.length) return source;
443
+ const importedNames = [
444
+ ...existingNames,
445
+ ...missingNames
446
+ ].toSorted((left, right)=>left.localeCompare(right));
447
+ return `${source.slice(0, openBrace + 1)} ${importedNames.join(', ')} ${source.slice(closeBrace)}`;
448
+ }
449
+ }
450
+ const firstImportEnd = source.indexOf('\n');
451
+ const importLine = `import { ${names.join(', ')} } from '${moduleName}';\n`;
452
+ return firstImportEnd < 0 ? `${importLine}${source}` : `${source.slice(0, firstImportEnd + 1)}${importLine}${source.slice(firstImportEnd + 1)}`;
453
+ }
454
+ function ensureNavigateHook(source) {
455
+ if (source.includes('const navigate = useNavigate();')) return source;
456
+ const functionStart = source.indexOf('export default function ');
457
+ const parametersEnd = source.indexOf(')', functionStart);
458
+ const bodyStart = source.indexOf('{', parametersEnd);
459
+ if (functionStart < 0 || parametersEnd < 0 || bodyStart < 0) return source;
460
+ return `${source.slice(0, bodyStart + 1)}\n const navigate = useNavigate();${source.slice(bodyStart + 1)}`;
461
+ }
462
+ function closingParenthesis(source, openingParenthesis) {
463
+ let depth = 0;
464
+ let quote = '';
465
+ let escaped = false;
466
+ for(let index = openingParenthesis; index < source.length; index += 1){
467
+ const character = source[index] ?? '';
468
+ if ('' !== quote) {
469
+ if (escaped) escaped = false;
470
+ else if ('\\' === character) escaped = true;
471
+ else if (character === quote) quote = '';
472
+ continue;
473
+ }
474
+ if ("'" === character || '"' === character || '`' === character) quote = character;
475
+ else if ('(' === character) depth += 1;
476
+ else if (')' === character) {
477
+ depth -= 1;
478
+ if (0 === depth) return index;
479
+ }
480
+ }
481
+ return -1;
482
+ }
483
+ function removeLegacyLocationSuffixHelper(source) {
484
+ return source.replace(/(^|\n)const locationSuffix = \(location: \{ hash\?: unknown; search\?: unknown; searchStr\?: unknown \}\) => \{[\s\S]*?\n\};\n/u, '$1').replace('\n const suffix = locationSuffix(location);', '');
485
+ }
486
+ function rewriteRouterLocationSuffix(source) {
487
+ let changed = false;
488
+ const next = source.replace(/^(\s*)to: `\$\{([^`\n]+)\}\$\{suffix\}`,/gmu, (_match, indentation, destination)=>{
489
+ changed = true;
490
+ return `${indentation}hash: true,\n${indentation}search: true,\n${indentation}to: ${destination},`;
491
+ });
492
+ return {
493
+ changed,
494
+ source: changed ? removeLegacyLocationSuffixHelper(next) : next
495
+ };
496
+ }
497
+ function rewriteWindowLocationAssignments(source) {
498
+ const callMarker = 'window.location.assign';
499
+ let next = source;
500
+ let searchFrom = 0;
501
+ let changed = false;
502
+ let preservesCurrentLocationState = false;
503
+ while(true){
504
+ const callStart = next.indexOf(callMarker, searchFrom);
505
+ if (callStart < 0) break;
506
+ const openingParenthesis = next.indexOf('(', callStart + callMarker.length);
507
+ if (openingParenthesis < 0) break;
508
+ const callEnd = closingParenthesis(next, openingParenthesis);
509
+ if (callEnd < 0) break;
510
+ let destination = next.slice(openingParenthesis + 1, callEnd).trim();
511
+ if (destination.endsWith(',')) destination = destination.slice(0, -1).trimEnd();
512
+ const preservesSuffix = destination.includes("${suffix}") && next.includes('const suffix = locationSuffix(location);');
513
+ if (preservesSuffix) {
514
+ destination = destination.replace("${suffix}", '');
515
+ if (destination.startsWith('`${') && destination.endsWith('}`')) destination = destination.slice(3, -2);
516
+ preservesCurrentLocationState = true;
517
+ }
518
+ const lineStart = next.lastIndexOf('\n', callStart) + 1;
519
+ const indentation = next.slice(lineStart, callStart);
520
+ const options = preservesSuffix ? `hash: true,\n${indentation} search: true,\n${indentation} to: ${destination},` : `to: ${destination},`;
521
+ const replacement = `void navigate({\n${indentation} ${options}\n${indentation}})`;
522
+ next = `${next.slice(0, callStart)}${replacement}${next.slice(callEnd + 1)}`;
523
+ searchFrom = callStart + replacement.length;
524
+ changed = true;
525
+ }
526
+ if (preservesCurrentLocationState) next = removeLegacyLocationSuffixHelper(next);
527
+ return {
528
+ changed,
529
+ source: next
530
+ };
531
+ }
532
+ function closingJsxTag(source, openingTagStart) {
533
+ let braces = 0;
534
+ let quote = '';
535
+ let escaped = false;
536
+ for(let index = openingTagStart; index < source.length; index += 1){
537
+ const character = source[index] ?? '';
538
+ if ('' !== quote) {
539
+ if (escaped) escaped = false;
540
+ else if ('\\' === character) escaped = true;
541
+ else if (character === quote) quote = '';
542
+ continue;
543
+ }
544
+ if ("'" === character || '"' === character || '`' === character) quote = character;
545
+ else if ('{' === character) braces += 1;
546
+ else if ('}' === character) braces -= 1;
547
+ else if ('>' === character && 0 === braces) return index;
548
+ }
549
+ return -1;
550
+ }
551
+ function isInternalHref(openingTag) {
552
+ return openingTag.includes('href="/') || openingTag.includes("href='/") || openingTag.includes('href={`/');
553
+ }
554
+ function removeSyntheticClickHandler(openingTag) {
555
+ const onClickStart = openingTag.indexOf(' onClick=');
556
+ if (onClickStart < 0) return openingTag;
557
+ const valueStart = openingTag.indexOf('{', onClickStart);
558
+ if (valueStart < 0) return openingTag;
559
+ let depth = 0;
560
+ for(let index = valueStart; index < openingTag.length; index += 1){
561
+ const character = openingTag[index] ?? '';
562
+ if ('{' === character) depth += 1;
563
+ else if ('}' === character) {
564
+ depth -= 1;
565
+ if (0 === depth) {
566
+ const handler = openingTag.slice(valueStart, index + 1);
567
+ return handler.includes('preventDefault') ? `${openingTag.slice(0, onClickStart)}${openingTag.slice(index + 1)}` : openingTag;
568
+ }
569
+ }
570
+ }
571
+ return openingTag;
572
+ }
573
+ function rewriteInternalAnchors(source) {
574
+ let next = source;
575
+ let searchFrom = 0;
576
+ let changed = false;
577
+ while(true){
578
+ const openingTagStart = next.indexOf('<a', searchFrom);
579
+ if (openingTagStart < 0) break;
580
+ const boundary = next[openingTagStart + 2];
581
+ if (' ' !== boundary && '\n' !== boundary && '\t' !== boundary) {
582
+ searchFrom = openingTagStart + 2;
583
+ continue;
584
+ }
585
+ const openingTagEnd = closingJsxTag(next, openingTagStart);
586
+ if (openingTagEnd < 0) break;
587
+ const openingTag = next.slice(openingTagStart, openingTagEnd + 1);
588
+ if (!isInternalHref(openingTag)) {
589
+ searchFrom = openingTagEnd + 1;
590
+ continue;
591
+ }
592
+ const closingTagStart = next.indexOf('</a>', openingTagEnd + 1);
593
+ if (closingTagStart < 0) break;
594
+ const nativeOpeningTag = removeSyntheticClickHandler(openingTag).replace('<a', '<Link').replace('href=', 'to=');
595
+ next = `${next.slice(0, openingTagStart)}${nativeOpeningTag}${next.slice(openingTagEnd + 1, closingTagStart)}</Link>${next.slice(closingTagStart + 4)}`;
596
+ searchFrom = openingTagStart + nativeOpeningTag.length;
597
+ changed = true;
598
+ }
599
+ return {
600
+ changed,
601
+ source: next
602
+ };
603
+ }
604
+ function rewriteJsxElementName(source, elementName, componentName) {
605
+ const openingMarker = `<${elementName}`;
606
+ const closingMarker = `</${elementName}>`;
607
+ let next = source;
608
+ let searchFrom = 0;
609
+ let changed = false;
610
+ while(true){
611
+ const openingTagStart = next.indexOf(openingMarker, searchFrom);
612
+ if (openingTagStart < 0) break;
613
+ const boundary = next[openingTagStart + openingMarker.length];
614
+ if (' ' !== boundary && '\n' !== boundary && '\t' !== boundary) {
615
+ searchFrom = openingTagStart + openingMarker.length;
616
+ continue;
617
+ }
618
+ const openingTagEnd = closingJsxTag(next, openingTagStart);
619
+ const closingTagStart = next.indexOf(closingMarker, openingTagEnd + 1);
620
+ if (openingTagEnd < 0 || closingTagStart < 0) break;
621
+ next = `${next.slice(0, openingTagStart)}<${componentName}${next.slice(openingTagStart + openingMarker.length, closingTagStart)}</${componentName}>${next.slice(closingTagStart + closingMarker.length)}`;
622
+ searchFrom = openingTagStart + componentName.length + 1;
623
+ changed = true;
624
+ }
625
+ return {
626
+ changed,
627
+ source: next
628
+ };
629
+ }
630
+ function regenerateGeneratedNavigationSurface(source, kind) {
631
+ const routerLocationSuffix = rewriteRouterLocationSuffix(source);
632
+ const anchors = rewriteInternalAnchors(routerLocationSuffix.source);
633
+ const locationAssignments = rewriteWindowLocationAssignments(anchors.source);
634
+ const forms = 'demo-component' === kind ? rewriteJsxElementName(locationAssignments.source, 'form', 'Form') : {
635
+ changed: false,
636
+ source: locationAssignments.source
637
+ };
638
+ let next = forms.source;
639
+ if (anchors.changed || locationAssignments.changed || forms.changed) {
640
+ const imports = [
641
+ ...forms.changed ? [
642
+ 'Form'
643
+ ] : [],
644
+ ...anchors.changed ? [
645
+ 'Link'
646
+ ] : [],
647
+ ...locationAssignments.changed ? [
648
+ 'useNavigate'
649
+ ] : []
650
+ ];
651
+ next = ensureNamedImport(next, tanstackRuntimeModule, imports);
652
+ }
653
+ if (locationAssignments.changed) next = ensureNavigateHook(next);
654
+ return next;
655
+ }
656
+ exports.createFederatedComponentsRegistry = __webpack_exports__.createFederatedComponentsRegistry;
395
657
  exports.createLayout = __webpack_exports__.createLayout;
396
658
  exports.createRemoteEntry = __webpack_exports__.createRemoteEntry;
397
659
  exports.createRemoteExposeComponent = __webpack_exports__.createRemoteExposeComponent;
660
+ exports.createRemoteExposeFragmentPage = __webpack_exports__.createRemoteExposeFragmentPage;
398
661
  exports.createRemotePage = __webpack_exports__.createRemotePage;
399
- exports.createRemoteWidget = __webpack_exports__.createRemoteWidget;
662
+ exports.createRemoteWidgetFragmentPage = __webpack_exports__.createRemoteWidgetFragmentPage;
400
663
  exports.createShellPage = __webpack_exports__.createShellPage;
401
664
  exports.createShellRemoteComponents = __webpack_exports__.createShellRemoteComponents;
665
+ exports.createShellWorkerRemoteComponents = __webpack_exports__.createShellWorkerRemoteComponents;
666
+ exports.regenerateGeneratedNavigationSurface = __webpack_exports__.regenerateGeneratedNavigationSurface;
402
667
  exports.remoteComponentOutputPath = __webpack_exports__.remoteComponentOutputPath;
403
668
  for(var __rspack_i in __webpack_exports__)if (-1 === [
669
+ "createFederatedComponentsRegistry",
404
670
  "createLayout",
405
671
  "createRemoteEntry",
406
672
  "createRemoteExposeComponent",
673
+ "createRemoteExposeFragmentPage",
407
674
  "createRemotePage",
408
- "createRemoteWidget",
675
+ "createRemoteWidgetFragmentPage",
409
676
  "createShellPage",
410
677
  "createShellRemoteComponents",
678
+ "createShellWorkerRemoteComponents",
679
+ "regenerateGeneratedNavigationSurface",
411
680
  "remoteComponentOutputPath"
412
681
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
413
682
  Object.defineProperty(exports, '__esModule', {