@bleedingdev/modern-js-ultramodern-create 3.9.0-ultramodern.2 → 3.9.0-ultramodern.21

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 (442) hide show
  1. package/README.md +43 -74
  2. package/dist/cjs/cli/package-source.cjs +2 -2
  3. package/dist/cjs/cli/project-setup.cjs +2 -22
  4. package/dist/cjs/index.cjs +9 -1
  5. package/dist/cjs/locale/en.cjs +2 -1
  6. package/dist/cjs/locale/zh.cjs +2 -1
  7. package/dist/cjs/ultramodern-package-source.cjs +13 -9
  8. package/dist/cjs/ultramodern-release-cohort.cjs +6 -21
  9. package/dist/cjs/ultramodern-tooling/commands/cloudflare-output-verify.cjs +49 -56
  10. package/dist/cjs/ultramodern-tooling/commands/context.cjs +11 -29
  11. package/dist/cjs/ultramodern-tooling/commands/routes-generate-app.cjs +67 -0
  12. package/dist/cjs/ultramodern-tooling/commands/routes-generate.cjs +24 -53
  13. package/dist/cjs/ultramodern-tooling/commands/validate.cjs +5 -11
  14. package/dist/cjs/ultramodern-tooling/commands.cjs +15 -8
  15. package/dist/cjs/ultramodern-tooling/config/index.cjs +10 -24
  16. package/dist/cjs/ultramodern-tooling/config/load.cjs +12 -10
  17. package/dist/cjs/ultramodern-tooling/config/metadata.cjs +34 -32
  18. package/dist/cjs/ultramodern-tooling/config/normalize.cjs +165 -164
  19. package/dist/cjs/ultramodern-workspace/add-shell.cjs +118 -118
  20. package/dist/cjs/ultramodern-workspace/add-vertical/execute.cjs +121 -25
  21. package/dist/cjs/ultramodern-workspace/add-vertical/plan.cjs +14 -160
  22. package/dist/cjs/ultramodern-workspace/add-vertical/preflight.cjs +16 -48
  23. package/dist/cjs/ultramodern-workspace/add-vertical/preview.cjs +78 -0
  24. package/dist/cjs/ultramodern-workspace/add-vertical/shell-files.cjs +87 -24
  25. package/dist/cjs/ultramodern-workspace/add-vertical/topology.cjs +4 -1
  26. package/dist/cjs/ultramodern-workspace/add-vertical/transaction.cjs +378 -45
  27. package/dist/cjs/ultramodern-workspace/add-vertical/workspace-state.cjs +21 -44
  28. package/dist/cjs/ultramodern-workspace/add-vertical.cjs +0 -9
  29. package/dist/cjs/ultramodern-workspace/api/client.cjs +5 -5
  30. package/dist/cjs/ultramodern-workspace/api/contracts.cjs +2 -2
  31. package/dist/cjs/ultramodern-workspace/api/rpc.cjs +20 -18
  32. package/dist/cjs/ultramodern-workspace/api/service.cjs +49 -24
  33. package/dist/cjs/ultramodern-workspace/api/shared.cjs +28 -18
  34. package/dist/cjs/ultramodern-workspace/app-files.cjs +3 -23
  35. package/dist/cjs/ultramodern-workspace/backend-federation.cjs +27 -27
  36. package/dist/cjs/ultramodern-workspace/contracts.cjs +14 -183
  37. package/dist/cjs/ultramodern-workspace/delivery-unit-schema/surfaces.cjs +85 -0
  38. package/dist/cjs/ultramodern-workspace/delivery-unit-schema/types.cjs +8 -85
  39. package/dist/cjs/ultramodern-workspace/delivery-unit-stamp.cjs +16 -4
  40. package/dist/cjs/ultramodern-workspace/delivery-unit-sync.cjs +27 -17
  41. package/dist/cjs/ultramodern-workspace/delivery-unit.cjs +16 -10
  42. package/dist/cjs/ultramodern-workspace/demo-components.cjs +66 -433
  43. package/dist/cjs/ultramodern-workspace/descriptors.cjs +0 -4
  44. package/dist/cjs/ultramodern-workspace/fs-io.cjs +37 -2
  45. package/dist/cjs/ultramodern-workspace/generation-result.cjs +4 -4
  46. package/dist/cjs/ultramodern-workspace/index.cjs +2 -5
  47. package/dist/cjs/ultramodern-workspace/mf-validation/constants.cjs +0 -6
  48. package/dist/cjs/ultramodern-workspace/mf-validation/discovery.cjs +6 -6
  49. package/dist/cjs/{ultramodern-tooling/commands/migrate-strict-effect/generated-patches.cjs → ultramodern-workspace/mf-validation/exposes.cjs} +13 -17
  50. package/dist/cjs/ultramodern-workspace/mf-validation/inspect.cjs +26 -7
  51. package/dist/cjs/ultramodern-workspace/mf-validation/object-literal.cjs +21 -122
  52. package/dist/cjs/ultramodern-workspace/mf-validation/path-utils.cjs +37 -38
  53. package/dist/cjs/ultramodern-workspace/mf-validation/syntax.cjs +93 -153
  54. package/dist/cjs/ultramodern-workspace/mf-validation.cjs +4 -0
  55. package/dist/cjs/ultramodern-workspace/module-federation/config.cjs +24 -29
  56. package/dist/cjs/ultramodern-workspace/module-federation/reexport-module.cjs +39 -58
  57. package/dist/cjs/ultramodern-workspace/module-federation/remote-refs.cjs +1 -43
  58. package/dist/cjs/ultramodern-workspace/package-json.cjs +63 -37
  59. package/dist/cjs/ultramodern-workspace/patch-inventory.cjs +104 -0
  60. package/dist/cjs/ultramodern-workspace/policy.cjs +3 -577
  61. package/dist/cjs/ultramodern-workspace/public-surface.cjs +3 -3
  62. package/dist/cjs/ultramodern-workspace/routes.cjs +2 -11
  63. package/dist/cjs/ultramodern-workspace/shared-patches.cjs +12 -2
  64. package/dist/cjs/ultramodern-workspace/shells.cjs +0 -70
  65. package/dist/cjs/ultramodern-workspace/tooling-command-catalog.cjs +27 -41
  66. package/dist/cjs/ultramodern-workspace/tsconfigs.cjs +8 -2
  67. package/dist/cjs/ultramodern-workspace/validation/architecture.cjs +397 -0
  68. package/dist/cjs/ultramodern-workspace/validation/assertions.cjs +140 -0
  69. package/dist/cjs/ultramodern-workspace/validation/types.cjs +18 -0
  70. package/dist/cjs/ultramodern-workspace/validation/workspace.cjs +344 -0
  71. package/dist/cjs/ultramodern-workspace/versions.cjs +81 -45
  72. package/dist/cjs/ultramodern-workspace/workspace-artifact-ownership.cjs +183 -0
  73. package/dist/cjs/ultramodern-workspace/workspace-script-plan.cjs +36 -25
  74. package/dist/cjs/ultramodern-workspace/workspace-scripts.cjs +11 -200
  75. package/dist/cjs/ultramodern-workspace/workspace-validation-contract.cjs +62 -373
  76. package/dist/cjs/ultramodern-workspace/write-app.cjs +19 -11
  77. package/dist/cjs/ultramodern-workspace/write-workspace.cjs +20 -50
  78. package/dist/cjs/ultramodern-workspace/zerops.cjs +2 -0
  79. package/dist/esm/cli/package-source.js +3 -3
  80. package/dist/esm/cli/project-setup.js +2 -22
  81. package/dist/esm/index.js +10 -2
  82. package/dist/esm/locale/en.js +2 -1
  83. package/dist/esm/locale/zh.js +2 -1
  84. package/dist/esm/ultramodern-package-source.js +14 -4
  85. package/dist/esm/ultramodern-release-cohort.js +5 -14
  86. package/dist/esm/ultramodern-tooling/commands/cloudflare-output-verify.js +49 -56
  87. package/dist/esm/ultramodern-tooling/commands/context.js +10 -26
  88. package/dist/esm/ultramodern-tooling/commands/routes-generate-app.js +35 -0
  89. package/dist/esm/ultramodern-tooling/commands/routes-generate.js +25 -54
  90. package/dist/esm/ultramodern-tooling/commands/validate.js +6 -12
  91. package/dist/esm/ultramodern-tooling/commands.js +15 -9
  92. package/dist/esm/ultramodern-tooling/config/index.js +0 -2
  93. package/dist/esm/ultramodern-tooling/config/load.js +9 -9
  94. package/dist/esm/ultramodern-tooling/config/metadata.js +33 -28
  95. package/dist/esm/ultramodern-tooling/config/normalize.js +159 -156
  96. package/dist/esm/ultramodern-workspace/add-shell.js +124 -123
  97. package/dist/esm/ultramodern-workspace/add-vertical/execute.js +119 -27
  98. package/dist/esm/ultramodern-workspace/add-vertical/plan.js +16 -150
  99. package/dist/esm/ultramodern-workspace/add-vertical/preflight.js +15 -47
  100. package/dist/esm/ultramodern-workspace/add-vertical/preview.js +40 -0
  101. package/dist/esm/ultramodern-workspace/add-vertical/shell-files.js +87 -25
  102. package/dist/esm/ultramodern-workspace/add-vertical/topology.js +4 -1
  103. package/dist/esm/ultramodern-workspace/add-vertical/transaction.js +373 -46
  104. package/dist/esm/ultramodern-workspace/add-vertical/workspace-state.js +17 -34
  105. package/dist/esm/ultramodern-workspace/add-vertical.js +1 -1
  106. package/dist/esm/ultramodern-workspace/api/client.js +5 -5
  107. package/dist/esm/ultramodern-workspace/api/contracts.js +2 -2
  108. package/dist/esm/ultramodern-workspace/api/rpc.js +20 -18
  109. package/dist/esm/ultramodern-workspace/api/service.js +49 -24
  110. package/dist/esm/ultramodern-workspace/api/shared.js +28 -18
  111. package/dist/esm/ultramodern-workspace/app-files.js +3 -23
  112. package/dist/esm/ultramodern-workspace/backend-federation.js +5 -5
  113. package/dist/esm/ultramodern-workspace/contracts.js +14 -180
  114. package/dist/esm/ultramodern-workspace/delivery-unit-schema/surfaces.js +41 -0
  115. package/dist/esm/ultramodern-workspace/delivery-unit-schema/types.js +1 -75
  116. package/dist/esm/ultramodern-workspace/delivery-unit-stamp.js +16 -4
  117. package/dist/esm/ultramodern-workspace/delivery-unit-sync.js +28 -18
  118. package/dist/esm/ultramodern-workspace/delivery-unit.js +12 -6
  119. package/dist/esm/ultramodern-workspace/demo-components.js +67 -428
  120. package/dist/esm/ultramodern-workspace/descriptors.js +1 -2
  121. package/dist/esm/ultramodern-workspace/fs-io.js +37 -2
  122. package/dist/esm/ultramodern-workspace/generation-result.js +3 -3
  123. package/dist/esm/ultramodern-workspace/index.js +1 -1
  124. package/dist/esm/ultramodern-workspace/mf-validation/constants.js +1 -4
  125. package/dist/esm/ultramodern-workspace/mf-validation/discovery.js +7 -7
  126. package/dist/esm/ultramodern-workspace/mf-validation/exposes.js +14 -0
  127. package/dist/esm/ultramodern-workspace/mf-validation/inspect.js +27 -8
  128. package/dist/esm/ultramodern-workspace/mf-validation/object-literal.js +22 -123
  129. package/dist/esm/ultramodern-workspace/mf-validation/path-utils.js +36 -34
  130. package/dist/esm/ultramodern-workspace/mf-validation/syntax.js +83 -143
  131. package/dist/esm/ultramodern-workspace/mf-validation.js +1 -0
  132. package/dist/esm/ultramodern-workspace/module-federation/config.js +25 -30
  133. package/dist/esm/ultramodern-workspace/module-federation/reexport-module.js +39 -58
  134. package/dist/esm/ultramodern-workspace/module-federation/remote-refs.js +1 -43
  135. package/dist/esm/ultramodern-workspace/package-json.js +58 -32
  136. package/dist/esm/ultramodern-workspace/patch-inventory.js +66 -0
  137. package/dist/esm/ultramodern-workspace/policy.js +2 -564
  138. package/dist/esm/ultramodern-workspace/public-surface.js +3 -3
  139. package/dist/esm/ultramodern-workspace/routes.js +2 -11
  140. package/dist/esm/ultramodern-workspace/shared-patches.js +2 -2
  141. package/dist/esm/ultramodern-workspace/shells.js +3 -67
  142. package/dist/esm/ultramodern-workspace/tooling-command-catalog.js +22 -37
  143. package/dist/esm/ultramodern-workspace/tsconfigs.js +9 -3
  144. package/dist/esm/ultramodern-workspace/validation/architecture.js +348 -0
  145. package/dist/esm/ultramodern-workspace/validation/assertions.js +65 -0
  146. package/dist/esm/ultramodern-workspace/validation/types.js +0 -0
  147. package/dist/esm/ultramodern-workspace/validation/workspace.js +286 -0
  148. package/dist/esm/ultramodern-workspace/versions.js +74 -29
  149. package/dist/esm/ultramodern-workspace/workspace-artifact-ownership.js +128 -0
  150. package/dist/esm/ultramodern-workspace/workspace-script-plan.js +35 -27
  151. package/dist/esm/ultramodern-workspace/workspace-scripts.js +10 -190
  152. package/dist/esm/ultramodern-workspace/workspace-validation-contract.js +65 -376
  153. package/dist/esm/ultramodern-workspace/write-app.js +18 -10
  154. package/dist/esm/ultramodern-workspace/write-workspace.js +25 -52
  155. package/dist/esm/ultramodern-workspace/zerops.js +2 -0
  156. package/dist/esm-node/cli/package-source.js +3 -3
  157. package/dist/esm-node/cli/project-setup.js +2 -22
  158. package/dist/esm-node/index.js +10 -2
  159. package/dist/esm-node/locale/en.js +2 -1
  160. package/dist/esm-node/locale/zh.js +2 -1
  161. package/dist/esm-node/ultramodern-package-source.js +14 -4
  162. package/dist/esm-node/ultramodern-release-cohort.js +5 -14
  163. package/dist/esm-node/ultramodern-tooling/commands/cloudflare-output-verify.js +49 -56
  164. package/dist/esm-node/ultramodern-tooling/commands/context.js +10 -26
  165. package/dist/esm-node/ultramodern-tooling/commands/routes-generate-app.js +36 -0
  166. package/dist/esm-node/ultramodern-tooling/commands/routes-generate.js +25 -54
  167. package/dist/esm-node/ultramodern-tooling/commands/validate.js +6 -12
  168. package/dist/esm-node/ultramodern-tooling/commands.js +15 -9
  169. package/dist/esm-node/ultramodern-tooling/config/index.js +0 -2
  170. package/dist/esm-node/ultramodern-tooling/config/load.js +9 -9
  171. package/dist/esm-node/ultramodern-tooling/config/metadata.js +33 -28
  172. package/dist/esm-node/ultramodern-tooling/config/normalize.js +159 -156
  173. package/dist/esm-node/ultramodern-workspace/add-shell.js +124 -123
  174. package/dist/esm-node/ultramodern-workspace/add-vertical/execute.js +119 -27
  175. package/dist/esm-node/ultramodern-workspace/add-vertical/plan.js +16 -150
  176. package/dist/esm-node/ultramodern-workspace/add-vertical/preflight.js +15 -47
  177. package/dist/esm-node/ultramodern-workspace/add-vertical/preview.js +41 -0
  178. package/dist/esm-node/ultramodern-workspace/add-vertical/shell-files.js +87 -25
  179. package/dist/esm-node/ultramodern-workspace/add-vertical/topology.js +4 -1
  180. package/dist/esm-node/ultramodern-workspace/add-vertical/transaction.js +373 -46
  181. package/dist/esm-node/ultramodern-workspace/add-vertical/workspace-state.js +17 -34
  182. package/dist/esm-node/ultramodern-workspace/add-vertical.js +1 -1
  183. package/dist/esm-node/ultramodern-workspace/api/client.js +5 -5
  184. package/dist/esm-node/ultramodern-workspace/api/contracts.js +2 -2
  185. package/dist/esm-node/ultramodern-workspace/api/rpc.js +20 -18
  186. package/dist/esm-node/ultramodern-workspace/api/service.js +49 -24
  187. package/dist/esm-node/ultramodern-workspace/api/shared.js +28 -18
  188. package/dist/esm-node/ultramodern-workspace/app-files.js +3 -23
  189. package/dist/esm-node/ultramodern-workspace/backend-federation.js +5 -5
  190. package/dist/esm-node/ultramodern-workspace/contracts.js +14 -180
  191. package/dist/esm-node/ultramodern-workspace/delivery-unit-schema/surfaces.js +42 -0
  192. package/dist/esm-node/ultramodern-workspace/delivery-unit-schema/types.js +1 -75
  193. package/dist/esm-node/ultramodern-workspace/delivery-unit-stamp.js +16 -4
  194. package/dist/esm-node/ultramodern-workspace/delivery-unit-sync.js +28 -18
  195. package/dist/esm-node/ultramodern-workspace/delivery-unit.js +12 -6
  196. package/dist/esm-node/ultramodern-workspace/demo-components.js +67 -428
  197. package/dist/esm-node/ultramodern-workspace/descriptors.js +1 -2
  198. package/dist/esm-node/ultramodern-workspace/fs-io.js +37 -2
  199. package/dist/esm-node/ultramodern-workspace/generation-result.js +3 -3
  200. package/dist/esm-node/ultramodern-workspace/index.js +1 -1
  201. package/dist/esm-node/ultramodern-workspace/mf-validation/constants.js +1 -4
  202. package/dist/esm-node/ultramodern-workspace/mf-validation/discovery.js +7 -7
  203. package/dist/esm-node/ultramodern-workspace/mf-validation/exposes.js +15 -0
  204. package/dist/esm-node/ultramodern-workspace/mf-validation/inspect.js +27 -8
  205. package/dist/esm-node/ultramodern-workspace/mf-validation/object-literal.js +22 -123
  206. package/dist/esm-node/ultramodern-workspace/mf-validation/path-utils.js +36 -34
  207. package/dist/esm-node/ultramodern-workspace/mf-validation/syntax.js +83 -143
  208. package/dist/esm-node/ultramodern-workspace/mf-validation.js +1 -0
  209. package/dist/esm-node/ultramodern-workspace/module-federation/config.js +25 -30
  210. package/dist/esm-node/ultramodern-workspace/module-federation/reexport-module.js +39 -58
  211. package/dist/esm-node/ultramodern-workspace/module-federation/remote-refs.js +1 -43
  212. package/dist/esm-node/ultramodern-workspace/package-json.js +58 -32
  213. package/dist/esm-node/ultramodern-workspace/patch-inventory.js +67 -0
  214. package/dist/esm-node/ultramodern-workspace/policy.js +2 -564
  215. package/dist/esm-node/ultramodern-workspace/public-surface.js +3 -3
  216. package/dist/esm-node/ultramodern-workspace/routes.js +2 -11
  217. package/dist/esm-node/ultramodern-workspace/shared-patches.js +2 -2
  218. package/dist/esm-node/ultramodern-workspace/shells.js +3 -67
  219. package/dist/esm-node/ultramodern-workspace/tooling-command-catalog.js +22 -37
  220. package/dist/esm-node/ultramodern-workspace/tsconfigs.js +9 -3
  221. package/dist/esm-node/ultramodern-workspace/validation/architecture.js +349 -0
  222. package/dist/esm-node/ultramodern-workspace/validation/assertions.js +66 -0
  223. package/dist/esm-node/ultramodern-workspace/validation/types.js +1 -0
  224. package/dist/esm-node/ultramodern-workspace/validation/workspace.js +287 -0
  225. package/dist/esm-node/ultramodern-workspace/versions.js +74 -29
  226. package/dist/esm-node/ultramodern-workspace/workspace-artifact-ownership.js +129 -0
  227. package/dist/esm-node/ultramodern-workspace/workspace-script-plan.js +35 -27
  228. package/dist/esm-node/ultramodern-workspace/workspace-scripts.js +10 -190
  229. package/dist/esm-node/ultramodern-workspace/workspace-validation-contract.js +65 -376
  230. package/dist/esm-node/ultramodern-workspace/write-app.js +18 -10
  231. package/dist/esm-node/ultramodern-workspace/write-workspace.js +25 -52
  232. package/dist/esm-node/ultramodern-workspace/zerops.js +2 -0
  233. package/dist/types/cli/project-setup.d.ts +1 -1
  234. package/dist/types/locale/en.d.ts +1 -0
  235. package/dist/types/locale/index.d.ts +2 -0
  236. package/dist/types/locale/zh.d.ts +1 -0
  237. package/dist/types/ultramodern-package-source.d.ts +2 -4
  238. package/dist/types/ultramodern-release-cohort.d.ts +1 -3
  239. package/dist/types/ultramodern-tooling/commands/cloudflare-output-verify.d.ts +2 -2
  240. package/dist/types/ultramodern-tooling/commands/context.d.ts +4 -1
  241. package/dist/types/ultramodern-tooling/commands/routes-generate-app.d.ts +1 -0
  242. package/dist/types/ultramodern-tooling/commands/routes-generate.d.ts +1 -1
  243. package/dist/types/ultramodern-tooling/commands/validate.d.ts +1 -1
  244. package/dist/types/ultramodern-tooling/config/index.d.ts +0 -2
  245. package/dist/types/ultramodern-tooling/config/load.d.ts +10 -2
  246. package/dist/types/ultramodern-tooling/config/metadata.d.ts +2 -2
  247. package/dist/types/ultramodern-tooling/config/normalize.d.ts +19 -19
  248. package/dist/types/ultramodern-tooling/config/types.d.ts +2 -9
  249. package/dist/types/ultramodern-workspace/add-shell.d.ts +1 -1
  250. package/dist/types/ultramodern-workspace/add-vertical/execute.d.ts +1 -0
  251. package/dist/types/ultramodern-workspace/add-vertical/preflight.d.ts +4 -3
  252. package/dist/types/ultramodern-workspace/add-vertical/preview.d.ts +4 -0
  253. package/dist/types/ultramodern-workspace/add-vertical/shell-files.d.ts +7 -2
  254. package/dist/types/ultramodern-workspace/add-vertical/transaction.d.ts +32 -6
  255. package/dist/types/ultramodern-workspace/add-vertical/workspace-state.d.ts +10 -7
  256. package/dist/types/ultramodern-workspace/add-vertical.d.ts +1 -1
  257. package/dist/types/ultramodern-workspace/api/client.d.ts +3 -1
  258. package/dist/types/ultramodern-workspace/api/rpc.d.ts +1 -1
  259. package/dist/types/ultramodern-workspace/api/service.d.ts +3 -1
  260. package/dist/types/ultramodern-workspace/api/shared.d.ts +2 -0
  261. package/dist/types/ultramodern-workspace/backend-federation.d.ts +1 -1
  262. package/dist/types/ultramodern-workspace/contracts.d.ts +1 -3
  263. package/dist/types/ultramodern-workspace/delivery-unit-schema/surfaces.d.ts +17 -0
  264. package/dist/types/ultramodern-workspace/delivery-unit-schema/types.d.ts +3 -68
  265. package/dist/types/ultramodern-workspace/delivery-unit-stamp.d.ts +2 -2
  266. package/dist/types/ultramodern-workspace/delivery-unit.d.ts +3 -3
  267. package/dist/types/ultramodern-workspace/demo-components.d.ts +0 -3
  268. package/dist/types/ultramodern-workspace/descriptors.d.ts +0 -1
  269. package/dist/types/ultramodern-workspace/fs-io.d.ts +1 -1
  270. package/dist/types/ultramodern-workspace/index.d.ts +1 -1
  271. package/dist/types/ultramodern-workspace/mf-validation/constants.d.ts +0 -1
  272. package/dist/types/ultramodern-workspace/mf-validation/exposes.d.ts +11 -0
  273. package/dist/types/ultramodern-workspace/mf-validation/path-utils.d.ts +2 -3
  274. package/dist/types/ultramodern-workspace/mf-validation/syntax.d.ts +4 -3
  275. package/dist/types/ultramodern-workspace/mf-validation/types.d.ts +1 -0
  276. package/dist/types/ultramodern-workspace/mf-validation.d.ts +1 -0
  277. package/dist/types/ultramodern-workspace/module-federation/config.d.ts +1 -1
  278. package/dist/types/ultramodern-workspace/module-federation/reexport-module.d.ts +2 -2
  279. package/dist/types/ultramodern-workspace/package-json.d.ts +1 -1
  280. package/dist/types/ultramodern-workspace/patch-inventory.d.ts +10 -0
  281. package/dist/types/ultramodern-workspace/policy.d.ts +31 -209
  282. package/dist/types/ultramodern-workspace/routes.d.ts +6 -1
  283. package/dist/types/ultramodern-workspace/shells.d.ts +2 -15
  284. package/dist/types/ultramodern-workspace/tooling-command-catalog.d.ts +8 -7
  285. package/dist/types/ultramodern-workspace/types.d.ts +9 -9
  286. package/dist/types/ultramodern-workspace/validation/architecture.d.ts +2 -0
  287. package/dist/types/ultramodern-workspace/validation/assertions.d.ts +14 -0
  288. package/dist/types/ultramodern-workspace/validation/types.d.ts +9 -0
  289. package/dist/types/ultramodern-workspace/validation/workspace.d.ts +6 -0
  290. package/dist/types/ultramodern-workspace/versions.d.ts +73 -28
  291. package/dist/types/ultramodern-workspace/workspace-artifact-ownership.d.ts +18 -0
  292. package/dist/types/ultramodern-workspace/workspace-script-plan.d.ts +4 -5
  293. package/dist/types/ultramodern-workspace/workspace-scripts.d.ts +8 -13
  294. package/dist/types/ultramodern-workspace/workspace-validation-contract.d.ts +22 -188
  295. package/dist/types/ultramodern-workspace/write-workspace.d.ts +1 -3
  296. package/package.json +18 -11
  297. package/{template-workspace/.modernjs/release-cohort.json → release-cohort.json} +88 -40
  298. package/template-workspace/.codex/skills/rspack-tracing/scripts/analyze_trace.js +1 -1
  299. package/template-workspace/README.md.handlebars +20 -35
  300. package/template-workspace/oxfmt.config.ts +3 -0
  301. package/template-workspace/pnpm-workspace.yaml.handlebars +0 -24
  302. package/template-workspace/scripts/bootstrap-agent-skills.mjs +4 -4
  303. package/templates/packages/shared-contracts-index.ts +4 -332
  304. package/templates/workspace/apps/modern.config.shared-module-federation.ts.handlebars +10 -0
  305. package/templates/workspace/apps/modern.config.ts.handlebars +13 -27
  306. package/templates/workspace/apps/shared/src/routes/ultramodern-route-metadata.ts.handlebars +21 -11
  307. package/templates/workspace/apps/shell-super-app/src/routes/[lang]/page.tsx.handlebars +20 -20
  308. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.helpers.tsx.handlebars +4 -6
  309. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.imports.tsx.handlebars +2 -2
  310. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.tsx.handlebars +11 -11
  311. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.worker.helpers.tsx.handlebars +1 -1
  312. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.worker.imports.tsx.handlebars +1 -1
  313. package/templates/workspace-scripts/generate-node-backend-federation.mjs +68 -77
  314. package/templates/workspace-scripts/generate-public-surface-assets.mjs +107 -207
  315. package/templates/workspace-scripts/materialize-zerops-runtime.mjs +12 -19
  316. package/templates/workspace-scripts/proof-cloudflare-version.mjs +53 -444
  317. package/templates/workspace-scripts/proof-node-backend-federation.mjs +212 -91
  318. package/templates/workspace-scripts/{proof-workerd-ssr.mts → proof-workerd-ssr.mjs} +434 -239
  319. package/templates/workspace-scripts/ultramodern-cloudflare-proof.mjs +25 -7
  320. package/templates/workspace-scripts/ultramodern-performance-readiness.mjs +45 -147
  321. package/templates/workspace-scripts/ultramodern-typecheck.mjs +1 -1
  322. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.cjs +0 -212
  323. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.cjs +0 -47
  324. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.cjs +0 -112
  325. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.cjs +0 -55
  326. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.cjs +0 -102
  327. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.cjs +0 -195
  328. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.cjs +0 -146
  329. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxlint.cjs +0 -110
  330. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.cjs +0 -67
  331. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.cjs +0 -307
  332. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.cjs +0 -58
  333. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.cjs +0 -71
  334. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-ui-source.cjs +0 -151
  335. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/help.cjs +0 -67
  336. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/install.cjs +0 -52
  337. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/io.cjs +0 -447
  338. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.cjs +0 -323
  339. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-source.cjs +0 -87
  340. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.cjs +0 -612
  341. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.cjs +0 -376
  342. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.cjs +0 -73
  343. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/react-router-retirement.cjs +0 -215
  344. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.cjs +0 -135
  345. package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect.cjs +0 -454
  346. package/dist/cjs/ultramodern-tooling/config/constants.cjs +0 -48
  347. package/dist/cjs/ultramodern-tooling/config/synthesize.cjs +0 -157
  348. package/dist/cjs/ultramodern-workspace/delivery-unit-schema/up-projection.cjs +0 -188
  349. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.js +0 -154
  350. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +0 -9
  351. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.js +0 -63
  352. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.js +0 -7
  353. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +0 -47
  354. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +0 -146
  355. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.js +0 -97
  356. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxlint.js +0 -61
  357. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.js +0 -16
  358. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.js +0 -258
  359. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.js +0 -10
  360. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.js +0 -8
  361. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.js +0 -15
  362. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-ui-source.js +0 -100
  363. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/help.js +0 -29
  364. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/install.js +0 -14
  365. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/io.js +0 -385
  366. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +0 -276
  367. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-source.js +0 -49
  368. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +0 -559
  369. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +0 -329
  370. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +0 -19
  371. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/react-router-retirement.js +0 -148
  372. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.js +0 -80
  373. package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect.js +0 -405
  374. package/dist/esm/ultramodern-tooling/config/constants.js +0 -4
  375. package/dist/esm/ultramodern-tooling/config/synthesize.js +0 -108
  376. package/dist/esm/ultramodern-workspace/delivery-unit-schema/up-projection.js +0 -129
  377. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.js +0 -155
  378. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +0 -10
  379. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.js +0 -64
  380. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.js +0 -8
  381. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +0 -48
  382. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +0 -147
  383. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.js +0 -98
  384. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxlint.js +0 -62
  385. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.js +0 -17
  386. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.js +0 -259
  387. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.js +0 -11
  388. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.js +0 -9
  389. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.js +0 -16
  390. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-ui-source.js +0 -101
  391. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/help.js +0 -30
  392. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/install.js +0 -15
  393. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/io.js +0 -386
  394. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +0 -277
  395. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-source.js +0 -50
  396. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +0 -560
  397. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +0 -330
  398. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +0 -20
  399. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/react-router-retirement.js +0 -149
  400. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.js +0 -81
  401. package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect.js +0 -406
  402. package/dist/esm-node/ultramodern-tooling/config/constants.js +0 -5
  403. package/dist/esm-node/ultramodern-tooling/config/synthesize.js +0 -109
  404. package/dist/esm-node/ultramodern-workspace/delivery-unit-schema/up-projection.js +0 -130
  405. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.d.ts +0 -12
  406. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.d.ts +0 -4
  407. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.d.ts +0 -1
  408. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.d.ts +0 -3
  409. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.d.ts +0 -5
  410. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.d.ts +0 -3
  411. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.d.ts +0 -2
  412. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxlint.d.ts +0 -2
  413. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.d.ts +0 -4
  414. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.d.ts +0 -3
  415. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.d.ts +0 -3
  416. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.d.ts +0 -8
  417. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.d.ts +0 -3
  418. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-ui-source.d.ts +0 -3
  419. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/help.d.ts +0 -1
  420. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/install.d.ts +0 -2
  421. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/io.d.ts +0 -26
  422. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.d.ts +0 -25
  423. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/package-source.d.ts +0 -3
  424. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.d.ts +0 -26
  425. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.d.ts +0 -26
  426. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.d.ts +0 -6
  427. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/react-router-retirement.d.ts +0 -37
  428. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.d.ts +0 -4
  429. package/dist/types/ultramodern-tooling/commands/migrate-strict-effect.d.ts +0 -2
  430. package/dist/types/ultramodern-tooling/config/constants.d.ts +0 -3
  431. package/dist/types/ultramodern-tooling/config/synthesize.d.ts +0 -5
  432. package/dist/types/ultramodern-workspace/delivery-unit-schema/up-projection.d.ts +0 -189
  433. package/template-workspace/patches/@module-federation__bridge-react@2.9.0.patch +0 -47
  434. package/template-workspace/patches/@module-federation__dts-plugin@2.9.0.patch +0 -26
  435. package/template-workspace/patches/@module-federation__modern-js-v3@2.9.0.patch +0 -268
  436. package/template-workspace/patches/@module-federation__runtime-core@2.9.0.patch +0 -13
  437. package/template-workspace/patches/drizzle-orm-ts7-strict-declarations.patch +0 -471
  438. package/template-workspace/patches/msgpackr@2.1.0.patch +0 -30
  439. package/template-workspace/patches/zod@4.5.4.patch +0 -56
  440. package/templates/workspace-scripts/check-ultramodern-api-boundaries.mts +0 -779
  441. package/templates/workspace-scripts/check-ultramodern-i18n-boundaries.mts +0 -9
  442. package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +0 -4109
