@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
@@ -83,7 +83,8 @@ const workspaceOxfmtIgnorePatterns = [
83
83
  '.modern',
84
84
  '.modernjs',
85
85
  '**/modern-tanstack/**',
86
- '**/routeTree.gen.*'
86
+ '**/routeTree.gen.*',
87
+ '**/src/routes/ultramodern-route-metadata.ts'
87
88
  ];
88
89
  const formattableExtensions = new Set([
89
90
  '.cjs',
@@ -158,7 +159,39 @@ function writeFileReplacing(targetDir, relativePath, content) {
158
159
  function writeJson(targetDir, relativePath, value) {
159
160
  writeFile(targetDir, relativePath, `${JSON.stringify(value, null, 2)}\n`);
160
161
  }
161
- function formatGeneratedSourceCandidates(sources) {
162
+ function formatGeneratedSourceCandidates(sources, formattingWorkspaceRoot) {
163
+ if (formattingWorkspaceRoot) {
164
+ const oxfmtBin = resolveOxfmtBin();
165
+ return sources.map(([relativePath, source])=>{
166
+ assertSafeRelativePath(relativePath);
167
+ if (!formattableExtensions.has(external_node_path_default().extname(relativePath))) return source;
168
+ const result = (0, external_node_child_process_namespaceObject.spawnSync)(process.execPath, [
169
+ oxfmtBin,
170
+ '--stdin-filepath',
171
+ external_node_path_default().resolve(formattingWorkspaceRoot, relativePath)
172
+ ], {
173
+ cwd: formattingWorkspaceRoot,
174
+ input: source,
175
+ encoding: 'utf-8',
176
+ env: {
177
+ ...process.env,
178
+ FORCE_COLOR: '0'
179
+ }
180
+ });
181
+ if (0 !== result.status) {
182
+ const detail = [
183
+ result.error?.message,
184
+ result.stderr?.trim(),
185
+ result.stdout?.trim()
186
+ ].filter(Boolean).join('\n');
187
+ throw new Error([
188
+ 'Failed to format generated UltraModern workspace output.',
189
+ detail
190
+ ].filter(Boolean).join('\n'));
191
+ }
192
+ return result.stdout;
193
+ });
194
+ }
162
195
  const temporaryRoot = external_node_fs_default().mkdtempSync(external_node_path_default().join(external_node_os_default().tmpdir(), 'ultramodern-format-'));
163
196
  try {
164
197
  sources.forEach(([relativePath, source])=>writeFileReplacing(temporaryRoot, relativePath, source));
@@ -225,7 +258,9 @@ function writePreformatConfig(targetDir) {
225
258
  ' ignorePatterns: [',
226
259
  ...workspaceOxfmtIgnorePatterns.map((pattern)=>` ${JSON.stringify(pattern)},`),
227
260
  ' ],',
261
+ ' printWidth: 120,',
228
262
  ' singleQuote: true,',
263
+ " trailingComma: 'all',",
229
264
  '});',
230
265
  ''
231
266
  ].join('\n'), 'utf-8');
@@ -50,7 +50,7 @@ const external_node_path_namespaceObject = require("node:path");
50
50
  var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
51
51
  const rpc_cjs_namespaceObject = require("./api/rpc.cjs");
52
52
  const external_delivery_unit_cjs_namespaceObject = require("./delivery-unit.cjs");
53
- const up_projection_cjs_namespaceObject = require("./delivery-unit-schema/up-projection.cjs");
53
+ const surfaces_cjs_namespaceObject = require("./delivery-unit-schema/surfaces.cjs");
54
54
  const external_descriptors_cjs_namespaceObject = require("./descriptors.cjs");
55
55
  const external_naming_cjs_namespaceObject = require("./naming.cjs");
56
56
  const external_types_cjs_namespaceObject = require("./types.cjs");
@@ -124,15 +124,15 @@ function createGenerationResult(options) {
124
124
  app.id,
125
125
  app.apiPrefix
126
126
  ])),
127
- generatedContractPath: external_descriptors_cjs_namespaceObject.ULTRAMODERN_CONFIG_PATH,
127
+ generatedContractPath: 'topology/reference-topology.json',
128
128
  warnings: options.warnings ?? [],
129
129
  deliveryUnits: options.createdApps.map((app)=>createGeneratedDeliveryUnitDescriptor(options.packageScope, app))
130
130
  };
131
131
  }
132
132
  function createGeneratedDeliveryUnitDescriptor(scope, app) {
133
133
  const record = (0, external_delivery_unit_cjs_namespaceObject.createDeliveryUnitRecord)(scope, app);
134
- const surfaces = Object.entries(app.exposes ?? {}).map(([key, value])=>(0, up_projection_cjs_namespaceObject.exposeSurface)(app, key, value));
135
- if ((0, external_descriptors_cjs_namespaceObject.appHasApi)(app)) surfaces.push((0, up_projection_cjs_namespaceObject.apiSurface)(app.api, (0, external_descriptors_cjs_namespaceObject.resolveApiProtocol)(app), 'rpc' === (0, external_descriptors_cjs_namespaceObject.resolveApiProtocol)(app) ? (0, rpc_cjs_namespaceObject.rpcPath)(app) : app.api.prefix));
134
+ const surfaces = Object.entries(app.exposes ?? {}).map(([key, value])=>(0, surfaces_cjs_namespaceObject.exposeSurface)(app, key, value));
135
+ if ((0, external_descriptors_cjs_namespaceObject.appHasApi)(app)) surfaces.push((0, surfaces_cjs_namespaceObject.apiSurface)(app.api, (0, external_descriptors_cjs_namespaceObject.resolveApiProtocol)(app), 'rpc' === (0, external_descriptors_cjs_namespaceObject.resolveApiProtocol)(app) ? (0, rpc_cjs_namespaceObject.rpcPath)(app) : app.api.prefix));
136
136
  const canonicalKind = 'shell' === app.kind ? 'shell' : app.deliveryUnitKind ?? 'microvertical';
137
137
  return {
138
138
  unitId: record.unitId,
@@ -38,8 +38,7 @@ __webpack_require__.d(__webpack_exports__, {
38
38
  generateUltramodernWorkspace: ()=>external_write_workspace_cjs_namespaceObject.generateUltramodernWorkspace,
39
39
  normalizeUltramodernBridgeConfig: ()=>external_bridge_config_cjs_namespaceObject.normalizeUltramodernBridgeConfig,
40
40
  planUltramodernShell: ()=>external_add_shell_cjs_namespaceObject.planUltramodernShell,
41
- planUltramodernVertical: ()=>external_add_vertical_cjs_namespaceObject.planUltramodernVertical,
42
- resolveConfiguredAdditionalShells: ()=>external_shells_cjs_namespaceObject.resolveConfiguredAdditionalShells
41
+ planUltramodernVertical: ()=>external_add_vertical_cjs_namespaceObject.planUltramodernVertical
43
42
  });
44
43
  const external_add_shell_cjs_namespaceObject = require("./add-shell.cjs");
45
44
  const external_add_vertical_cjs_namespaceObject = require("./add-vertical.cjs");
@@ -59,7 +58,6 @@ exports.generateUltramodernWorkspace = __webpack_exports__.generateUltramodernWo
59
58
  exports.normalizeUltramodernBridgeConfig = __webpack_exports__.normalizeUltramodernBridgeConfig;
60
59
  exports.planUltramodernShell = __webpack_exports__.planUltramodernShell;
61
60
  exports.planUltramodernVertical = __webpack_exports__.planUltramodernVertical;
62
- exports.resolveConfiguredAdditionalShells = __webpack_exports__.resolveConfiguredAdditionalShells;
63
61
  for(var __rspack_i in __webpack_exports__)if (-1 === [
64
62
  "BASELINE_DEPENDENCY_PINS",
65
63
  "OverlayBaselineRelaxationError",
@@ -71,8 +69,7 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
71
69
  "generateUltramodernWorkspace",
72
70
  "normalizeUltramodernBridgeConfig",
73
71
  "planUltramodernShell",
74
- "planUltramodernVertical",
75
- "resolveConfiguredAdditionalShells"
72
+ "planUltramodernVertical"
76
73
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
77
74
  Object.defineProperty(exports, '__esModule', {
78
75
  value: true
@@ -32,9 +32,6 @@ const mfTypesArchives = {
32
32
  cloudflare: 'dist-cloudflare/@mf-types.zip',
33
33
  node: 'dist/@mf-types.zip'
34
34
  };
35
- const generatedMetadataPaths = [
36
- '.modernjs/ultramodern.json'
37
- ];
38
35
  const defaultAppRootDirs = [
39
36
  'apps',
40
37
  'verticals'
@@ -50,19 +47,16 @@ const skippedScanDirs = new Set([
50
47
  ]);
51
48
  __webpack_require__.d(__webpack_exports__, {}, {
52
49
  defaultAppRootDirs: defaultAppRootDirs,
53
- generatedMetadataPaths: generatedMetadataPaths,
54
50
  mfTypesArchives: mfTypesArchives,
55
51
  moduleFederationConfigFile: moduleFederationConfigFile,
56
52
  skippedScanDirs: skippedScanDirs
57
53
  });
58
54
  exports.defaultAppRootDirs = __webpack_exports__.defaultAppRootDirs;
59
- exports.generatedMetadataPaths = __webpack_exports__.generatedMetadataPaths;
60
55
  exports.mfTypesArchives = __webpack_exports__.mfTypesArchives;
61
56
  exports.moduleFederationConfigFile = __webpack_exports__.moduleFederationConfigFile;
62
57
  exports.skippedScanDirs = __webpack_exports__.skippedScanDirs;
63
58
  for(var __rspack_i in __webpack_exports__)if (-1 === [
64
59
  "defaultAppRootDirs",
65
- "generatedMetadataPaths",
66
60
  "mfTypesArchives",
67
61
  "moduleFederationConfigFile",
68
62
  "skippedScanDirs"
@@ -48,14 +48,14 @@ const external_path_utils_cjs_namespaceObject = require("./path-utils.cjs");
48
48
  function discoverModuleFederationConfigs(options) {
49
49
  const workspaceRoot = external_node_path_default().resolve(options.workspaceRoot);
50
50
  const appDirs = new Set();
51
+ const metadata = (0, external_path_utils_cjs_namespaceObject.readJsonIfExists)(external_node_path_default().join(workspaceRoot, 'topology/reference-topology.json'));
52
+ const metadataAppDirs = new Set();
53
+ const apiOnlyDirs = (0, external_path_utils_cjs_namespaceObject.collectMetadataAppDirs)(metadata, metadataAppDirs);
51
54
  if (options.appDirs && options.appDirs.length > 0) for (const appDir of options.appDirs)appDirs.add((0, external_path_utils_cjs_namespaceObject.normalizeRelativePath)(appDir));
52
55
  else {
53
- const metadata = (0, external_path_utils_cjs_namespaceObject.readGeneratedMetadata)(workspaceRoot);
54
56
  const scanRoots = new Set(external_constants_cjs_namespaceObject.defaultAppRootDirs);
55
- for (const metadataEntry of metadata){
56
- (0, external_path_utils_cjs_namespaceObject.collectMetadataAppDirs)(metadataEntry, appDirs);
57
- (0, external_path_utils_cjs_namespaceObject.collectBridgeScanRoots)(metadataEntry, scanRoots);
58
- }
57
+ for (const appDir of metadataAppDirs)appDirs.add(appDir);
58
+ (0, external_path_utils_cjs_namespaceObject.collectWorkspaceScanRoots)(workspaceRoot, scanRoots);
59
59
  for (const appDir of appDirs){
60
60
  const segment = (0, external_path_utils_cjs_namespaceObject.firstSegment)(appDir);
61
61
  if (segment) scanRoots.add(segment);
@@ -63,7 +63,7 @@ function discoverModuleFederationConfigs(options) {
63
63
  if (external_node_fs_default().existsSync(external_node_path_default().join(workspaceRoot, external_constants_cjs_namespaceObject.moduleFederationConfigFile))) appDirs.add('.');
64
64
  for (const scanRoot of scanRoots)(0, external_path_utils_cjs_namespaceObject.scanForModuleFederationConfigs)(workspaceRoot, scanRoot, appDirs);
65
65
  }
66
- return Array.from(appDirs).sort().map((appDir)=>({
66
+ return Array.from(appDirs).sort().filter((appDir)=>!apiOnlyDirs.has(appDir) || external_node_fs_default().existsSync(external_node_path_default().join(workspaceRoot, appDir, external_constants_cjs_namespaceObject.moduleFederationConfigFile))).map((appDir)=>({
67
67
  appDir,
68
68
  configPath: external_node_path_default().join(workspaceRoot, appDir, external_constants_cjs_namespaceObject.moduleFederationConfigFile)
69
69
  }));
@@ -37,30 +37,26 @@ var __webpack_require__ = {};
37
37
  var __webpack_exports__ = {};
38
38
  __webpack_require__.r(__webpack_exports__);
39
39
  __webpack_require__.d(__webpack_exports__, {
40
- ensureGeneratedPatchFile: ()=>ensureGeneratedPatchFile,
41
- removeGeneratedPatchFileIfUnchanged: ()=>removeGeneratedPatchFileIfUnchanged
40
+ readModuleFederationExposePaths: ()=>readModuleFederationExposePaths
42
41
  });
43
42
  const external_node_fs_namespaceObject = require("node:fs");
44
43
  var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
45
44
  const external_node_path_namespaceObject = require("node:path");
46
45
  var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
47
- function ensureGeneratedPatchFile(io, relativePatchPath, sourcePatchPath) {
48
- const targetPath = external_node_path_default().join(io.workspaceRoot, relativePatchPath);
49
- const patch = external_node_fs_default().readFileSync(sourcePatchPath, 'utf-8');
50
- return io.write(targetPath, patch);
46
+ const external_constants_cjs_namespaceObject = require("./constants.cjs");
47
+ const external_inspect_cjs_namespaceObject = require("./inspect.cjs");
48
+ function readModuleFederationExposePaths(workspaceRoot, appDirectory) {
49
+ const configPath = external_node_path_default().join(workspaceRoot, appDirectory, external_constants_cjs_namespaceObject.moduleFederationConfigFile);
50
+ if (!external_node_fs_default().existsSync(configPath)) return;
51
+ try {
52
+ return (0, external_inspect_cjs_namespaceObject.inspectModuleFederationConfigSource)(external_node_fs_default().readFileSync(configPath, 'utf-8'), appDirectory, external_node_path_default().join(appDirectory, external_constants_cjs_namespaceObject.moduleFederationConfigFile)).exposePaths;
53
+ } catch {
54
+ return;
55
+ }
51
56
  }
52
- function removeGeneratedPatchFileIfUnchanged(io, relativePatchPath, sourcePatchPath) {
53
- const targetPath = external_node_path_default().join(io.workspaceRoot, relativePatchPath);
54
- if (!external_node_fs_default().existsSync(targetPath)) return false;
55
- const patch = external_node_fs_default().readFileSync(sourcePatchPath, 'utf-8');
56
- if (external_node_fs_default().readFileSync(targetPath, 'utf-8') !== patch) return false;
57
- return io.remove(targetPath);
58
- }
59
- exports.ensureGeneratedPatchFile = __webpack_exports__.ensureGeneratedPatchFile;
60
- exports.removeGeneratedPatchFileIfUnchanged = __webpack_exports__.removeGeneratedPatchFileIfUnchanged;
57
+ exports.readModuleFederationExposePaths = __webpack_exports__.readModuleFederationExposePaths;
61
58
  for(var __rspack_i in __webpack_exports__)if (-1 === [
62
- "ensureGeneratedPatchFile",
63
- "removeGeneratedPatchFileIfUnchanged"
59
+ "readModuleFederationExposePaths"
64
60
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
65
61
  Object.defineProperty(exports, '__esModule', {
66
62
  value: true
@@ -33,17 +33,35 @@ __webpack_require__.d(__webpack_exports__, {
33
33
  const external_object_literal_cjs_namespaceObject = require("./object-literal.cjs");
34
34
  const external_syntax_cjs_namespaceObject = require("./syntax.cjs");
35
35
  function extractExposes(configPath, value) {
36
- if (void 0 === value) return [];
36
+ if (void 0 === value) return {
37
+ exposePaths: {},
38
+ exposes: []
39
+ };
37
40
  const object = (0, external_object_literal_cjs_namespaceObject.parseObjectLiteral)(value);
38
41
  if (object) {
39
42
  if (object.hasSpread) throw new Error(`Cannot statically extract Module Federation exposes from ${configPath}; use a literal exposes object without spreads.`);
40
- return Array.from(object.properties.keys()).sort();
43
+ const exposePaths = {};
44
+ for (const [expose, source] of object.properties){
45
+ const exposePath = (0, external_object_literal_cjs_namespaceObject.parseLiteralString)(source);
46
+ if (void 0 !== exposePath) exposePaths[expose] = exposePath;
47
+ }
48
+ return {
49
+ exposePaths,
50
+ exposes: Array.from(object.properties.keys()).sort()
51
+ };
41
52
  }
42
53
  const array = (0, external_object_literal_cjs_namespaceObject.parseArrayLiteral)(value);
43
- if (array) return array.sort();
54
+ if (array) return {
55
+ exposePaths: {},
56
+ exposes: array.sort()
57
+ };
44
58
  throw new Error(`Cannot statically extract Module Federation exposes from ${configPath}; use a literal exposes object or string array.`);
45
59
  }
46
- function extractDtsSettings(configPath, value) {
60
+ function extractDtsSettings(configPath, value, exposes) {
61
+ if ('false' === value) {
62
+ if (exposes.length > 0) throw new Error(`Module Federation DTS cannot be disabled for exposed app ${configPath}.`);
63
+ return {};
64
+ }
47
65
  if (void 0 === value) return {};
48
66
  const dts = (0, external_object_literal_cjs_namespaceObject.parseObjectLiteral)(value);
49
67
  if (!dts || dts.hasSpread) throw new Error(`Cannot statically extract Module Federation DTS settings from ${configPath}; use a literal dts object.`);
@@ -56,7 +74,7 @@ function extractDtsSettings(configPath, value) {
56
74
  };
57
75
  }
58
76
  function hasHostOnlyNoExposesDeclaration(source) {
59
- return /@?ultramodern-mf\s*:?\s*(?:host-only|no-exposes)\b/iu.test(source);
77
+ return ((0, external_syntax_cjs_namespaceObject.parseConfigModule)(source).comments ?? []).some((comment)=>/@?ultramodern-mf\s*:?\s*(?:host-only|no-exposes)\b/iu.test(comment.value));
60
78
  }
61
79
  function inspectModuleFederationConfigSource(source, appDir, configPath) {
62
80
  const configObject = (0, external_syntax_cjs_namespaceObject.findCreateModuleFederationConfigObject)(source) ?? (0, external_syntax_cjs_namespaceObject.findExportDefaultObject)(source);
@@ -64,13 +82,14 @@ function inspectModuleFederationConfigSource(source, appDir, configPath) {
64
82
  const properties = (0, external_object_literal_cjs_namespaceObject.parseObjectLiteral)(configObject);
65
83
  if (!properties) throw new Error(`Cannot statically inspect Module Federation config ${configPath}; expected a literal config object.`);
66
84
  if (properties.hasSpread) throw new Error(`Cannot statically inspect Module Federation config ${configPath}; top-level config spreads are not supported.`);
67
- const exposes = extractExposes(configPath, properties.properties.get('exposes'));
85
+ const { exposePaths, exposes } = extractExposes(configPath, properties.properties.get('exposes'));
68
86
  const hostOnlyNoExposes = hasHostOnlyNoExposesDeclaration(source);
69
87
  if (hostOnlyNoExposes && exposes.length > 0) throw new Error(`Module Federation host-only/no-exposes declaration conflicts with actual exposes in ${configPath}.`);
70
88
  return {
71
89
  appDir,
72
90
  configPath,
73
- dts: extractDtsSettings(configPath, properties.properties.get('dts')),
91
+ dts: extractDtsSettings(configPath, properties.properties.get('dts'), exposes),
92
+ exposePaths,
74
93
  exposes,
75
94
  hostOnlyNoExposes
76
95
  };
@@ -33,129 +33,29 @@ __webpack_require__.d(__webpack_exports__, {
33
33
  parseObjectLiteral: ()=>parseObjectLiteral
34
34
  });
35
35
  const external_syntax_cjs_namespaceObject = require("./syntax.cjs");
36
- function splitTopLevelEntries(source) {
37
- const entries = [];
38
- let start = 0;
39
- let braceDepth = 0;
40
- let bracketDepth = 0;
41
- let parenDepth = 0;
42
- for(let index = 0; index < source.length; index += 1){
43
- const skipped = (0, external_syntax_cjs_namespaceObject.skipSyntax)(source, index);
44
- if (skipped !== index) {
45
- index = skipped - 1;
46
- continue;
47
- }
48
- const char = source[index];
49
- if ('{' === char) braceDepth += 1;
50
- else if ('}' === char) braceDepth -= 1;
51
- else if ('[' === char) bracketDepth += 1;
52
- else if (']' === char) bracketDepth -= 1;
53
- else if ('(' === char) parenDepth += 1;
54
- else if (')' === char) parenDepth -= 1;
55
- else if (',' === char && 0 === braceDepth && 0 === bracketDepth && 0 === parenDepth) {
56
- const entry = source.slice(start, index).trim();
57
- if (entry) entries.push(entry);
58
- start = index + 1;
59
- }
60
- }
61
- const finalEntry = source.slice(start).trim();
62
- if (finalEntry) entries.push(finalEntry);
63
- return entries;
64
- }
65
- function findTopLevelColon(source) {
66
- let braceDepth = 0;
67
- let bracketDepth = 0;
68
- let parenDepth = 0;
69
- for(let index = 0; index < source.length; index += 1){
70
- const skipped = (0, external_syntax_cjs_namespaceObject.skipSyntax)(source, index);
71
- if (skipped !== index) {
72
- index = skipped - 1;
73
- continue;
74
- }
75
- const char = source[index];
76
- if ('{' === char) braceDepth += 1;
77
- else if ('}' === char) braceDepth -= 1;
78
- else if ('[' === char) bracketDepth += 1;
79
- else if (']' === char) bracketDepth -= 1;
80
- else if ('(' === char) parenDepth += 1;
81
- else if (')' === char) parenDepth -= 1;
82
- else if (':' === char && 0 === braceDepth && 0 === bracketDepth && 0 === parenDepth) return index;
83
- }
84
- return -1;
85
- }
86
- function stripConstAssertion(source) {
87
- return source.trim().replace(/\s+as\s+const\s*$/u, '').trim();
88
- }
89
- function unescapeSingleQuotedString(value) {
90
- return value.replace(/\\(['"\\nrtbfv0])/gu, (_, sequence)=>{
91
- switch(sequence){
92
- case 'n':
93
- return '\n';
94
- case 'r':
95
- return '\r';
96
- case 't':
97
- return '\t';
98
- case 'b':
99
- return '\b';
100
- case 'f':
101
- return '\f';
102
- case 'v':
103
- return '\v';
104
- case '0':
105
- return '\0';
106
- default:
107
- return sequence;
108
- }
109
- });
110
- }
111
36
  function parseLiteralString(source) {
112
- if (void 0 === source) return;
113
- const trimmed = stripConstAssertion(source);
114
- const quote = trimmed[0];
115
- if ("'" !== quote && '"' !== quote && '`' !== quote) return;
116
- if ('`' === quote) {
117
- if (trimmed.includes('${')) return;
118
- const close = trimmed.lastIndexOf('`');
119
- return close > 0 ? trimmed.slice(1, close).replaceAll('\\`', '`') : void 0;
120
- }
121
- const close = trimmed.lastIndexOf(quote);
122
- if (close <= 0 || '' !== trimmed.slice(close + 1).trim()) return;
123
- const content = trimmed.slice(1, close);
124
- if ('"' === quote) try {
125
- return JSON.parse(trimmed);
126
- } catch {
127
- return;
128
- }
129
- return unescapeSingleQuotedString(content);
130
- }
131
- function parseObjectKey(source) {
132
- const trimmed = source.trim();
133
- const literal = parseLiteralString(trimmed);
134
- if (void 0 !== literal) return literal;
135
- return /^[$A-Z_a-z][$\w]*$/u.test(trimmed) ? trimmed : void 0;
37
+ const node = (0, external_syntax_cjs_namespaceObject.parseStaticExpression)(source);
38
+ if (node?.type === 'StringLiteral') return node.value;
39
+ if (node?.type === 'TemplateLiteral' && 0 === node.expressions.length) return node.quasis[0]?.value.cooked ?? void 0;
136
40
  }
137
41
  function parseObjectLiteral(source) {
138
- if (void 0 === source) return;
139
- const block = (0, external_syntax_cjs_namespaceObject.getOuterBlock)(source, '{', '}');
140
- if (!block) return;
42
+ const node = (0, external_syntax_cjs_namespaceObject.parseStaticExpression)(source);
43
+ if (void 0 === source || node?.type !== 'ObjectExpression') return;
141
44
  const properties = new Map();
142
45
  let hasSpread = false;
143
- for (const entry of splitTopLevelEntries(block.inner)){
144
- if (entry.startsWith('...')) {
145
- hasSpread = true;
146
- continue;
147
- }
148
- const colon = findTopLevelColon(entry);
149
- if (-1 === colon) {
46
+ for (const property of node.properties){
47
+ if ('ObjectProperty' !== property.type || property.computed || property.shorthand) {
150
48
  hasSpread = true;
151
49
  continue;
152
50
  }
153
- const key = parseObjectKey(entry.slice(0, colon));
154
- if (void 0 === key) {
51
+ const key = 'Identifier' === property.key.type ? property.key.name : 'StringLiteral' === property.key.type ? property.key.value : void 0;
52
+ const value = (0, external_syntax_cjs_namespaceObject.parseStaticExpression)(source.slice(property.value.start ?? 0, property.value.end ?? 0));
53
+ if (void 0 === key || properties.has(key) || !value || null == value.start || null == value.end) {
155
54
  hasSpread = true;
156
55
  continue;
157
56
  }
158
- properties.set(key, entry.slice(colon + 1).trim());
57
+ const rawValue = source.slice(property.value.start ?? 0, property.value.end ?? 0);
58
+ properties.set(key, rawValue.slice(value.start, value.end));
159
59
  }
160
60
  return {
161
61
  hasSpread,
@@ -163,17 +63,16 @@ function parseObjectLiteral(source) {
163
63
  };
164
64
  }
165
65
  function parseArrayLiteral(source) {
166
- if (void 0 === source) return;
167
- const block = (0, external_syntax_cjs_namespaceObject.getOuterBlock)(source, '[', ']');
168
- if (!block) return;
169
- const entries = splitTopLevelEntries(block.inner);
170
- const exposes = [];
171
- for (const entry of entries){
172
- const expose = parseLiteralString(entry);
173
- if (void 0 === expose) return;
174
- exposes.push(expose);
66
+ const node = (0, external_syntax_cjs_namespaceObject.parseStaticExpression)(source);
67
+ if (void 0 === source || node?.type !== 'ArrayExpression') return;
68
+ const values = [];
69
+ for (const element of node.elements){
70
+ if (!element || 'SpreadElement' === element.type) return;
71
+ const value = parseLiteralString(source.slice(element.start ?? 0, element.end ?? 0));
72
+ if (void 0 === value) return;
73
+ values.push(value);
175
74
  }
176
- return exposes;
75
+ return values;
177
76
  }
178
77
  exports.parseArrayLiteral = __webpack_exports__.parseArrayLiteral;
179
78
  exports.parseLiteralString = __webpack_exports__.parseLiteralString;
@@ -37,12 +37,11 @@ var __webpack_require__ = {};
37
37
  var __webpack_exports__ = {};
38
38
  __webpack_require__.r(__webpack_exports__);
39
39
  __webpack_require__.d(__webpack_exports__, {
40
- collectBridgeScanRoots: ()=>collectBridgeScanRoots,
41
40
  collectMetadataAppDirs: ()=>collectMetadataAppDirs,
41
+ collectWorkspaceScanRoots: ()=>collectWorkspaceScanRoots,
42
42
  firstSegment: ()=>firstSegment,
43
43
  isRecord: ()=>isRecord,
44
44
  normalizeRelativePath: ()=>normalizeRelativePath,
45
- readGeneratedMetadata: ()=>readGeneratedMetadata,
46
45
  readJsonIfExists: ()=>readJsonIfExists,
47
46
  relativePath: ()=>relativePath,
48
47
  scanForModuleFederationConfigs: ()=>scanForModuleFederationConfigs,
@@ -52,6 +51,7 @@ const external_node_fs_namespaceObject = require("node:fs");
52
51
  var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
53
52
  const external_node_path_namespaceObject = require("node:path");
54
53
  var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
54
+ const utils_namespaceObject = require("@modern-js/utils");
55
55
  const external_constants_cjs_namespaceObject = require("./constants.cjs");
56
56
  function isRecord(value) {
57
57
  return null !== value && 'object' == typeof value && !Array.isArray(value);
@@ -71,20 +71,31 @@ function readJsonIfExists(filePath) {
71
71
  if (!external_node_fs_default().existsSync(filePath)) return;
72
72
  return JSON.parse(external_node_fs_default().readFileSync(filePath, 'utf-8'));
73
73
  }
74
- function addMetadataAppDir(value, appDirs, hint = '') {
75
- if (!isRecord(value)) return;
76
- const pathValue = 'string' == typeof value.path ? value.path : 'string' == typeof value.directory ? value.directory : void 0;
77
- const hasModuleFederationDeclaration = isRecord(value.moduleFederation) || 'string' == typeof value.moduleFederationName || 'apps' === hint || 'verticals' === hint || 'remotes' === hint || 'moduleFederation' === hint;
78
- if (pathValue && hasModuleFederationDeclaration && !external_node_path_default().isAbsolute(pathValue)) appDirs.add(normalizeRelativePath(pathValue));
79
- }
80
- function collectMetadataAppDirs(value, appDirs, hint = '') {
81
- if (Array.isArray(value)) {
82
- for (const entry of value)collectMetadataAppDirs(entry, appDirs, hint);
83
- return;
74
+ function collectMetadataAppDirs(value, appDirs) {
75
+ const apiOnlyDirs = new Set();
76
+ if (!isRecord(value)) return apiOnlyDirs;
77
+ const entries = [
78
+ {
79
+ app: value.shell,
80
+ vertical: false
81
+ },
82
+ ...Array.isArray(value.verticals) ? value.verticals.map((app)=>({
83
+ app,
84
+ vertical: true
85
+ })) : [],
86
+ ...Array.isArray(value.shells) ? value.shells.map((app)=>({
87
+ app,
88
+ vertical: false
89
+ })) : []
90
+ ];
91
+ for (const { app: entry, vertical } of entries){
92
+ if (!isRecord(entry) || 'string' != typeof entry.path || external_node_path_default().isAbsolute(entry.path)) throw new Error('Reference topology apps require relative paths.');
93
+ const normalized = normalizeRelativePath(entry.path);
94
+ if ('..' === normalized || normalized.startsWith('../')) throw new Error(`Topology app path leaves workspace: ${entry.path}`);
95
+ if (vertical && 'api-only' === entry.surfaceProfile) apiOnlyDirs.add(normalized);
96
+ else appDirs.add(normalized);
84
97
  }
85
- if (!isRecord(value)) return;
86
- addMetadataAppDir(value, appDirs, hint);
87
- for (const [key, entry] of Object.entries(value))collectMetadataAppDirs(entry, appDirs, key);
98
+ return apiOnlyDirs;
88
99
  }
89
100
  function literalRootFromPattern(pattern) {
90
101
  const normalized = normalizeRelativePath(pattern);
@@ -97,26 +108,16 @@ function literalRootFromPattern(pattern) {
97
108
  }
98
109
  return literalSegments.length > 0 ? literalSegments.join('/') : void 0;
99
110
  }
100
- function collectBridgeScanRoots(value, roots) {
101
- if (Array.isArray(value)) {
102
- for (const entry of value)collectBridgeScanRoots(entry, roots);
103
- return;
111
+ function collectWorkspaceScanRoots(workspaceRoot, roots) {
112
+ const file = external_node_path_default().join(workspaceRoot, 'pnpm-workspace.yaml');
113
+ if (!external_node_fs_default().existsSync(file)) return;
114
+ const workspace = utils_namespaceObject.yaml.load(external_node_fs_default().readFileSync(file, 'utf8'));
115
+ if (!isRecord(workspace) || !Array.isArray(workspace.packages)) return;
116
+ for (const pattern of workspace.packages){
117
+ if ('string' != typeof pattern || pattern.startsWith('!')) continue;
118
+ const root = literalRootFromPattern(pattern);
119
+ if (root) roots.add(root);
104
120
  }
105
- if (!isRecord(value)) return;
106
- const workspacePackages = value.bridge;
107
- if (isRecord(workspacePackages)) {
108
- const entries = workspacePackages.workspacePackages;
109
- if (Array.isArray(entries)) {
110
- for (const entry of entries)if (isRecord(entry) && 'string' == typeof entry.pattern) {
111
- const root = literalRootFromPattern(entry.pattern);
112
- if (root) roots.add(root);
113
- }
114
- }
115
- }
116
- for (const entry of Object.values(value))collectBridgeScanRoots(entry, roots);
117
- }
118
- function readGeneratedMetadata(workspaceRoot) {
119
- return external_constants_cjs_namespaceObject.generatedMetadataPaths.map((metadataPath)=>readJsonIfExists(external_node_path_default().join(workspaceRoot, metadataPath))).filter((metadata)=>void 0 !== metadata);
120
121
  }
121
122
  function firstSegment(appDir) {
122
123
  if ('.' === appDir) return;
@@ -138,23 +139,21 @@ function scanForModuleFederationConfigs(workspaceRoot, scanRoot, appDirs) {
138
139
  };
139
140
  visit(absoluteRoot);
140
141
  }
141
- exports.collectBridgeScanRoots = __webpack_exports__.collectBridgeScanRoots;
142
142
  exports.collectMetadataAppDirs = __webpack_exports__.collectMetadataAppDirs;
143
+ exports.collectWorkspaceScanRoots = __webpack_exports__.collectWorkspaceScanRoots;
143
144
  exports.firstSegment = __webpack_exports__.firstSegment;
144
145
  exports.isRecord = __webpack_exports__.isRecord;
145
146
  exports.normalizeRelativePath = __webpack_exports__.normalizeRelativePath;
146
- exports.readGeneratedMetadata = __webpack_exports__.readGeneratedMetadata;
147
147
  exports.readJsonIfExists = __webpack_exports__.readJsonIfExists;
148
148
  exports.relativePath = __webpack_exports__.relativePath;
149
149
  exports.scanForModuleFederationConfigs = __webpack_exports__.scanForModuleFederationConfigs;
150
150
  exports.toPosixPath = __webpack_exports__.toPosixPath;
151
151
  for(var __rspack_i in __webpack_exports__)if (-1 === [
152
- "collectBridgeScanRoots",
153
152
  "collectMetadataAppDirs",
153
+ "collectWorkspaceScanRoots",
154
154
  "firstSegment",
155
155
  "isRecord",
156
156
  "normalizeRelativePath",
157
- "readGeneratedMetadata",
158
157
  "readJsonIfExists",
159
158
  "relativePath",
160
159
  "scanForModuleFederationConfigs",