@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,155 +0,0 @@
1
- import "node:module";
2
- import node_fs from "node:fs";
3
- import node_path from "node:path";
4
- import { readJsonFile, writeJsonFile } from "./io.js";
5
- import { updateUltramodernConfigToolchain } from "./toolchain-pins.js";
6
- const packageSourceOwnedKeys = [
7
- 'strategy',
8
- 'modernPackageVersion',
9
- 'registry',
10
- 'aliasScope',
11
- 'aliasPackageNamePrefix'
12
- ];
13
- const retiredPackageSourceKeys = [
14
- 'generatedWorkspacePackages',
15
- 'metadata',
16
- 'modernPackages'
17
- ];
18
- function requireObject(value, label) {
19
- if (!value || 'object' != typeof value || Array.isArray(value)) throw new Error(`${label} must be an object.`);
20
- return value;
21
- }
22
- function reconcilePackageSourceMetadata(value, { canonical, label, ownedKeys }) {
23
- const existing = void 0 === value ? {} : requireObject(value, label);
24
- const frameworkOwnedKeys = new Set([
25
- ...ownedKeys,
26
- ...retiredPackageSourceKeys
27
- ]);
28
- for (const key of Object.keys(canonical))if (!frameworkOwnedKeys.has(key)) throw new Error(`${label} canonical key ${key} is not framework-owned.`);
29
- const extensionEntries = Object.entries(existing).filter(([key])=>!frameworkOwnedKeys.has(key));
30
- const next = Object.fromEntries(extensionEntries);
31
- Object.assign(next, canonical);
32
- const expectedKeys = [
33
- ...extensionEntries.map(([key])=>key),
34
- ...Object.keys(canonical)
35
- ];
36
- const actualKeys = Object.keys(next);
37
- if (actualKeys.length !== expectedKeys.length || actualKeys.some((key, index)=>key !== expectedKeys[index])) throw new Error(`${label} could not establish exact package-source keys.`);
38
- for (const [key, extensionValue] of extensionEntries)if (!Object.is(next[key], extensionValue)) throw new Error(`${label} could not preserve extension key ${key}.`);
39
- for (const key of frameworkOwnedKeys){
40
- const shouldExist = Object.hasOwn(canonical, key);
41
- if (Object.hasOwn(next, key) !== shouldExist || shouldExist && !Object.is(next[key], canonical[key])) throw new Error(`${label} could not establish exact postcondition for ${key}.`);
42
- }
43
- return next;
44
- }
45
- function reconcileCompactPackageSourceMetadata(value, packageSource) {
46
- return reconcilePackageSourceMetadata(value, {
47
- canonical: {
48
- strategy: packageSource.strategy,
49
- modernPackageVersion: packageSource.modernPackageVersion,
50
- ...packageSource.registry ? {
51
- registry: packageSource.registry
52
- } : {},
53
- ...packageSource.aliasScope ? {
54
- aliasScope: packageSource.aliasScope
55
- } : {},
56
- ...packageSource.aliasPackageNamePrefix ? {
57
- aliasPackageNamePrefix: packageSource.aliasPackageNamePrefix
58
- } : {}
59
- },
60
- label: 'packageSource',
61
- ownedKeys: packageSourceOwnedKeys
62
- });
63
- }
64
- function normalizeStrictEffectApiMetadata(value) {
65
- let changed = false;
66
- const backendFederation = value.backendFederation;
67
- if (backendFederation && 'object' == typeof backendFederation && !Array.isArray(backendFederation) && Object.hasOwn(backendFederation, 'entry')) {
68
- delete backendFederation.entry;
69
- changed = true;
70
- }
71
- const api = value.api;
72
- if (!api || 'object' != typeof api || Array.isArray(api)) return changed;
73
- if (void 0 !== api.backendFederation) {
74
- delete api.backendFederation;
75
- changed = true;
76
- }
77
- const oldEffect = api.effect;
78
- if (oldEffect && 'object' == typeof oldEffect && !Array.isArray(oldEffect)) {
79
- if (void 0 === api.stem && 'string' == typeof oldEffect.stem) {
80
- api.stem = oldEffect.stem;
81
- changed = true;
82
- }
83
- if (void 0 === api.prefix && 'string' == typeof oldEffect.prefix) {
84
- api.prefix = oldEffect.prefix;
85
- changed = true;
86
- }
87
- if (void 0 === api.consumedBy && Array.isArray(oldEffect.consumedBy)) {
88
- api.consumedBy = oldEffect.consumedBy;
89
- changed = true;
90
- }
91
- delete api.effect;
92
- changed = true;
93
- }
94
- if ('effect' !== api.runtime) {
95
- api.runtime = 'effect';
96
- changed = true;
97
- }
98
- if (api.bff && 'object' == typeof api.bff && !Array.isArray(api.bff)) {
99
- if (true !== api.bff.strictEffectApproach) {
100
- api.bff.strictEffectApproach = true;
101
- changed = true;
102
- }
103
- }
104
- if ('string' == typeof value.path) {
105
- const directServerEntry = `${value.path}/api/index.ts`;
106
- if ('string' == typeof api.serverEntry && /\/api\/effect\/index\.[cm]?[jt]sx?$/u.test(api.serverEntry)) {
107
- api.serverEntry = directServerEntry;
108
- changed = true;
109
- }
110
- if (api.contract && 'object' == typeof api.contract && !Array.isArray(api.contract)) {
111
- if ('./shared/effect/api' === api.contract.export) {
112
- api.contract.export = './api';
113
- changed = true;
114
- }
115
- if ('string' == typeof api.contract.path && /\/shared\/effect\/api\.[cm]?[jt]sx?$/u.test(api.contract.path)) {
116
- api.contract.path = `${value.path}/shared/api.ts`;
117
- changed = true;
118
- }
119
- }
120
- if (api.client && 'object' == typeof api.client && !Array.isArray(api.client)) {
121
- if ('./effect/client' === api.client.export) {
122
- api.client.export = './api/client';
123
- changed = true;
124
- }
125
- if ('string' == typeof api.client.path && /\/src\/effect\/[^/]+-client\.[cm]?ts$/u.test(api.client.path)) {
126
- const basename = node_path.basename(api.client.path);
127
- api.client.path = `${value.path}/src/api/${basename}`;
128
- changed = true;
129
- }
130
- }
131
- if (void 0 === api.serverEntry && 'effect' === api.runtime) {
132
- api.serverEntry = directServerEntry;
133
- changed = true;
134
- }
135
- }
136
- return changed;
137
- }
138
- function updateUltramodernConfig(io, config, packageSource) {
139
- const configPath = node_path.join(io.workspaceRoot, '.modernjs/ultramodern.json');
140
- config.packageSource = reconcileCompactPackageSourceMetadata(config.packageSource, packageSource);
141
- if (config.generator && 'object' == typeof config.generator && !Array.isArray(config.generator) && 'string' == typeof config.generator.version) config.generator.version = packageSource.modernPackageVersion;
142
- updateUltramodernConfigToolchain(config);
143
- for (const app of config.topology?.apps ?? [])if (app && 'object' == typeof app && !Array.isArray(app)) normalizeStrictEffectApiMetadata(app);
144
- writeJsonFile(io, configPath, config);
145
- }
146
- function updateReferenceTopology(io) {
147
- const topologyPath = node_path.join(io.workspaceRoot, 'topology/reference-topology.json');
148
- if (!node_fs.existsSync(topologyPath)) return false;
149
- const topology = readJsonFile(topologyPath);
150
- let changed = false;
151
- for (const vertical of topology.verticals ?? [])if (vertical && 'object' == typeof vertical && !Array.isArray(vertical)) changed = normalizeStrictEffectApiMetadata(vertical) || changed;
152
- if (changed) writeJsonFile(io, topologyPath, topology);
153
- return changed;
154
- }
155
- export { reconcileCompactPackageSourceMetadata, reconcilePackageSourceMetadata, updateReferenceTopology, updateUltramodernConfig };
@@ -1,10 +0,0 @@
1
- import "node:module";
2
- import { ensureGeneratedPatchFile, removeGeneratedPatchFileIfUnchanged } from "./generated-patches.js";
3
- import { drizzleOrmDeclarationPatchPath, drizzleOrmDeclarationPatchSourcePath, requiredGeneratedPatches } from "./policy-constants.js";
4
- function ensureGeneratedDeclarationPatches(io, options) {
5
- let changed = false;
6
- for (const patch of requiredGeneratedPatches)changed = ensureGeneratedPatchFile(io, patch.path, patch.sourcePath) || changed;
7
- changed = options.includeDrizzleOrmPatch ? ensureGeneratedPatchFile(io, drizzleOrmDeclarationPatchPath, drizzleOrmDeclarationPatchSourcePath) || changed : removeGeneratedPatchFileIfUnchanged(io, drizzleOrmDeclarationPatchPath, drizzleOrmDeclarationPatchSourcePath) || changed;
8
- return changed;
9
- }
10
- export { ensureGeneratedDeclarationPatches };
@@ -1,64 +0,0 @@
1
- import "node:module";
2
- import node_fs from "node:fs";
3
- import node_path from "node:path";
4
- import { semver } from "@modern-js/utils";
5
- import * as __rspack_external__pnpm_yaml_js_177b7343 from "./pnpm-yaml.js";
6
- function workspaceUsesDependency(workspaceRoot, packageName, exactVersion) {
7
- const packageJsonPaths = [
8
- node_path.join(workspaceRoot, 'package.json')
9
- ];
10
- let compatibleRangeDeclared = false;
11
- for (const workspaceDir of [
12
- 'apps',
13
- 'verticals',
14
- 'packages'
15
- ]){
16
- const absoluteWorkspaceDir = node_path.join(workspaceRoot, workspaceDir);
17
- if (node_fs.existsSync(absoluteWorkspaceDir)) for (const entry of node_fs.readdirSync(absoluteWorkspaceDir, {
18
- withFileTypes: true
19
- })){
20
- if (!entry.isDirectory()) continue;
21
- const packageJsonPath = node_path.join(absoluteWorkspaceDir, entry.name, 'package.json');
22
- if (node_fs.existsSync(packageJsonPath)) packageJsonPaths.push(packageJsonPath);
23
- }
24
- }
25
- const aliasPrefix = `npm:${packageName}@`;
26
- for (const packageJsonPath of packageJsonPaths){
27
- const packageJson = JSON.parse(node_fs.readFileSync(packageJsonPath, 'utf-8'));
28
- for (const field of [
29
- 'dependencies',
30
- 'devDependencies',
31
- 'peerDependencies',
32
- 'optionalDependencies'
33
- ]){
34
- const dependencies = packageJson[field];
35
- if (dependencies && 'object' == typeof dependencies) {
36
- if (Object.prototype.hasOwnProperty.call(dependencies, packageName)) {
37
- const specifier = dependencies[packageName];
38
- if (void 0 === exactVersion || specifier === exactVersion || specifier === `${aliasPrefix}${exactVersion}`) return true;
39
- if ('string' == typeof specifier && semver.satisfies(exactVersion, specifier, {
40
- includePrerelease: true
41
- })) compatibleRangeDeclared = true;
42
- }
43
- for (const specifier of Object.values(dependencies)){
44
- if ('string' != typeof specifier || !specifier.startsWith(aliasPrefix)) continue;
45
- const aliasedVersion = specifier.slice(aliasPrefix.length);
46
- if (void 0 === exactVersion || aliasedVersion === exactVersion) return true;
47
- if (semver.satisfies(exactVersion, aliasedVersion, {
48
- includePrerelease: true
49
- })) compatibleRangeDeclared = true;
50
- }
51
- }
52
- }
53
- }
54
- if (!exactVersion || !compatibleRangeDeclared) return false;
55
- const lockfilePath = node_path.join(workspaceRoot, 'pnpm-lock.yaml');
56
- if (!node_fs.existsSync(lockfilePath)) return true;
57
- try {
58
- const closure = __rspack_external__pnpm_yaml_js_177b7343.discoverReachablePnpmLockReleaseAgeClosure(__rspack_external__pnpm_yaml_js_177b7343.parsePnpmWorkspaceYaml(node_fs.readFileSync(lockfilePath, 'utf-8'), lockfilePath).document);
59
- return closure.unresolved.length > 0 || closure.candidates.some((candidate)=>candidate.packageName === packageName && candidate.version === exactVersion);
60
- } catch {
61
- return true;
62
- }
63
- }
64
- export { workspaceUsesDependency };
@@ -1,8 +0,0 @@
1
- import "node:module";
2
- import node_path from "node:path";
3
- import { createBackendFederationContractFile } from "../../../ultramodern-workspace/backend-federation.js";
4
- import { allWorkspaceAppsFromToolingConfig } from "../../config.js";
5
- function updateGeneratedBackendFederationContractFiles(io, config) {
6
- for (const app of allWorkspaceAppsFromToolingConfig(config))if (app.api) io.writeGenerated(node_path.join(io.workspaceRoot, app.directory, 'api/backend-federation.ts'), createBackendFederationContractFile(app));
7
- }
8
- export { updateGeneratedBackendFederationContractFiles };
@@ -1,48 +0,0 @@
1
- import "node:module";
2
- import node_fs from "node:fs";
3
- import node_path from "node:path";
4
- import { createUltramodernBuildArtifactJson, createUltramodernBuildModule, createUltramodernBuildReexportModule } from "../../../ultramodern-workspace/module-federation.js";
5
- import { allWorkspaceAppsFromToolingConfig } from "../../config.js";
6
- const legacyApiMarkerPattern = /export const ultramodernApiMarker\s*=\s*\{[\s\S]*?\}\s+as const;\n?/u;
7
- const markerSchemaPattern = /(export const [A-Za-z_$][\w$]*MarkerSchema(?:\s*:[^=]+)?\s*=\s*Schema\.Struct\(\{\n)([\s\S]*?)(\n\}\);)/u;
8
- function rewriteLegacyApiMarkerBinding(source) {
9
- return source.replace(legacyApiMarkerPattern, "export { ultramodernApiMarker } from './ultramodern-build.ts';\n");
10
- }
11
- function rewriteApiMarkerIdentitySchema(source) {
12
- const match = source.match(markerSchemaPattern);
13
- if (!match) return source;
14
- let body = match[2];
15
- if (![
16
- 'appId',
17
- 'build',
18
- 'deployProfile',
19
- 'packageName',
20
- 'surface',
21
- 'version'
22
- ].every((field)=>new RegExp(`^\\s+${field}: Schema\\.String,\\s*$`, 'mu').test(body))) return source;
23
- for (const [anchor, field] of [
24
- [
25
- 'build',
26
- 'buildMarker'
27
- ],
28
- [
29
- 'packageName',
30
- 'sourceRevision'
31
- ],
32
- [
33
- 'surface',
34
- 'unitId'
35
- ]
36
- ])if (!new RegExp(`^\\s+${field}: Schema\\.String,\\s*$`, 'mu').test(body)) body = body.replace(new RegExp(`^(\\s+)${anchor}: Schema\\.String,\\s*$`, 'mu'), `$&\n$1${field}: Schema.String,`);
37
- return source.replace(markerSchemaPattern, (_full, prefix, _body, suffix)=>`${prefix}${body}${suffix}`);
38
- }
39
- function updateGeneratedBuildIdentityModules(io, config) {
40
- for (const app of allWorkspaceAppsFromToolingConfig(config)){
41
- const sharedApiPath = node_path.join(io.workspaceRoot, app.directory, 'shared/api.ts');
42
- if (app.api && node_fs.existsSync(sharedApiPath)) io.write(sharedApiPath, rewriteApiMarkerIdentitySchema(rewriteLegacyApiMarkerBinding(node_fs.readFileSync(sharedApiPath, 'utf-8'))));
43
- io.writeGenerated(node_path.join(io.workspaceRoot, app.directory, 'src/ultramodern-build.ts'), createUltramodernBuildReexportModule());
44
- io.writeGenerated(node_path.join(io.workspaceRoot, app.directory, 'shared/ultramodern-build.ts'), createUltramodernBuildModule(config.workspace.packageScope, app));
45
- io.write(node_path.join(io.workspaceRoot, app.directory, 'shared/ultramodern-build.json'), createUltramodernBuildArtifactJson(config.workspace.packageScope, app));
46
- }
47
- }
48
- export { rewriteApiMarkerIdentitySchema, rewriteLegacyApiMarkerBinding, updateGeneratedBuildIdentityModules };
@@ -1,147 +0,0 @@
1
- import "node:module";
2
- import node_fs from "node:fs";
3
- import node_path from "node:path";
4
- import { configuredDevelopmentPorts } from "../../../ultramodern-workspace/add-vertical/workspace-state.js";
5
- import { createFederatedComponentsRegistry, createRemoteExposeFragmentPage, createShellRemoteComponents, createShellWorkerRemoteComponents } from "../../../ultramodern-workspace/demo-components.js";
6
- import { appEmitsBrowserUi, appHasApi, distributedSsrExposes, distributedSsrFragmentSlug, resolveRemoteRefs } from "../../../ultramodern-workspace/descriptors.js";
7
- import { formatGeneratedSourceCandidates } from "../../../ultramodern-workspace/fs-io.js";
8
- import { createAppModernConfig, createBackendModuleFederationConfig, createRemoteModuleFederationConfig, createShellModuleFederationConfig } from "../../../ultramodern-workspace/module-federation.js";
9
- import { additionalShellsFromToolingConfig, allWorkspaceAppsFromToolingConfig } from "../../config.js";
10
- import { writeGeneratedUiSourceIfChanged } from "./generated-ui-source.js";
11
- import { readJsonFile } from "./io.js";
12
- import { appDeclaresReactRouter } from "./react-router-retirement.js";
13
- function isGeneratedShellComposition(source) {
14
- return source.includes('const createRemoteComponent =') && source.includes('export const VerticalShowcase =');
15
- }
16
- function writeOwnedTypeScriptConfig(io, filePath, generatedSource, recognizedGeneratedSources = []) {
17
- if (!node_fs.existsSync(filePath)) return io.writeGenerated(filePath, generatedSource);
18
- const existingSource = node_fs.readFileSync(filePath, 'utf-8');
19
- if (existingSource === generatedSource) return io.writeGenerated(filePath, existingSource);
20
- if (recognizedGeneratedSources.includes(existingSource)) return io.writeGenerated(filePath, generatedSource);
21
- io.log(`${node_path.relative(io.workspaceRoot, filePath)} was preserved: its generated ownership cannot be proven.`);
22
- return false;
23
- }
24
- function removeOwnedTypeScriptConfig(io, filePath, recognizedGeneratedSources) {
25
- if (!node_fs.existsSync(filePath)) return false;
26
- if (recognizedGeneratedSources.includes(node_fs.readFileSync(filePath, 'utf-8'))) return io.remove(filePath);
27
- io.log(`${node_path.relative(io.workspaceRoot, filePath)} was preserved: surface metadata cannot delete a config whose exact generated ownership cannot be proven.`);
28
- return false;
29
- }
30
- function addLegacyGeneratedModernDefaults(source) {
31
- const serverAnchor = " publicDir: ['./locales', './assets'],\n";
32
- const optionsEnd = ' },\n ),\n);';
33
- return source.replace(serverAnchor, `${serverAnchor} ssr: {
34
- mode: 'stream',
35
- moduleFederationAppSSR: true,
36
- },
37
- `).replace(optionsEnd, ` enableBffRequestId: true,
38
- enableModuleFederationSSR: true,
39
- enableTelemetryExporters: true,
40
- telemetryFailLoudStartup: false,
41
- ${optionsEnd}`);
42
- }
43
- function formatGeneratedModernConfigCandidates(generatedSources) {
44
- return formatGeneratedSourceCandidates(generatedSources.map((source, index)=>[
45
- `candidate-${index}.ts`,
46
- source
47
- ]));
48
- }
49
- const formatGeneratedTypeScriptConfig = (generatedSource)=>formatGeneratedModernConfigCandidates([
50
- generatedSource
51
- ])[0];
52
- function isGeneratedModernConfig(source, generatedSources) {
53
- return generatedSources.includes(source);
54
- }
55
- function addPreviousTailwindOptimizationOverride(source) {
56
- return source.replace('pluginTailwindcss()', 'pluginTailwindcss({ optimize: false })');
57
- }
58
- function removeTsCheckerBuildOverride(source) {
59
- return source.replace(` tsChecker: {
60
- typescript: {
61
- build: false,
62
- },
63
- },
64
- `, '');
65
- }
66
- function removeReleaseEnvelopePlugin(source) {
67
- return source.replace(' ultramodernReleaseEnvelopePlugin,\n', '').replace(' ultramodernReleaseEnvelopePlugin(),\n', '');
68
- }
69
- function updateGeneratedModernConfigs(io, config) {
70
- const apps = allWorkspaceAppsFromToolingConfig(config);
71
- const remotes = apps.filter((app)=>'shell' !== app.kind);
72
- const overlayPath = node_path.join(io.workspaceRoot, 'topology/local-overlays/development.json');
73
- const overlay = node_fs.existsSync(overlayPath) ? readJsonFile(overlayPath) : {};
74
- const overlayPorts = overlay.ports && 'object' == typeof overlay.ports ? overlay.ports : Object.fromEntries(apps.map((app)=>[
75
- app.id,
76
- app.port
77
- ]));
78
- const primaryShell = apps.find((app)=>'shell' === app.kind);
79
- const configuredPorts = primaryShell ? {
80
- ...overlayPorts,
81
- [primaryShell.id]: primaryShell.port
82
- } : overlayPorts;
83
- const additionalShells = additionalShellsFromToolingConfig(config);
84
- const configuredDevPorts = additionalShells.length > 0 ? configuredDevelopmentPorts(configuredPorts, additionalShells).toSorted((left, right)=>left - right) : void 0;
85
- for (const app of apps){
86
- const modernConfigPath = node_path.join(io.workspaceRoot, app.directory, 'modern.config.ts');
87
- const rawGeneratedModernConfig = createAppModernConfig(config.workspace.packageScope, app, remotes, config.features.tailwind, configuredDevPorts);
88
- const previousTailwindModernConfig = addPreviousTailwindOptimizationOverride(rawGeneratedModernConfig);
89
- const currentGeneratedModernConfigs = [
90
- rawGeneratedModernConfig,
91
- addLegacyGeneratedModernDefaults(rawGeneratedModernConfig),
92
- previousTailwindModernConfig,
93
- addLegacyGeneratedModernDefaults(previousTailwindModernConfig)
94
- ];
95
- const [generatedModernConfig, ...recognizedGeneratedModernConfigs] = formatGeneratedModernConfigCandidates(currentGeneratedModernConfigs.flatMap((source)=>{
96
- const withoutReleaseEnvelope = removeReleaseEnvelopePlugin(source);
97
- return [
98
- source,
99
- removeTsCheckerBuildOverride(source),
100
- withoutReleaseEnvelope,
101
- removeTsCheckerBuildOverride(withoutReleaseEnvelope)
102
- ];
103
- }));
104
- if (node_fs.existsSync(modernConfigPath)) {
105
- const existingModernConfig = node_fs.readFileSync(modernConfigPath, 'utf-8');
106
- if (existingModernConfig === generatedModernConfig) io.writeGenerated(modernConfigPath, existingModernConfig);
107
- else if (isGeneratedModernConfig(existingModernConfig, [
108
- generatedModernConfig,
109
- ...recognizedGeneratedModernConfigs
110
- ])) io.writeGenerated(modernConfigPath, generatedModernConfig);
111
- else io.log(`${node_path.relative(io.workspaceRoot, modernConfigPath)} was preserved: an existing Modern config is consumer-owned unless its generated ownership can be proven.`);
112
- } else io.writeGenerated(modernConfigPath, generatedModernConfig);
113
- const moduleFederationConfigPath = node_path.join(io.workspaceRoot, app.directory, 'module-federation.config.ts');
114
- const enableBridgeRouter = appDeclaresReactRouter(node_path.join(io.workspaceRoot, app.directory));
115
- const createGeneratedModuleFederationConfig = (bridgeRouter)=>formatGeneratedTypeScriptConfig('shell' === app.kind ? createShellModuleFederationConfig(config.workspace.packageScope, app, remotes, bridgeRouter) : createRemoteModuleFederationConfig(config.workspace.packageScope, app, remotes, bridgeRouter));
116
- const generatedModuleFederationConfig = createGeneratedModuleFederationConfig(enableBridgeRouter);
117
- const recognizedModuleFederationConfigs = [
118
- generatedModuleFederationConfig,
119
- createGeneratedModuleFederationConfig(!enableBridgeRouter)
120
- ];
121
- if (appEmitsBrowserUi(app)) writeOwnedTypeScriptConfig(io, moduleFederationConfigPath, generatedModuleFederationConfig, recognizedModuleFederationConfigs);
122
- else removeOwnedTypeScriptConfig(io, moduleFederationConfigPath, recognizedModuleFederationConfigs);
123
- const backendFederationConfigPath = node_path.join(io.workspaceRoot, app.directory, 'backend-federation.config.ts');
124
- const generatedBackendFederationConfig = formatGeneratedTypeScriptConfig(createBackendModuleFederationConfig(app));
125
- if (appHasApi(app)) writeOwnedTypeScriptConfig(io, backendFederationConfigPath, generatedBackendFederationConfig, [
126
- generatedBackendFederationConfig
127
- ]);
128
- else removeOwnedTypeScriptConfig(io, backendFederationConfigPath, [
129
- generatedBackendFederationConfig
130
- ]);
131
- if ('shell' === app.kind) {
132
- const shellUiRemotes = resolveRemoteRefs(app, remotes).filter(appEmitsBrowserUi);
133
- const componentsPath = node_path.join(io.workspaceRoot, app.directory, 'src/routes/vertical-components.tsx');
134
- const workerComponentsPath = node_path.join(io.workspaceRoot, app.directory, 'src/routes/vertical-components.worker.tsx');
135
- const existingComponents = node_fs.existsSync(componentsPath) ? node_fs.readFileSync(componentsPath, 'utf-8') : void 0;
136
- if (void 0 === existingComponents || isGeneratedShellComposition(existingComponents)) {
137
- io.writeGenerated(componentsPath, createShellRemoteComponents(app, shellUiRemotes));
138
- io.writeGenerated(workerComponentsPath, createShellWorkerRemoteComponents(app, shellUiRemotes));
139
- } else if (node_fs.existsSync(workerComponentsPath) && isGeneratedShellComposition(node_fs.readFileSync(workerComponentsPath, 'utf-8'))) io.remove(workerComponentsPath);
140
- } else for (const expose of distributedSsrExposes(app))writeGeneratedUiSourceIfChanged(io, node_path.join(io.workspaceRoot, app.directory, `src/routes/[lang]/_mf/fragment/${distributedSsrFragmentSlug(expose)}/page.tsx`), createRemoteExposeFragmentPage(app, expose));
141
- if ((app.verticalRefs?.length ?? 0) > 0) {
142
- writeGeneratedUiSourceIfChanged(io, node_path.join(io.workspaceRoot, app.directory, 'src/federated-components.tsx'), createFederatedComponentsRegistry(config.workspace.packageScope, app, remotes));
143
- writeGeneratedUiSourceIfChanged(io, node_path.join(io.workspaceRoot, app.directory, 'src/federated-components.worker.tsx'), createFederatedComponentsRegistry(config.workspace.packageScope, app, remotes, true));
144
- }
145
- }
146
- }
147
- export { updateGeneratedModernConfigs };
@@ -1,98 +0,0 @@
1
- import "node:module";
2
- import node_fs from "node:fs";
3
- import node_path from "node:path";
4
- function ensureGeneratedOxfmtIgnorePatterns(io) {
5
- const configPath = node_path.join(io.workspaceRoot, 'oxfmt.config.ts');
6
- if (!node_fs.existsSync(configPath)) return false;
7
- const source = node_fs.readFileSync(configPath, 'utf-8');
8
- const legacyPreset = /^([ \t]*)extends:\s*\[\s*ultracite\s*\],?[ \t]*$/mu;
9
- const nextPresetSource = legacyPreset.test(source) ? source.replace(legacyPreset, '$1...ultracite,') : source;
10
- const requiredPatterns = [
11
- '.modernjs',
12
- '.output',
13
- 'repos/**',
14
- '**/modern-tanstack/**',
15
- '**/routeTree.gen.*'
16
- ];
17
- const warnUnparseable = ()=>{
18
- const message = `Could not update oxfmt.config.ts ignorePatterns automatically; add these entries manually: ${requiredPatterns.join(', ')}.`;
19
- if (io.dryRun) io.log(message);
20
- else process.stderr.write(`[ultramodern] ${message}\n`);
21
- };
22
- const writePresetReconciliation = ()=>{
23
- if (nextPresetSource !== source) io.write(configPath, nextPresetSource);
24
- };
25
- const anchor = nextPresetSource.indexOf('ignorePatterns:');
26
- if (-1 === anchor) {
27
- warnUnparseable();
28
- writePresetReconciliation();
29
- return false;
30
- }
31
- const openBracket = nextPresetSource.indexOf('[', anchor);
32
- if (-1 === openBracket) {
33
- warnUnparseable();
34
- writePresetReconciliation();
35
- return false;
36
- }
37
- let depth = 0;
38
- let closeBracket = -1;
39
- let stringQuote;
40
- for(let index = openBracket; index < nextPresetSource.length; index += 1){
41
- const char = nextPresetSource[index];
42
- if (stringQuote) {
43
- if ('\\' === char) index += 1;
44
- else if (char === stringQuote) stringQuote = void 0;
45
- continue;
46
- }
47
- if ("'" === char || '"' === char || '`' === char) stringQuote = char;
48
- else if ('[' === char) depth += 1;
49
- else if (']' === char) {
50
- depth -= 1;
51
- if (0 === depth) {
52
- closeBracket = index;
53
- break;
54
- }
55
- }
56
- }
57
- if (-1 === closeBracket) {
58
- warnUnparseable();
59
- writePresetReconciliation();
60
- return false;
61
- }
62
- const body = nextPresetSource.slice(openBracket + 1, closeBracket);
63
- if (body.includes('...')) {
64
- warnUnparseable();
65
- writePresetReconciliation();
66
- return false;
67
- }
68
- const literalPattern = /(['"`])((?:\\.|(?!\1).)*)\1/g;
69
- const existing = new Set();
70
- for (const match of body.matchAll(literalPattern))existing.add(match[2]);
71
- const missing = requiredPatterns.filter((pattern)=>!existing.has(pattern));
72
- if (0 === missing.length) {
73
- writePresetReconciliation();
74
- return true;
75
- }
76
- const bodyLines = body.split('\n');
77
- let indent = ' ';
78
- let quote = "'";
79
- for(let index = bodyLines.length - 1; index >= 0; index -= 1){
80
- const literal = bodyLines[index].match(/^(\s*)(['"`])/u);
81
- if (literal) {
82
- indent = literal[1];
83
- quote = literal[2];
84
- break;
85
- }
86
- }
87
- const head = nextPresetSource.slice(0, closeBracket);
88
- const rest = nextPresetSource.slice(closeBracket);
89
- const tailMatch = head.match(/(\r?\n[ \t]*)$/u);
90
- const tail = tailMatch ? tailMatch[1] : '\n';
91
- let bodyContent = tailMatch ? head.slice(0, head.length - tail.length) : head;
92
- if (!/[[,]\s*$/u.test(bodyContent)) bodyContent = `${bodyContent},`;
93
- const insertionLines = missing.map((pattern)=>`${indent}${quote}${pattern}${quote},`).join('\n');
94
- const nextSource = `${bodyContent}\n${insertionLines}${tail}${rest}`;
95
- io.write(configPath, nextSource);
96
- return true;
97
- }
98
- export { ensureGeneratedOxfmtIgnorePatterns };
@@ -1,62 +0,0 @@
1
- import "node:module";
2
- import node_fs from "node:fs";
3
- import node_path from "node:path";
4
- const functionStyleRule = ` 'func-style': [
5
- 'error',
6
- 'declaration',
7
- {
8
- allowArrowFunctions: true,
9
- },
10
- ],`;
11
- const componentStyleRule = ` 'react/function-component-definition': [
12
- 'error',
13
- {
14
- namedComponents: ['function-declaration', 'arrow-function'],
15
- },
16
- ],`;
17
- const componentStyleRules = ` rules: {
18
- ${functionStyleRule}
19
- ${componentStyleRule}
20
- },`;
21
- const hasFunctionStyleRule = (source)=>/['"]func-style['"]/u.test(source);
22
- const hasComponentStyleRule = (source)=>/['"]react\/function-component-definition['"]/u.test(source);
23
- const rulesAnchor = /^ {2}rules:\s*\{[ \t]*$/mu;
24
- const legacyComponentStyleRules = ` rules: {
25
- 'react/function-component-definition': [
26
- 'error',
27
- {
28
- namedComponents: ['function-declaration', 'arrow-function'],
29
- },
30
- ],
31
- },`;
32
- function ensureGeneratedOxlintComponentStyle(io) {
33
- const configPath = node_path.join(io.workspaceRoot, 'oxlint.config.ts');
34
- if (!node_fs.existsSync(configPath)) return false;
35
- const source = node_fs.readFileSync(configPath, 'utf-8');
36
- const hasFunctionStyle = hasFunctionStyleRule(source);
37
- const hasComponentStyle = hasComponentStyleRule(source);
38
- if (hasFunctionStyle && hasComponentStyle) return false;
39
- const warnUnparseable = ()=>{
40
- const message = 'Could not update oxlint.config.ts component style policy automatically; regenerate the framework-owned config.';
41
- if (io.dryRun) io.log(message);
42
- else process.stderr.write(`[ultramodern] ${message}\n`);
43
- };
44
- if (hasComponentStyle && !hasFunctionStyle) {
45
- if (!source.includes(legacyComponentStyleRules)) {
46
- warnUnparseable();
47
- return false;
48
- }
49
- return io.write(configPath, source.replace(rulesAnchor, (match)=>`${match}\n${functionStyleRule}`));
50
- }
51
- if (/^[ \t]*rules\s*:/mu.test(source)) {
52
- warnUnparseable();
53
- return false;
54
- }
55
- const extendsAnchor = /^ {2}extends:\s*\[\s*core\s*,\s*react\s*\],[ \t]*$/mu;
56
- if (!extendsAnchor.test(source)) {
57
- warnUnparseable();
58
- return false;
59
- }
60
- return io.write(configPath, source.replace(extendsAnchor, (match)=>`${match}\n${componentStyleRules}`));
61
- }
62
- export { ensureGeneratedOxlintComponentStyle };
@@ -1,17 +0,0 @@
1
- import "node:module";
2
- import node_path from "node:path";
3
- import { allWorkspaceAppsFromToolingConfig } from "../../config.js";
4
- function removeGeneratedFileIfExists(io, relativePath) {
5
- return io.remove(node_path.join(io.workspaceRoot, relativePath));
6
- }
7
- function removeStaleBackendFederationArtifacts(io, config) {
8
- let changed = false;
9
- for (const relativePath of [
10
- "scripts/generate-node-backend-federation.mts",
11
- "scripts/proof-node-backend-federation.mts",
12
- "scripts/verify-cloudflare-output.mts"
13
- ])changed = removeGeneratedFileIfExists(io, relativePath) || changed;
14
- for (const app of allWorkspaceAppsFromToolingConfig(config))changed = removeGeneratedFileIfExists(io, node_path.join(app.directory, 'api/backend-federation.ts')) || changed;
15
- return changed;
16
- }
17
- export { removeGeneratedFileIfExists, removeStaleBackendFederationArtifacts };