@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
@@ -1068,18 +1068,36 @@ async function validateJsonSmokeEvidence(evidence, app, publicUrl) {
1068
1068
  }
1069
1069
  }
1070
1070
 
1071
+ function isProofRoute(value) {
1072
+ return typeof value === 'string' && value.startsWith('/') &&
1073
+ !value.startsWith('//') && !/[\\\\%?#\s]/u.test(value) &&
1074
+ !value.split('/').some(segment => segment === '.' || segment === '..');
1075
+ }
1076
+
1071
1077
  async function validateApp(app, publicUrl) {
1072
1078
  const routes = app.deploy?.cloudflare?.routes ?? {};
1073
1079
  const evidence = createAppEvidence(app, publicUrl);
1080
+ const exposes = app.moduleFederation?.exposes;
1081
+ const noFrontendExposes = exposes === undefined ||
1082
+ (Array.isArray(exposes) ? exposes.length === 0 :
1083
+ exposes !== null && typeof exposes === 'object' && Object.keys(exposes).length === 0);
1084
+ // REST readiness or an explicitly exercised RPC contract needs no invented UI routes.
1085
+ const rpcSmokeCheck = (app.deploy?.cloudflare?.jsonSmokeChecks ?? []).find(
1086
+ check => check.route === routes.rpc && String(check.method ?? 'GET').toUpperCase() === 'POST',
1087
+ );
1088
+ const apiOnlyRoutes = noFrontendExposes && (
1089
+ isProofRoute(routes.apiReadiness) || (isProofRoute(routes.rpc) && rpcSmokeCheck)
1090
+ );
1091
+ for (const field of ['ssr', 'locale']) {
1092
+ if (Object.hasOwn(routes, field)) {
1093
+ assert(isProofRoute(routes[field]), `${app.id} declared ${field} route must be a root-relative path`);
1094
+ } else {
1095
+ assert(apiOnlyRoutes, `${app.id} missing ${field} route requires an API-only/no-frontend-exposes contract`);
1096
+ }
1097
+ }
1074
1098
 
1075
1099
  if (routes.rpc) {
1076
- const rpcSmokeCheck = (
1077
- app.deploy?.cloudflare?.jsonSmokeChecks ?? []
1078
- ).find(
1079
- check =>
1080
- check.route === routes.rpc &&
1081
- String(check.method ?? 'GET').toUpperCase() === 'POST',
1082
- );
1100
+ assert(isProofRoute(routes.rpc), `${app.id} declared RPC route must be a root-relative path`);
1083
1101
  assert(
1084
1102
  rpcSmokeCheck,
1085
1103
  `${app.id} RPC route ${routes.rpc} requires a POST JSON smoke check`,
@@ -6,7 +6,7 @@ const root = process.cwd();
6
6
  const defaultReportPath =
7
7
  '.codex/reports/performance-readiness/ultramodern-performance-readiness.json';
8
8
  const configPath = 'scripts/ultramodern-performance-readiness.config.mjs';
9
- const compactConfigPath = '.modernjs/ultramodern.json';
9
+ const topologyPath = 'topology/reference-topology.json';
10
10
  const optOutEnv = 'ULTRAMODERN_PERFORMANCE_READINESS_DIAGNOSTICS';
11
11
  const signalIds = [
12
12
  'bfcache',
@@ -62,89 +62,6 @@ const createSignal = (id, status, evidence) => ({
62
62
 
63
63
  const unique = values => new Set(values).size === values.length;
64
64
 
65
- const toKebabCase = value =>
66
- String(value)
67
- .trim()
68
- .replace(/([a-z0-9])([A-Z])/gu, '$1-$2')
69
- .replace(/[^a-zA-Z0-9._-]+/gu, '-')
70
- .replace(/[._]+/gu, '-')
71
- .toLowerCase()
72
- .replace(/-+/gu, '-')
73
- .replace(/^-+|-+$/gu, '');
74
-
75
- const toPascalCase = value =>
76
- toKebabCase(value)
77
- .split('-')
78
- .filter(Boolean)
79
- .map(part => part.charAt(0).toUpperCase() + part.slice(1))
80
- .join('');
81
-
82
- const normalizeRelativePath = value =>
83
- String(value ?? '').replace(/\\/gu, '/').replace(/^\.\/+/u, '');
84
-
85
- const appNamespace = app => (app.kind === 'shell' ? 'shell' : (app.domain ?? app.id));
86
-
87
- const normalizeCompactApp = rawApp => {
88
- const id = String(rawApp.id);
89
- const kind = rawApp.kind === 'vertical' ? 'vertical' : 'shell';
90
- const appPath =
91
- typeof rawApp.path === 'string'
92
- ? normalizeRelativePath(rawApp.path)
93
- : kind === 'shell'
94
- ? 'apps/shell-super-app'
95
- : `verticals/${toKebabCase(id)}`;
96
- const packageSuffix =
97
- typeof rawApp.packageSuffix === 'string'
98
- ? rawApp.packageSuffix
99
- : appPath.split('/').at(-1) ?? id;
100
- const domain =
101
- typeof rawApp.domain === 'string'
102
- ? rawApp.domain
103
- : kind === 'vertical'
104
- ? packageSuffix
105
- : undefined;
106
- const moduleFederation =
107
- rawApp.moduleFederation && typeof rawApp.moduleFederation === 'object'
108
- ? rawApp.moduleFederation
109
- : {};
110
-
111
- return {
112
- id,
113
- kind,
114
- path: appPath,
115
- packageSuffix,
116
- domain,
117
- port:
118
- typeof rawApp.port === 'number'
119
- ? rawApp.port
120
- : kind === 'shell'
121
- ? 3020
122
- : 3030,
123
- mfName:
124
- typeof moduleFederation.name === 'string'
125
- ? moduleFederation.name
126
- : kind === 'shell'
127
- ? 'shellSuperApp'
128
- : `vertical${toPascalCase(domain ?? id)}`,
129
- moduleFederation: {
130
- remotes: [],
131
- verticalRefs: Array.isArray(moduleFederation.verticalRefs)
132
- ? moduleFederation.verticalRefs.filter(ref => typeof ref === 'string')
133
- : [],
134
- },
135
- };
136
- };
137
-
138
- const createRemoteContracts = (app, apps) =>
139
- (app.moduleFederation?.verticalRefs ?? [])
140
- .map(ref => apps.find(candidate => candidate.id === ref))
141
- .filter(Boolean)
142
- .map(remote => ({
143
- id: remote.id,
144
- name: remote.mfName,
145
- manifestUrl: `http://localhost:${remote.port ?? 3030}/mf-manifest.json`,
146
- }));
147
-
148
65
  const createPerformanceReadinessContract = () => ({
149
66
  schemaVersion: 1,
150
67
  default: 'enabled',
@@ -159,71 +76,31 @@ const createPerformanceReadinessContract = () => ({
159
76
  signals: signalIds.map(id => ({ id })),
160
77
  });
161
78
 
162
- const createContractApp = (config, app, apps) => {
163
- const compatibilityDate =
164
- typeof config.deploy?.worker?.compatibilityDate === 'string'
165
- ? config.deploy.worker.compatibilityDate
166
- : '2026-06-02';
167
-
79
+ const readGeneratedContractView = () => {
80
+ const topology = readJson(topologyPath);
81
+ assert(topology.schemaVersion === 1 && topology.shell && Array.isArray(topology.verticals), 'Invalid topology/reference-topology.json');
82
+ const apps = [topology.shell, ...topology.verticals, ...(topology.shells ?? [])];
168
83
  return {
169
- id: app.id,
170
- path: app.path,
171
- config: {
172
- plugins: [
173
- 'appTools',
174
- 'tanstackRouterPlugin',
175
- 'i18nPlugin',
176
- ...(app.kind === 'vertical' ? ['bffPlugin'] : []),
177
- 'moduleFederationPlugin',
178
- 'zephyrRspackPlugin',
179
- ],
180
- },
181
- deploy: {
182
- cloudflare: {
183
- compatibilityDate,
184
- compatibilityFlags: ['nodejs_compat', 'global_fetch_strictly_public'],
84
+ sourcePath: topologyPath,
85
+ performanceReadiness: createPerformanceReadinessContract(),
86
+ apps: apps.map(app => {
87
+ assert(typeof app.path === 'string' && app.path, `${app.id} topology path is missing`);
88
+ return {
89
+ id: app.id,
90
+ path: app.path,
91
+ api: app.api,
92
+ surfaceProfile: app.surfaceProfile,
93
+ deploy: { cloudflare: app.cloudflare },
94
+ moduleFederation: { remotes: app.moduleFederation?.remotes ?? [] },
185
95
  routes: {
186
- ssr: '/en',
187
- mfManifest: '/mf-manifest.json',
188
- locale: `/locales/en/${appNamespace(app)}.json`,
96
+ localisedUrls: app.routes?.localisedUrls ?? {},
97
+ publicSurface: { artifactLifecycle: 'build-and-deploy-output' },
189
98
  },
190
- qualityGates: {
191
- assets: {
192
- cacheControlRequiredForCss: true,
193
- },
194
- },
195
- },
196
- },
197
- moduleFederation: {
198
- remotes: createRemoteContracts(app, apps),
199
- },
200
- routes: {
201
- localisedUrls: {},
202
- publicSurface: {
203
- artifactLifecycle: 'build-and-deploy-output',
204
- },
205
- },
99
+ };
100
+ }),
206
101
  };
207
102
  };
208
103
 
209
- const readGeneratedContractView = () => {
210
- if (exists(compactConfigPath)) {
211
- const compactConfig = readJson(compactConfigPath);
212
- const apps = Array.isArray(compactConfig.topology?.apps)
213
- ? compactConfig.topology.apps.map(normalizeCompactApp)
214
- : [];
215
- return {
216
- sourcePath: compactConfigPath,
217
- performanceReadiness: createPerformanceReadinessContract(),
218
- apps: apps.map(app => createContractApp(compactConfig, app, apps)),
219
- };
220
- }
221
-
222
- throw new Error(
223
- `Missing UltraModern config. Expected ${compactConfigPath}.`,
224
- );
225
- };
226
-
227
104
  const appGeneratedFiles = app => [
228
105
  `${app.path}/modern.config.ts`,
229
106
  `${app.path}/module-federation.config.ts`,
@@ -251,6 +128,18 @@ const evaluateApp = (app, contract, failOn) => {
251
128
  : [],
252
129
  );
253
130
  const remotes = app.moduleFederation?.remotes ?? [];
131
+ const apiOnly = app.surfaceProfile === 'api-only';
132
+ const cloudflareRoutes = app.deploy?.cloudflare?.routes;
133
+ const apiRouteKey = app.api?.protocol === 'rpc' ? 'rpc' : 'apiReadiness';
134
+ const otherApiRouteKey = apiRouteKey === 'rpc' ? 'apiReadiness' : 'rpc';
135
+ const cloudflareRoutesValid = apiOnly
136
+ ? app.api &&
137
+ typeof cloudflareRoutes?.[apiRouteKey] === 'string' &&
138
+ cloudflareRoutes[apiRouteKey].startsWith('/') &&
139
+ cloudflareRoutes?.[otherApiRouteKey] === undefined &&
140
+ cloudflareRoutes?.ssr === undefined &&
141
+ cloudflareRoutes?.mfManifest === undefined
142
+ : cloudflareRoutes?.ssr && cloudflareRoutes?.mfManifest;
254
143
  const signals = [
255
144
  createSignal(
256
145
  'bfcache',
@@ -300,7 +189,7 @@ const evaluateApp = (app, contract, failOn) => {
300
189
  ),
301
190
  createSignal(
302
191
  'save-data-behavior',
303
- app.config?.plugins?.includes('tanstackRouterPlugin') &&
192
+ /\btanstackRouterPlugin\b/u.test(generatedSource) &&
304
193
  contract.performanceReadiness?.signals?.some(
305
194
  signal => signal.id === 'save-data-behavior',
306
195
  )
@@ -313,12 +202,21 @@ const evaluateApp = (app, contract, failOn) => {
313
202
  ),
314
203
  createSignal(
315
204
  'cloudflare-ssr-cache-hints',
316
- app.deploy?.cloudflare?.routes?.ssr &&
317
- app.deploy?.cloudflare?.routes?.mfManifest &&
205
+ cloudflareRoutesValid &&
318
206
  app.deploy?.cloudflare?.compatibilityFlags?.includes('nodejs_compat')
319
207
  ? 'configuration-valid'
320
208
  : 'configuration-invalid',
321
- ['ssr-route-present', 'mf-manifest-route-present', 'nodejs-compat'],
209
+ [
210
+ ...(apiOnly
211
+ ? [
212
+ apiRouteKey === 'rpc'
213
+ ? 'rpc-route-present'
214
+ : 'api-readiness-route-present',
215
+ 'ui-routes-absent',
216
+ ]
217
+ : ['ssr-route-present', 'mf-manifest-route-present']),
218
+ 'nodejs-compat',
219
+ ],
322
220
  ),
323
221
  ];
324
222
 
@@ -5,7 +5,7 @@ import { mkdirSync } from 'node:fs';
5
5
  import os from 'node:os';
6
6
  import { dirname, join, resolve } from 'node:path';
7
7
  import { fileURLToPath, pathToFileURL } from 'node:url';
8
- import { resolveEffectTsgoCompiler } from '@modern-js/app-tools/config';
8
+ import { resolveEffectTsgoCompiler } from '@modern-js/app-tools-extensions/config';
9
9
 
10
10
  const args = process.argv.slice(2);
11
11
  const workspaceRoot = process.env.ULTRAMODERN_WORKSPACE_ROOT
@@ -1,212 +0,0 @@
1
- "use strict";
2
- var __webpack_require__ = {};
3
- (()=>{
4
- __webpack_require__.n = (module)=>{
5
- var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
6
- __webpack_require__.d(getter, {
7
- a: getter
8
- });
9
- return getter;
10
- };
11
- })();
12
- (()=>{
13
- __webpack_require__.d = (exports1, getters, values)=>{
14
- var define = (defs, kind)=>{
15
- for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
16
- enumerable: true,
17
- [kind]: defs[key]
18
- });
19
- };
20
- define(getters, "get");
21
- define(values, "value");
22
- };
23
- })();
24
- (()=>{
25
- __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
26
- })();
27
- (()=>{
28
- __webpack_require__.r = (exports1)=>{
29
- if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
30
- value: 'Module'
31
- });
32
- Object.defineProperty(exports1, '__esModule', {
33
- value: true
34
- });
35
- };
36
- })();
37
- var __webpack_exports__ = {};
38
- __webpack_require__.r(__webpack_exports__);
39
- __webpack_require__.d(__webpack_exports__, {
40
- reconcileCompactPackageSourceMetadata: ()=>reconcileCompactPackageSourceMetadata,
41
- reconcilePackageSourceMetadata: ()=>reconcilePackageSourceMetadata,
42
- updateReferenceTopology: ()=>updateReferenceTopology,
43
- updateUltramodernConfig: ()=>updateUltramodernConfig
44
- });
45
- const external_node_fs_namespaceObject = require("node:fs");
46
- var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
47
- const external_node_path_namespaceObject = require("node:path");
48
- var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
49
- const external_io_cjs_namespaceObject = require("./io.cjs");
50
- const external_toolchain_pins_cjs_namespaceObject = require("./toolchain-pins.cjs");
51
- const packageSourceOwnedKeys = [
52
- 'strategy',
53
- 'modernPackageVersion',
54
- 'registry',
55
- 'aliasScope',
56
- 'aliasPackageNamePrefix'
57
- ];
58
- const retiredPackageSourceKeys = [
59
- 'generatedWorkspacePackages',
60
- 'metadata',
61
- 'modernPackages'
62
- ];
63
- function requireObject(value, label) {
64
- if (!value || 'object' != typeof value || Array.isArray(value)) throw new Error(`${label} must be an object.`);
65
- return value;
66
- }
67
- function reconcilePackageSourceMetadata(value, { canonical, label, ownedKeys }) {
68
- const existing = void 0 === value ? {} : requireObject(value, label);
69
- const frameworkOwnedKeys = new Set([
70
- ...ownedKeys,
71
- ...retiredPackageSourceKeys
72
- ]);
73
- for (const key of Object.keys(canonical))if (!frameworkOwnedKeys.has(key)) throw new Error(`${label} canonical key ${key} is not framework-owned.`);
74
- const extensionEntries = Object.entries(existing).filter(([key])=>!frameworkOwnedKeys.has(key));
75
- const next = Object.fromEntries(extensionEntries);
76
- Object.assign(next, canonical);
77
- const expectedKeys = [
78
- ...extensionEntries.map(([key])=>key),
79
- ...Object.keys(canonical)
80
- ];
81
- const actualKeys = Object.keys(next);
82
- if (actualKeys.length !== expectedKeys.length || actualKeys.some((key, index)=>key !== expectedKeys[index])) throw new Error(`${label} could not establish exact package-source keys.`);
83
- for (const [key, extensionValue] of extensionEntries)if (!Object.is(next[key], extensionValue)) throw new Error(`${label} could not preserve extension key ${key}.`);
84
- for (const key of frameworkOwnedKeys){
85
- const shouldExist = Object.hasOwn(canonical, key);
86
- if (Object.hasOwn(next, key) !== shouldExist || shouldExist && !Object.is(next[key], canonical[key])) throw new Error(`${label} could not establish exact postcondition for ${key}.`);
87
- }
88
- return next;
89
- }
90
- function reconcileCompactPackageSourceMetadata(value, packageSource) {
91
- return reconcilePackageSourceMetadata(value, {
92
- canonical: {
93
- strategy: packageSource.strategy,
94
- modernPackageVersion: packageSource.modernPackageVersion,
95
- ...packageSource.registry ? {
96
- registry: packageSource.registry
97
- } : {},
98
- ...packageSource.aliasScope ? {
99
- aliasScope: packageSource.aliasScope
100
- } : {},
101
- ...packageSource.aliasPackageNamePrefix ? {
102
- aliasPackageNamePrefix: packageSource.aliasPackageNamePrefix
103
- } : {}
104
- },
105
- label: 'packageSource',
106
- ownedKeys: packageSourceOwnedKeys
107
- });
108
- }
109
- function normalizeStrictEffectApiMetadata(value) {
110
- let changed = false;
111
- const backendFederation = value.backendFederation;
112
- if (backendFederation && 'object' == typeof backendFederation && !Array.isArray(backendFederation) && Object.hasOwn(backendFederation, 'entry')) {
113
- delete backendFederation.entry;
114
- changed = true;
115
- }
116
- const api = value.api;
117
- if (!api || 'object' != typeof api || Array.isArray(api)) return changed;
118
- if (void 0 !== api.backendFederation) {
119
- delete api.backendFederation;
120
- changed = true;
121
- }
122
- const oldEffect = api.effect;
123
- if (oldEffect && 'object' == typeof oldEffect && !Array.isArray(oldEffect)) {
124
- if (void 0 === api.stem && 'string' == typeof oldEffect.stem) {
125
- api.stem = oldEffect.stem;
126
- changed = true;
127
- }
128
- if (void 0 === api.prefix && 'string' == typeof oldEffect.prefix) {
129
- api.prefix = oldEffect.prefix;
130
- changed = true;
131
- }
132
- if (void 0 === api.consumedBy && Array.isArray(oldEffect.consumedBy)) {
133
- api.consumedBy = oldEffect.consumedBy;
134
- changed = true;
135
- }
136
- delete api.effect;
137
- changed = true;
138
- }
139
- if ('effect' !== api.runtime) {
140
- api.runtime = 'effect';
141
- changed = true;
142
- }
143
- if (api.bff && 'object' == typeof api.bff && !Array.isArray(api.bff)) {
144
- if (true !== api.bff.strictEffectApproach) {
145
- api.bff.strictEffectApproach = true;
146
- changed = true;
147
- }
148
- }
149
- if ('string' == typeof value.path) {
150
- const directServerEntry = `${value.path}/api/index.ts`;
151
- if ('string' == typeof api.serverEntry && /\/api\/effect\/index\.[cm]?[jt]sx?$/u.test(api.serverEntry)) {
152
- api.serverEntry = directServerEntry;
153
- changed = true;
154
- }
155
- if (api.contract && 'object' == typeof api.contract && !Array.isArray(api.contract)) {
156
- if ('./shared/effect/api' === api.contract.export) {
157
- api.contract.export = './api';
158
- changed = true;
159
- }
160
- if ('string' == typeof api.contract.path && /\/shared\/effect\/api\.[cm]?[jt]sx?$/u.test(api.contract.path)) {
161
- api.contract.path = `${value.path}/shared/api.ts`;
162
- changed = true;
163
- }
164
- }
165
- if (api.client && 'object' == typeof api.client && !Array.isArray(api.client)) {
166
- if ('./effect/client' === api.client.export) {
167
- api.client.export = './api/client';
168
- changed = true;
169
- }
170
- if ('string' == typeof api.client.path && /\/src\/effect\/[^/]+-client\.[cm]?ts$/u.test(api.client.path)) {
171
- const basename = external_node_path_default().basename(api.client.path);
172
- api.client.path = `${value.path}/src/api/${basename}`;
173
- changed = true;
174
- }
175
- }
176
- if (void 0 === api.serverEntry && 'effect' === api.runtime) {
177
- api.serverEntry = directServerEntry;
178
- changed = true;
179
- }
180
- }
181
- return changed;
182
- }
183
- function updateUltramodernConfig(io, config, packageSource) {
184
- const configPath = external_node_path_default().join(io.workspaceRoot, '.modernjs/ultramodern.json');
185
- config.packageSource = reconcileCompactPackageSourceMetadata(config.packageSource, packageSource);
186
- if (config.generator && 'object' == typeof config.generator && !Array.isArray(config.generator) && 'string' == typeof config.generator.version) config.generator.version = packageSource.modernPackageVersion;
187
- (0, external_toolchain_pins_cjs_namespaceObject.updateUltramodernConfigToolchain)(config);
188
- for (const app of config.topology?.apps ?? [])if (app && 'object' == typeof app && !Array.isArray(app)) normalizeStrictEffectApiMetadata(app);
189
- (0, external_io_cjs_namespaceObject.writeJsonFile)(io, configPath, config);
190
- }
191
- function updateReferenceTopology(io) {
192
- const topologyPath = external_node_path_default().join(io.workspaceRoot, 'topology/reference-topology.json');
193
- if (!external_node_fs_default().existsSync(topologyPath)) return false;
194
- const topology = (0, external_io_cjs_namespaceObject.readJsonFile)(topologyPath);
195
- let changed = false;
196
- for (const vertical of topology.verticals ?? [])if (vertical && 'object' == typeof vertical && !Array.isArray(vertical)) changed = normalizeStrictEffectApiMetadata(vertical) || changed;
197
- if (changed) (0, external_io_cjs_namespaceObject.writeJsonFile)(io, topologyPath, topology);
198
- return changed;
199
- }
200
- exports.reconcileCompactPackageSourceMetadata = __webpack_exports__.reconcileCompactPackageSourceMetadata;
201
- exports.reconcilePackageSourceMetadata = __webpack_exports__.reconcilePackageSourceMetadata;
202
- exports.updateReferenceTopology = __webpack_exports__.updateReferenceTopology;
203
- exports.updateUltramodernConfig = __webpack_exports__.updateUltramodernConfig;
204
- for(var __rspack_i in __webpack_exports__)if (-1 === [
205
- "reconcileCompactPackageSourceMetadata",
206
- "reconcilePackageSourceMetadata",
207
- "updateReferenceTopology",
208
- "updateUltramodernConfig"
209
- ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
210
- Object.defineProperty(exports, '__esModule', {
211
- value: true
212
- });
@@ -1,47 +0,0 @@
1
- "use strict";
2
- var __webpack_require__ = {};
3
- (()=>{
4
- __webpack_require__.d = (exports1, getters, values)=>{
5
- var define = (defs, kind)=>{
6
- for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
- enumerable: true,
8
- [kind]: defs[key]
9
- });
10
- };
11
- define(getters, "get");
12
- define(values, "value");
13
- };
14
- })();
15
- (()=>{
16
- __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
- })();
18
- (()=>{
19
- __webpack_require__.r = (exports1)=>{
20
- if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
- value: 'Module'
22
- });
23
- Object.defineProperty(exports1, '__esModule', {
24
- value: true
25
- });
26
- };
27
- })();
28
- var __webpack_exports__ = {};
29
- __webpack_require__.r(__webpack_exports__);
30
- __webpack_require__.d(__webpack_exports__, {
31
- ensureGeneratedDeclarationPatches: ()=>ensureGeneratedDeclarationPatches
32
- });
33
- const external_generated_patches_cjs_namespaceObject = require("./generated-patches.cjs");
34
- const external_policy_constants_cjs_namespaceObject = require("./policy-constants.cjs");
35
- function ensureGeneratedDeclarationPatches(io, options) {
36
- let changed = false;
37
- for (const patch of external_policy_constants_cjs_namespaceObject.requiredGeneratedPatches)changed = (0, external_generated_patches_cjs_namespaceObject.ensureGeneratedPatchFile)(io, patch.path, patch.sourcePath) || changed;
38
- changed = options.includeDrizzleOrmPatch ? (0, external_generated_patches_cjs_namespaceObject.ensureGeneratedPatchFile)(io, external_policy_constants_cjs_namespaceObject.drizzleOrmDeclarationPatchPath, external_policy_constants_cjs_namespaceObject.drizzleOrmDeclarationPatchSourcePath) || changed : (0, external_generated_patches_cjs_namespaceObject.removeGeneratedPatchFileIfUnchanged)(io, external_policy_constants_cjs_namespaceObject.drizzleOrmDeclarationPatchPath, external_policy_constants_cjs_namespaceObject.drizzleOrmDeclarationPatchSourcePath) || changed;
39
- return changed;
40
- }
41
- exports.ensureGeneratedDeclarationPatches = __webpack_exports__.ensureGeneratedDeclarationPatches;
42
- for(var __rspack_i in __webpack_exports__)if (-1 === [
43
- "ensureGeneratedDeclarationPatches"
44
- ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
45
- Object.defineProperty(exports, '__esModule', {
46
- value: true
47
- });
@@ -1,112 +0,0 @@
1
- "use strict";
2
- var __webpack_require__ = {};
3
- (()=>{
4
- __webpack_require__.n = (module)=>{
5
- var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
6
- __webpack_require__.d(getter, {
7
- a: getter
8
- });
9
- return getter;
10
- };
11
- })();
12
- (()=>{
13
- __webpack_require__.d = (exports1, getters, values)=>{
14
- var define = (defs, kind)=>{
15
- for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
16
- enumerable: true,
17
- [kind]: defs[key]
18
- });
19
- };
20
- define(getters, "get");
21
- define(values, "value");
22
- };
23
- })();
24
- (()=>{
25
- __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
26
- })();
27
- (()=>{
28
- __webpack_require__.r = (exports1)=>{
29
- if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
30
- value: 'Module'
31
- });
32
- Object.defineProperty(exports1, '__esModule', {
33
- value: true
34
- });
35
- };
36
- })();
37
- var __webpack_exports__ = {};
38
- __webpack_require__.r(__webpack_exports__);
39
- __webpack_require__.d(__webpack_exports__, {
40
- workspaceUsesDependency: ()=>workspaceUsesDependency
41
- });
42
- const external_node_fs_namespaceObject = require("node:fs");
43
- var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
44
- const external_node_path_namespaceObject = require("node:path");
45
- var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
46
- const utils_namespaceObject = require("@modern-js/utils");
47
- const external_pnpm_yaml_cjs_namespaceObject = require("./pnpm-yaml.cjs");
48
- function workspaceUsesDependency(workspaceRoot, packageName, exactVersion) {
49
- const packageJsonPaths = [
50
- external_node_path_default().join(workspaceRoot, 'package.json')
51
- ];
52
- let compatibleRangeDeclared = false;
53
- for (const workspaceDir of [
54
- 'apps',
55
- 'verticals',
56
- 'packages'
57
- ]){
58
- const absoluteWorkspaceDir = external_node_path_default().join(workspaceRoot, workspaceDir);
59
- if (external_node_fs_default().existsSync(absoluteWorkspaceDir)) for (const entry of external_node_fs_default().readdirSync(absoluteWorkspaceDir, {
60
- withFileTypes: true
61
- })){
62
- if (!entry.isDirectory()) continue;
63
- const packageJsonPath = external_node_path_default().join(absoluteWorkspaceDir, entry.name, 'package.json');
64
- if (external_node_fs_default().existsSync(packageJsonPath)) packageJsonPaths.push(packageJsonPath);
65
- }
66
- }
67
- const aliasPrefix = `npm:${packageName}@`;
68
- for (const packageJsonPath of packageJsonPaths){
69
- const packageJson = JSON.parse(external_node_fs_default().readFileSync(packageJsonPath, 'utf-8'));
70
- for (const field of [
71
- 'dependencies',
72
- 'devDependencies',
73
- 'peerDependencies',
74
- 'optionalDependencies'
75
- ]){
76
- const dependencies = packageJson[field];
77
- if (dependencies && 'object' == typeof dependencies) {
78
- if (Object.prototype.hasOwnProperty.call(dependencies, packageName)) {
79
- const specifier = dependencies[packageName];
80
- if (void 0 === exactVersion || specifier === exactVersion || specifier === `${aliasPrefix}${exactVersion}`) return true;
81
- if ('string' == typeof specifier && utils_namespaceObject.semver.satisfies(exactVersion, specifier, {
82
- includePrerelease: true
83
- })) compatibleRangeDeclared = true;
84
- }
85
- for (const specifier of Object.values(dependencies)){
86
- if ('string' != typeof specifier || !specifier.startsWith(aliasPrefix)) continue;
87
- const aliasedVersion = specifier.slice(aliasPrefix.length);
88
- if (void 0 === exactVersion || aliasedVersion === exactVersion) return true;
89
- if (utils_namespaceObject.semver.satisfies(exactVersion, aliasedVersion, {
90
- includePrerelease: true
91
- })) compatibleRangeDeclared = true;
92
- }
93
- }
94
- }
95
- }
96
- if (!exactVersion || !compatibleRangeDeclared) return false;
97
- const lockfilePath = external_node_path_default().join(workspaceRoot, 'pnpm-lock.yaml');
98
- if (!external_node_fs_default().existsSync(lockfilePath)) return true;
99
- try {
100
- const closure = external_pnpm_yaml_cjs_namespaceObject.discoverReachablePnpmLockReleaseAgeClosure(external_pnpm_yaml_cjs_namespaceObject.parsePnpmWorkspaceYaml(external_node_fs_default().readFileSync(lockfilePath, 'utf-8'), lockfilePath).document);
101
- return closure.unresolved.length > 0 || closure.candidates.some((candidate)=>candidate.packageName === packageName && candidate.version === exactVersion);
102
- } catch {
103
- return true;
104
- }
105
- }
106
- exports.workspaceUsesDependency = __webpack_exports__.workspaceUsesDependency;
107
- for(var __rspack_i in __webpack_exports__)if (-1 === [
108
- "workspaceUsesDependency"
109
- ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
110
- Object.defineProperty(exports, '__esModule', {
111
- value: true
112
- });