@payloadcms/codemod 4.0.0-internal.7e57eed → 4.0.0-internal.8001944

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 (363) hide show
  1. package/README.md +92 -27
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.help.d.ts +4 -0
  4. package/dist/cli.help.d.ts.map +1 -0
  5. package/dist/cli.help.js +29 -0
  6. package/dist/cli.help.js.map +1 -0
  7. package/dist/cli.js +49 -27
  8. package/dist/cli.js.map +1 -1
  9. package/dist/cli.parseFlags.d.ts +15 -0
  10. package/dist/cli.parseFlags.d.ts.map +1 -1
  11. package/dist/cli.parseFlags.js +35 -2
  12. package/dist/cli.parseFlags.js.map +1 -1
  13. package/dist/registry.d.ts.map +1 -1
  14. package/dist/registry.js +15 -1
  15. package/dist/registry.js.map +1 -1
  16. package/dist/runbook/payload-v4-upgrade.md +55 -0
  17. package/dist/runbook/v4.mdx +2179 -0
  18. package/dist/transforms/add-override-access-true/basic.input.js +41 -0
  19. package/dist/transforms/add-override-access-true/basic.input.js.map +1 -0
  20. package/dist/transforms/add-override-access-true/basic.output.js +50 -0
  21. package/dist/transforms/add-override-access-true/basic.output.js.map +1 -0
  22. package/dist/transforms/add-override-access-true/comment-between-properties.input.js +11 -0
  23. package/dist/transforms/add-override-access-true/comment-between-properties.input.js.map +1 -0
  24. package/dist/transforms/add-override-access-true/comment-between-properties.output.js +12 -0
  25. package/dist/transforms/add-override-access-true/comment-between-properties.output.js.map +1 -0
  26. package/dist/transforms/add-override-access-true/index.d.ts +20 -0
  27. package/dist/transforms/add-override-access-true/index.d.ts.map +1 -0
  28. package/dist/transforms/add-override-access-true/index.js +208 -0
  29. package/dist/transforms/add-override-access-true/index.js.map +1 -0
  30. package/dist/transforms/add-override-access-true/javascript.input.d.ts +6 -0
  31. package/dist/transforms/add-override-access-true/javascript.input.d.ts.map +1 -0
  32. package/dist/transforms/add-override-access-true/javascript.input.js +24 -0
  33. package/dist/transforms/add-override-access-true/javascript.input.js.map +1 -0
  34. package/dist/transforms/add-override-access-true/javascript.output.d.ts +6 -0
  35. package/dist/transforms/add-override-access-true/javascript.output.d.ts.map +1 -0
  36. package/dist/transforms/add-override-access-true/javascript.output.js +26 -0
  37. package/dist/transforms/add-override-access-true/javascript.output.js.map +1 -0
  38. package/dist/transforms/add-override-access-true/non-matching.input.js +42 -0
  39. package/dist/transforms/add-override-access-true/non-matching.input.js.map +1 -0
  40. package/dist/transforms/add-override-access-true/non-matching.output.js +42 -0
  41. package/dist/transforms/add-override-access-true/non-matching.output.js.map +1 -0
  42. package/dist/transforms/add-override-access-true/single-line.input.js +13 -0
  43. package/dist/transforms/add-override-access-true/single-line.input.js.map +1 -0
  44. package/dist/transforms/add-override-access-true/single-line.output.js +17 -0
  45. package/dist/transforms/add-override-access-true/single-line.output.js.map +1 -0
  46. package/dist/transforms/add-override-access-true/trailing-comment.input.js +10 -0
  47. package/dist/transforms/add-override-access-true/trailing-comment.input.js.map +1 -0
  48. package/dist/transforms/add-override-access-true/trailing-comment.output.js +12 -0
  49. package/dist/transforms/add-override-access-true/trailing-comment.output.js.map +1 -0
  50. package/dist/transforms/migrate-aliased-exports/index.d.ts.map +1 -1
  51. package/dist/transforms/migrate-aliased-exports/index.js +6 -5
  52. package/dist/transforms/migrate-aliased-exports/index.js.map +1 -1
  53. package/dist/transforms/migrate-aliased-exports/request.input.js +6 -0
  54. package/dist/transforms/migrate-aliased-exports/request.input.js.map +1 -0
  55. package/dist/transforms/migrate-aliased-exports/request.output.js +5 -0
  56. package/dist/transforms/migrate-aliased-exports/request.output.js.map +1 -0
  57. package/dist/transforms/migrate-authorship-default/already-set.input.js +15 -0
  58. package/dist/transforms/migrate-authorship-default/already-set.input.js.map +1 -0
  59. package/dist/transforms/migrate-authorship-default/already-set.output.js +15 -0
  60. package/dist/transforms/migrate-authorship-default/already-set.output.js.map +1 -0
  61. package/dist/transforms/migrate-authorship-default/basic.input.js +16 -0
  62. package/dist/transforms/migrate-authorship-default/basic.input.js.map +1 -0
  63. package/dist/transforms/migrate-authorship-default/basic.output.js +18 -0
  64. package/dist/transforms/migrate-authorship-default/basic.output.js.map +1 -0
  65. package/dist/transforms/migrate-authorship-default/build-config.input.js +32 -0
  66. package/dist/transforms/migrate-authorship-default/build-config.input.js.map +1 -0
  67. package/dist/transforms/migrate-authorship-default/build-config.output.js +35 -0
  68. package/dist/transforms/migrate-authorship-default/build-config.output.js.map +1 -0
  69. package/dist/transforms/migrate-authorship-default/globals.input.js +16 -0
  70. package/dist/transforms/migrate-authorship-default/globals.input.js.map +1 -0
  71. package/dist/transforms/migrate-authorship-default/globals.output.js +17 -0
  72. package/dist/transforms/migrate-authorship-default/globals.output.js.map +1 -0
  73. package/dist/transforms/migrate-authorship-default/index.d.ts +11 -0
  74. package/dist/transforms/migrate-authorship-default/index.d.ts.map +1 -0
  75. package/dist/transforms/migrate-authorship-default/index.js +141 -0
  76. package/dist/transforms/migrate-authorship-default/index.js.map +1 -0
  77. package/dist/transforms/migrate-authorship-default/non-matching.input.js +18 -0
  78. package/dist/transforms/migrate-authorship-default/non-matching.input.js.map +1 -0
  79. package/dist/transforms/migrate-authorship-default/non-matching.output.js +18 -0
  80. package/dist/transforms/migrate-authorship-default/non-matching.output.js.map +1 -0
  81. package/dist/transforms/migrate-authorship-default/satisfies.input.js +11 -0
  82. package/dist/transforms/migrate-authorship-default/satisfies.input.js.map +1 -0
  83. package/dist/transforms/migrate-authorship-default/satisfies.output.js +13 -0
  84. package/dist/transforms/migrate-authorship-default/satisfies.output.js.map +1 -0
  85. package/dist/transforms/migrate-field-component-types/basic.input.js +8 -0
  86. package/dist/transforms/migrate-field-component-types/basic.input.js.map +1 -0
  87. package/dist/transforms/migrate-field-component-types/basic.output.js +8 -0
  88. package/dist/transforms/migrate-field-component-types/basic.output.js.map +1 -0
  89. package/dist/transforms/migrate-field-component-types/index.d.ts +3 -0
  90. package/dist/transforms/migrate-field-component-types/index.d.ts.map +1 -0
  91. package/dist/transforms/migrate-field-component-types/index.js +620 -0
  92. package/dist/transforms/migrate-field-component-types/index.js.map +1 -0
  93. package/dist/transforms/migrate-payload-request-creation/aliases.input.js +8 -0
  94. package/dist/transforms/migrate-payload-request-creation/aliases.input.js.map +1 -0
  95. package/dist/transforms/migrate-payload-request-creation/aliases.output.js +31 -0
  96. package/dist/transforms/migrate-payload-request-creation/aliases.output.js.map +1 -0
  97. package/dist/transforms/migrate-payload-request-creation/collision.input.js +9 -0
  98. package/dist/transforms/migrate-payload-request-creation/collision.input.js.map +1 -0
  99. package/dist/transforms/migrate-payload-request-creation/comments.input.js +9 -0
  100. package/dist/transforms/migrate-payload-request-creation/comments.input.js.map +1 -0
  101. package/dist/transforms/migrate-payload-request-creation/comments.output.js +34 -0
  102. package/dist/transforms/migrate-payload-request-creation/comments.output.js.map +1 -0
  103. package/dist/transforms/migrate-payload-request-creation/empty.input.js +5 -0
  104. package/dist/transforms/migrate-payload-request-creation/empty.input.js.map +1 -0
  105. package/dist/transforms/migrate-payload-request-creation/empty.output.js +7 -0
  106. package/dist/transforms/migrate-payload-request-creation/empty.output.js.map +1 -0
  107. package/dist/transforms/migrate-payload-request-creation/evaluation-order.input.js +10 -0
  108. package/dist/transforms/migrate-payload-request-creation/evaluation-order.input.js.map +1 -0
  109. package/dist/transforms/migrate-payload-request-creation/expression.input.js +8 -0
  110. package/dist/transforms/migrate-payload-request-creation/expression.input.js.map +1 -0
  111. package/dist/transforms/migrate-payload-request-creation/expression.output.js +8 -0
  112. package/dist/transforms/migrate-payload-request-creation/expression.output.js.map +1 -0
  113. package/dist/transforms/migrate-payload-request-creation/getters.input.js +52 -0
  114. package/dist/transforms/migrate-payload-request-creation/getters.input.js.map +1 -0
  115. package/dist/transforms/migrate-payload-request-creation/index.d.ts +3 -0
  116. package/dist/transforms/migrate-payload-request-creation/index.d.ts.map +1 -0
  117. package/dist/transforms/migrate-payload-request-creation/index.js +236 -0
  118. package/dist/transforms/migrate-payload-request-creation/index.js.map +1 -0
  119. package/dist/transforms/migrate-payload-request-creation/internal.input.js +6 -0
  120. package/dist/transforms/migrate-payload-request-creation/internal.input.js.map +1 -0
  121. package/dist/transforms/migrate-payload-request-creation/internal.output.js +6 -0
  122. package/dist/transforms/migrate-payload-request-creation/internal.output.js.map +1 -0
  123. package/dist/transforms/migrate-payload-request-creation/non-matching.input.js +5 -0
  124. package/dist/transforms/migrate-payload-request-creation/non-matching.input.js.map +1 -0
  125. package/dist/transforms/migrate-payload-request-creation/populated.input.js +7 -0
  126. package/dist/transforms/migrate-payload-request-creation/populated.input.js.map +1 -0
  127. package/dist/transforms/migrate-payload-request-creation/populated.output.js +30 -0
  128. package/dist/transforms/migrate-payload-request-creation/populated.output.js.map +1 -0
  129. package/dist/transforms/migrate-payload-request-creation/shadowed.input.js +7 -0
  130. package/dist/transforms/migrate-payload-request-creation/shadowed.input.js.map +1 -0
  131. package/dist/transforms/migrate-payload-request-creation/shadowed.output.js +9 -0
  132. package/dist/transforms/migrate-payload-request-creation/shadowed.output.js.map +1 -0
  133. package/dist/transforms/migrate-payload-request-creation/shorthand.input.js +12 -0
  134. package/dist/transforms/migrate-payload-request-creation/shorthand.input.js.map +1 -0
  135. package/dist/transforms/migrate-payload-request-creation/shorthand.output.js +12 -0
  136. package/dist/transforms/migrate-payload-request-creation/shorthand.output.js.map +1 -0
  137. package/dist/transforms/migrate-payload-request-creation/unsupported.input.js +9 -0
  138. package/dist/transforms/migrate-payload-request-creation/unsupported.input.js.map +1 -0
  139. package/dist/transforms/migrate-versions-default/index.js +5 -5
  140. package/dist/transforms/migrate-versions-default/index.js.map +1 -1
  141. package/dist/transforms/remove-default-locale-publish-option/all-value.input.js +13 -0
  142. package/dist/transforms/remove-default-locale-publish-option/all-value.input.js.map +1 -0
  143. package/dist/transforms/remove-default-locale-publish-option/basic.input.js +13 -0
  144. package/dist/transforms/remove-default-locale-publish-option/basic.input.js.map +1 -0
  145. package/dist/transforms/remove-default-locale-publish-option/basic.output.js +12 -0
  146. package/dist/transforms/remove-default-locale-publish-option/basic.output.js.map +1 -0
  147. package/dist/transforms/remove-default-locale-publish-option/dynamic.input.js +17 -0
  148. package/dist/transforms/remove-default-locale-publish-option/dynamic.input.js.map +1 -0
  149. package/dist/transforms/remove-default-locale-publish-option/index.d.ts +10 -0
  150. package/dist/transforms/remove-default-locale-publish-option/index.d.ts.map +1 -0
  151. package/dist/transforms/remove-default-locale-publish-option/index.js +103 -0
  152. package/dist/transforms/remove-default-locale-publish-option/index.js.map +1 -0
  153. package/dist/transforms/remove-default-locale-publish-option/no-match.input.js +10 -0
  154. package/dist/transforms/remove-default-locale-publish-option/no-match.input.js.map +1 -0
  155. package/dist/transforms/remove-default-locale-publish-option/no-match.output.js +10 -0
  156. package/dist/transforms/remove-default-locale-publish-option/no-match.output.js.map +1 -0
  157. package/dist/transforms/remove-default-locale-publish-option/reassigned.input.js +22 -0
  158. package/dist/transforms/remove-default-locale-publish-option/reassigned.input.js.map +1 -0
  159. package/dist/transforms/remove-default-locale-publish-option/shorthand.input.js +14 -0
  160. package/dist/transforms/remove-default-locale-publish-option/shorthand.input.js.map +1 -0
  161. package/dist/transforms/remove-default-locale-publish-option/shorthand.output.js +13 -0
  162. package/dist/transforms/remove-default-locale-publish-option/shorthand.output.js.map +1 -0
  163. package/dist/transforms/remove-publish-specific-locale/index.d.ts.map +1 -1
  164. package/dist/transforms/remove-publish-specific-locale/index.js.map +1 -1
  165. package/dist/transforms/remove-storage-always-insert-fields/aliased.input.js +11 -0
  166. package/dist/transforms/remove-storage-always-insert-fields/aliased.input.js.map +1 -0
  167. package/dist/transforms/remove-storage-always-insert-fields/aliased.output.js +10 -0
  168. package/dist/transforms/remove-storage-always-insert-fields/aliased.output.js.map +1 -0
  169. package/dist/transforms/remove-storage-always-insert-fields/basic.input.js +54 -0
  170. package/dist/transforms/remove-storage-always-insert-fields/basic.input.js.map +1 -0
  171. package/dist/transforms/remove-storage-always-insert-fields/basic.output.js +48 -0
  172. package/dist/transforms/remove-storage-always-insert-fields/basic.output.js.map +1 -0
  173. package/dist/transforms/remove-storage-always-insert-fields/index.d.ts +3 -0
  174. package/dist/transforms/remove-storage-always-insert-fields/index.d.ts.map +1 -0
  175. package/dist/transforms/remove-storage-always-insert-fields/index.js +75 -0
  176. package/dist/transforms/remove-storage-always-insert-fields/index.js.map +1 -0
  177. package/dist/transforms/remove-storage-always-insert-fields/no-match.input.js +27 -0
  178. package/dist/transforms/remove-storage-always-insert-fields/no-match.input.js.map +1 -0
  179. package/dist/transforms/remove-storage-always-insert-fields/no-match.output.js +27 -0
  180. package/dist/transforms/remove-storage-always-insert-fields/no-match.output.js.map +1 -0
  181. package/dist/transforms/remove-versions-true/index.js +4 -4
  182. package/dist/transforms/remove-versions-true/index.js.map +1 -1
  183. package/dist/transforms/rename-experimental-table-feature/alias.input.js +6 -0
  184. package/dist/transforms/rename-experimental-table-feature/alias.input.js.map +1 -0
  185. package/dist/transforms/rename-experimental-table-feature/alias.output.js +6 -0
  186. package/dist/transforms/rename-experimental-table-feature/alias.output.js.map +1 -0
  187. package/dist/transforms/rename-experimental-table-feature/basic.input.js +19 -0
  188. package/dist/transforms/rename-experimental-table-feature/basic.input.js.map +1 -0
  189. package/dist/transforms/rename-experimental-table-feature/basic.output.js +19 -0
  190. package/dist/transforms/rename-experimental-table-feature/basic.output.js.map +1 -0
  191. package/dist/transforms/rename-experimental-table-feature/collision.input.js +7 -0
  192. package/dist/transforms/rename-experimental-table-feature/collision.input.js.map +1 -0
  193. package/dist/transforms/rename-experimental-table-feature/index.d.ts +3 -0
  194. package/dist/transforms/rename-experimental-table-feature/index.d.ts.map +1 -0
  195. package/dist/transforms/rename-experimental-table-feature/index.js +50 -0
  196. package/dist/transforms/rename-experimental-table-feature/index.js.map +1 -0
  197. package/dist/transforms/rename-experimental-table-feature/no-match.input.js +9 -0
  198. package/dist/transforms/rename-experimental-table-feature/no-match.input.js.map +1 -0
  199. package/dist/upgrade/defaultTag.d.ts +9 -0
  200. package/dist/upgrade/defaultTag.d.ts.map +1 -0
  201. package/dist/upgrade/defaultTag.js +25 -0
  202. package/dist/upgrade/defaultTag.js.map +1 -0
  203. package/dist/upgrade/detectPackageManager.d.ts +8 -0
  204. package/dist/upgrade/detectPackageManager.d.ts.map +1 -0
  205. package/dist/upgrade/detectPackageManager.js +38 -0
  206. package/dist/upgrade/detectPackageManager.js.map +1 -0
  207. package/dist/upgrade/dispatch.d.ts +38 -0
  208. package/dist/upgrade/dispatch.d.ts.map +1 -0
  209. package/dist/upgrade/dispatch.js +132 -0
  210. package/dist/upgrade/dispatch.js.map +1 -0
  211. package/dist/upgrade/index.d.ts +25 -0
  212. package/dist/upgrade/index.d.ts.map +1 -0
  213. package/dist/upgrade/index.js +209 -0
  214. package/dist/upgrade/index.js.map +1 -0
  215. package/dist/upgrade/prompt.d.ts +14 -0
  216. package/dist/upgrade/prompt.d.ts.map +1 -0
  217. package/dist/upgrade/prompt.js +77 -0
  218. package/dist/upgrade/prompt.js.map +1 -0
  219. package/dist/upgrade/report.d.ts +21 -0
  220. package/dist/upgrade/report.d.ts.map +1 -0
  221. package/dist/upgrade/report.js +47 -0
  222. package/dist/upgrade/report.js.map +1 -0
  223. package/dist/upgrade/resolveVersions.d.ts +13 -0
  224. package/dist/upgrade/resolveVersions.d.ts.map +1 -0
  225. package/dist/upgrade/resolveVersions.js +55 -0
  226. package/dist/upgrade/resolveVersions.js.map +1 -0
  227. package/dist/upgrade/rewritePackageJson.d.ts +32 -0
  228. package/dist/upgrade/rewritePackageJson.d.ts.map +1 -0
  229. package/dist/upgrade/rewritePackageJson.js +164 -0
  230. package/dist/upgrade/rewritePackageJson.js.map +1 -0
  231. package/dist/upgrade/runInstall.d.ts +16 -0
  232. package/dist/upgrade/runInstall.d.ts.map +1 -0
  233. package/dist/upgrade/runInstall.js +17 -0
  234. package/dist/upgrade/runInstall.js.map +1 -0
  235. package/dist/upgrade/selectAgent.d.ts +45 -0
  236. package/dist/upgrade/selectAgent.d.ts.map +1 -0
  237. package/dist/upgrade/selectAgent.js +54 -0
  238. package/dist/upgrade/selectAgent.js.map +1 -0
  239. package/dist/upgrade/selfCommand.d.ts +13 -0
  240. package/dist/upgrade/selfCommand.d.ts.map +1 -0
  241. package/dist/upgrade/selfCommand.js +17 -0
  242. package/dist/upgrade/selfCommand.js.map +1 -0
  243. package/dist/upgrade/types.d.ts +47 -0
  244. package/dist/upgrade/types.d.ts.map +1 -0
  245. package/dist/upgrade/types.js +11 -0
  246. package/dist/upgrade/types.js.map +1 -0
  247. package/dist/utils/project.d.ts +10 -0
  248. package/dist/utils/project.d.ts.map +1 -0
  249. package/dist/utils/project.js +43 -0
  250. package/dist/utils/project.js.map +1 -0
  251. package/package.json +9 -5
  252. package/dist/cli.parseFlags.spec.d.ts +0 -2
  253. package/dist/cli.parseFlags.spec.d.ts.map +0 -1
  254. package/dist/cli.parseFlags.spec.js +0 -49
  255. package/dist/cli.parseFlags.spec.js.map +0 -1
  256. package/dist/runner.spec.d.ts +0 -2
  257. package/dist/runner.spec.d.ts.map +0 -1
  258. package/dist/runner.spec.js +0 -88
  259. package/dist/runner.spec.js.map +0 -1
  260. package/dist/transforms/example-noop/index.spec.d.ts +0 -2
  261. package/dist/transforms/example-noop/index.spec.d.ts.map +0 -1
  262. package/dist/transforms/example-noop/index.spec.js +0 -29
  263. package/dist/transforms/example-noop/index.spec.js.map +0 -1
  264. package/dist/transforms/globals-components-edit/index.spec.d.ts +0 -2
  265. package/dist/transforms/globals-components-edit/index.spec.d.ts.map +0 -1
  266. package/dist/transforms/globals-components-edit/index.spec.js +0 -37
  267. package/dist/transforms/globals-components-edit/index.spec.js.map +0 -1
  268. package/dist/transforms/migrate-after-operation-read/index.spec.d.ts +0 -2
  269. package/dist/transforms/migrate-after-operation-read/index.spec.d.ts.map +0 -1
  270. package/dist/transforms/migrate-after-operation-read/index.spec.js +0 -62
  271. package/dist/transforms/migrate-after-operation-read/index.spec.js.map +0 -1
  272. package/dist/transforms/migrate-aliased-exports/index.spec.d.ts +0 -2
  273. package/dist/transforms/migrate-aliased-exports/index.spec.d.ts.map +0 -1
  274. package/dist/transforms/migrate-aliased-exports/index.spec.js +0 -55
  275. package/dist/transforms/migrate-aliased-exports/index.spec.js.map +0 -1
  276. package/dist/transforms/migrate-azure-chunk-large-files/index.spec.d.ts +0 -2
  277. package/dist/transforms/migrate-azure-chunk-large-files/index.spec.d.ts.map +0 -1
  278. package/dist/transforms/migrate-azure-chunk-large-files/index.spec.js +0 -67
  279. package/dist/transforms/migrate-azure-chunk-large-files/index.spec.js.map +0 -1
  280. package/dist/transforms/migrate-block-references-to-blocks/index.spec.d.ts +0 -2
  281. package/dist/transforms/migrate-block-references-to-blocks/index.spec.d.ts.map +0 -1
  282. package/dist/transforms/migrate-block-references-to-blocks/index.spec.js +0 -45
  283. package/dist/transforms/migrate-block-references-to-blocks/index.spec.js.map +0 -1
  284. package/dist/transforms/migrate-build-script/index.spec.d.ts +0 -2
  285. package/dist/transforms/migrate-build-script/index.spec.d.ts.map +0 -1
  286. package/dist/transforms/migrate-build-script/index.spec.js +0 -81
  287. package/dist/transforms/migrate-build-script/index.spec.js.map +0 -1
  288. package/dist/transforms/migrate-db-types-subpath/index.spec.d.ts +0 -2
  289. package/dist/transforms/migrate-db-types-subpath/index.spec.d.ts.map +0 -1
  290. package/dist/transforms/migrate-db-types-subpath/index.spec.js +0 -46
  291. package/dist/transforms/migrate-db-types-subpath/index.spec.js.map +0 -1
  292. package/dist/transforms/migrate-disabled-fields/index.spec.d.ts +0 -2
  293. package/dist/transforms/migrate-disabled-fields/index.spec.d.ts.map +0 -1
  294. package/dist/transforms/migrate-disabled-fields/index.spec.js +0 -73
  295. package/dist/transforms/migrate-disabled-fields/index.spec.js.map +0 -1
  296. package/dist/transforms/migrate-document-title-context/index.spec.d.ts +0 -2
  297. package/dist/transforms/migrate-document-title-context/index.spec.d.ts.map +0 -1
  298. package/dist/transforms/migrate-document-title-context/index.spec.js +0 -86
  299. package/dist/transforms/migrate-document-title-context/index.spec.js.map +0 -1
  300. package/dist/transforms/migrate-force-select/index.spec.d.ts +0 -2
  301. package/dist/transforms/migrate-force-select/index.spec.d.ts.map +0 -1
  302. package/dist/transforms/migrate-force-select/index.spec.js +0 -107
  303. package/dist/transforms/migrate-force-select/index.spec.js.map +0 -1
  304. package/dist/transforms/migrate-hide-api-url/index.spec.d.ts +0 -2
  305. package/dist/transforms/migrate-hide-api-url/index.spec.d.ts.map +0 -1
  306. package/dist/transforms/migrate-hide-api-url/index.spec.js +0 -118
  307. package/dist/transforms/migrate-hide-api-url/index.spec.js.map +0 -1
  308. package/dist/transforms/migrate-import-export-hooks/index.spec.d.ts +0 -2
  309. package/dist/transforms/migrate-import-export-hooks/index.spec.d.ts.map +0 -1
  310. package/dist/transforms/migrate-import-export-hooks/index.spec.js +0 -65
  311. package/dist/transforms/migrate-import-export-hooks/index.spec.js.map +0 -1
  312. package/dist/transforms/migrate-list-view-select-api/index.spec.d.ts +0 -2
  313. package/dist/transforms/migrate-list-view-select-api/index.spec.d.ts.map +0 -1
  314. package/dist/transforms/migrate-list-view-select-api/index.spec.js +0 -37
  315. package/dist/transforms/migrate-list-view-select-api/index.spec.js.map +0 -1
  316. package/dist/transforms/migrate-next-generate-viewport-export/index.spec.d.ts +0 -2
  317. package/dist/transforms/migrate-next-generate-viewport-export/index.spec.d.ts.map +0 -1
  318. package/dist/transforms/migrate-next-generate-viewport-export/index.spec.js +0 -41
  319. package/dist/transforms/migrate-next-generate-viewport-export/index.spec.js.map +0 -1
  320. package/dist/transforms/migrate-next-subpath-exports/index.spec.d.ts +0 -2
  321. package/dist/transforms/migrate-next-subpath-exports/index.spec.d.ts.map +0 -1
  322. package/dist/transforms/migrate-next-subpath-exports/index.spec.js +0 -46
  323. package/dist/transforms/migrate-next-subpath-exports/index.spec.js.map +0 -1
  324. package/dist/transforms/migrate-slug-field/index.spec.d.ts +0 -2
  325. package/dist/transforms/migrate-slug-field/index.spec.d.ts.map +0 -1
  326. package/dist/transforms/migrate-slug-field/index.spec.js +0 -47
  327. package/dist/transforms/migrate-slug-field/index.spec.js.map +0 -1
  328. package/dist/transforms/migrate-storage-adapters-to-config/index.spec.d.ts +0 -2
  329. package/dist/transforms/migrate-storage-adapters-to-config/index.spec.d.ts.map +0 -1
  330. package/dist/transforms/migrate-storage-adapters-to-config/index.spec.js +0 -85
  331. package/dist/transforms/migrate-storage-adapters-to-config/index.spec.js.map +0 -1
  332. package/dist/transforms/migrate-versions-default/index.spec.d.ts +0 -2
  333. package/dist/transforms/migrate-versions-default/index.spec.d.ts.map +0 -1
  334. package/dist/transforms/migrate-versions-default/index.spec.js +0 -81
  335. package/dist/transforms/migrate-versions-default/index.spec.js.map +0 -1
  336. package/dist/transforms/remove-group-by-true/index.spec.d.ts +0 -2
  337. package/dist/transforms/remove-group-by-true/index.spec.d.ts.map +0 -1
  338. package/dist/transforms/remove-group-by-true/index.spec.js +0 -47
  339. package/dist/transforms/remove-group-by-true/index.spec.js.map +0 -1
  340. package/dist/transforms/remove-localize-status-config/index.spec.d.ts +0 -2
  341. package/dist/transforms/remove-localize-status-config/index.spec.d.ts.map +0 -1
  342. package/dist/transforms/remove-localize-status-config/index.spec.js +0 -38
  343. package/dist/transforms/remove-localize-status-config/index.spec.js.map +0 -1
  344. package/dist/transforms/remove-publish-specific-locale/index.spec.d.ts +0 -2
  345. package/dist/transforms/remove-publish-specific-locale/index.spec.d.ts.map +0 -1
  346. package/dist/transforms/remove-publish-specific-locale/index.spec.js +0 -47
  347. package/dist/transforms/remove-publish-specific-locale/index.spec.js.map +0 -1
  348. package/dist/transforms/remove-versions-true/index.spec.d.ts +0 -2
  349. package/dist/transforms/remove-versions-true/index.spec.d.ts.map +0 -1
  350. package/dist/transforms/remove-versions-true/index.spec.js +0 -38
  351. package/dist/transforms/remove-versions-true/index.spec.js.map +0 -1
  352. package/dist/transforms/rename-storage-adapters-to-storage/index.spec.d.ts +0 -2
  353. package/dist/transforms/rename-storage-adapters-to-storage/index.spec.d.ts.map +0 -1
  354. package/dist/transforms/rename-storage-adapters-to-storage/index.spec.js +0 -55
  355. package/dist/transforms/rename-storage-adapters-to-storage/index.spec.js.map +0 -1
  356. package/dist/transforms/rename-typescript-schema-to-json-schema/index.spec.d.ts +0 -2
  357. package/dist/transforms/rename-typescript-schema-to-json-schema/index.spec.d.ts.map +0 -1
  358. package/dist/transforms/rename-typescript-schema-to-json-schema/index.spec.js +0 -45
  359. package/dist/transforms/rename-typescript-schema-to-json-schema/index.spec.js.map +0 -1
  360. package/dist/utils/packageJson.spec.d.ts +0 -2
  361. package/dist/utils/packageJson.spec.d.ts.map +0 -1
  362. package/dist/utils/packageJson.spec.js +0 -41
  363. package/dist/utils/packageJson.spec.js.map +0 -1
