@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,386 +0,0 @@
1
- import "node:module";
2
- import node_fs from "node:fs";
3
- import node_os from "node:os";
4
- import node_path from "node:path";
5
- import { formatGeneratedSourceCandidates } from "../../../ultramodern-workspace/fs-io.js";
6
- const stagingExcludedEntries = new Set([
7
- '.git',
8
- '.nx',
9
- '.output',
10
- 'coverage',
11
- 'dist',
12
- 'node_modules'
13
- ]);
14
- const stagingGeneratedOutputEntries = new Set([
15
- 'coverage',
16
- 'dist'
17
- ]);
18
- const stagingWorkspacePackageDirectories = new Set([
19
- 'apps',
20
- 'packages',
21
- 'verticals'
22
- ]);
23
- function lstatIfExists(filePath) {
24
- try {
25
- return node_fs.lstatSync(filePath);
26
- } catch (error) {
27
- if ('ENOENT' === error.code) return;
28
- throw error;
29
- }
30
- }
31
- function symlinkTypeForPath(filePath) {
32
- return node_fs.statSync(filePath, {
33
- throwIfNoEntry: false
34
- })?.isDirectory() ? 'win32' === process.platform ? 'junction' : 'dir' : 'file';
35
- }
36
- function isPathInsideRoot(rootPath, targetPath) {
37
- const relativePath = node_path.relative(rootPath, targetPath);
38
- return '' === relativePath || !relativePath.startsWith(`..${node_path.sep}`) && '..' !== relativePath && !node_path.isAbsolute(relativePath);
39
- }
40
- function resolvePotentialRealPath(filePath, visitedSymlinks = new Set()) {
41
- const absolutePath = node_path.resolve(filePath);
42
- let existingAncestor = absolutePath;
43
- while(!lstatIfExists(existingAncestor)){
44
- const parentPath = node_path.dirname(existingAncestor);
45
- if (parentPath === existingAncestor) return absolutePath;
46
- existingAncestor = parentPath;
47
- }
48
- let realAncestor;
49
- try {
50
- realAncestor = node_fs.realpathSync.native(existingAncestor);
51
- } catch (error) {
52
- const ancestorStat = lstatIfExists(existingAncestor);
53
- if (!ancestorStat?.isSymbolicLink()) throw error;
54
- if (visitedSymlinks.has(existingAncestor)) throw new Error(`Refusing to follow cyclic migration symlink: ${existingAncestor}`);
55
- visitedSymlinks.add(existingAncestor);
56
- realAncestor = resolvePotentialRealPath(node_path.resolve(node_path.dirname(existingAncestor), node_fs.readlinkSync(existingAncestor)), visitedSymlinks);
57
- }
58
- return node_path.resolve(realAncestor, node_path.relative(existingAncestor, absolutePath));
59
- }
60
- function capturePath(filePath) {
61
- const stat = lstatIfExists(filePath);
62
- if (!stat) return;
63
- const mode = 4095 & stat.mode;
64
- if (stat.isFile()) return {
65
- content: node_fs.readFileSync(filePath),
66
- mode,
67
- type: 'file'
68
- };
69
- if (stat.isDirectory()) {
70
- const entries = new Map();
71
- for (const entry of node_fs.readdirSync(filePath).sort((left, right)=>left.localeCompare(right))){
72
- const snapshot = capturePath(node_path.join(filePath, entry));
73
- if (snapshot) entries.set(entry, snapshot);
74
- }
75
- return {
76
- entries,
77
- mode,
78
- type: 'directory'
79
- };
80
- }
81
- if (stat.isSymbolicLink()) return {
82
- linkType: symlinkTypeForPath(filePath),
83
- mode,
84
- target: node_fs.readlinkSync(filePath),
85
- type: 'symlink'
86
- };
87
- throw new Error(`Unsupported migration transaction path: ${filePath}`);
88
- }
89
- function removePath(filePath) {
90
- node_fs.rmSync(filePath, {
91
- force: true,
92
- recursive: true
93
- });
94
- }
95
- function chmodSymlinkIfSupported(filePath, mode) {
96
- if ('function' == typeof node_fs.lchmodSync) node_fs.lchmodSync(filePath, mode);
97
- }
98
- function restorePath(filePath, snapshot) {
99
- if (!snapshot) return void removePath(filePath);
100
- const current = lstatIfExists(filePath);
101
- if ('file' === snapshot.type) {
102
- if (!current?.isFile() || current.isSymbolicLink()) {
103
- removePath(filePath);
104
- node_fs.mkdirSync(node_path.dirname(filePath), {
105
- recursive: true
106
- });
107
- }
108
- node_fs.writeFileSync(filePath, snapshot.content);
109
- node_fs.chmodSync(filePath, snapshot.mode);
110
- return;
111
- }
112
- if ('symlink' === snapshot.type) {
113
- if (!current?.isSymbolicLink() || node_fs.readlinkSync(filePath) !== snapshot.target || symlinkTypeForPath(filePath) !== snapshot.linkType) {
114
- removePath(filePath);
115
- node_fs.mkdirSync(node_path.dirname(filePath), {
116
- recursive: true
117
- });
118
- node_fs.symlinkSync(snapshot.target, filePath, snapshot.linkType);
119
- }
120
- chmodSymlinkIfSupported(filePath, snapshot.mode);
121
- return;
122
- }
123
- if (!current?.isDirectory() || current.isSymbolicLink()) {
124
- removePath(filePath);
125
- node_fs.mkdirSync(filePath, {
126
- recursive: true
127
- });
128
- }
129
- for (const entry of node_fs.readdirSync(filePath))if (!snapshot.entries.has(entry)) removePath(node_path.join(filePath, entry));
130
- for (const [entry, childSnapshot] of snapshot.entries)restorePath(node_path.join(filePath, entry), childSnapshot);
131
- node_fs.chmodSync(filePath, snapshot.mode);
132
- }
133
- function copyWorkspaceEntry(sourcePath, destinationPath, sourceWorkspaceRoot, stagedWorkspaceRoot, sourceWorkspaceAliases) {
134
- const stat = node_fs.lstatSync(sourcePath);
135
- if (stat.isDirectory()) {
136
- node_fs.mkdirSync(destinationPath, {
137
- mode: 4095 & stat.mode
138
- });
139
- const relativeSourcePath = node_path.relative(sourceWorkspaceRoot, sourcePath);
140
- for (const entry of node_fs.readdirSync(sourcePath)){
141
- const isNamedWorkspacePackage = stagingWorkspacePackageDirectories.has(relativeSourcePath) && stagingGeneratedOutputEntries.has(entry);
142
- if (!stagingExcludedEntries.has(entry) || isNamedWorkspacePackage) copyWorkspaceEntry(node_path.join(sourcePath, entry), node_path.join(destinationPath, entry), sourceWorkspaceRoot, stagedWorkspaceRoot, sourceWorkspaceAliases);
143
- }
144
- node_fs.chmodSync(destinationPath, 4095 & stat.mode);
145
- return;
146
- }
147
- if (stat.isFile()) {
148
- node_fs.copyFileSync(sourcePath, destinationPath, node_fs.constants.COPYFILE_FICLONE);
149
- node_fs.chmodSync(destinationPath, 4095 & stat.mode);
150
- return;
151
- }
152
- if (stat.isSymbolicLink()) {
153
- const target = node_fs.readlinkSync(sourcePath);
154
- const stagedTarget = node_path.isAbsolute(target) ? relocateWorkspacePath(sourceWorkspaceAliases, stagedWorkspaceRoot, target) : target;
155
- node_fs.symlinkSync(stagedTarget, destinationPath, symlinkTypeForPath(sourcePath));
156
- chmodSymlinkIfSupported(destinationPath, 4095 & stat.mode);
157
- return;
158
- }
159
- throw new Error(`Unsupported migration staging path: ${sourcePath}`);
160
- }
161
- function relocateWorkspacePath(sourceWorkspaceRoots, stagedWorkspaceRoot, sourcePath) {
162
- for (const sourceWorkspaceRoot of sourceWorkspaceRoots){
163
- const relativePath = node_path.relative(sourceWorkspaceRoot, sourcePath);
164
- if (isPathInsideRoot(sourceWorkspaceRoot, sourcePath)) return node_path.join(stagedWorkspaceRoot, relativePath);
165
- }
166
- return sourcePath;
167
- }
168
- function isPromiseLike(value) {
169
- return ('object' == typeof value || 'function' == typeof value) && null !== value && 'function' == typeof value.then;
170
- }
171
- function createMigrationIoWithBehavior(workspaceRoot, dryRun, behavior) {
172
- const absoluteWorkspaceRoot = node_path.resolve(workspaceRoot);
173
- const realWorkspaceRoot = resolvePotentialRealPath(absoluteWorkspaceRoot);
174
- const plan = [];
175
- let activeTransaction;
176
- const rel = (p)=>(node_path.relative(absoluteWorkspaceRoot, p) || node_path.basename(p)).split(node_path.sep).join('/');
177
- const assertRealWorkspacePath = (absolutePath, displayedPath, followFinalSymlink = true)=>{
178
- const pathToResolve = followFinalSymlink ? absolutePath : node_path.dirname(absolutePath);
179
- const realPath = resolvePotentialRealPath(pathToResolve);
180
- if (!isPathInsideRoot(realWorkspaceRoot, realPath)) throw new Error(`Refusing to mutate outside workspace: ${displayedPath}`);
181
- };
182
- const assertWorkspacePath = (filePath, followFinalSymlink = true)=>{
183
- const absolutePath = node_path.resolve(filePath);
184
- const relativePath = node_path.relative(absoluteWorkspaceRoot, absolutePath);
185
- if ('' === relativePath || '..' === relativePath || relativePath.startsWith(`..${node_path.sep}`) || node_path.isAbsolute(relativePath)) throw new Error(`Refusing to mutate outside workspace: ${filePath}`);
186
- assertRealWorkspacePath(absolutePath, filePath, followFinalSymlink);
187
- return absolutePath;
188
- };
189
- const captureForRollback = (filePath)=>{
190
- if (!activeTransaction || activeTransaction.snapshots.has(filePath)) return;
191
- activeTransaction.snapshots.set(filePath, capturePath(filePath));
192
- activeTransaction.order.push(filePath);
193
- };
194
- const captureMissingParents = (filePath)=>{
195
- const missing = [];
196
- let current = node_path.dirname(filePath);
197
- while(current !== absoluteWorkspaceRoot && !lstatIfExists(current)){
198
- missing.push(current);
199
- current = node_path.dirname(current);
200
- }
201
- for (const missingDirectory of missing.reverse())captureForRollback(missingDirectory);
202
- };
203
- const rollback = (transaction)=>{
204
- for (const filePath of [
205
- ...transaction.order
206
- ].reverse())restorePath(filePath, transaction.snapshots.get(filePath));
207
- };
208
- const finishWithError = (transaction, error)=>{
209
- try {
210
- rollback(transaction);
211
- } catch (rollbackError) {
212
- throw new Error(`Migration failed (${String(error)}) and rollback failed (${String(rollbackError)}).`);
213
- } finally{
214
- activeTransaction = void 0;
215
- }
216
- throw error;
217
- };
218
- const formatGeneratedWrites = (generatedPaths)=>{
219
- if (0 === generatedPaths.size) return;
220
- const relativePaths = [
221
- ...generatedPaths
222
- ].map((filePath)=>node_path.relative(absoluteWorkspaceRoot, filePath)).sort((left, right)=>left.localeCompare(right));
223
- const formattedSources = formatGeneratedSourceCandidates(relativePaths.map((relativePath)=>[
224
- relativePath,
225
- node_fs.readFileSync(node_path.join(absoluteWorkspaceRoot, relativePath), 'utf-8')
226
- ]));
227
- for (const [index, relativePath] of relativePaths.entries())io.write(node_path.join(absoluteWorkspaceRoot, relativePath), formattedSources[index]);
228
- };
229
- const io = {
230
- workspaceRoot: absoluteWorkspaceRoot,
231
- dryRun,
232
- plan,
233
- write (filePath, content) {
234
- const absolutePath = assertWorkspacePath(filePath);
235
- if (node_fs.existsSync(absolutePath) && node_fs.readFileSync(absolutePath, 'utf-8') === content) return false;
236
- if (dryRun) {
237
- plan.push(`[dry-run] would write ${rel(absolutePath)}`);
238
- if (!behavior.materializeDryRun) return true;
239
- }
240
- captureMissingParents(absolutePath);
241
- captureForRollback(absolutePath);
242
- const current = lstatIfExists(absolutePath);
243
- if (current?.isSymbolicLink()) {
244
- const linkedPath = node_path.resolve(node_path.dirname(absolutePath), node_fs.readlinkSync(absolutePath));
245
- let targetPath = linkedPath;
246
- try {
247
- targetPath = node_fs.realpathSync.native(absolutePath);
248
- } catch {}
249
- const absoluteTargetPath = node_path.resolve(targetPath);
250
- assertRealWorkspacePath(absoluteTargetPath, filePath);
251
- captureMissingParents(absoluteTargetPath);
252
- captureForRollback(absoluteTargetPath);
253
- }
254
- assertRealWorkspacePath(absolutePath, filePath);
255
- node_fs.mkdirSync(node_path.dirname(absolutePath), {
256
- recursive: true
257
- });
258
- node_fs.writeFileSync(absolutePath, content, 'utf-8');
259
- return true;
260
- },
261
- writeGenerated (filePath, content) {
262
- const absolutePath = assertWorkspacePath(filePath);
263
- const changed = io.write(absolutePath, content);
264
- if (dryRun && !behavior.materializeDryRun) return changed;
265
- if (activeTransaction) activeTransaction.generatedPaths.add(absolutePath);
266
- else formatGeneratedWrites(new Set([
267
- absolutePath
268
- ]));
269
- return changed;
270
- },
271
- remove (filePath) {
272
- const absolutePath = assertWorkspacePath(filePath, false);
273
- if (!lstatIfExists(absolutePath)) return false;
274
- if (dryRun) {
275
- plan.push(`[dry-run] would delete ${rel(absolutePath)}`);
276
- if (!behavior.materializeDryRun) return true;
277
- }
278
- activeTransaction?.generatedPaths.delete(absolutePath);
279
- captureForRollback(absolutePath);
280
- assertRealWorkspacePath(absolutePath, filePath, false);
281
- node_fs.rmSync(absolutePath);
282
- return true;
283
- },
284
- log (message) {
285
- if (dryRun) plan.push(`[dry-run] ${message}`);
286
- else process.stdout.write(`[ultramodern] ${message}\n`);
287
- },
288
- transaction (operation, options) {
289
- if (activeTransaction) throw new Error('Nested migration transactions are not supported.');
290
- const transaction = {
291
- generatedPaths: new Set(),
292
- order: [],
293
- snapshots: new Map()
294
- };
295
- activeTransaction = transaction;
296
- const finish = (result)=>{
297
- try {
298
- if (options?.commitWhen && !options.commitWhen(result)) rollback(transaction);
299
- else formatGeneratedWrites(transaction.generatedPaths);
300
- return result;
301
- } catch (error) {
302
- return finishWithError(transaction, error);
303
- } finally{
304
- activeTransaction = void 0;
305
- }
306
- };
307
- try {
308
- const result = operation();
309
- if (isPromiseLike(result)) return Promise.resolve(result).then((value)=>finish(value), (error)=>finishWithError(transaction, error));
310
- return finish(result);
311
- } catch (error) {
312
- return finishWithError(transaction, error);
313
- }
314
- },
315
- withStagedWorkspace (operation) {
316
- const temporaryRoot = node_fs.mkdtempSync(node_path.join(node_os.tmpdir(), 'ultramodern-migration-'));
317
- const stagedWorkspaceRoot = node_path.join(temporaryRoot, 'workspace');
318
- const sourceWorkspaceAliases = [
319
- ...new Set([
320
- absoluteWorkspaceRoot,
321
- realWorkspaceRoot
322
- ])
323
- ];
324
- try {
325
- copyWorkspaceEntry(realWorkspaceRoot, stagedWorkspaceRoot, realWorkspaceRoot, stagedWorkspaceRoot, sourceWorkspaceAliases);
326
- const result = operation(stagedWorkspaceRoot);
327
- if (isPromiseLike(result)) return Promise.resolve(result).finally(()=>{
328
- node_fs.rmSync(temporaryRoot, {
329
- force: true,
330
- recursive: true
331
- });
332
- });
333
- node_fs.rmSync(temporaryRoot, {
334
- force: true,
335
- recursive: true
336
- });
337
- return result;
338
- } catch (error) {
339
- node_fs.rmSync(temporaryRoot, {
340
- force: true,
341
- recursive: true
342
- });
343
- throw error;
344
- }
345
- }
346
- };
347
- return io;
348
- }
349
- function createMigrationIo(workspaceRoot, dryRun) {
350
- return createMigrationIoWithBehavior(workspaceRoot, dryRun, {
351
- materializeDryRun: false
352
- });
353
- }
354
- function withStagedDryRunMigrationIo(workspaceRoot, operation) {
355
- const ownerIo = createMigrationIo(workspaceRoot, true);
356
- return ownerIo.withStagedWorkspace((stagedWorkspaceRoot)=>operation(createMigrationIoWithBehavior(stagedWorkspaceRoot, true, {
357
- materializeDryRun: true
358
- })));
359
- }
360
- function readJsonFile(filePath) {
361
- return JSON.parse(node_fs.readFileSync(filePath, 'utf-8'));
362
- }
363
- function writeJsonFile(io, filePath, value) {
364
- return io.write(filePath, `${JSON.stringify(value, null, 2)}\n`);
365
- }
366
- function listWorkspacePackageFiles(workspaceRoot) {
367
- const packageFiles = [
368
- 'package.json'
369
- ];
370
- for (const directory of [
371
- 'apps',
372
- 'verticals',
373
- 'packages'
374
- ]){
375
- const absoluteDirectory = node_path.join(workspaceRoot, directory);
376
- if (node_fs.existsSync(absoluteDirectory)) for (const entry of node_fs.readdirSync(absoluteDirectory, {
377
- withFileTypes: true
378
- })){
379
- if (!entry.isDirectory()) continue;
380
- const packageFile = `${directory}/${entry.name}/package.json`;
381
- if (node_fs.existsSync(node_path.join(workspaceRoot, packageFile))) packageFiles.push(packageFile);
382
- }
383
- }
384
- return packageFiles;
385
- }
386
- export { createMigrationIo, listWorkspacePackageFiles, readJsonFile, withStagedDryRunMigrationIo, writeJsonFile };
@@ -1,277 +0,0 @@
1
- import "node:module";
2
- import { ULTRAMODERN_CREATE_PACKAGE, ULTRAMODERN_SINGLE_APP_MODERN_PACKAGES, ULTRAMODERN_WORKSPACE_MODERN_PACKAGES, modernPackageSpecifier } from "../../../ultramodern-package-source.js";
3
- import { ULTRAMODERN_PACKAGE_PINS } from "../../../ultramodern-workspace/policy.js";
4
- import { GENERATED_POSTINSTALL_SCRIPT, createWorkspaceAppPackageScripts, createWorkspaceRootPackageScripts } from "../../../ultramodern-workspace/workspace-script-plan.js";
5
- import { migratedWorkspaceScriptBasenames } from "../../../ultramodern-workspace/workspace-scripts.js";
6
- const modernPackageNames = new Set([
7
- ...ULTRAMODERN_SINGLE_APP_MODERN_PACKAGES,
8
- ...ULTRAMODERN_WORKSPACE_MODERN_PACKAGES
9
- ]);
10
- function updateDeclaredDependencies(packageJson, pins) {
11
- let changed = false;
12
- for (const section of [
13
- 'dependencies',
14
- 'devDependencies',
15
- 'peerDependencies',
16
- 'optionalDependencies'
17
- ]){
18
- const dependencies = packageJson[section];
19
- if (!(!dependencies || 'object' != typeof dependencies || Array.isArray(dependencies))) {
20
- for (const [packageName, version] of pins)if (Object.hasOwn(dependencies, packageName) && dependencies[packageName] !== version) {
21
- dependencies[packageName] = version;
22
- changed = true;
23
- }
24
- }
25
- }
26
- return changed;
27
- }
28
- function updateModernDependencies(packageJson, packageSource) {
29
- let changed = false;
30
- for (const section of [
31
- 'dependencies',
32
- 'devDependencies'
33
- ]){
34
- const dependencies = packageJson[section];
35
- if (dependencies && Object.hasOwn(dependencies, '@modern-js/create')) {
36
- dependencies[ULTRAMODERN_CREATE_PACKAGE] = modernPackageSpecifier(ULTRAMODERN_CREATE_PACKAGE, packageSource);
37
- delete dependencies['@modern-js/create'];
38
- changed = true;
39
- }
40
- }
41
- return updateDeclaredDependencies(packageJson, new Map([
42
- ...modernPackageNames
43
- ].map((packageName)=>[
44
- packageName,
45
- modernPackageSpecifier(packageName, packageSource)
46
- ]))) || changed;
47
- }
48
- const generatedToolingDependencyPins = new Map(Object.entries({
49
- ...ULTRAMODERN_PACKAGE_PINS.appDependencies,
50
- ...ULTRAMODERN_PACKAGE_PINS.appDevDependencies,
51
- ...ULTRAMODERN_PACKAGE_PINS.rootDevDependencies,
52
- "@typescript/native-preview": ULTRAMODERN_PACKAGE_PINS.transitiveDependencies["@typescript/native-preview"]
53
- }));
54
- function updateGeneratedToolingDependencies(packageJson, options = {}) {
55
- let changed = updateDeclaredDependencies(packageJson, generatedToolingDependencyPins);
56
- if (options.ownsGeneratedScripts) {
57
- const devDependencies = packageJson.devDependencies && 'object' == typeof packageJson.devDependencies && !Array.isArray(packageJson.devDependencies) ? packageJson.devDependencies : packageJson.devDependencies = {};
58
- const crossEnvVersion = ULTRAMODERN_PACKAGE_PINS.rootDevDependencies["cross-env"];
59
- if (devDependencies['cross-env'] !== crossEnvVersion) {
60
- devDependencies['cross-env'] = crossEnvVersion;
61
- changed = true;
62
- }
63
- }
64
- return changed;
65
- }
66
- function ensureBffEffectDependencies(packageJson) {
67
- let changed = false;
68
- for (const section of [
69
- 'dependencies',
70
- 'devDependencies'
71
- ]){
72
- const dependencies = packageJson[section];
73
- if (!(!dependencies || 'object' != typeof dependencies || Array.isArray(dependencies)) && Object.hasOwn(dependencies, '@modern-js/plugin-bff')) {
74
- for (const [packageName, version] of Object.entries(ULTRAMODERN_PACKAGE_PINS.bffEffectDependencies))if (dependencies[packageName] !== version) {
75
- dependencies[packageName] = version;
76
- changed = true;
77
- }
78
- }
79
- }
80
- return changed;
81
- }
82
- const cloudflareModernDeployCommand = 'MODERNJS_DEPLOY=cloudflare modern deploy';
83
- const cloudflareModernDeploySkipBuildCommand = `${cloudflareModernDeployCommand} --skip-build`;
84
- const cloudflareWranglerDeployCommand = 'wrangler deploy --config .output/wrangler.json';
85
- const cloudflareWranglerDeployInvalidSkipBuildCommand = `${cloudflareWranglerDeployCommand} --skip-build`;
86
- function removeStaleBackendFederationCommandSegments(command) {
87
- return command.replace(/\s+&&\s+node\s+\S*scripts\/generate-node-backend-federation\.m[ct]s(?:\s+--app\s+\S+)?(?:\s+--target\s+\S+)?(?=\s+&&|$)/gu, '');
88
- }
89
- const CONDITIONAL_FRAMEWORK_ROOT_SCRIPTS = [
90
- 'node:backend-federation:generate',
91
- 'node:proof',
92
- 'zerops:materialize'
93
- ];
94
- const legacyPortableRootScripts = new Map([
95
- [
96
- 'format',
97
- [
98
- "oxfmt . '!repos/**'",
99
- 'oxfmt .'
100
- ]
101
- ],
102
- [
103
- 'format:check',
104
- [
105
- "oxfmt --check . '!repos/**'",
106
- 'oxfmt --check .'
107
- ]
108
- ]
109
- ]);
110
- const splitScriptSegments = (command)=>command.split('&&').map((segment)=>segment.trim()).filter((segment)=>segment.length > 0);
111
- const scriptSegmentTarget = (segment)=>segment.replace(/^pnpm\s+/u, '').split(/\s+/u)[0] ?? segment;
112
- const FRAMEWORK_CHECK_TARGETS = new Set([
113
- 'format:check',
114
- 'lint',
115
- 'typecheck',
116
- 'skills:check',
117
- 'i18n:boundaries',
118
- 'api:check',
119
- 'contract:check',
120
- 'node:backend-federation:generate',
121
- 'node:proof',
122
- 'performance:readiness',
123
- 'bridge:check'
124
- ]);
125
- function mergeAggregateCheckScript(consumer, framework) {
126
- const frameworkSegments = splitScriptSegments(framework);
127
- const consumerExtras = splitScriptSegments(consumer).filter((segment)=>!FRAMEWORK_CHECK_TARGETS.has(scriptSegmentTarget(segment)));
128
- return [
129
- ...consumerExtras,
130
- ...frameworkSegments
131
- ].join(' && ');
132
- }
133
- function mergeGeneratedScript(consumer, framework, canRetireLegacyOxfmtCliExclusion = false) {
134
- const consumerSegments = splitScriptSegments(consumer);
135
- const frameworkSegments = splitScriptSegments(framework);
136
- const frameworkSegmentSet = new Set(frameworkSegments);
137
- const canonicalFrameworkSegment = (segment)=>{
138
- if (frameworkSegmentSet.has(segment)) return segment;
139
- const portableEnvironmentSegment = `cross-env ${segment}`;
140
- if (frameworkSegmentSet.has(portableEnvironmentSegment)) return portableEnvironmentSegment;
141
- const portableOxfmtSegment = segment.replace(/ '!repos\/\*\*'$/u, '');
142
- if (canRetireLegacyOxfmtCliExclusion && frameworkSegmentSet.has(portableOxfmtSegment)) return portableOxfmtSegment;
143
- const emittingDeclarationSegment = segment.replace(/(\bultramodern-typecheck\.m[ct]s\s+)--project\s+/u, '$1--emit --project ');
144
- if (emittingDeclarationSegment !== segment && frameworkSegmentSet.has(emittingDeclarationSegment)) return emittingDeclarationSegment;
145
- if ((frameworkSegmentSet.has(`${segment} --skip-build`) || frameworkSegmentSet.has(`${portableEnvironmentSegment} --skip-build`)) && /\bmodern deploy$/u.test(segment)) return frameworkSegmentSet.has(`${segment} --skip-build`) ? `${segment} --skip-build` : `${portableEnvironmentSegment} --skip-build`;
146
- if (segment === cloudflareWranglerDeployInvalidSkipBuildCommand && frameworkSegmentSet.has(cloudflareWranglerDeployCommand)) return cloudflareWranglerDeployCommand;
147
- if (/\bnode\s+\S*scripts\/verify-cloudflare-output\.m[ct]s\s+--app\s+\S+$/u.test(segment) && frameworkSegments.find((candidate)=>candidate.includes('ultramodern-tooling.mts cloudflare-output-verify'))) return frameworkSegments.find((candidate)=>candidate.includes('ultramodern-tooling.mts cloudflare-output-verify'));
148
- };
149
- const frameworkIndexes = consumerSegments.flatMap((segment, index)=>canonicalFrameworkSegment(segment) ? [
150
- index
151
- ] : []);
152
- if (0 === frameworkIndexes.length) return {
153
- command: consumer,
154
- preservedConsumerSegments: true
155
- };
156
- const firstFrameworkIndex = frameworkIndexes[0];
157
- const lastFrameworkIndex = frameworkIndexes.at(-1);
158
- const consumerPrefix = consumerSegments.slice(0, firstFrameworkIndex).filter((segment)=>void 0 === canonicalFrameworkSegment(segment));
159
- const consumerExtrasAfter = new Map();
160
- let precedingFrameworkSegment;
161
- for (const segment of consumerSegments.slice(firstFrameworkIndex, lastFrameworkIndex + 1)){
162
- const canonicalSegment = canonicalFrameworkSegment(segment);
163
- if (void 0 !== canonicalSegment) precedingFrameworkSegment = canonicalSegment;
164
- else if (void 0 !== precedingFrameworkSegment) {
165
- const extras = consumerExtrasAfter.get(precedingFrameworkSegment) ?? [];
166
- extras.push(segment);
167
- consumerExtrasAfter.set(precedingFrameworkSegment, extras);
168
- }
169
- }
170
- const consumerSuffix = consumerSegments.slice(lastFrameworkIndex + 1).filter((segment)=>void 0 === canonicalFrameworkSegment(segment));
171
- const consumerMiddle = [
172
- ...consumerExtrasAfter.values()
173
- ].flat();
174
- const consumerExtras = [
175
- ...consumerPrefix,
176
- ...consumerMiddle,
177
- ...consumerSuffix
178
- ];
179
- return {
180
- command: [
181
- ...consumerPrefix,
182
- ...frameworkSegments.flatMap((segment)=>[
183
- segment,
184
- ...consumerExtrasAfter.get(segment) ?? []
185
- ]),
186
- ...consumerSuffix
187
- ].join(' && '),
188
- preservedConsumerSegments: consumerExtras.length > 0
189
- };
190
- }
191
- function rewriteMigratedScriptReferences(scripts) {
192
- let changed = false;
193
- const pattern = new RegExp(`(scripts/(?:${migratedWorkspaceScriptBasenames.join('|')}))\\.mjs`, 'gu');
194
- for (const [name, value] of Object.entries(scripts)){
195
- if ('string' != typeof value) continue;
196
- const next = value.replace(pattern, '$1.mts');
197
- if (next !== value) {
198
- scripts[name] = next;
199
- changed = true;
200
- }
201
- }
202
- return changed;
203
- }
204
- function updateGeneratedPackageScripts(packageJson, options = {}) {
205
- const scripts = packageJson.scripts;
206
- if (!scripts || 'object' != typeof scripts || Array.isArray(scripts)) return false;
207
- let changed = false;
208
- const apps = options.apps ?? [];
209
- const app = apps.find((candidate)=>`${candidate.directory}/package.json` === options.relativePackageFile);
210
- const isRootPackage = 'package.json' === options.relativePackageFile;
211
- if (rewriteMigratedScriptReferences(scripts)) changed = true;
212
- if (isRootPackage) {
213
- for (const [name, [legacy, portable]] of legacyPortableRootScripts)if (true === options.canRetireLegacyOxfmtCliExclusion && scripts[name] === legacy) {
214
- scripts[name] = portable;
215
- changed = true;
216
- }
217
- const existingPostinstall = scripts.postinstall;
218
- const mergedPostinstall = 'string' == typeof existingPostinstall ? mergeGeneratedScript(existingPostinstall, GENERATED_POSTINSTALL_SCRIPT, options.canRetireLegacyOxfmtCliExclusion) : {
219
- command: GENERATED_POSTINSTALL_SCRIPT,
220
- preservedConsumerSegments: false
221
- };
222
- if (mergedPostinstall.preservedConsumerSegments) options.onPreserveScript?.('postinstall');
223
- if (scripts.postinstall !== mergedPostinstall.command) {
224
- scripts.postinstall = mergedPostinstall.command;
225
- changed = true;
226
- }
227
- }
228
- const expectedScripts = isRootPackage ? createWorkspaceRootPackageScripts(apps.filter((candidate)=>'shell' !== candidate.kind), {
229
- shells: apps.filter((candidate)=>'shell' === candidate.kind)
230
- }) : app ? createWorkspaceAppPackageScripts(app) : void 0;
231
- if (expectedScripts) {
232
- if (isRootPackage) {
233
- for (const name of CONDITIONAL_FRAMEWORK_ROOT_SCRIPTS)if (!(name in expectedScripts) && name in scripts) {
234
- delete scripts[name];
235
- changed = true;
236
- }
237
- }
238
- for (const [name, value] of Object.entries(expectedScripts)){
239
- if (void 0 === value) continue;
240
- const existingScript = scripts[name];
241
- const mergedScript = 'string' == typeof existingScript ? mergeGeneratedScript(existingScript, value, options.canRetireLegacyOxfmtCliExclusion) : {
242
- command: value,
243
- preservedConsumerSegments: false
244
- };
245
- const nextValue = 'check' === name && 'string' == typeof existingScript ? mergeAggregateCheckScript(existingScript, value) : mergedScript.command;
246
- if ('check' !== name && mergedScript.preservedConsumerSegments) options.onPreserveScript?.(name);
247
- if (scripts[name] !== nextValue) {
248
- scripts[name] = nextValue;
249
- changed = true;
250
- }
251
- }
252
- }
253
- const build = scripts.build;
254
- if ('string' == typeof build) {
255
- const nextBuild = removeStaleBackendFederationCommandSegments(build);
256
- if (nextBuild !== build) {
257
- scripts.build = nextBuild;
258
- changed = true;
259
- }
260
- }
261
- const cloudflareBuild = scripts['cloudflare:build'];
262
- if ('string' == typeof cloudflareBuild) {
263
- let nextCloudflareBuild = removeStaleBackendFederationCommandSegments(cloudflareBuild);
264
- if (nextCloudflareBuild.includes(cloudflareModernDeployCommand) && !nextCloudflareBuild.includes(cloudflareModernDeploySkipBuildCommand)) nextCloudflareBuild = nextCloudflareBuild.replace(cloudflareModernDeployCommand, cloudflareModernDeploySkipBuildCommand);
265
- if (nextCloudflareBuild !== cloudflareBuild) {
266
- scripts['cloudflare:build'] = nextCloudflareBuild;
267
- changed = true;
268
- }
269
- }
270
- const cloudflareDeploy = scripts['cloudflare:deploy'];
271
- if ('string' == typeof cloudflareDeploy && cloudflareDeploy.includes(cloudflareWranglerDeployInvalidSkipBuildCommand)) {
272
- scripts['cloudflare:deploy'] = cloudflareDeploy.replace(cloudflareWranglerDeployInvalidSkipBuildCommand, cloudflareWranglerDeployCommand);
273
- changed = true;
274
- }
275
- return changed;
276
- }
277
- export { ensureBffEffectDependencies, updateGeneratedPackageScripts, updateGeneratedToolingDependencies, updateModernDependencies };