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

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