@@ -0,0 +1,21 @@
1
+ import type { TransformRunResult } from '../runner.js';
2
+ export type VersionReportRow = {
3
+ name: string;
4
+ ok: boolean;
5
+ resolved?: string;
6
+ wrote: string;
7
+ };
8
+ export type ReportModel = {
9
+ floorsWritten: string[];
10
+ /** Absolute path to the bundled migration guide, when it shipped with this build. */
11
+ migrationGuidePath?: string;
12
+ nextTarget: null | string;
13
+ overridesRemoved: string[];
14
+ placeholdersSkipped: string[];
15
+ runbookPath: string;
16
+ transforms: TransformRunResult[];
17
+ versions: VersionReportRow[];
18
+ };
19
+ /** Build the honest end-of-run report string. Pure — the caller prints it. */
20
+ export declare function renderReport(model: ReportModel): string;
21
+ //# sourceMappingURL=report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/upgrade/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAEtD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,OAAO,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,qFAAqF;IACrF,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,UAAU,EAAE,IAAI,GAAG,MAAM,CAAA;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,mBAAmB,EAAE,MAAM,EAAE,CAAA;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,kBAAkB,EAAE,CAAA;IAChC,QAAQ,EAAE,gBAAgB,EAAE,CAAA;CAC7B,CAAA;AAED,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAyDvD"}
@@ -0,0 +1,47 @@
1
+ /** Build the honest end-of-run report string. Pure — the caller prints it. */ export function renderReport(model) {
2
+ const lines = [];
3
+ lines.push('Payload v4 upgrade — mechanical steps complete', '');
4
+ lines.push('Versions written -> resolved');
5
+ for (const v of model.versions){
6
+ const resolved = v.resolved ?? '(unresolved)';
7
+ lines.push(` ${v.name} ${v.wrote} -> ${resolved} ${v.ok ? 'ok' : 'MISMATCH'}`);
8
+ }
9
+ const anyMismatch = model.versions.some((v)=>!v.ok);
10
+ if (anyMismatch) {
11
+ lines.push(' ! Resolution mismatch — tree is NOT confirmed v4. Investigate before continuing.');
12
+ }
13
+ lines.push('');
14
+ if (model.overridesRemoved.length > 0) {
15
+ lines.push(`Overrides removed: ${model.overridesRemoved.join(', ')}`, '');
16
+ }
17
+ if (model.placeholdersSkipped.length > 0) {
18
+ lines.push(`Left as-is (workspace/catalog/link specs): ${model.placeholdersSkipped.join(', ')}`, '');
19
+ }
20
+ if (model.floorsWritten.length > 0) {
21
+ lines.push(`Floors written: ${model.floorsWritten.join(', ')}`, '');
22
+ }
23
+ lines.push('Transforms');
24
+ for (const r of model.transforms){
25
+ if (r.error) {
26
+ lines.push(` [FAIL] ${r.name} — ${r.error.message}`);
27
+ continue;
28
+ }
29
+ lines.push(` [ok] ${r.name} — ${r.filesChanged.length} file(s) changed`);
30
+ for (const note of r.notes ?? []){
31
+ lines.push(` note: ${note}`);
32
+ }
33
+ }
34
+ lines.push('');
35
+ lines.push('Next.js: not upgraded by this command');
36
+ lines.push(` Target Next version: ${model.nextTarget ?? '(see @payloadcms/next peer range)'}`);
37
+ lines.push(' The unmet @payloadcms/next peer is expected until you upgrade Next — that is the immediate next step.');
38
+ lines.push('');
39
+ lines.push('Not done by this command. See these for the remaining steps:');
40
+ lines.push(` runbook: ${model.runbookPath}`);
41
+ if (model.migrationGuidePath) {
42
+ lines.push(` migration guide: ${model.migrationGuidePath}`);
43
+ }
44
+ return lines.join('\n');
45
+ }
46
+
47
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/upgrade/report.ts"],"sourcesContent":["import type { TransformRunResult } from '../runner.js'\n\nexport type VersionReportRow = {\n name: string\n ok: boolean\n resolved?: string\n wrote: string\n}\n\nexport type ReportModel = {\n floorsWritten: string[]\n /** Absolute path to the bundled migration guide, when it shipped with this build. */\n migrationGuidePath?: string\n nextTarget: null | string\n overridesRemoved: string[]\n placeholdersSkipped: string[]\n runbookPath: string\n transforms: TransformRunResult[]\n versions: VersionReportRow[]\n}\n\n/** Build the honest end-of-run report string. Pure — the caller prints it. */\nexport function renderReport(model: ReportModel): string {\n const lines: string[] = []\n lines.push('Payload v4 upgrade — mechanical steps complete', '')\n\n lines.push('Versions written -> resolved')\n for (const v of model.versions) {\n const resolved = v.resolved ?? '(unresolved)'\n lines.push(` ${v.name} ${v.wrote} -> ${resolved} ${v.ok ? 'ok' : 'MISMATCH'}`)\n }\n const anyMismatch = model.versions.some((v) => !v.ok)\n if (anyMismatch) {\n lines.push(' ! Resolution mismatch — tree is NOT confirmed v4. Investigate before continuing.')\n }\n lines.push('')\n\n if (model.overridesRemoved.length > 0) {\n lines.push(`Overrides removed: ${model.overridesRemoved.join(', ')}`, '')\n }\n\n if (model.placeholdersSkipped.length > 0) {\n lines.push(\n `Left as-is (workspace/catalog/link specs): ${model.placeholdersSkipped.join(', ')}`,\n '',\n )\n }\n\n if (model.floorsWritten.length > 0) {\n lines.push(`Floors written: ${model.floorsWritten.join(', ')}`, '')\n }\n\n lines.push('Transforms')\n for (const r of model.transforms) {\n if (r.error) {\n lines.push(` [FAIL] ${r.name} — ${r.error.message}`)\n continue\n }\n lines.push(` [ok] ${r.name} — ${r.filesChanged.length} file(s) changed`)\n for (const note of r.notes ?? []) {\n lines.push(` note: ${note}`)\n }\n }\n lines.push('')\n\n lines.push('Next.js: not upgraded by this command')\n lines.push(` Target Next version: ${model.nextTarget ?? '(see @payloadcms/next peer range)'}`)\n lines.push(\n ' The unmet @payloadcms/next peer is expected until you upgrade Next — that is the immediate next step.',\n )\n lines.push('')\n\n lines.push('Not done by this command. See these for the remaining steps:')\n lines.push(` runbook: ${model.runbookPath}`)\n if (model.migrationGuidePath) {\n lines.push(` migration guide: ${model.migrationGuidePath}`)\n }\n\n return lines.join('\\n')\n}\n"],"names":["renderReport","model","lines","push","v","versions","resolved","name","wrote","ok","anyMismatch","some","overridesRemoved","length","join","placeholdersSkipped","floorsWritten","r","transforms","error","message","filesChanged","note","notes","nextTarget","runbookPath","migrationGuidePath"],"mappings":"AAqBA,4EAA4E,GAC5E,OAAO,SAASA,aAAaC,KAAkB;IAC7C,MAAMC,QAAkB,EAAE;IAC1BA,MAAMC,IAAI,CAAC,kDAAkD;IAE7DD,MAAMC,IAAI,CAAC;IACX,KAAK,MAAMC,KAAKH,MAAMI,QAAQ,CAAE;QAC9B,MAAMC,WAAWF,EAAEE,QAAQ,IAAI;QAC/BJ,MAAMC,IAAI,CAAC,CAAC,EAAE,EAAEC,EAAEG,IAAI,CAAC,EAAE,EAAEH,EAAEI,KAAK,CAAC,IAAI,EAAEF,SAAS,EAAE,EAAEF,EAAEK,EAAE,GAAG,OAAO,YAAY;IAClF;IACA,MAAMC,cAAcT,MAAMI,QAAQ,CAACM,IAAI,CAAC,CAACP,IAAM,CAACA,EAAEK,EAAE;IACpD,IAAIC,aAAa;QACfR,MAAMC,IAAI,CAAC;IACb;IACAD,MAAMC,IAAI,CAAC;IAEX,IAAIF,MAAMW,gBAAgB,CAACC,MAAM,GAAG,GAAG;QACrCX,MAAMC,IAAI,CAAC,CAAC,mBAAmB,EAAEF,MAAMW,gBAAgB,CAACE,IAAI,CAAC,OAAO,EAAE;IACxE;IAEA,IAAIb,MAAMc,mBAAmB,CAACF,MAAM,GAAG,GAAG;QACxCX,MAAMC,IAAI,CACR,CAAC,2CAA2C,EAAEF,MAAMc,mBAAmB,CAACD,IAAI,CAAC,OAAO,EACpF;IAEJ;IAEA,IAAIb,MAAMe,aAAa,CAACH,MAAM,GAAG,GAAG;QAClCX,MAAMC,IAAI,CAAC,CAAC,gBAAgB,EAAEF,MAAMe,aAAa,CAACF,IAAI,CAAC,OAAO,EAAE;IAClE;IAEAZ,MAAMC,IAAI,CAAC;IACX,KAAK,MAAMc,KAAKhB,MAAMiB,UAAU,CAAE;QAChC,IAAID,EAAEE,KAAK,EAAE;YACXjB,MAAMC,IAAI,CAAC,CAAC,SAAS,EAAEc,EAAEV,IAAI,CAAC,GAAG,EAAEU,EAAEE,KAAK,CAACC,OAAO,EAAE;YACpD;QACF;QACAlB,MAAMC,IAAI,CAAC,CAAC,OAAO,EAAEc,EAAEV,IAAI,CAAC,GAAG,EAAEU,EAAEI,YAAY,CAACR,MAAM,CAAC,gBAAgB,CAAC;QACxE,KAAK,MAAMS,QAAQL,EAAEM,KAAK,IAAI,EAAE,CAAE;YAChCrB,MAAMC,IAAI,CAAC,CAAC,YAAY,EAAEmB,MAAM;QAClC;IACF;IACApB,MAAMC,IAAI,CAAC;IAEXD,MAAMC,IAAI,CAAC;IACXD,MAAMC,IAAI,CAAC,CAAC,uBAAuB,EAAEF,MAAMuB,UAAU,IAAI,qCAAqC;IAC9FtB,MAAMC,IAAI,CACR;IAEFD,MAAMC,IAAI,CAAC;IAEXD,MAAMC,IAAI,CAAC;IACXD,MAAMC,IAAI,CAAC,CAAC,WAAW,EAAEF,MAAMwB,WAAW,EAAE;IAC5C,IAAIxB,MAAMyB,kBAAkB,EAAE;QAC5BxB,MAAMC,IAAI,CAAC,CAAC,mBAAmB,EAAEF,MAAMyB,kBAAkB,EAAE;IAC7D;IAEA,OAAOxB,MAAMY,IAAI,CAAC;AACpB"}
@@ -0,0 +1,13 @@
1
+ import type { FetchRegistry, ResolvedVersions } from './types.js';
2
+ type ResolveVersionsArgs = {
3
+ fetchRegistry: FetchRegistry;
4
+ tag: string;
5
+ };
6
+ /**
7
+ * Resolve the v4 target version set from the registry. Reads payload's engines
8
+ * and @payloadcms/next's peer range at their `tag` dist-tag, then picks the
9
+ * newest satisfying patch for @types/node and next. `nextTarget` is report-only.
10
+ */
11
+ export declare function resolveVersions({ fetchRegistry, tag, }: ResolveVersionsArgs): Promise<ResolvedVersions>;
12
+ export {};
13
+ //# sourceMappingURL=resolveVersions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveVersions.d.ts","sourceRoot":"","sources":["../../src/upgrade/resolveVersions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAIjE,KAAK,mBAAmB,GAAG;IACzB,aAAa,EAAE,aAAa,CAAA;IAC5B,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,EACpC,aAAa,EACb,GAAG,GACJ,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAsBjD"}
@@ -0,0 +1,55 @@
1
+ import semver from 'semver';
2
+ import { TS_FLOOR } from './types.js';
3
+ /**
4
+ * Resolve the v4 target version set from the registry. Reads payload's engines
5
+ * and @payloadcms/next's peer range at their `tag` dist-tag, then picks the
6
+ * newest satisfying patch for @types/node and next. `nextTarget` is report-only.
7
+ */ export async function resolveVersions({ fetchRegistry, tag }) {
8
+ const payloadDoc = await fetchRegistry('payload');
9
+ const payloadVersion = payloadDoc['dist-tags']?.[tag];
10
+ if (!payloadVersion) {
11
+ throw new Error(`payload has no dist-tag "${tag}" on the npm registry.`);
12
+ }
13
+ const enginesNode = payloadDoc.versions?.[payloadVersion]?.engines?.node;
14
+ if (!enginesNode) {
15
+ throw new Error(`payload@${payloadVersion} does not declare engines.node.`);
16
+ }
17
+ const typesNode = await newestWithinMajor(fetchRegistry, '@types/node', nodeMajor(enginesNode));
18
+ const nextTarget = await resolveNextTarget(fetchRegistry, tag);
19
+ return {
20
+ enginesNode,
21
+ nextTarget,
22
+ payloadVersion,
23
+ typescript: TS_FLOOR,
24
+ typesNode
25
+ };
26
+ }
27
+ function nodeMajor(enginesNode) {
28
+ const min = semver.minVersion(enginesNode);
29
+ if (!min) {
30
+ throw new Error(`Could not parse a Node major from engines.node "${enginesNode}".`);
31
+ }
32
+ return min.major;
33
+ }
34
+ async function newestWithinMajor(fetchRegistry, packageName, major) {
35
+ const doc = await fetchRegistry(packageName);
36
+ const versions = Object.keys(doc.versions ?? {});
37
+ const range = `>=${major}.0.0 <${major + 1}.0.0`;
38
+ const best = semver.maxSatisfying(versions, range);
39
+ if (!best) {
40
+ throw new Error(`No ${packageName} version found within major ${major}.`);
41
+ }
42
+ return best;
43
+ }
44
+ async function resolveNextTarget(fetchRegistry, tag) {
45
+ const nextDoc = await fetchRegistry('@payloadcms/next');
46
+ const version = nextDoc['dist-tags']?.[tag];
47
+ const range = version ? nextDoc.versions?.[version]?.peerDependencies?.next : undefined;
48
+ if (!range) {
49
+ return null;
50
+ }
51
+ const versions = Object.keys((await fetchRegistry('next')).versions ?? {});
52
+ return semver.maxSatisfying(versions, range);
53
+ }
54
+
55
+ //# sourceMappingURL=resolveVersions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/upgrade/resolveVersions.ts"],"sourcesContent":["import semver from 'semver'\n\nimport type { FetchRegistry, ResolvedVersions } from './types.js'\n\nimport { TS_FLOOR } from './types.js'\n\ntype ResolveVersionsArgs = {\n fetchRegistry: FetchRegistry\n tag: string\n}\n\n/**\n * Resolve the v4 target version set from the registry. Reads payload's engines\n * and @payloadcms/next's peer range at their `tag` dist-tag, then picks the\n * newest satisfying patch for @types/node and next. `nextTarget` is report-only.\n */\nexport async function resolveVersions({\n fetchRegistry,\n tag,\n}: ResolveVersionsArgs): Promise<ResolvedVersions> {\n const payloadDoc = await fetchRegistry('payload')\n const payloadVersion = payloadDoc['dist-tags']?.[tag]\n if (!payloadVersion) {\n throw new Error(`payload has no dist-tag \"${tag}\" on the npm registry.`)\n }\n\n const enginesNode = payloadDoc.versions?.[payloadVersion]?.engines?.node\n if (!enginesNode) {\n throw new Error(`payload@${payloadVersion} does not declare engines.node.`)\n }\n\n const typesNode = await newestWithinMajor(fetchRegistry, '@types/node', nodeMajor(enginesNode))\n const nextTarget = await resolveNextTarget(fetchRegistry, tag)\n\n return {\n enginesNode,\n nextTarget,\n payloadVersion,\n typescript: TS_FLOOR,\n typesNode,\n }\n}\n\nfunction nodeMajor(enginesNode: string): number {\n const min = semver.minVersion(enginesNode)\n if (!min) {\n throw new Error(`Could not parse a Node major from engines.node \"${enginesNode}\".`)\n }\n return min.major\n}\n\nasync function newestWithinMajor(\n fetchRegistry: FetchRegistry,\n packageName: string,\n major: number,\n): Promise<string> {\n const doc = await fetchRegistry(packageName)\n const versions = Object.keys(doc.versions ?? {})\n const range = `>=${major}.0.0 <${major + 1}.0.0`\n const best = semver.maxSatisfying(versions, range)\n if (!best) {\n throw new Error(`No ${packageName} version found within major ${major}.`)\n }\n return best\n}\n\nasync function resolveNextTarget(\n fetchRegistry: FetchRegistry,\n tag: string,\n): Promise<null | string> {\n const nextDoc = await fetchRegistry('@payloadcms/next')\n const version = nextDoc['dist-tags']?.[tag]\n const range = version ? nextDoc.versions?.[version]?.peerDependencies?.next : undefined\n if (!range) {\n return null\n }\n const versions = Object.keys((await fetchRegistry('next')).versions ?? {})\n return semver.maxSatisfying(versions, range)\n}\n"],"names":["semver","TS_FLOOR","resolveVersions","fetchRegistry","tag","payloadDoc","payloadVersion","Error","enginesNode","versions","engines","node","typesNode","newestWithinMajor","nodeMajor","nextTarget","resolveNextTarget","typescript","min","minVersion","major","packageName","doc","Object","keys","range","best","maxSatisfying","nextDoc","version","peerDependencies","next","undefined"],"mappings":"AAAA,OAAOA,YAAY,SAAQ;AAI3B,SAASC,QAAQ,QAAQ,aAAY;AAOrC;;;;CAIC,GACD,OAAO,eAAeC,gBAAgB,EACpCC,aAAa,EACbC,GAAG,EACiB;IACpB,MAAMC,aAAa,MAAMF,cAAc;IACvC,MAAMG,iBAAiBD,UAAU,CAAC,YAAY,EAAE,CAACD,IAAI;IACrD,IAAI,CAACE,gBAAgB;QACnB,MAAM,IAAIC,MAAM,CAAC,yBAAyB,EAAEH,IAAI,sBAAsB,CAAC;IACzE;IAEA,MAAMI,cAAcH,WAAWI,QAAQ,EAAE,CAACH,eAAe,EAAEI,SAASC;IACpE,IAAI,CAACH,aAAa;QAChB,MAAM,IAAID,MAAM,CAAC,QAAQ,EAAED,eAAe,+BAA+B,CAAC;IAC5E;IAEA,MAAMM,YAAY,MAAMC,kBAAkBV,eAAe,eAAeW,UAAUN;IAClF,MAAMO,aAAa,MAAMC,kBAAkBb,eAAeC;IAE1D,OAAO;QACLI;QACAO;QACAT;QACAW,YAAYhB;QACZW;IACF;AACF;AAEA,SAASE,UAAUN,WAAmB;IACpC,MAAMU,MAAMlB,OAAOmB,UAAU,CAACX;IAC9B,IAAI,CAACU,KAAK;QACR,MAAM,IAAIX,MAAM,CAAC,gDAAgD,EAAEC,YAAY,EAAE,CAAC;IACpF;IACA,OAAOU,IAAIE,KAAK;AAClB;AAEA,eAAeP,kBACbV,aAA4B,EAC5BkB,WAAmB,EACnBD,KAAa;IAEb,MAAME,MAAM,MAAMnB,cAAckB;IAChC,MAAMZ,WAAWc,OAAOC,IAAI,CAACF,IAAIb,QAAQ,IAAI,CAAC;IAC9C,MAAMgB,QAAQ,CAAC,EAAE,EAAEL,MAAM,MAAM,EAAEA,QAAQ,EAAE,IAAI,CAAC;IAChD,MAAMM,OAAO1B,OAAO2B,aAAa,CAAClB,UAAUgB;IAC5C,IAAI,CAACC,MAAM;QACT,MAAM,IAAInB,MAAM,CAAC,GAAG,EAAEc,YAAY,4BAA4B,EAAED,MAAM,CAAC,CAAC;IAC1E;IACA,OAAOM;AACT;AAEA,eAAeV,kBACbb,aAA4B,EAC5BC,GAAW;IAEX,MAAMwB,UAAU,MAAMzB,cAAc;IACpC,MAAM0B,UAAUD,OAAO,CAAC,YAAY,EAAE,CAACxB,IAAI;IAC3C,MAAMqB,QAAQI,UAAUD,QAAQnB,QAAQ,EAAE,CAACoB,QAAQ,EAAEC,kBAAkBC,OAAOC;IAC9E,IAAI,CAACP,OAAO;QACV,OAAO;IACT;IACA,MAAMhB,WAAWc,OAAOC,IAAI,CAAC,AAAC,CAAA,MAAMrB,cAAc,OAAM,EAAGM,QAAQ,IAAI,CAAC;IACxE,OAAOT,OAAO2B,aAAa,CAAClB,UAAUgB;AACxC"}
@@ -0,0 +1,32 @@
1
+ import type { ResolvedVersions } from './types.js';
2
+ type RewriteArgs = {
3
+ data: Record<string, unknown>;
4
+ resolved: ResolvedVersions;
5
+ };
6
+ export type RewriteSummary = {
7
+ floorsWritten: string[];
8
+ overridesRemoved: string[];
9
+ pinnedPayload: string[];
10
+ placeholdersSkipped: string[];
11
+ };
12
+ export declare const isPayloadPackage: (name: string) => boolean;
13
+ /**
14
+ * The `@payloadcms/eslint-*` packages are versioned independently of the core
15
+ * payload packages, so they are tracked on `latest` rather than lockstep-pinned.
16
+ */
17
+ export declare const isPayloadEslintPackage: (name: string) => boolean;
18
+ /**
19
+ * A dependency whose version is resolved by the package manager, not a semver
20
+ * range: `workspace:*`, `catalog:`, `link:`, `file:`, `npm:` aliases, URLs.
21
+ * Overwriting one with an exact version would break the link, so it is left as-is.
22
+ */
23
+ export declare const isPlaceholderSpec: (spec: unknown) => boolean;
24
+ /**
25
+ * Mutate `data` in place for a v4 upgrade: exact-pin payload packages, drop
26
+ * payload dependency overrides, and write the toolchain floors. Never touches
27
+ * next/react — the Next.js upgrade is delegated to Next's own workflow.
28
+ * Returns a summary for the report. Idempotent.
29
+ */
30
+ export declare function rewritePackageJson({ data, resolved }: RewriteArgs): RewriteSummary;
31
+ export {};
32
+ //# sourceMappingURL=rewritePackageJson.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewritePackageJson.d.ts","sourceRoot":"","sources":["../../src/upgrade/rewritePackageJson.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,QAAQ,EAAE,gBAAgB,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,mBAAmB,EAAE,MAAM,EAAE,CAAA;CAC9B,CAAA;AAOD,eAAO,MAAM,gBAAgB,SAAU,MAAM,KAAG,OACO,CAAA;AAEvD;;;GAGG;AACH,eAAO,MAAM,sBAAsB,SAAU,MAAM,KAAG,OACf,CAAA;AAEvC;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,SAAU,OAAO,KAAG,OACO,CAAA;AAEzD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,WAAW,GAAG,cAAc,CAKlF"}
@@ -0,0 +1,164 @@
1
+ import semver from 'semver';
2
+ const DEP_FIELDS = [
3
+ 'dependencies',
4
+ 'devDependencies'
5
+ ];
6
+ /** Any protocol-prefixed specifier (`workspace:*`, `catalog:`, `link:`, `file:`, `npm:`, a URL). */ const PLACEHOLDER_SPEC = /^[a-z][a-z0-9+.-]*:/i;
7
+ export const isPayloadPackage = (name)=>name === 'payload' || name.startsWith('@payloadcms/');
8
+ /**
9
+ * The `@payloadcms/eslint-*` packages are versioned independently of the core
10
+ * payload packages, so they are tracked on `latest` rather than lockstep-pinned.
11
+ */ export const isPayloadEslintPackage = (name)=>name.startsWith('@payloadcms/eslint');
12
+ /**
13
+ * A dependency whose version is resolved by the package manager, not a semver
14
+ * range: `workspace:*`, `catalog:`, `link:`, `file:`, `npm:` aliases, URLs.
15
+ * Overwriting one with an exact version would break the link, so it is left as-is.
16
+ */ export const isPlaceholderSpec = (spec)=>typeof spec === 'string' && PLACEHOLDER_SPEC.test(spec);
17
+ /**
18
+ * Mutate `data` in place for a v4 upgrade: exact-pin payload packages, drop
19
+ * payload dependency overrides, and write the toolchain floors. Never touches
20
+ * next/react — the Next.js upgrade is delegated to Next's own workflow.
21
+ * Returns a summary for the report. Idempotent.
22
+ */ export function rewritePackageJson({ data, resolved }) {
23
+ const { pinnedPayload, placeholdersSkipped } = pinPayloadPackages(data, resolved.payloadVersion);
24
+ const overridesRemoved = removePayloadOverrides(data);
25
+ const floorsWritten = writeFloors(data, resolved);
26
+ return {
27
+ floorsWritten,
28
+ overridesRemoved,
29
+ pinnedPayload,
30
+ placeholdersSkipped
31
+ };
32
+ }
33
+ function pinPayloadPackages(data, version) {
34
+ const pinned = [];
35
+ const skipped = [];
36
+ for (const field of DEP_FIELDS){
37
+ const deps = data[field];
38
+ if (!isRecord(deps)) {
39
+ continue;
40
+ }
41
+ for (const name of Object.keys(deps)){
42
+ if (!isPayloadPackage(name)) {
43
+ continue;
44
+ }
45
+ // A workspace/catalog/link spec resolves itself; pinning it breaks the link.
46
+ if (isPlaceholderSpec(deps[name])) {
47
+ skipped.push(name);
48
+ continue;
49
+ }
50
+ if (isPayloadEslintPackage(name)) {
51
+ deps[name] = 'latest';
52
+ continue;
53
+ }
54
+ deps[name] = version;
55
+ pinned.push(name);
56
+ }
57
+ }
58
+ return {
59
+ pinnedPayload: pinned,
60
+ placeholdersSkipped: skipped
61
+ };
62
+ }
63
+ function removePayloadOverrides(data) {
64
+ const removed = [];
65
+ const pnpm = data.pnpm;
66
+ if (isRecord(pnpm) && isRecord(pnpm.overrides)) {
67
+ pruneOverrideBlock(pnpm.overrides, 'pnpm.overrides', removed);
68
+ if (Object.keys(pnpm.overrides).length === 0) {
69
+ delete pnpm.overrides;
70
+ }
71
+ if (Object.keys(pnpm).length === 0) {
72
+ delete data.pnpm;
73
+ }
74
+ }
75
+ for (const key of [
76
+ 'overrides',
77
+ 'resolutions'
78
+ ]){
79
+ const block = data[key];
80
+ if (isRecord(block)) {
81
+ pruneOverrideBlock(block, key, removed);
82
+ if (Object.keys(block).length === 0) {
83
+ delete data[key];
84
+ }
85
+ }
86
+ }
87
+ return removed;
88
+ }
89
+ function pruneOverrideBlock(block, label, removed) {
90
+ for (const name of Object.keys(block)){
91
+ if (isPayloadPackage(name)) {
92
+ delete block[name];
93
+ removed.push(`${label}.${name}`);
94
+ }
95
+ }
96
+ }
97
+ function writeFloors(data, resolved) {
98
+ const written = [];
99
+ if (writeDepFloor({
100
+ name: 'typescript',
101
+ data,
102
+ floor: resolved.typescript
103
+ })) {
104
+ written.push('typescript');
105
+ }
106
+ if (writeDepFloor({
107
+ name: '@types/node',
108
+ data,
109
+ floor: resolved.typesNode
110
+ })) {
111
+ written.push('@types/node');
112
+ }
113
+ const engines = isRecord(data.engines) ? data.engines : {};
114
+ if (engines.node === undefined || isBelowFloor({
115
+ floor: resolved.enginesNode,
116
+ spec: engines.node
117
+ })) {
118
+ engines.node = resolved.enginesNode;
119
+ data.engines = engines;
120
+ written.push('engines.node');
121
+ }
122
+ return written;
123
+ }
124
+ /**
125
+ * Raise a dep to `floor` wherever it already lives, else add it to devDependencies.
126
+ * Placeholder specs, non-semver specs (e.g. `latest`), and ranges already at or
127
+ * above the floor are left as-is. Returns whether the dep was written.
128
+ */ function writeDepFloor({ name, data, floor }) {
129
+ for (const field of DEP_FIELDS){
130
+ const deps = data[field];
131
+ if (!isRecord(deps) || !(name in deps)) {
132
+ continue;
133
+ }
134
+ const spec = deps[name];
135
+ if (isPlaceholderSpec(spec) || !isBelowFloor({
136
+ floor,
137
+ spec
138
+ })) {
139
+ return false;
140
+ }
141
+ deps[name] = floor;
142
+ return true;
143
+ }
144
+ const devDeps = isRecord(data.devDependencies) ? data.devDependencies : {};
145
+ devDeps[name] = floor;
146
+ data.devDependencies = devDeps;
147
+ return true;
148
+ }
149
+ /** True only when `spec` is a semver range whose lowest version is below the floor's. */ function isBelowFloor({ floor, spec }) {
150
+ if (typeof spec !== 'string' || !semver.validRange(spec)) {
151
+ return false;
152
+ }
153
+ const specMin = semver.minVersion(spec);
154
+ const floorMin = semver.minVersion(floor);
155
+ if (!specMin || !floorMin) {
156
+ return false;
157
+ }
158
+ return semver.lt(specMin, floorMin);
159
+ }
160
+ function isRecord(value) {
161
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
162
+ }
163
+
164
+ //# sourceMappingURL=rewritePackageJson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/upgrade/rewritePackageJson.ts"],"sourcesContent":["import semver from 'semver'\n\nimport type { ResolvedVersions } from './types.js'\n\ntype RewriteArgs = {\n data: Record<string, unknown>\n resolved: ResolvedVersions\n}\n\nexport type RewriteSummary = {\n floorsWritten: string[]\n overridesRemoved: string[]\n pinnedPayload: string[]\n placeholdersSkipped: string[]\n}\n\nconst DEP_FIELDS = ['dependencies', 'devDependencies'] as const\n\n/** Any protocol-prefixed specifier (`workspace:*`, `catalog:`, `link:`, `file:`, `npm:`, a URL). */\nconst PLACEHOLDER_SPEC = /^[a-z][a-z0-9+.-]*:/i\n\nexport const isPayloadPackage = (name: string): boolean =>\n name === 'payload' || name.startsWith('@payloadcms/')\n\n/**\n * The `@payloadcms/eslint-*` packages are versioned independently of the core\n * payload packages, so they are tracked on `latest` rather than lockstep-pinned.\n */\nexport const isPayloadEslintPackage = (name: string): boolean =>\n name.startsWith('@payloadcms/eslint')\n\n/**\n * A dependency whose version is resolved by the package manager, not a semver\n * range: `workspace:*`, `catalog:`, `link:`, `file:`, `npm:` aliases, URLs.\n * Overwriting one with an exact version would break the link, so it is left as-is.\n */\nexport const isPlaceholderSpec = (spec: unknown): boolean =>\n typeof spec === 'string' && PLACEHOLDER_SPEC.test(spec)\n\n/**\n * Mutate `data` in place for a v4 upgrade: exact-pin payload packages, drop\n * payload dependency overrides, and write the toolchain floors. Never touches\n * next/react — the Next.js upgrade is delegated to Next's own workflow.\n * Returns a summary for the report. Idempotent.\n */\nexport function rewritePackageJson({ data, resolved }: RewriteArgs): RewriteSummary {\n const { pinnedPayload, placeholdersSkipped } = pinPayloadPackages(data, resolved.payloadVersion)\n const overridesRemoved = removePayloadOverrides(data)\n const floorsWritten = writeFloors(data, resolved)\n return { floorsWritten, overridesRemoved, pinnedPayload, placeholdersSkipped }\n}\n\nfunction pinPayloadPackages(\n data: Record<string, unknown>,\n version: string,\n): { pinnedPayload: string[]; placeholdersSkipped: string[] } {\n const pinned: string[] = []\n const skipped: string[] = []\n for (const field of DEP_FIELDS) {\n const deps = data[field]\n if (!isRecord(deps)) {\n continue\n }\n for (const name of Object.keys(deps)) {\n if (!isPayloadPackage(name)) {\n continue\n }\n // A workspace/catalog/link spec resolves itself; pinning it breaks the link.\n if (isPlaceholderSpec(deps[name])) {\n skipped.push(name)\n continue\n }\n if (isPayloadEslintPackage(name)) {\n deps[name] = 'latest'\n continue\n }\n deps[name] = version\n pinned.push(name)\n }\n }\n return { pinnedPayload: pinned, placeholdersSkipped: skipped }\n}\n\nfunction removePayloadOverrides(data: Record<string, unknown>): string[] {\n const removed: string[] = []\n\n const pnpm = data.pnpm\n if (isRecord(pnpm) && isRecord(pnpm.overrides)) {\n pruneOverrideBlock(pnpm.overrides, 'pnpm.overrides', removed)\n if (Object.keys(pnpm.overrides).length === 0) {\n delete pnpm.overrides\n }\n if (Object.keys(pnpm).length === 0) {\n delete data.pnpm\n }\n }\n\n for (const key of ['overrides', 'resolutions'] as const) {\n const block = data[key]\n if (isRecord(block)) {\n pruneOverrideBlock(block, key, removed)\n if (Object.keys(block).length === 0) {\n delete data[key]\n }\n }\n }\n\n return removed\n}\n\nfunction pruneOverrideBlock(\n block: Record<string, unknown>,\n label: string,\n removed: string[],\n): void {\n for (const name of Object.keys(block)) {\n if (isPayloadPackage(name)) {\n delete block[name]\n removed.push(`${label}.${name}`)\n }\n }\n}\n\nfunction writeFloors(data: Record<string, unknown>, resolved: ResolvedVersions): string[] {\n const written: string[] = []\n if (writeDepFloor({ name: 'typescript', data, floor: resolved.typescript })) {\n written.push('typescript')\n }\n if (writeDepFloor({ name: '@types/node', data, floor: resolved.typesNode })) {\n written.push('@types/node')\n }\n\n const engines = isRecord(data.engines) ? data.engines : {}\n if (\n engines.node === undefined ||\n isBelowFloor({ floor: resolved.enginesNode, spec: engines.node })\n ) {\n engines.node = resolved.enginesNode\n data.engines = engines\n written.push('engines.node')\n }\n\n return written\n}\n\n/**\n * Raise a dep to `floor` wherever it already lives, else add it to devDependencies.\n * Placeholder specs, non-semver specs (e.g. `latest`), and ranges already at or\n * above the floor are left as-is. Returns whether the dep was written.\n */\nfunction writeDepFloor({\n name,\n data,\n floor,\n}: {\n data: Record<string, unknown>\n floor: string\n name: string\n}): boolean {\n for (const field of DEP_FIELDS) {\n const deps = data[field]\n if (!isRecord(deps) || !(name in deps)) {\n continue\n }\n const spec = deps[name]\n if (isPlaceholderSpec(spec) || !isBelowFloor({ floor, spec })) {\n return false\n }\n deps[name] = floor\n return true\n }\n const devDeps = isRecord(data.devDependencies) ? data.devDependencies : {}\n devDeps[name] = floor\n data.devDependencies = devDeps\n return true\n}\n\n/** True only when `spec` is a semver range whose lowest version is below the floor's. */\nfunction isBelowFloor({ floor, spec }: { floor: string; spec: unknown }): boolean {\n if (typeof spec !== 'string' || !semver.validRange(spec)) {\n return false\n }\n const specMin = semver.minVersion(spec)\n const floorMin = semver.minVersion(floor)\n if (!specMin || !floorMin) {\n return false\n }\n return semver.lt(specMin, floorMin)\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n"],"names":["semver","DEP_FIELDS","PLACEHOLDER_SPEC","isPayloadPackage","name","startsWith","isPayloadEslintPackage","isPlaceholderSpec","spec","test","rewritePackageJson","data","resolved","pinnedPayload","placeholdersSkipped","pinPayloadPackages","payloadVersion","overridesRemoved","removePayloadOverrides","floorsWritten","writeFloors","version","pinned","skipped","field","deps","isRecord","Object","keys","push","removed","pnpm","overrides","pruneOverrideBlock","length","key","block","label","written","writeDepFloor","floor","typescript","typesNode","engines","node","undefined","isBelowFloor","enginesNode","devDeps","devDependencies","validRange","specMin","minVersion","floorMin","lt","value","Array","isArray"],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { PackageManager, Spawn } from './types.js';
2
+ type RunInstallArgs = {
3
+ packageManager: PackageManager;
4
+ path: string;
5
+ spawn: Spawn;
6
+ };
7
+ /**
8
+ * Install dependencies with the detected package manager. `install` is the same
9
+ * subcommand across pnpm/npm/yarn/bun. Corepack's interactive download prompt is
10
+ * disabled so a non-interactive run cannot hang and abort the install.
11
+ */
12
+ export declare function runInstall({ packageManager, path, spawn, }: RunInstallArgs): Promise<{
13
+ code: number;
14
+ }>;
15
+ export {};
16
+ //# sourceMappingURL=runInstall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runInstall.d.ts","sourceRoot":"","sources":["../../src/upgrade/runInstall.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvD,KAAK,cAAc,GAAG;IACpB,cAAc,EAAE,cAAc,CAAA;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EACzB,cAAc,EACd,IAAI,EACJ,KAAK,GACN,EAAE,cAAc,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAK5C"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Install dependencies with the detected package manager. `install` is the same
3
+ * subcommand across pnpm/npm/yarn/bun. Corepack's interactive download prompt is
4
+ * disabled so a non-interactive run cannot hang and abort the install.
5
+ */ export function runInstall({ packageManager, path, spawn }) {
6
+ return spawn(packageManager, [
7
+ 'install'
8
+ ], {
9
+ cwd: path,
10
+ env: {
11
+ ...process.env,
12
+ COREPACK_ENABLE_DOWNLOAD_PROMPT: '0'
13
+ }
14
+ });
15
+ }
16
+
17
+ //# sourceMappingURL=runInstall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/upgrade/runInstall.ts"],"sourcesContent":["import type { PackageManager, Spawn } from './types.js'\n\ntype RunInstallArgs = {\n packageManager: PackageManager\n path: string\n spawn: Spawn\n}\n\n/**\n * Install dependencies with the detected package manager. `install` is the same\n * subcommand across pnpm/npm/yarn/bun. Corepack's interactive download prompt is\n * disabled so a non-interactive run cannot hang and abort the install.\n */\nexport function runInstall({\n packageManager,\n path,\n spawn,\n}: RunInstallArgs): Promise<{ code: number }> {\n return spawn(packageManager, ['install'], {\n cwd: path,\n env: { ...process.env, COREPACK_ENABLE_DOWNLOAD_PROMPT: '0' },\n })\n}\n"],"names":["runInstall","packageManager","path","spawn","cwd","env","process","COREPACK_ENABLE_DOWNLOAD_PROMPT"],"mappings":"AAQA;;;;CAIC,GACD,OAAO,SAASA,WAAW,EACzBC,cAAc,EACdC,IAAI,EACJC,KAAK,EACU;IACf,OAAOA,MAAMF,gBAAgB;QAAC;KAAU,EAAE;QACxCG,KAAKF;QACLG,KAAK;YAAE,GAAGC,QAAQD,GAAG;YAAEE,iCAAiC;QAAI;IAC9D;AACF"}
@@ -0,0 +1,45 @@
1
+ export type AgentId = 'claude' | 'codex';
2
+ export type Agent = {
3
+ /** Executable expected on PATH. */
4
+ command: string;
5
+ id: AgentId;
6
+ /** Human label shown in the picker. */
7
+ label: string;
8
+ };
9
+ /** Coding agents the dispatcher can hand the orchestration prompt to. */
10
+ export declare const AGENTS: Agent[];
11
+ /**
12
+ * Hand the prompt to `agent`, run the mechanical slice here, or print the
13
+ * prompt to stdout for manual use.
14
+ */
15
+ export type DispatchChoice = {
16
+ agent: Agent;
17
+ kind: 'agent';
18
+ } | {
19
+ kind: 'print';
20
+ } | {
21
+ kind: 'run';
22
+ };
23
+ export type SelectDispatchArgs = {
24
+ /** Value of `--agent`, if the user pinned one. */
25
+ agentFlag?: string;
26
+ /** Agents found on PATH. */
27
+ installed: Agent[];
28
+ /** Both stdin and stdout are a TTY, so a picker can run. */
29
+ isInteractive: boolean;
30
+ /** Interactive picker; only called when a choice is genuinely needed. */
31
+ prompt: (agents: Agent[]) => Promise<DispatchChoice>;
32
+ };
33
+ /**
34
+ * Decide how to dispatch the upgrade, kept pure so the branching is unit-tested
35
+ * without a terminal. `--agent` wins and is strict (unknown or not-installed
36
+ * throws). A non-interactive session falls back to printing the prompt. Any TTY
37
+ * opens the picker, which offers running the mechanical slice or printing even
38
+ * when no agent is installed.
39
+ */
40
+ export declare function selectDispatch({ agentFlag, installed, isInteractive, prompt, }: SelectDispatchArgs): Promise<DispatchChoice>;
41
+ /** Filter the registry down to agents whose command resolves on PATH. */
42
+ export declare function detectInstalledAgents(isAvailable?: (command: string) => boolean): Agent[];
43
+ /** Cross-platform PATH probe using the OS command locator. */
44
+ export declare function isCommandAvailable(command: string): boolean;
45
+ //# sourceMappingURL=selectAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectAgent.d.ts","sourceRoot":"","sources":["../../src/upgrade/selectAgent.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAA;AAExC,MAAM,MAAM,KAAK,GAAG;IAClB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,EAAE,EAAE,OAAO,CAAA;IACX,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,yEAAyE;AACzE,eAAO,MAAM,MAAM,EAAE,KAAK,EAGzB,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAA;AAElG,MAAM,MAAM,kBAAkB,GAAG;IAC/B,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,4BAA4B;IAC5B,SAAS,EAAE,KAAK,EAAE,CAAA;IAClB,4DAA4D;IAC5D,aAAa,EAAE,OAAO,CAAA;IACtB,yEAAyE;IACzE,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC,cAAc,CAAC,CAAA;CACrD,CAAA;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,EACnC,SAAS,EACT,SAAS,EACT,aAAa,EACb,MAAM,GACP,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAqB9C;AAED,yEAAyE;AACzE,wBAAgB,qBAAqB,CACnC,WAAW,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAA4B,GAC7D,KAAK,EAAE,CAET;AAED,8DAA8D;AAC9D,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAI3D"}
@@ -0,0 +1,54 @@
1
+ import { spawnSync } from 'node:child_process';
2
+ /** Coding agents the dispatcher can hand the orchestration prompt to. */ export const AGENTS = [
3
+ {
4
+ id: 'claude',
5
+ command: 'claude',
6
+ label: 'Claude Code'
7
+ },
8
+ {
9
+ id: 'codex',
10
+ command: 'codex',
11
+ label: 'Codex'
12
+ }
13
+ ];
14
+ /**
15
+ * Decide how to dispatch the upgrade, kept pure so the branching is unit-tested
16
+ * without a terminal. `--agent` wins and is strict (unknown or not-installed
17
+ * throws). A non-interactive session falls back to printing the prompt. Any TTY
18
+ * opens the picker, which offers running the mechanical slice or printing even
19
+ * when no agent is installed.
20
+ */ export async function selectDispatch({ agentFlag, installed, isInteractive, prompt }) {
21
+ if (agentFlag) {
22
+ const known = AGENTS.find((a)=>a.id === agentFlag);
23
+ if (!known) {
24
+ throw new Error(`Unknown agent "${agentFlag}". Supported: ${AGENTS.map((a)=>a.id).join(', ')}.`);
25
+ }
26
+ if (!installed.some((a)=>a.id === known.id)) {
27
+ throw new Error(`Agent "${agentFlag}" is not installed (command "${known.command}" not found).`);
28
+ }
29
+ return {
30
+ agent: known,
31
+ kind: 'agent'
32
+ };
33
+ }
34
+ if (!isInteractive) {
35
+ return {
36
+ kind: 'print'
37
+ };
38
+ }
39
+ return prompt(installed);
40
+ }
41
+ /** Filter the registry down to agents whose command resolves on PATH. */ export function detectInstalledAgents(isAvailable = isCommandAvailable) {
42
+ return AGENTS.filter((agent)=>isAvailable(agent.command));
43
+ }
44
+ /** Cross-platform PATH probe using the OS command locator. */ export function isCommandAvailable(command) {
45
+ const locator = process.platform === 'win32' ? 'where' : 'which';
46
+ const result = spawnSync(locator, [
47
+ command
48
+ ], {
49
+ stdio: 'ignore'
50
+ });
51
+ return result.status === 0;
52
+ }
53
+
54
+ //# sourceMappingURL=selectAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/upgrade/selectAgent.ts"],"sourcesContent":["import { spawnSync } from 'node:child_process'\n\nexport type AgentId = 'claude' | 'codex'\n\nexport type Agent = {\n /** Executable expected on PATH. */\n command: string\n id: AgentId\n /** Human label shown in the picker. */\n label: string\n}\n\n/** Coding agents the dispatcher can hand the orchestration prompt to. */\nexport const AGENTS: Agent[] = [\n { id: 'claude', command: 'claude', label: 'Claude Code' },\n { id: 'codex', command: 'codex', label: 'Codex' },\n]\n\n/**\n * Hand the prompt to `agent`, run the mechanical slice here, or print the\n * prompt to stdout for manual use.\n */\nexport type DispatchChoice = { agent: Agent; kind: 'agent' } | { kind: 'print' } | { kind: 'run' }\n\nexport type SelectDispatchArgs = {\n /** Value of `--agent`, if the user pinned one. */\n agentFlag?: string\n /** Agents found on PATH. */\n installed: Agent[]\n /** Both stdin and stdout are a TTY, so a picker can run. */\n isInteractive: boolean\n /** Interactive picker; only called when a choice is genuinely needed. */\n prompt: (agents: Agent[]) => Promise<DispatchChoice>\n}\n\n/**\n * Decide how to dispatch the upgrade, kept pure so the branching is unit-tested\n * without a terminal. `--agent` wins and is strict (unknown or not-installed\n * throws). A non-interactive session falls back to printing the prompt. Any TTY\n * opens the picker, which offers running the mechanical slice or printing even\n * when no agent is installed.\n */\nexport async function selectDispatch({\n agentFlag,\n installed,\n isInteractive,\n prompt,\n}: SelectDispatchArgs): Promise<DispatchChoice> {\n if (agentFlag) {\n const known = AGENTS.find((a) => a.id === agentFlag)\n if (!known) {\n throw new Error(\n `Unknown agent \"${agentFlag}\". Supported: ${AGENTS.map((a) => a.id).join(', ')}.`,\n )\n }\n if (!installed.some((a) => a.id === known.id)) {\n throw new Error(\n `Agent \"${agentFlag}\" is not installed (command \"${known.command}\" not found).`,\n )\n }\n return { agent: known, kind: 'agent' }\n }\n\n if (!isInteractive) {\n return { kind: 'print' }\n }\n\n return prompt(installed)\n}\n\n/** Filter the registry down to agents whose command resolves on PATH. */\nexport function detectInstalledAgents(\n isAvailable: (command: string) => boolean = isCommandAvailable,\n): Agent[] {\n return AGENTS.filter((agent) => isAvailable(agent.command))\n}\n\n/** Cross-platform PATH probe using the OS command locator. */\nexport function isCommandAvailable(command: string): boolean {\n const locator = process.platform === 'win32' ? 'where' : 'which'\n const result = spawnSync(locator, [command], { stdio: 'ignore' })\n return result.status === 0\n}\n"],"names":["spawnSync","AGENTS","id","command","label","selectDispatch","agentFlag","installed","isInteractive","prompt","known","find","a","Error","map","join","some","agent","kind","detectInstalledAgents","isAvailable","isCommandAvailable","filter","locator","process","platform","result","stdio","status"],"mappings":"AAAA,SAASA,SAAS,QAAQ,qBAAoB;AAY9C,uEAAuE,GACvE,OAAO,MAAMC,SAAkB;IAC7B;QAAEC,IAAI;QAAUC,SAAS;QAAUC,OAAO;IAAc;IACxD;QAAEF,IAAI;QAASC,SAAS;QAASC,OAAO;IAAQ;CACjD,CAAA;AAmBD;;;;;;CAMC,GACD,OAAO,eAAeC,eAAe,EACnCC,SAAS,EACTC,SAAS,EACTC,aAAa,EACbC,MAAM,EACa;IACnB,IAAIH,WAAW;QACb,MAAMI,QAAQT,OAAOU,IAAI,CAAC,CAACC,IAAMA,EAAEV,EAAE,KAAKI;QAC1C,IAAI,CAACI,OAAO;YACV,MAAM,IAAIG,MACR,CAAC,eAAe,EAAEP,UAAU,cAAc,EAAEL,OAAOa,GAAG,CAAC,CAACF,IAAMA,EAAEV,EAAE,EAAEa,IAAI,CAAC,MAAM,CAAC,CAAC;QAErF;QACA,IAAI,CAACR,UAAUS,IAAI,CAAC,CAACJ,IAAMA,EAAEV,EAAE,KAAKQ,MAAMR,EAAE,GAAG;YAC7C,MAAM,IAAIW,MACR,CAAC,OAAO,EAAEP,UAAU,6BAA6B,EAAEI,MAAMP,OAAO,CAAC,aAAa,CAAC;QAEnF;QACA,OAAO;YAAEc,OAAOP;YAAOQ,MAAM;QAAQ;IACvC;IAEA,IAAI,CAACV,eAAe;QAClB,OAAO;YAAEU,MAAM;QAAQ;IACzB;IAEA,OAAOT,OAAOF;AAChB;AAEA,uEAAuE,GACvE,OAAO,SAASY,sBACdC,cAA4CC,kBAAkB;IAE9D,OAAOpB,OAAOqB,MAAM,CAAC,CAACL,QAAUG,YAAYH,MAAMd,OAAO;AAC3D;AAEA,4DAA4D,GAC5D,OAAO,SAASkB,mBAAmBlB,OAAe;IAChD,MAAMoB,UAAUC,QAAQC,QAAQ,KAAK,UAAU,UAAU;IACzD,MAAMC,SAAS1B,UAAUuB,SAAS;QAACpB;KAAQ,EAAE;QAAEwB,OAAO;IAAS;IAC/D,OAAOD,OAAOE,MAAM,KAAK;AAC3B"}
@@ -0,0 +1,13 @@
1
+ type ResolveSelfCommandArgs = {
2
+ argv1?: string;
3
+ override?: string;
4
+ };
5
+ /**
6
+ * The command a follower types to re-invoke this CLI. A published install lives
7
+ * under node_modules and is reached with npx; a source checkout is reached with
8
+ * `node <bin>` so local testing runs the local build, not a published version.
9
+ * `PAYLOAD_CODEMOD_COMMAND` overrides both.
10
+ */
11
+ export declare function resolveSelfCommand({ argv1, override, }?: ResolveSelfCommandArgs): string;
12
+ export {};
13
+ //# sourceMappingURL=selfCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selfCommand.d.ts","sourceRoot":"","sources":["../../src/upgrade/selfCommand.ts"],"names":[],"mappings":"AAEA,KAAK,sBAAsB,GAAG;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,KAAuB,EACvB,QAA8C,GAC/C,GAAE,sBAA2B,GAAG,MAAM,CAQtC"}
@@ -0,0 +1,17 @@
1
+ import { resolve } from 'node:path';
2
+ /**
3
+ * The command a follower types to re-invoke this CLI. A published install lives
4
+ * under node_modules and is reached with npx; a source checkout is reached with
5
+ * `node <bin>` so local testing runs the local build, not a published version.
6
+ * `PAYLOAD_CODEMOD_COMMAND` overrides both.
7
+ */ export function resolveSelfCommand({ argv1 = process.argv[1], override = process.env.PAYLOAD_CODEMOD_COMMAND } = {}) {
8
+ if (override) {
9
+ return override;
10
+ }
11
+ if (argv1 && !argv1.includes('node_modules')) {
12
+ return `node ${resolve(argv1)}`;
13
+ }
14
+ return 'npx @payloadcms/codemod';
15
+ }
16
+
17
+ //# sourceMappingURL=selfCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/upgrade/selfCommand.ts"],"sourcesContent":["import { resolve } from 'node:path'\n\ntype ResolveSelfCommandArgs = {\n argv1?: string\n override?: string\n}\n\n/**\n * The command a follower types to re-invoke this CLI. A published install lives\n * under node_modules and is reached with npx; a source checkout is reached with\n * `node <bin>` so local testing runs the local build, not a published version.\n * `PAYLOAD_CODEMOD_COMMAND` overrides both.\n */\nexport function resolveSelfCommand({\n argv1 = process.argv[1],\n override = process.env.PAYLOAD_CODEMOD_COMMAND,\n}: ResolveSelfCommandArgs = {}): string {\n if (override) {\n return override\n }\n if (argv1 && !argv1.includes('node_modules')) {\n return `node ${resolve(argv1)}`\n }\n return 'npx @payloadcms/codemod'\n}\n"],"names":["resolve","resolveSelfCommand","argv1","process","argv","override","env","PAYLOAD_CODEMOD_COMMAND","includes"],"mappings":"AAAA,SAASA,OAAO,QAAQ,YAAW;AAOnC;;;;;CAKC,GACD,OAAO,SAASC,mBAAmB,EACjCC,QAAQC,QAAQC,IAAI,CAAC,EAAE,EACvBC,WAAWF,QAAQG,GAAG,CAACC,uBAAuB,EACvB,GAAG,CAAC,CAAC;IAC5B,IAAIF,UAAU;QACZ,OAAOA;IACT;IACA,IAAIH,SAAS,CAACA,MAAMM,QAAQ,CAAC,iBAAiB;QAC5C,OAAO,CAAC,KAAK,EAAER,QAAQE,QAAQ;IACjC;IACA,OAAO;AACT"}