@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
@@ -0,0 +1,397 @@
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
+ assertCompilerArchitecture: ()=>assertCompilerArchitecture
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_module_namespaceObject = require("node:module");
45
+ const external_node_path_namespaceObject = require("node:path");
46
+ var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
47
+ const external_assertions_cjs_namespaceObject = require("./assertions.cjs");
48
+ function assertCompilerArchitecture(root, workspaceValidationContract) {
49
+ const fullStackVerticals = workspaceValidationContract.apps.filter((app)=>'shell' !== app.kind);
50
+ const tailwindEnabled = workspaceValidationContract.tailwindEnabled;
51
+ const compactConfigPath = 'topology/reference-topology.json';
52
+ const readJson = (relativePath)=>JSON.parse(external_node_fs_default().readFileSync(external_node_path_default().join(root, relativePath), 'utf-8'));
53
+ const workspaceRequire = (0, external_node_module_namespaceObject.createRequire)(external_node_path_default().join(root, 'package.json'));
54
+ let typescript;
55
+ let typescriptApi;
56
+ try {
57
+ typescript = workspaceRequire("@typescript/native/unstable/ast");
58
+ typescriptApi = workspaceRequire("@typescript/native/unstable/sync");
59
+ } catch (error) {
60
+ if ('MODULE_NOT_FOUND' !== error.code) throw error;
61
+ }
62
+ let compilerSnapshot;
63
+ let compiler;
64
+ try {
65
+ const sourceExtensions = new Set([
66
+ '.cjs',
67
+ '.cts',
68
+ '.js',
69
+ '.jsx',
70
+ '.mjs',
71
+ '.mts',
72
+ '.ts',
73
+ '.tsx'
74
+ ]);
75
+ const collectCompilerInputs = (relativeDirectory)=>{
76
+ const absoluteDirectory = external_node_path_default().join(root, relativeDirectory);
77
+ if (!external_node_fs_default().existsSync(absoluteDirectory)) return [];
78
+ const files = [];
79
+ const queue = [
80
+ absoluteDirectory
81
+ ];
82
+ while(queue.length > 0){
83
+ const current = queue.shift();
84
+ for (const entry of external_node_fs_default().readdirSync(current, {
85
+ withFileTypes: true
86
+ })){
87
+ const absoluteEntry = external_node_path_default().join(current, entry.name);
88
+ if (entry.isDirectory()) queue.push(absoluteEntry);
89
+ else if (sourceExtensions.has(external_node_path_default().extname(entry.name))) files.push(absoluteEntry);
90
+ }
91
+ }
92
+ return files.toSorted();
93
+ };
94
+ const initializeCompilerSnapshot = (absolutePaths)=>{
95
+ if (void 0 === typescript || void 0 === typescriptApi) return;
96
+ compiler = new typescriptApi.API({
97
+ cwd: root
98
+ });
99
+ compilerSnapshot = compiler.updateSnapshot({
100
+ openFiles: [
101
+ ...absolutePaths
102
+ ]
103
+ });
104
+ };
105
+ const parseCompilerInput = (absolutePath)=>{
106
+ const project = compilerSnapshot?.getDefaultProjectForFile(absolutePath);
107
+ const sourceFile = project?.program.getSourceFile(absolutePath);
108
+ (0, external_assertions_cjs_namespaceObject.assert)(void 0 !== sourceFile, `Native TypeScript compiler could not parse ${external_node_path_default().relative(root, absolutePath)}`);
109
+ return sourceFile;
110
+ };
111
+ const nodeName = (node)=>{
112
+ if (!node) return;
113
+ if (typescript.isIdentifier(node) || typescript.isPrivateIdentifier(node) || typescript.isStringLiteralLikeNode(node) || typescript.isNumericLiteral(node)) return node.text;
114
+ };
115
+ const propertyAccessPath = (node)=>{
116
+ if (typescript.isIdentifier(node)) return [
117
+ node.text
118
+ ];
119
+ if (typescript.isPropertyAccessExpression(node)) {
120
+ const left = propertyAccessPath(node.expression);
121
+ return void 0 === left ? void 0 : [
122
+ ...left,
123
+ node.name.text
124
+ ];
125
+ }
126
+ if (typescript.isElementAccessExpression(node) && typescript.isStringLiteralLikeNode(node.argumentExpression)) {
127
+ const left = propertyAccessPath(node.expression);
128
+ return void 0 === left ? void 0 : [
129
+ ...left,
130
+ node.argumentExpression.text
131
+ ];
132
+ }
133
+ };
134
+ function compilerFailure(sourceFile, node, contract, diagnostic, fixArea) {
135
+ const position = sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile));
136
+ const relativePath = external_node_path_default().relative(root, sourceFile.fileName).split(external_node_path_default().sep).join('/');
137
+ throw new Error((0, external_assertions_cjs_namespaceObject.selfCheckFailure)(contract, `${diagnostic} Compiler evidence: ${relativePath}:${position.line + 1}:${position.character + 1}`, fixArea));
138
+ }
139
+ const runtimeModuleReferences = (sourceFile)=>{
140
+ const references = [];
141
+ const record = (node, specifier, kind, typeOnly = false)=>{
142
+ if (!typeOnly) references.push({
143
+ kind,
144
+ node,
145
+ specifier
146
+ });
147
+ };
148
+ const visit = (node)=>{
149
+ if (typescript.isImportDeclaration(node) && typescript.isStringLiteralLikeNode(node.moduleSpecifier)) {
150
+ const importClause = node.importClause;
151
+ const namedBindings = importClause?.namedBindings;
152
+ const namedBindingsAreTypeOnly = void 0 !== namedBindings && typescript.isNamedImports(namedBindings) && namedBindings.elements.length > 0 && namedBindings.elements.every((element)=>element.isTypeOnly);
153
+ record(node, node.moduleSpecifier.text, void 0 === importClause ? 'side-effect-import' : 'static-import', importClause?.phaseModifier === typescript.SyntaxKind.TypeKeyword || importClause?.name === void 0 && namedBindingsAreTypeOnly);
154
+ } else if (typescript.isExportDeclaration(node) && void 0 !== node.moduleSpecifier && typescript.isStringLiteralLikeNode(node.moduleSpecifier)) record(node, node.moduleSpecifier.text, 'static-import', node.isTypeOnly);
155
+ else if (typescript.isCallExpression(node) && node.arguments.length > 0 && typescript.isStringLiteralLikeNode(node.arguments[0])) {
156
+ if (node.expression.kind === typescript.SyntaxKind.ImportKeyword) record(node, node.arguments[0].text, 'dynamic-import');
157
+ else if (typescript.isIdentifier(node.expression) && 'require' === node.expression.text) record(node, node.arguments[0].text, 'require');
158
+ }
159
+ node.forEachChild(visit);
160
+ };
161
+ visit(sourceFile);
162
+ return references;
163
+ };
164
+ const importDiagnosticId = (prefix, kind)=>{
165
+ switch(kind){
166
+ case 'side-effect-import':
167
+ return `${prefix}-side-effect-import`;
168
+ case 'dynamic-import':
169
+ return `${prefix}-dynamic-import`;
170
+ case 'require':
171
+ return `${prefix}-require`;
172
+ default:
173
+ return 'vertical-directory' === prefix ? 'vertical-directory-deep-import' : 'workspace-package-source-import';
174
+ }
175
+ };
176
+ const isWorkspaceSourceSpecifier = (specifier)=>{
177
+ const segments = specifier.split('/');
178
+ return segments.length > 3 && segments[0].startsWith('@') && 'src' === segments[2];
179
+ };
180
+ const resolvesInsideVerticalDirectory = (sourceFile, specifier)=>{
181
+ if (!specifier.startsWith('.')) return false;
182
+ const specifierSegments = specifier.replaceAll('\\', '/').split('/');
183
+ if (specifierSegments.some((segment, index)=>'verticals' === segment && void 0 !== specifierSegments[index + 1])) return true;
184
+ const absoluteTarget = external_node_path_default().resolve(external_node_path_default().dirname(sourceFile.fileName), specifier);
185
+ const verticalRoot = external_node_path_default().join(root, 'verticals') + external_node_path_default().sep;
186
+ if (!absoluteTarget.startsWith(verticalRoot)) return false;
187
+ const relativeSegments = external_node_path_default().relative(verticalRoot, absoluteTarget).split(external_node_path_default().sep);
188
+ return relativeSegments.length > 1;
189
+ };
190
+ const jsxTagName = (tagName)=>typescript.isIdentifier(tagName) ? tagName.text : void 0;
191
+ const jsxAttribute = (attributes, name)=>attributes.properties.find((property)=>typescript.isJsxAttribute(property) && nodeName(property.name) === name);
192
+ const isBooleanLiteral = (node, value)=>node?.kind === (value ? typescript.SyntaxKind.TrueKeyword : typescript.SyntaxKind.FalseKeyword);
193
+ const isCallNamed = (node, names)=>{
194
+ if (void 0 === node || !typescript.isCallExpression(node)) return false;
195
+ const accessPath = propertyAccessPath(node.expression);
196
+ return void 0 !== accessPath && names.has(accessPath.at(-1));
197
+ };
198
+ const objectLiteralProperty = (objectLiteral, name)=>objectLiteral.properties.find((property)=>typescript.isPropertyAssignment(property) && nodeName(property.name) === name);
199
+ const moduleFederationConfigArgument = (sourceFile)=>{
200
+ let argument;
201
+ const visit = (node)=>{
202
+ if (void 0 !== argument) return;
203
+ if (typescript.isCallExpression(node) && typescript.isIdentifier(node.expression) && 'createModuleFederationConfig' === node.expression.text && 1 === node.arguments.length && typescript.isObjectLiteralExpression(node.arguments[0])) {
204
+ argument = node.arguments[0];
205
+ return;
206
+ }
207
+ node.forEachChild(visit);
208
+ };
209
+ visit(sourceFile);
210
+ return argument;
211
+ };
212
+ const appDeclaresReactRouter = (appPath)=>{
213
+ const relativePath = `${appPath}/package.json`;
214
+ if (!external_node_fs_default().existsSync(external_node_path_default().join(root, relativePath))) return false;
215
+ const packageJson = readJson(relativePath);
216
+ return [
217
+ 'react-router',
218
+ 'react-router-dom'
219
+ ].some((dependency)=>[
220
+ 'dependencies',
221
+ 'devDependencies'
222
+ ].some((field)=>Object.hasOwn(packageJson[field] ?? {}, dependency)));
223
+ };
224
+ const bridgeRouterFixArea = 'declare bridge.enableBridgeRouter: false, or true only in an app that declares react-router or react-router-dom';
225
+ const assertBridgeRouterCapability = (sourceFile, appPath)=>{
226
+ const contract = 'module federation bridge capability';
227
+ const configArgument = moduleFederationConfigArgument(sourceFile);
228
+ if (void 0 === configArgument) compilerFailure(sourceFile, sourceFile, contract, 'Generated Module Federation must pass a literal config object to createModuleFederationConfig.', bridgeRouterFixArea);
229
+ const bridge = objectLiteralProperty(configArgument, 'bridge');
230
+ const declaration = void 0 !== bridge && typescript.isObjectLiteralExpression(bridge.initializer) ? objectLiteralProperty(bridge.initializer, 'enableBridgeRouter') : void 0;
231
+ if (void 0 === declaration) compilerFailure(sourceFile, bridge ?? configArgument, contract, 'Generated Module Federation must declare bridge.enableBridgeRouter in its config object.', bridgeRouterFixArea);
232
+ if (isBooleanLiteral(declaration.initializer, false)) return;
233
+ if (!isBooleanLiteral(declaration.initializer, true)) compilerFailure(sourceFile, declaration, contract, 'Generated Module Federation must declare bridge.enableBridgeRouter as a boolean literal.', bridgeRouterFixArea);
234
+ if (!appDeclaresReactRouter(appPath)) compilerFailure(sourceFile, declaration, contract, `Generated Module Federation enables the React bridge router while ${appPath}/package.json declares neither react-router nor react-router-dom.`, bridgeRouterFixArea);
235
+ };
236
+ const checkArchitecture = ()=>{
237
+ const structuralPolicy = workspaceValidationContract.structuralShellPolicy;
238
+ (0, external_assertions_cjs_namespaceObject.assert)(structuralPolicy?.schemaVersion === 1, 'Structural thin-shell compiler policy must use schemaVersion 1');
239
+ const compositionPolicy = workspaceValidationContract.federatedCompositionPolicy;
240
+ (0, external_assertions_cjs_namespaceObject.assert)(compositionPolicy?.schemaVersion === 1, 'Federated composition compiler policy must use schemaVersion 1');
241
+ const compilerInputs = new Set([
242
+ ...(structuralPolicy.shells ?? []).flatMap((shell)=>collectCompilerInputs(shell.srcDir)),
243
+ ...(compositionPolicy.hosts ?? []).flatMap((host)=>collectCompilerInputs(host.srcDir)),
244
+ ...workspaceValidationContract.apps.flatMap((app)=>collectCompilerInputs(app.path))
245
+ ]);
246
+ initializeCompilerSnapshot(compilerInputs);
247
+ for (const shell of structuralPolicy.shells ?? []){
248
+ for (const forbidden of structuralPolicy.forbiddenPathClasses ?? [])if ('shell-super-app' !== shell.id || 'backend-federation.config.ts' === forbidden.path) (0, external_assertions_cjs_namespaceObject.assert)(!external_node_fs_default().existsSync(external_node_path_default().join(root, shell.packageDir, forbidden.path)), (0, external_assertions_cjs_namespaceObject.selfCheckFailure)(`structural thin-shell ${forbidden.id}`, `${forbidden.diagnostic} Forbidden artifact ${shell.packageDir}/${forbidden.path} exists`, `remove forbidden thin-shell artifact ${shell.packageDir}/${forbidden.path}`));
249
+ if (void 0 !== compilerSnapshot) for (const absolutePath of collectCompilerInputs(shell.srcDir)){
250
+ const sourceFile = parseCompilerInput(absolutePath);
251
+ for (const reference of runtimeModuleReferences(sourceFile)){
252
+ if (resolvesInsideVerticalDirectory(sourceFile, reference.specifier)) {
253
+ const id = importDiagnosticId('vertical-directory', reference.kind);
254
+ compilerFailure(sourceFile, reference.node, `structural thin-shell ${id}`, 'A thin Shell must consume only published vertical surfaces, never a vertical implementation directory.', 'consume only published surfaces from the thin shell');
255
+ }
256
+ if (isWorkspaceSourceSpecifier(reference.specifier)) {
257
+ const id = importDiagnosticId('workspace-package', reference.kind);
258
+ compilerFailure(sourceFile, reference.node, `structural thin-shell ${id}`, 'A thin Shell must consume only package exports, never another package raw src directory.', 'consume only published surfaces from the thin shell');
259
+ }
260
+ }
261
+ }
262
+ }
263
+ if (void 0 === compilerSnapshot) {
264
+ const packageJson = readJson('package.json');
265
+ (0, external_assertions_cjs_namespaceObject.assert)('string' == typeof packageJson.devDependencies?.["@typescript/native"], 'Generated workspaces must declare the native TypeScript compiler used by architecture evidence');
266
+ (0, external_assertions_cjs_namespaceObject.assert)(packageJson.scripts?.check?.split('&&').some((stage)=>'pnpm typecheck' === stage.trim()), 'Generated workspace check must execute compiler evidence before contract validation');
267
+ return;
268
+ }
269
+ for (const host of compositionPolicy.hosts ?? [])for (const absolutePath of collectCompilerInputs(host.srcDir)){
270
+ const sourceFile = parseCompilerInput(absolutePath);
271
+ if (sourceFile.isDeclarationFile) continue;
272
+ const remoteImplementation = (specifier)=>(host.remotes ?? []).find((remote)=>{
273
+ if (specifier === remote.packageName) return true;
274
+ if (specifier.startsWith(`${remote.packageName}/`)) {
275
+ const subpath = specifier.slice(remote.packageName.length + 1);
276
+ return 'api' !== subpath && !subpath.startsWith('api/');
277
+ }
278
+ if (!specifier.startsWith('.')) return false;
279
+ const absoluteTarget = external_node_path_default().resolve(external_node_path_default().dirname(sourceFile.fileName), specifier);
280
+ const remoteDirectory = external_node_path_default().join(root, remote.directory);
281
+ return absoluteTarget === remoteDirectory || absoluteTarget.startsWith(remoteDirectory + external_node_path_default().sep);
282
+ });
283
+ for (const reference of runtimeModuleReferences(sourceFile)){
284
+ const remote = remoteImplementation(reference.specifier);
285
+ if (void 0 !== remote) compilerFailure(sourceFile, reference.node, 'federated composition remote-runtime-package-import', `Host ${host.id} imports the ${remote.id} render implementation through ${reference.specifier}.`, 'use import type for contracts or compose the implementation through Module Federation');
286
+ }
287
+ const hydrationStateSetters = new Set();
288
+ const visit = (node)=>{
289
+ if (typescript.isVariableDeclaration(node) && typescript.isArrayBindingPattern(node.name) && node.name.elements.length >= 2 && isCallNamed(node.initializer, new Set([
290
+ 'useState'
291
+ ])) && isBooleanLiteral(node.initializer.arguments[0], false)) {
292
+ const stateName = nodeName(node.name.elements[0].name)?.toLowerCase();
293
+ const setterName = nodeName(node.name.elements[1].name);
294
+ if (('hydrated' === stateName || 'ishydrated' === stateName) && void 0 !== setterName) hydrationStateSetters.add(setterName);
295
+ }
296
+ if ((typescript.isVariableDeclaration(node) || typescript.isFunctionDeclaration(node)) && 'createHydratedRemote' === nodeName(node.name)) compilerFailure(sourceFile, node, 'federated composition hydrated-remote-factory', 'Federated hosts must use the distributed SSR boundary directly; hydration-time remote factories are forbidden.', 'compose remote rendering through framework Module Federation primitives');
297
+ if ((typescript.isPropertyAssignment(node) || typescript.isJsxAttribute(node)) && ('loading' === nodeName(node.name) || 'fallback' === nodeName(node.name))) {
298
+ const value = typescript.isPropertyAssignment(node) ? node.initializer : void 0 !== node.initializer && typescript.isJsxExpression(node.initializer) ? node.initializer.expression : void 0;
299
+ if (void 0 !== value && (typescript.isJsxElement(value) || typescript.isJsxSelfClosingElement(value))) {
300
+ const tagName = typescript.isJsxElement(value) ? jsxTagName(value.openingElement.tagName) : jsxTagName(value.tagName);
301
+ if ('ServerComponent' === tagName || 'LocalComponent' === tagName) compilerFailure(sourceFile, node, 'federated composition local-loading-copy', 'Federated hosts must not render a local component copy while loading a remote implementation.', 'use an explicit unavailable-state component instead of a local implementation copy');
302
+ }
303
+ }
304
+ node.forEachChild(visit);
305
+ };
306
+ visit(sourceFile);
307
+ if (hydrationStateSetters.size > 0) {
308
+ const findHydrationSetter = (node)=>{
309
+ if (typescript.isCallExpression(node) && typescript.isIdentifier(node.expression) && hydrationStateSetters.has(node.expression.text) && isBooleanLiteral(node.arguments[0], true)) compilerFailure(sourceFile, node, 'federated composition hydration-flag', 'Federated hosts must hydrate the server DOM directly; hydrated-state component switching is forbidden.', 'compose remote rendering through framework Module Federation primitives');
310
+ node.forEachChild(findHydrationSetter);
311
+ };
312
+ findHydrationSetter(sourceFile);
313
+ }
314
+ }
315
+ const shellRouteDirectories = (structuralPolicy.shells ?? []).map((shell)=>`${shell.packageDir}/src/routes`);
316
+ const appPaths = workspaceValidationContract.apps.map((app)=>app.path);
317
+ const configFiles = appPaths.flatMap((appPath)=>[
318
+ `${appPath}/modern.config.ts`,
319
+ `${appPath}/module-federation.config.ts`
320
+ ]);
321
+ const moduleFederationConfigAppPaths = new Map(appPaths.map((appPath)=>[
322
+ external_node_path_default().join(root, `${appPath}/module-federation.config.ts`),
323
+ appPath
324
+ ]).filter((entry)=>external_node_fs_default().existsSync(entry[0])));
325
+ const checkedFiles = new Set([
326
+ ...shellRouteDirectories.flatMap(collectCompilerInputs),
327
+ ...configFiles.map((relativePath)=>external_node_path_default().join(root, relativePath)).filter((absolutePath)=>external_node_fs_default().existsSync(absolutePath))
328
+ ]);
329
+ for (const absolutePath of checkedFiles){
330
+ const sourceFile = parseCompilerInput(absolutePath);
331
+ const isShellRoute = shellRouteDirectories.some((relativeDirectory)=>{
332
+ const absoluteDirectory = external_node_path_default().join(root, relativeDirectory);
333
+ return absolutePath.startsWith(absoluteDirectory + external_node_path_default().sep);
334
+ });
335
+ const moduleFederationAppPath = moduleFederationConfigAppPaths.get(absolutePath);
336
+ const tailwindFactories = new Set();
337
+ const presetFactories = new Set();
338
+ for (const statement of sourceFile.statements){
339
+ if (!typescript.isImportDeclaration(statement) || !typescript.isStringLiteralLikeNode(statement.moduleSpecifier) || statement.importClause?.phaseModifier === typescript.SyntaxKind.TypeKeyword) continue;
340
+ const bindings = statement.importClause?.namedBindings;
341
+ if (void 0 !== bindings && typescript.isNamedImports(bindings)) for (const binding of bindings.elements){
342
+ if (binding.isTypeOnly) continue;
343
+ const imported = (binding.propertyName ?? binding.name).text;
344
+ if ('@rsbuild/plugin-tailwindcss' === statement.moduleSpecifier.text && 'pluginTailwindcss' === imported) tailwindFactories.add(binding.name.text);
345
+ if ('@modern-js/ultramodern-app-tools' === statement.moduleSpecifier.text && 'presetUltramodern' === imported) presetFactories.add(binding.name.text);
346
+ }
347
+ }
348
+ const modernConfigApp = workspaceValidationContract.apps.find((app)=>absolutePath === external_node_path_default().join(root, app.path, 'modern.config.ts'));
349
+ let insideDefaultExport = false;
350
+ const visit = (node)=>{
351
+ const previousDefaultExport = insideDefaultExport;
352
+ if (typescript.isExportAssignment(node) && !node.isExportEquals) insideDefaultExport = true;
353
+ if (insideDefaultExport && void 0 !== modernConfigApp && isCallNamed(node, presetFactories) && void 0 !== node.arguments[0] && typescript.isObjectLiteralExpression(node.arguments[0])) {
354
+ const builderPlugins = objectLiteralProperty(node.arguments[0], 'builderPlugins');
355
+ const usesTailwind = void 0 !== builderPlugins && typescript.isArrayLiteralExpression(builderPlugins.initializer) && builderPlugins.initializer.elements.some((plugin)=>isCallNamed(plugin, tailwindFactories));
356
+ const emitsUi = 'shell' === modernConfigApp.kind || fullStackVerticals.some((vertical)=>vertical.id === modernConfigApp.id && vertical.emitsUi);
357
+ if (usesTailwind !== (tailwindEnabled && emitsUi)) compilerFailure(sourceFile, builderPlugins ?? node, `${compactConfigPath} policy.features.tailwind`, `Tailwind feature flag is ${tailwindEnabled}, but ${modernConfigApp.id} exported config ${usesTailwind ? 'enables' : 'does not enable'} the Tailwind builder plugin.`, 'keep the Tailwind feature flag and active app builder configuration consistent');
358
+ }
359
+ if (typescript.isImportDeclaration(node) && typescript.isStringLiteralLikeNode(node.moduleSpecifier) && 'node:child_process' === node.moduleSpecifier.text) compilerFailure(sourceFile, node, 'framework config API node-child-process-access', 'Generated config must not invoke node:child_process directly.', 'use the framework config environment API');
360
+ const accessPath = propertyAccessPath(node);
361
+ if ((0, external_assertions_cjs_namespaceObject.sameJson)(accessPath, [
362
+ 'process',
363
+ 'env'
364
+ ])) compilerFailure(sourceFile, node, 'framework config API direct-process-env-access', 'Generated config must use the framework config environment API instead of process.env.', 'use getBuildConfigEnvironment');
365
+ if (typescript.isIdentifier(node) && 'ULTRAMODERN_ZEPHYR' === node.text) compilerFailure(sourceFile, node, 'zephyr gating ultramodern-zephyr-environment-gate', 'Generated Zephyr integration must not be gated through ULTRAMODERN_ZEPHYR.', 'use Zephyr native deploy-token behavior');
366
+ if (typescript.isPropertyAssignment(node)) {
367
+ const property = nodeName(node.name);
368
+ if ('enableBridgeRouter' === property && void 0 === moduleFederationAppPath || 'disableDynamicRemoteTypeHints' === property && isBooleanLiteral(node.initializer, true) || 'treeShakingSharedExcludePlugins' === property) compilerFailure(sourceFile, node, 'module federation bridge capability', `Generated Module Federation carries forbidden option ${property}.`, 'use framework-owned Module Federation defaults');
369
+ }
370
+ if (isShellRoute) {
371
+ if (typescript.isJsxOpeningElement(node) && 'a' === jsxTagName(node.tagName) && void 0 !== jsxAttribute(node.attributes, 'onClick')) compilerFailure(sourceFile, node, 'shell routing synthetic-anchor-click-interception', 'Shell routing must not intercept anchor clicks synthetically.', 'use the router Link primitive');
372
+ if (isCallNamed(node, new Set([
373
+ 'hydrateRoot',
374
+ 'loadRemote',
375
+ 'loadShare'
376
+ ]))) compilerFailure(sourceFile, node, 'module federation native loading', 'Shell routing must use framework Module Federation loading primitives.', 'remove manual hydration or remote-loading wrappers');
377
+ if (typescript.isBinaryExpression(node) && node.operatorToken.kind === typescript.SyntaxKind.EqualsToken && propertyAccessPath(node.left)?.slice(0, 2).join('.') === 'window.location' || typescript.isCallExpression(node) && propertyAccessPath(node.expression)?.slice(0, 2).join('.') === 'window.location') compilerFailure(sourceFile, node, 'shell routing window-location-navigation', 'Shell routing must use router navigation instead of window.location.', 'use the router navigation primitive');
378
+ }
379
+ node.forEachChild(visit);
380
+ insideDefaultExport = previousDefaultExport;
381
+ };
382
+ visit(sourceFile);
383
+ if (void 0 !== moduleFederationAppPath) assertBridgeRouterCapability(sourceFile, moduleFederationAppPath);
384
+ }
385
+ };
386
+ checkArchitecture();
387
+ } finally{
388
+ compiler?.close();
389
+ }
390
+ }
391
+ exports.assertCompilerArchitecture = __webpack_exports__.assertCompilerArchitecture;
392
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
393
+ "assertCompilerArchitecture"
394
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
395
+ Object.defineProperty(exports, '__esModule', {
396
+ value: true
397
+ });
@@ -0,0 +1,140 @@
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
+ function assert(condition, message) {
31
+ if (!condition) throw new Error(message);
32
+ }
33
+ const canonicalizeJson = (value)=>{
34
+ if (Array.isArray(value)) {
35
+ const entries = value.map(canonicalizeJson);
36
+ const keyedEntries = entries.every((entry)=>null !== entry && 'object' == typeof entry && !Array.isArray(entry) && 'id' in entry && 'string' == typeof entry.id);
37
+ if (keyedEntries) {
38
+ const ids = entries.map((entry)=>entry.id);
39
+ if (new Set(ids).size === ids.length) return entries.toSorted((left, right)=>left.id.localeCompare(right.id));
40
+ }
41
+ return entries;
42
+ }
43
+ if (null !== value && 'object' == typeof value) return Object.fromEntries(Object.keys(value).toSorted().map((key)=>[
44
+ key,
45
+ canonicalizeJson(value[key])
46
+ ]));
47
+ return value;
48
+ };
49
+ const sameJson = (actual, expected)=>JSON.stringify(canonicalizeJson(actual)) === JSON.stringify(canonicalizeJson(expected));
50
+ const formatJson = (value)=>void 0 === value ? 'undefined' : JSON.stringify(canonicalizeJson(value));
51
+ const selfCheckFailure = (contract, message, fixArea)=>`MicroVertical contract self-check failed: ${contract}. ${message}. Fix area: ${fixArea}.`;
52
+ function assertSelfCheck(condition, contract, message, fixArea) {
53
+ assert(condition, selfCheckFailure(contract, message, fixArea));
54
+ }
55
+ const assertSameJson = (actual, expected, contract, fixArea)=>{
56
+ assertSelfCheck(sameJson(actual, expected), contract, `Expected ${formatJson(expected)}, found ${formatJson(actual)}`, fixArea);
57
+ };
58
+ const assertIncludesJson = (actual, required, contract, fixArea)=>{
59
+ assertArray(actual, contract, fixArea);
60
+ for (const entry of required)assertSelfCheck(actual.some((value)=>sameJson(value, entry)), contract, `Missing required entry ${formatJson(entry)}`, fixArea);
61
+ };
62
+ function assertObject(value, contract, fixArea) {
63
+ assertSelfCheck(null !== value && 'object' == typeof value && !Array.isArray(value), contract, `Expected JSON object, found ${formatJson(value)}`, fixArea);
64
+ }
65
+ function assertArray(value, contract, fixArea) {
66
+ assertSelfCheck(Array.isArray(value), contract, `Expected JSON array, found ${formatJson(value)}`, fixArea);
67
+ }
68
+ const assertUniqueStrings = (values, contract)=>{
69
+ assert(Array.isArray(values), `${contract} must be an array`);
70
+ const seen = new Set();
71
+ for (const value of values){
72
+ assert('string' == typeof value && value.length > 0, `${contract} must contain non-empty strings`);
73
+ assert(!seen.has(value), `Duplicate value "${value}" in ${contract}`);
74
+ seen.add(value);
75
+ }
76
+ };
77
+ const assertUniqueIdEntries = (entries, contract)=>{
78
+ assert(Array.isArray(entries), `${contract} must be an array`);
79
+ const seen = new Set();
80
+ for (const entry of entries){
81
+ const id = entry?.id;
82
+ assert('string' == typeof id && id.length > 0, `${contract} entries must have non-empty string ids`);
83
+ assert(!seen.has(id), `Duplicate id "${id}" in ${contract}`);
84
+ seen.add(id);
85
+ }
86
+ };
87
+ const assertSameIdCohort = (entries, expectedIds, contract, fixArea)=>{
88
+ assert(entries && expectedIds, `${contract} must be an array`);
89
+ assertUniqueIdEntries(entries, contract);
90
+ assertSameJson(entries.map((entry)=>entry.id).toSorted(), [
91
+ ...expectedIds
92
+ ].toSorted(), `${contract} cohort`, fixArea);
93
+ };
94
+ __webpack_require__.d(__webpack_exports__, {
95
+ assert: ()=>assert,
96
+ assertArray: ()=>assertArray,
97
+ assertObject: ()=>assertObject,
98
+ assertSelfCheck: ()=>assertSelfCheck
99
+ }, {
100
+ assertIncludesJson: assertIncludesJson,
101
+ assertSameIdCohort: assertSameIdCohort,
102
+ assertSameJson: assertSameJson,
103
+ assertUniqueIdEntries: assertUniqueIdEntries,
104
+ assertUniqueStrings: assertUniqueStrings,
105
+ canonicalizeJson: canonicalizeJson,
106
+ formatJson: formatJson,
107
+ sameJson: sameJson,
108
+ selfCheckFailure: selfCheckFailure
109
+ });
110
+ exports.assert = __webpack_exports__.assert;
111
+ exports.assertArray = __webpack_exports__.assertArray;
112
+ exports.assertIncludesJson = __webpack_exports__.assertIncludesJson;
113
+ exports.assertObject = __webpack_exports__.assertObject;
114
+ exports.assertSameIdCohort = __webpack_exports__.assertSameIdCohort;
115
+ exports.assertSameJson = __webpack_exports__.assertSameJson;
116
+ exports.assertSelfCheck = __webpack_exports__.assertSelfCheck;
117
+ exports.assertUniqueIdEntries = __webpack_exports__.assertUniqueIdEntries;
118
+ exports.assertUniqueStrings = __webpack_exports__.assertUniqueStrings;
119
+ exports.canonicalizeJson = __webpack_exports__.canonicalizeJson;
120
+ exports.formatJson = __webpack_exports__.formatJson;
121
+ exports.sameJson = __webpack_exports__.sameJson;
122
+ exports.selfCheckFailure = __webpack_exports__.selfCheckFailure;
123
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
124
+ "assert",
125
+ "assertArray",
126
+ "assertIncludesJson",
127
+ "assertObject",
128
+ "assertSameIdCohort",
129
+ "assertSameJson",
130
+ "assertSelfCheck",
131
+ "assertUniqueIdEntries",
132
+ "assertUniqueStrings",
133
+ "canonicalizeJson",
134
+ "formatJson",
135
+ "sameJson",
136
+ "selfCheckFailure"
137
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
138
+ Object.defineProperty(exports, '__esModule', {
139
+ value: true
140
+ });
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.r = (exports1)=>{
5
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
6
+ value: 'Module'
7
+ });
8
+ Object.defineProperty(exports1, '__esModule', {
9
+ value: true
10
+ });
11
+ };
12
+ })();
13
+ var __webpack_exports__ = {};
14
+ __webpack_require__.r(__webpack_exports__);
15
+ for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
16
+ Object.defineProperty(exports, '__esModule', {
17
+ value: true
18
+ });