@@ -1,162 +1,102 @@
1
1
  import "node:module";
2
- function isEscaped(source, index) {
3
- let slashCount = 0;
4
- for(let cursor = index - 1; cursor >= 0 && '\\' === source[cursor]; cursor -= 1)slashCount += 1;
5
- return slashCount % 2 === 1;
2
+ import { parse, parseExpression } from "@babel/parser";
3
+ function unwrapExpression(node) {
4
+ while('TSAsExpression' === node.type || 'TSSatisfiesExpression' === node.type || 'TSNonNullExpression' === node.type || 'TSTypeAssertion' === node.type || 'ParenthesizedExpression' === node.type)node = node.expression;
5
+ return node;
6
6
  }
7
- function skipQuoted(source, start, quote) {
8
- for(let index = start + 1; index < source.length; index += 1)if (source[index] === quote && !isEscaped(source, index)) return index + 1;
9
- return source.length;
10
- }
11
- function skipLineComment(source, start) {
12
- const newline = source.indexOf('\n', start + 2);
13
- return -1 === newline ? source.length : newline + 1;
14
- }
15
- function skipBlockComment(source, start) {
16
- const close = source.indexOf('*/', start + 2);
17
- return -1 === close ? source.length : close + 2;
18
- }
19
- function skipTemplateExpression(source, start) {
20
- let depth = 1;
21
- for(let index = start + 1; index < source.length; index += 1){
22
- const char = source[index];
23
- const next = source[index + 1];
24
- if ("'" === char) {
25
- index = skipQuoted(source, index, "'") - 1;
26
- continue;
27
- }
28
- if ('"' === char) {
29
- index = skipQuoted(source, index, '"') - 1;
30
- continue;
31
- }
32
- if ('`' === char) {
33
- index = skipTemplate(source, index) - 1;
34
- continue;
35
- }
36
- if ('/' === char && '/' === next) {
37
- index = skipLineComment(source, index) - 1;
38
- continue;
39
- }
40
- if ('/' === char && '*' === next) {
41
- index = skipBlockComment(source, index) - 1;
42
- continue;
43
- }
44
- if ('{' === char) {
45
- depth += 1;
46
- continue;
47
- }
48
- if ('}' === char) {
49
- depth -= 1;
50
- if (0 === depth) return index + 1;
51
- }
52
- }
53
- return source.length;
54
- }
55
- function skipTemplate(source, start) {
56
- for(let index = start + 1; index < source.length; index += 1){
57
- const char = source[index];
58
- const next = source[index + 1];
59
- if ('`' === char && !isEscaped(source, index)) return index + 1;
60
- if ('$' === char && '{' === next && !isEscaped(source, index)) index = skipTemplateExpression(source, index + 1) - 1;
7
+ function parseStaticExpression(source) {
8
+ if (void 0 === source) return;
9
+ try {
10
+ return unwrapExpression(parseExpression(source, {
11
+ plugins: [
12
+ "typescript"
13
+ ]
14
+ }));
15
+ } catch {
16
+ return;
61
17
  }
62
- return source.length;
63
18
  }
64
- function skipSyntax(source, index) {
65
- const char = source[index];
66
- const next = source[index + 1];
67
- if ("'" === char) return skipQuoted(source, index, "'");
68
- if ('"' === char) return skipQuoted(source, index, '"');
69
- if ('`' === char) return skipTemplate(source, index);
70
- if ('/' === char && '/' === next) return skipLineComment(source, index);
71
- if ('/' === char && '*' === next) return skipBlockComment(source, index);
72
- return index;
19
+ function parseConfigModule(source) {
20
+ return parse(source, {
21
+ sourceType: 'module',
22
+ plugins: [
23
+ "typescript"
24
+ ]
25
+ });
73
26
  }
74
- function findBalanced(source, start, open, close) {
75
- let depth = 1;
76
- for(let index = start + 1; index < source.length; index += 1){
77
- const skipped = skipSyntax(source, index);
78
- if (skipped !== index) {
79
- index = skipped - 1;
80
- continue;
27
+ function locateExportedConfig(source, factory) {
28
+ const module = parseConfigModule(source);
29
+ const constants = new Map();
30
+ const bindingStarts = new Map();
31
+ const resolvedBindings = new Set();
32
+ const allowedReferences = new Set();
33
+ const factories = new Set();
34
+ const namespaces = new Set();
35
+ const defaults = [];
36
+ for (const statement of module.program.body){
37
+ if ('ImportDeclaration' === statement.type && 'type' !== statement.importKind && '@module-federation/modern-js-v3' === statement.source.value) {
38
+ for (const specifier of statement.specifiers)if ('ImportNamespaceSpecifier' === specifier.type) namespaces.add(specifier.local.name);
39
+ else if ('ImportSpecifier' === specifier.type && 'type' !== specifier.importKind && ('Identifier' === specifier.imported.type ? specifier.imported.name : specifier.imported.value) === 'createModuleFederationConfig') factories.add(specifier.local.name);
81
40
  }
82
- if (source[index] === open) {
83
- depth += 1;
84
- continue;
41
+ const declaration = 'ExportNamedDeclaration' === statement.type ? statement.declaration : statement;
42
+ if (declaration?.type === 'VariableDeclaration' && 'const' === declaration.kind) {
43
+ for (const binding of declaration.declarations)if ('Identifier' === binding.id.type && binding.init) {
44
+ constants.set(binding.id.name, binding.init);
45
+ bindingStarts.set(binding.id.name, binding.id.start);
46
+ }
85
47
  }
86
- if (source[index] === close) {
87
- depth -= 1;
88
- if (0 === depth) return index;
48
+ if ('ExportDefaultDeclaration' === statement.type) defaults.push(statement.declaration);
49
+ else if ('ExportNamedDeclaration' === statement.type && !statement.source && 'type' !== statement.exportKind) {
50
+ for (const specifier of statement.specifiers)if ('ExportSpecifier' === specifier.type && 'type' !== specifier.exportKind && ('Identifier' === specifier.exported.type ? specifier.exported.name : specifier.exported.value) === 'default') defaults.push(specifier.local);
89
51
  }
90
52
  }
91
- }
92
- function skipWhitespaceAndComments(source, start) {
93
- let index = start;
94
- while(index < source.length){
95
- const char = source[index];
96
- const next = source[index + 1];
97
- if (/\s/u.test(char ?? '')) {
98
- index += 1;
99
- continue;
100
- }
101
- if ('/' === char && '/' === next) {
102
- index = skipLineComment(source, index);
103
- continue;
104
- }
105
- if ('/' === char && '*' === next) {
106
- index = skipBlockComment(source, index);
107
- continue;
53
+ const resolve = (node, seen = new Set())=>{
54
+ if (!node) return;
55
+ if ('Identifier' === node.type) {
56
+ if (seen.has(node.name)) return;
57
+ seen.add(node.name);
58
+ resolvedBindings.add(node.name);
59
+ if (null != node.start) allowedReferences.add(node.start);
60
+ const bindingStart = bindingStarts.get(node.name);
61
+ if (null != bindingStart) allowedReferences.add(bindingStart);
62
+ return resolve(constants.get(node.name), seen);
108
63
  }
109
- break;
64
+ if ('TSAsExpression' === node.type || 'TSSatisfiesExpression' === node.type || 'TSNonNullExpression' === node.type || 'TSTypeAssertion' === node.type || 'ParenthesizedExpression' === node.type) return resolve(node.expression, seen);
65
+ return node;
66
+ };
67
+ if (1 !== defaults.length) return;
68
+ let node = resolve(defaults[0]);
69
+ if (factory) {
70
+ if (node?.type !== 'CallExpression' || 1 !== node.arguments.length) return;
71
+ const callee = node.callee;
72
+ const supported = 'Identifier' === callee.type && factories.has(callee.name) || 'MemberExpression' === callee.type && !callee.computed && 'Identifier' === callee.object.type && namespaces.has(callee.object.name) && 'Identifier' === callee.property.type && 'createModuleFederationConfig' === callee.property.name;
73
+ if (!supported) return;
74
+ const argument = node.arguments[0];
75
+ if (!argument || 'SpreadElement' === argument.type || 'ArgumentPlaceholder' === argument.type) return;
76
+ node = resolve(argument);
110
77
  }
111
- return index;
112
- }
113
- function hasIdentifierBoundary(source, start, end) {
114
- return !/[$\w]/u.test(source[start - 1] ?? '') && !/[$\w]/u.test(source[end] ?? '');
78
+ if (node?.type !== 'ObjectExpression' || null == node.start || null == node.end) return;
79
+ const hasOtherReference = (value)=>{
80
+ if (!value || 'object' != typeof value) return false;
81
+ if (Array.isArray(value)) return value.some(hasOtherReference);
82
+ const entry = value;
83
+ if ('Identifier' === entry.type && 'string' == typeof entry.name && resolvedBindings.has(entry.name) && ('number' != typeof entry.start || !allowedReferences.has(entry.start))) return true;
84
+ return Object.entries(entry).some(([key, child])=>'loc' !== key && 'comments' !== key && 'leadingComments' !== key && 'trailingComments' !== key && hasOtherReference(child));
85
+ };
86
+ if (hasOtherReference(module.program)) return;
87
+ return {
88
+ start: node.start,
89
+ end: node.end,
90
+ source: source.slice(node.start, node.end)
91
+ };
115
92
  }
116
93
  function locateCreateModuleFederationConfigObject(source) {
117
- const callee = 'createModuleFederationConfig';
118
- let offset = 0;
119
- while(offset < source.length){
120
- const index = source.indexOf(callee, offset);
121
- if (-1 === index) break;
122
- offset = index + callee.length;
123
- if (!hasIdentifierBoundary(source, index, offset)) continue;
124
- const parenIndex = skipWhitespaceAndComments(source, offset);
125
- if ('(' !== source[parenIndex]) continue;
126
- const argumentIndex = skipWhitespaceAndComments(source, parenIndex + 1);
127
- if ('{' !== source[argumentIndex]) throw new Error('Module Federation config must pass a static object literal to createModuleFederationConfig.');
128
- const closeIndex = findBalanced(source, argumentIndex, '{', '}');
129
- if (void 0 === closeIndex) throw new Error('Module Federation config object literal is not closed.');
130
- return {
131
- end: closeIndex + 1,
132
- source: source.slice(argumentIndex, closeIndex + 1),
133
- start: argumentIndex
134
- };
135
- }
94
+ return locateExportedConfig(source, true);
136
95
  }
137
96
  function findCreateModuleFederationConfigObject(source) {
138
97
  return locateCreateModuleFederationConfigObject(source)?.source;
139
98
  }
140
99
  function findExportDefaultObject(source) {
141
- const exportDefault = 'export default';
142
- const index = source.indexOf(exportDefault);
143
- if (-1 === index) return;
144
- const objectStart = skipWhitespaceAndComments(source, index + exportDefault.length);
145
- if ('{' !== source[objectStart]) return;
146
- const objectEnd = findBalanced(source, objectStart, '{', '}');
147
- if (void 0 === objectEnd) throw new Error('Module Federation export default object is not closed.');
148
- return source.slice(objectStart, objectEnd + 1);
149
- }
150
- function getOuterBlock(source, open, close) {
151
- const trimmed = source.trim();
152
- if (trimmed[0] !== open) return;
153
- const end = findBalanced(trimmed, 0, open, close);
154
- if (void 0 === end) return;
155
- const suffix = trimmed.slice(end + 1).trim();
156
- if ('' !== suffix && !suffix.startsWith('as ') && !suffix.startsWith('satisfies ')) return;
157
- return {
158
- inner: trimmed.slice(1, end),
159
- suffix
160
- };
100
+ return locateExportedConfig(source, false)?.source;
161
101
  }
162
- export { findCreateModuleFederationConfigObject, findExportDefaultObject, getOuterBlock, locateCreateModuleFederationConfigObject, skipSyntax };
102
+ export { findCreateModuleFederationConfigObject, findExportDefaultObject, locateCreateModuleFederationConfigObject, parseConfigModule, parseStaticExpression };
@@ -1,4 +1,5 @@
1
1
  import "node:module";
2
2
  export { discoverModuleFederationConfigs } from "./mf-validation/discovery.js";
3
+ export { readModuleFederationExposePaths } from "./mf-validation/exposes.js";
3
4
  export { inspectModuleFederationConfigSource } from "./mf-validation/inspect.js";
4
5
  export { validateModuleFederationTypes } from "./mf-validation/validate.js";
@@ -3,20 +3,24 @@ import { createDispatchWorkerNameEnv, createWorkerBindingEnv, createWorkerBindin
3
3
  import { createDeliveryUnitRecord } from "../delivery-unit.js";
4
4
  import { appEmitsBrowserUi, appHasApi, createBackendFederationName, createCloudflarePublicUrlEnv, createCloudflareWorkerName, distributedSsrExposes, distributedSsrFragmentRoute, resolveApiPrefix, resolveApiProtocol, resolveRemoteRefs, shellApp } from "../descriptors.js";
5
5
  import { renderFileTemplate } from "../fs-io.js";
6
- import { createRspackChunkLoadingGlobal, createRspackUniqueName } from "../naming.js";
6
+ import { createRspackChunkLoadingGlobal, createRspackUniqueName, relativeRootFor } from "../naming.js";
7
7
  import { createCloudflareSecurityContract, formatTsJsonValue } from "../policy.js";
8
8
  import { sortJsonValue } from "../types.js";
9
9
  import { CLOUDFLARE_COMPATIBILITY_DATE } from "../versions.js";
10
10
  import { createModuleFederationRemoteUrlHelpers, createModuleFederationRemotesConfig } from "./remote-refs.js";
11
11
  import { createSharedModuleFederationConfig, formatTsObjectLiteral } from "./shared-config.js";
12
- function createAppModernConfig(scope, app, remotes = [], enableTailwind = true, configuredDevPorts) {
12
+ function createAppModernConfig(scope, app, remotes = [], enableTailwind = true, _configuredDevPorts) {
13
13
  const deliveryUnit = createDeliveryUnitRecord(scope, app);
14
14
  const emitsUi = appEmitsBrowserUi(app);
15
- const bffImport = appHasApi(app) ? "import { bffPlugin } from '@modern-js/plugin-bff';\n" : '';
16
- const uiImports = emitsUi ? `import { moduleFederationPlugin } from '@module-federation/modern-js-v3';
15
+ const bffImport = appHasApi(app) ? "import { bffPlugin } from '@modern-js/plugin-bff-build-extensions';\n" : '';
16
+ const uiImports = emitsUi ? `import {
17
+ getBuildConfigEnvironment,
18
+ resolveDeployTarget,
19
+ } from '@modern-js/app-tools-extensions/config';
20
+ import { moduleFederationPlugin } from '@module-federation/modern-js-v3';
17
21
  import { withZephyr as withZephyrRspack } from 'zephyr-rspack-plugin';
18
22
  import { ultramodernLocalisedUrls } from './src/routes/ultramodern-route-metadata';
19
- ` : '';
23
+ ` : "import {\n getBuildConfigEnvironment,\n resolveDeployTarget,\n} from '@modern-js/app-tools-extensions/config';\n";
20
24
  const zephyrPluginSource = emitsUi ? `const zephyrRspackPlugin = () => ({
21
25
  name: 'ultramodern-zephyr-rspack-plugin',
22
26
  pre: ['@modern-js/plugin-module-federation-config'],
@@ -33,16 +37,19 @@ import { ultramodernLocalisedUrls } from './src/routes/ultramodern-route-metadat
33
37
  // no account, and is never blocked. This is the framework's "works with or
34
38
  // without Zephyr" contract. The plugin stays registered unconditionally
35
39
  // (this gate keys on Zephyr's native deploy token, not any UltraModern
36
- // opt-out). When deploying, ZE_FAIL_BUILD=true makes an upload failure a
37
- // hard build failure.
40
+ // opt-out). The deploy environment sets ZE_FAIL_BUILD=true next to
41
+ // ZE_CI_TOKEN so an upload failure is a hard build failure.
38
42
  const zephyrCiDeploy =
39
43
  (getBuildConfigEnvironment('ZE_CI_TOKEN') ?? '').length > 0;
40
44
  if (!zephyrCiDeploy) {
41
45
  return;
42
46
  }
43
- api.modifyRspackConfig(
44
- withBuildConfigEnvironment('ZE_FAIL_BUILD', 'true', withZephyrRspack()),
45
- );
47
+ if (getBuildConfigEnvironment('ZE_FAIL_BUILD') !== 'true') {
48
+ throw new Error(
49
+ 'ZE_CI_TOKEN is set but ZE_FAIL_BUILD is not "true", so a failed Zephyr upload would not fail the deploy. Set ZE_FAIL_BUILD=true in the deploy environment next to ZE_CI_TOKEN.',
50
+ );
51
+ }
52
+ api.modifyRspackConfig(withZephyrRspack());
46
53
  },
47
54
  });
48
55
 
@@ -100,18 +107,7 @@ const defaultAssetPrefix = defaultRemoteAssetPrefix;`;
100
107
  assetPrefix: '/',` : ` // Remote dev manifests must publish an absolute publicPath so host
101
108
  // shells load remoteEntry.js and exposed chunks from this dev server.
102
109
  assetPrefix,`;
103
- const developmentPorts = [
104
- ...new Set((configuredDevPorts ?? [
105
- shellApp.port,
106
- app.port,
107
- ...remotes.map((remote)=>remote.port)
108
- ]).filter((port)=>'number' == typeof port && Number.isFinite(port)))
109
- ].toSorted((left, right)=>left - right);
110
- const legacyCorsSource = `const moduleFederationDevServerOrigin =
111
- envValue('ULTRAMODERN_MF_DEV_ORIGIN') || 'http://localhost:${shellApp.port}';`;
112
- const configuredCorsSource = `const moduleFederationDevServerAllowedOrigins = [
113
- ${developmentPorts.map((port)=>` 'http://localhost:${port}',`).join('\n')}
114
- ];`;
110
+ const configuredCorsSource = "const moduleFederationDevServerAllowedOrigins = Object.values(developmentOverlay.ports).map(localPort => `http://localhost:${localPort}`);";
115
111
  const configuredCorsDevServer = ` // MF assets are non-credentialed and only permit configured local app origins.
116
112
  server: {
117
113
  cors: {
@@ -119,8 +115,7 @@ ${developmentPorts.map((port)=>` 'http://localhost:${port}',`).join('\n')}
119
115
  origin: moduleFederationDevServerAllowedOrigins,
120
116
  },
121
117
  },`;
122
- const useConfiguredCorsAllowlist = void 0 !== configuredDevPorts;
123
- const configuredCorsHeader = useConfiguredCorsAllowlist ? 1 === developmentPorts.length ? "'Access-Control-Allow-Origin': moduleFederationDevServerAllowedOrigins[0]," : '' : "'Access-Control-Allow-Origin': moduleFederationDevServerOrigin,";
118
+ const configuredCorsHeader = "...(moduleFederationDevServerAllowedOrigins.length === 1 ? { 'Access-Control-Allow-Origin': moduleFederationDevServerAllowedOrigins[0] } : {}),";
124
119
  return renderFileTemplate('workspace/apps/modern.config.ts', {
125
120
  value0: `${bffImport}${tailwindImport}`,
126
121
  value1: app.id,
@@ -130,7 +125,6 @@ ${developmentPorts.map((port)=>` 'http://localhost:${port}',`).join('\n')}
130
125
  value5: createCloudflarePublicUrlEnv(app),
131
126
  value6: String(shellApp.port),
132
127
  value7: defaultAssetPrefixSource,
133
- value8: createCloudflarePublicUrlEnv(app),
134
128
  value9: bffConfig,
135
129
  value10: CLOUDFLARE_COMPATIBILITY_DATE,
136
130
  value11: formatTsJsonValue(sortJsonValue(createCloudflareSecurityContract()), 16),
@@ -141,8 +135,8 @@ ${developmentPorts.map((port)=>` 'http://localhost:${port}',`).join('\n')}
141
135
  value16: createRspackUniqueName(app),
142
136
  value17: createRspackChunkLoadingGlobal(app),
143
137
  value18: tailwindBuilderPluginsConfig,
144
- value19: useConfiguredCorsAllowlist ? configuredCorsSource : legacyCorsSource,
145
- value20: useConfiguredCorsAllowlist ? configuredCorsDevServer : '',
138
+ value19: configuredCorsSource,
139
+ value20: configuredCorsDevServer,
146
140
  value21: configuredCorsHeader,
147
141
  value22: uiImports,
148
142
  value23: zephyrPluginSource,
@@ -150,7 +144,8 @@ ${developmentPorts.map((port)=>` 'http://localhost:${port}',`).join('\n')}
150
144
  value25: uiPluginEntries,
151
145
  value26: deliveryUnit.unitId,
152
146
  value27: deliveryUnit.buildMarker,
153
- value28: deliveryUnit.version
147
+ value28: deliveryUnit.version,
148
+ value29: relativeRootFor(app.directory)
154
149
  });
155
150
  }
156
151
  function createModuleFederationBridgeConfig(enableBridgeRouter) {
@@ -256,13 +251,13 @@ function createRemoteModuleFederationConfig(scope, app, remotes = [], enableBrid
256
251
  const hostOnlyMarker = hasExposes ? '' : '\n// ultramodern-mf: no-exposes';
257
252
  const appToolsConfigImports = [
258
253
  ...hasRemoteRefs ? [
259
- 'getBuildConfigEnvironment'
254
+ 'createRemoteManifestUrl'
260
255
  ] : [],
261
256
  ...hasExposes ? [
262
257
  'resolveEffectTsgoCompiler'
263
258
  ] : []
264
259
  ];
265
- const appToolsConfigImport = appToolsConfigImports.length > 0 ? `import { ${appToolsConfigImports.join(', ')} } from '@modern-js/app-tools/config';\n` : '';
260
+ const appToolsConfigImport = appToolsConfigImports.length > 0 ? `import { ${appToolsConfigImports.join(', ')} } from '@modern-js/app-tools-extensions/config';\n` : '';
266
261
  const tsgoCompilerInstance = hasExposes ? `
267
262
  const tsgoCompilerInstance =
268
263
  resolveEffectTsgoCompiler({ from: import.meta.url });
@@ -1,68 +1,49 @@
1
1
  import "node:module";
2
- import { createUltramodernBuildArtifact } from "@modern-js/utils/universal";
2
+ import { createUltramodernBuildArtifact } from "@modern-js/backend-federation-contracts";
3
3
  import { createDeliveryUnitRecord } from "../delivery-unit.js";
4
- function deliveryUnitRecordFor(scope, app) {
5
- return app.deliveryUnit ? app.deliveryUnit : createDeliveryUnitRecord(scope, app);
6
- }
4
+ import { appEmitsBrowserUi, appHasApi } from "../descriptors.js";
7
5
  function createUltramodernBuildArtifactJson(scope, app) {
8
- const record = deliveryUnitRecordFor(scope, app);
9
- return `${JSON.stringify(createUltramodernBuildArtifact(record), null, 2)}\n`;
6
+ const record = createDeliveryUnitRecord(scope, app);
7
+ const artifact = createUltramodernBuildArtifact(record);
8
+ return `${JSON.stringify({
9
+ ...artifact,
10
+ deliveryUnit: {
11
+ ...record,
12
+ ...artifact.deliveryUnit
13
+ },
14
+ surfaces: {
15
+ api: {
16
+ ...record,
17
+ ...artifact.surfaces.api
18
+ },
19
+ ui: {
20
+ ...record,
21
+ ...artifact.surfaces.ui
22
+ }
23
+ }
24
+ }, null, 2)}\n`;
10
25
  }
11
- function createUltramodernBuildModule(scope, app) {
12
- const record = deliveryUnitRecordFor(scope, app);
13
- return `declare const ULTRAMODERN_BUILD_MARKER: string;
14
- declare const ULTRAMODERN_SOURCE_REVISION: string;
26
+ function createUltramodernBuildModule(_scope, app, includeUiMarker = appEmitsBrowserUi(app)) {
27
+ return `import buildArtifact = require('./ultramodern-build.json');
28
+ import { resolveUltramodernBuildArtifact } from '@modern-js/runtime-extensions/build-identity';
15
29
 
16
- const ultramodernGeneratedBuildArtifact = ${JSON.stringify(createUltramodernBuildArtifact(record), null, 2)} as const;
17
- const ultramodernBuildMarker =
18
- typeof ULTRAMODERN_BUILD_MARKER === 'string'
19
- ? ULTRAMODERN_BUILD_MARKER
20
- : ultramodernGeneratedBuildArtifact.deliveryUnit.buildMarker;
21
- const ultramodernSourceRevision =
22
- typeof ULTRAMODERN_SOURCE_REVISION === 'string'
23
- ? ULTRAMODERN_SOURCE_REVISION
24
- : ultramodernGeneratedBuildArtifact.deliveryUnit.sourceRevision;
25
- const ultramodernBuildArtifact = {
26
- ...ultramodernGeneratedBuildArtifact,
27
- deliveryUnit: {
28
- ...ultramodernGeneratedBuildArtifact.deliveryUnit,
29
- build: ultramodernBuildMarker,
30
- buildMarker: ultramodernBuildMarker,
31
- sourceRevision: ultramodernSourceRevision,
32
- },
33
- surfaces: {
34
- api: {
35
- ...ultramodernGeneratedBuildArtifact.surfaces.api,
36
- build: ultramodernBuildMarker,
37
- buildMarker: ultramodernBuildMarker,
38
- sourceRevision: ultramodernSourceRevision,
39
- },
40
- ui: {
41
- ...ultramodernGeneratedBuildArtifact.surfaces.ui,
42
- build: ultramodernBuildMarker,
43
- buildMarker: ultramodernBuildMarker,
44
- sourceRevision: ultramodernSourceRevision,
45
- },
46
- },
47
- } as const;
30
+ declare const ULTRAMODERN_BUILD_MARKER: string;
31
+ declare const ULTRAMODERN_SOURCE_REVISION: string;
48
32
 
49
- export { ultramodernBuildArtifact };
33
+ const ultramodernBuildArtifact = resolveUltramodernBuildArtifact(buildArtifact, {
34
+ buildMarker: () => ULTRAMODERN_BUILD_MARKER,
35
+ sourceRevision: () => ULTRAMODERN_SOURCE_REVISION,
36
+ });
50
37
 
51
- export const ultramodernDeliveryUnit =
52
- ultramodernBuildArtifact.deliveryUnit;
53
- export const ultramodernVerticalIdentity = ultramodernDeliveryUnit;
54
- export const ultramodernUiMarker = ultramodernBuildArtifact.surfaces.ui;
55
- export const ultramodernApiMarker = ultramodernBuildArtifact.surfaces.api;
56
- `;
38
+ export const ultramodernDeliveryUnit = ultramodernBuildArtifact.deliveryUnit;
39
+ ${includeUiMarker ? 'export const ultramodernUiMarker = ultramodernBuildArtifact.surfaces.ui;\n' : ''}${'shell' !== app.kind && appHasApi(app) ? 'export const ultramodernApiMarker = ultramodernBuildArtifact.surfaces.api;\n' : ''}`;
57
40
  }
58
- function createUltramodernBuildReexportModule() {
59
- return `export {
60
- ultramodernBuildArtifact,
61
- ultramodernApiMarker,
62
- ultramodernDeliveryUnit,
63
- ultramodernUiMarker,
64
- ultramodernVerticalIdentity,
65
- } from '../shared/ultramodern-build';
66
- `;
41
+ function createUltramodernBuildReexportModule(app, includeUiMarker = appEmitsBrowserUi(app)) {
42
+ const names = [
43
+ 'ultramodernDeliveryUnit'
44
+ ];
45
+ if (includeUiMarker) names.push('ultramodernUiMarker');
46
+ if ('shell' !== app.kind && appHasApi(app)) names.push('ultramodernApiMarker');
47
+ return `export { ${names.join(', ')} } from '../shared/ultramodern-build';\n`;
67
48
  }
68
49
  export { createUltramodernBuildArtifactJson, createUltramodernBuildModule, createUltramodernBuildReexportModule };
@@ -2,49 +2,7 @@ import "node:module";
2
2
  import { createCloudflarePublicUrlEnv, createCloudflareWorkerName, createRemoteManifestEnv, remoteDependencyAlias, resolveRemoteRefs } from "../descriptors.js";
3
3
  function createModuleFederationRemoteUrlHelpers(app, remotes = [], includeAppToolsImport = true) {
4
4
  if (0 === resolveRemoteRefs(app, remotes).length) return '';
5
- const appToolsImport = includeAppToolsImport ? "import { getBuildConfigEnvironment } from '@modern-js/app-tools/config';\n\n" : '';
6
- return `${appToolsImport}const cloudflareDeployEnabled =
7
- getBuildConfigEnvironment('MODERNJS_DEPLOY') === 'cloudflare';
8
- const cloudflareWorkersDevSubdomain =
9
- getBuildConfigEnvironment('ULTRAMODERN_CLOUDFLARE_WORKERS_DEV_SUBDOMAIN')?.trim();
10
- const requireCloudflarePublicUrls =
11
- getBuildConfigEnvironment('ULTRAMODERN_CLOUDFLARE_REQUIRE_PUBLIC_URLS') === 'true';
12
-
13
- const createRemoteManifestUrl = (options: {
14
- manifestEnv: string;
15
- mfName: string;
16
- port: number;
17
- publicUrlEnv: string;
18
- workerName: string;
19
- }) => {
20
- const configuredManifest = getBuildConfigEnvironment(options.manifestEnv)?.trim();
21
- if (configuredManifest !== undefined && configuredManifest.length > 0) {
22
- return configuredManifest;
23
- }
24
-
25
- const configuredPublicUrl = getBuildConfigEnvironment(options.publicUrlEnv)?.trim();
26
- if (configuredPublicUrl !== undefined && configuredPublicUrl.length > 0) {
27
- return \`\${options.mfName}@\${configuredPublicUrl.replace(/\\/+$/u, '')}/mf-manifest.json\`;
28
- }
29
-
30
- if (
31
- cloudflareDeployEnabled &&
32
- cloudflareWorkersDevSubdomain !== undefined &&
33
- cloudflareWorkersDevSubdomain.length > 0
34
- ) {
35
- return \`\${options.mfName}@https://\${options.workerName}.\${cloudflareWorkersDevSubdomain}.workers.dev/mf-manifest.json\`;
36
- }
37
-
38
- if (cloudflareDeployEnabled && requireCloudflarePublicUrls) {
39
- throw new Error(
40
- \`Cloudflare deploy needs \${options.publicUrlEnv}, \${options.manifestEnv}, or ULTRAMODERN_CLOUDFLARE_WORKERS_DEV_SUBDOMAIN for remote \${options.mfName}.\`,
41
- );
42
- }
43
-
44
- return \`\${options.mfName}@http://localhost:\${options.port}/mf-manifest.json\`;
45
- };
46
-
47
- `;
5
+ return includeAppToolsImport ? "import { createRemoteManifestUrl } from '@modern-js/app-tools-extensions/config';\n\n" : '';
48
6
  }
49
7
  function createModuleFederationRemotesConfig(scope, app, remotes = []) {
50
8
  const remoteEntries = resolveRemoteRefs(app, remotes).toSorted((left, right)=>remoteDependencyAlias(left).localeCompare(remoteDependencyAlias(right))).map((remote)=>{