@payloadcms/codemod 4.0.0-internal.2f0d313 → 4.0.0-internal.31ba7ee

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 (375) hide show
  1. package/README.md +69 -39
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +28 -9
  4. package/dist/cli.js.map +1 -1
  5. package/dist/cli.parseFlags.d.ts +10 -1
  6. package/dist/cli.parseFlags.d.ts.map +1 -1
  7. package/dist/cli.parseFlags.js +16 -8
  8. package/dist/cli.parseFlags.js.map +1 -1
  9. package/dist/registry.d.ts.map +1 -1
  10. package/dist/registry.js +15 -1
  11. package/dist/registry.js.map +1 -1
  12. package/dist/runbook/payload-v4-upgrade.md +2 -2
  13. package/dist/runbook/v4.mdx +556 -31
  14. package/dist/transforms/add-override-access-true/basic.input.js +41 -0
  15. package/dist/transforms/add-override-access-true/basic.input.js.map +1 -0
  16. package/dist/transforms/add-override-access-true/basic.output.js +50 -0
  17. package/dist/transforms/add-override-access-true/basic.output.js.map +1 -0
  18. package/dist/transforms/add-override-access-true/comment-between-properties.input.js +11 -0
  19. package/dist/transforms/add-override-access-true/comment-between-properties.input.js.map +1 -0
  20. package/dist/transforms/add-override-access-true/comment-between-properties.output.js +12 -0
  21. package/dist/transforms/add-override-access-true/comment-between-properties.output.js.map +1 -0
  22. package/dist/transforms/add-override-access-true/index.d.ts +20 -0
  23. package/dist/transforms/add-override-access-true/index.d.ts.map +1 -0
  24. package/dist/transforms/add-override-access-true/index.js +208 -0
  25. package/dist/transforms/add-override-access-true/index.js.map +1 -0
  26. package/dist/transforms/add-override-access-true/javascript.input.d.ts +6 -0
  27. package/dist/transforms/add-override-access-true/javascript.input.d.ts.map +1 -0
  28. package/dist/transforms/add-override-access-true/javascript.input.js +24 -0
  29. package/dist/transforms/add-override-access-true/javascript.input.js.map +1 -0
  30. package/dist/transforms/add-override-access-true/javascript.output.d.ts +6 -0
  31. package/dist/transforms/add-override-access-true/javascript.output.d.ts.map +1 -0
  32. package/dist/transforms/add-override-access-true/javascript.output.js +26 -0
  33. package/dist/transforms/add-override-access-true/javascript.output.js.map +1 -0
  34. package/dist/transforms/add-override-access-true/non-matching.input.js +42 -0
  35. package/dist/transforms/add-override-access-true/non-matching.input.js.map +1 -0
  36. package/dist/transforms/add-override-access-true/non-matching.output.js +42 -0
  37. package/dist/transforms/add-override-access-true/non-matching.output.js.map +1 -0
  38. package/dist/transforms/add-override-access-true/single-line.input.js +13 -0
  39. package/dist/transforms/add-override-access-true/single-line.input.js.map +1 -0
  40. package/dist/transforms/add-override-access-true/single-line.output.js +17 -0
  41. package/dist/transforms/add-override-access-true/single-line.output.js.map +1 -0
  42. package/dist/transforms/add-override-access-true/trailing-comment.input.js +10 -0
  43. package/dist/transforms/add-override-access-true/trailing-comment.input.js.map +1 -0
  44. package/dist/transforms/add-override-access-true/trailing-comment.output.js +12 -0
  45. package/dist/transforms/add-override-access-true/trailing-comment.output.js.map +1 -0
  46. package/dist/transforms/migrate-aliased-exports/index.d.ts.map +1 -1
  47. package/dist/transforms/migrate-aliased-exports/index.js +6 -5
  48. package/dist/transforms/migrate-aliased-exports/index.js.map +1 -1
  49. package/dist/transforms/migrate-aliased-exports/request.input.js +6 -0
  50. package/dist/transforms/migrate-aliased-exports/request.input.js.map +1 -0
  51. package/dist/transforms/migrate-aliased-exports/request.output.js +5 -0
  52. package/dist/transforms/migrate-aliased-exports/request.output.js.map +1 -0
  53. package/dist/transforms/migrate-authorship-default/already-set.input.js +15 -0
  54. package/dist/transforms/migrate-authorship-default/already-set.input.js.map +1 -0
  55. package/dist/transforms/migrate-authorship-default/already-set.output.js +15 -0
  56. package/dist/transforms/migrate-authorship-default/already-set.output.js.map +1 -0
  57. package/dist/transforms/migrate-authorship-default/basic.input.js +16 -0
  58. package/dist/transforms/migrate-authorship-default/basic.input.js.map +1 -0
  59. package/dist/transforms/migrate-authorship-default/basic.output.js +18 -0
  60. package/dist/transforms/migrate-authorship-default/basic.output.js.map +1 -0
  61. package/dist/transforms/migrate-authorship-default/build-config.input.js +32 -0
  62. package/dist/transforms/migrate-authorship-default/build-config.input.js.map +1 -0
  63. package/dist/transforms/migrate-authorship-default/build-config.output.js +35 -0
  64. package/dist/transforms/migrate-authorship-default/build-config.output.js.map +1 -0
  65. package/dist/transforms/migrate-authorship-default/globals.input.js +16 -0
  66. package/dist/transforms/migrate-authorship-default/globals.input.js.map +1 -0
  67. package/dist/transforms/migrate-authorship-default/globals.output.js +17 -0
  68. package/dist/transforms/migrate-authorship-default/globals.output.js.map +1 -0
  69. package/dist/transforms/migrate-authorship-default/index.d.ts +11 -0
  70. package/dist/transforms/migrate-authorship-default/index.d.ts.map +1 -0
  71. package/dist/transforms/migrate-authorship-default/index.js +141 -0
  72. package/dist/transforms/migrate-authorship-default/index.js.map +1 -0
  73. package/dist/transforms/migrate-authorship-default/non-matching.input.js +18 -0
  74. package/dist/transforms/migrate-authorship-default/non-matching.input.js.map +1 -0
  75. package/dist/transforms/migrate-authorship-default/non-matching.output.js +18 -0
  76. package/dist/transforms/migrate-authorship-default/non-matching.output.js.map +1 -0
  77. package/dist/transforms/migrate-authorship-default/satisfies.input.js +11 -0
  78. package/dist/transforms/migrate-authorship-default/satisfies.input.js.map +1 -0
  79. package/dist/transforms/migrate-authorship-default/satisfies.output.js +13 -0
  80. package/dist/transforms/migrate-authorship-default/satisfies.output.js.map +1 -0
  81. package/dist/transforms/migrate-field-component-types/basic.input.js +8 -0
  82. package/dist/transforms/migrate-field-component-types/basic.input.js.map +1 -0
  83. package/dist/transforms/migrate-field-component-types/basic.output.js +8 -0
  84. package/dist/transforms/migrate-field-component-types/basic.output.js.map +1 -0
  85. package/dist/transforms/migrate-field-component-types/index.d.ts +3 -0
  86. package/dist/transforms/migrate-field-component-types/index.d.ts.map +1 -0
  87. package/dist/transforms/migrate-field-component-types/index.js +616 -0
  88. package/dist/transforms/migrate-field-component-types/index.js.map +1 -0
  89. package/dist/transforms/migrate-payload-request-creation/aliases.input.js +8 -0
  90. package/dist/transforms/migrate-payload-request-creation/aliases.input.js.map +1 -0
  91. package/dist/transforms/migrate-payload-request-creation/aliases.output.js +31 -0
  92. package/dist/transforms/migrate-payload-request-creation/aliases.output.js.map +1 -0
  93. package/dist/transforms/migrate-payload-request-creation/collision.input.js +9 -0
  94. package/dist/transforms/migrate-payload-request-creation/collision.input.js.map +1 -0
  95. package/dist/transforms/migrate-payload-request-creation/comments.input.js +9 -0
  96. package/dist/transforms/migrate-payload-request-creation/comments.input.js.map +1 -0
  97. package/dist/transforms/migrate-payload-request-creation/comments.output.js +34 -0
  98. package/dist/transforms/migrate-payload-request-creation/comments.output.js.map +1 -0
  99. package/dist/transforms/migrate-payload-request-creation/empty.input.js +5 -0
  100. package/dist/transforms/migrate-payload-request-creation/empty.input.js.map +1 -0
  101. package/dist/transforms/migrate-payload-request-creation/empty.output.js +7 -0
  102. package/dist/transforms/migrate-payload-request-creation/empty.output.js.map +1 -0
  103. package/dist/transforms/migrate-payload-request-creation/evaluation-order.input.js +10 -0
  104. package/dist/transforms/migrate-payload-request-creation/evaluation-order.input.js.map +1 -0
  105. package/dist/transforms/migrate-payload-request-creation/expression.input.js +8 -0
  106. package/dist/transforms/migrate-payload-request-creation/expression.input.js.map +1 -0
  107. package/dist/transforms/migrate-payload-request-creation/expression.output.js +8 -0
  108. package/dist/transforms/migrate-payload-request-creation/expression.output.js.map +1 -0
  109. package/dist/transforms/migrate-payload-request-creation/getters.input.js +52 -0
  110. package/dist/transforms/migrate-payload-request-creation/getters.input.js.map +1 -0
  111. package/dist/transforms/migrate-payload-request-creation/index.d.ts +3 -0
  112. package/dist/transforms/migrate-payload-request-creation/index.d.ts.map +1 -0
  113. package/dist/transforms/migrate-payload-request-creation/index.js +236 -0
  114. package/dist/transforms/migrate-payload-request-creation/index.js.map +1 -0
  115. package/dist/transforms/migrate-payload-request-creation/internal.input.js +6 -0
  116. package/dist/transforms/migrate-payload-request-creation/internal.input.js.map +1 -0
  117. package/dist/transforms/migrate-payload-request-creation/internal.output.js +6 -0
  118. package/dist/transforms/migrate-payload-request-creation/internal.output.js.map +1 -0
  119. package/dist/transforms/migrate-payload-request-creation/non-matching.input.js +5 -0
  120. package/dist/transforms/migrate-payload-request-creation/non-matching.input.js.map +1 -0
  121. package/dist/transforms/migrate-payload-request-creation/populated.input.js +7 -0
  122. package/dist/transforms/migrate-payload-request-creation/populated.input.js.map +1 -0
  123. package/dist/transforms/migrate-payload-request-creation/populated.output.js +30 -0
  124. package/dist/transforms/migrate-payload-request-creation/populated.output.js.map +1 -0
  125. package/dist/transforms/migrate-payload-request-creation/shadowed.input.js +7 -0
  126. package/dist/transforms/migrate-payload-request-creation/shadowed.input.js.map +1 -0
  127. package/dist/transforms/migrate-payload-request-creation/shadowed.output.js +9 -0
  128. package/dist/transforms/migrate-payload-request-creation/shadowed.output.js.map +1 -0
  129. package/dist/transforms/migrate-payload-request-creation/shorthand.input.js +12 -0
  130. package/dist/transforms/migrate-payload-request-creation/shorthand.input.js.map +1 -0
  131. package/dist/transforms/migrate-payload-request-creation/shorthand.output.js +12 -0
  132. package/dist/transforms/migrate-payload-request-creation/shorthand.output.js.map +1 -0
  133. package/dist/transforms/migrate-payload-request-creation/unsupported.input.js +9 -0
  134. package/dist/transforms/migrate-payload-request-creation/unsupported.input.js.map +1 -0
  135. package/dist/transforms/migrate-versions-default/index.js +5 -5
  136. package/dist/transforms/migrate-versions-default/index.js.map +1 -1
  137. package/dist/transforms/remove-default-locale-publish-option/all-value.input.js +13 -0
  138. package/dist/transforms/remove-default-locale-publish-option/all-value.input.js.map +1 -0
  139. package/dist/transforms/remove-default-locale-publish-option/basic.input.js +13 -0
  140. package/dist/transforms/remove-default-locale-publish-option/basic.input.js.map +1 -0
  141. package/dist/transforms/remove-default-locale-publish-option/basic.output.js +12 -0
  142. package/dist/transforms/remove-default-locale-publish-option/basic.output.js.map +1 -0
  143. package/dist/transforms/remove-default-locale-publish-option/dynamic.input.js +17 -0
  144. package/dist/transforms/remove-default-locale-publish-option/dynamic.input.js.map +1 -0
  145. package/dist/transforms/remove-default-locale-publish-option/index.d.ts +10 -0
  146. package/dist/transforms/remove-default-locale-publish-option/index.d.ts.map +1 -0
  147. package/dist/transforms/remove-default-locale-publish-option/index.js +103 -0
  148. package/dist/transforms/remove-default-locale-publish-option/index.js.map +1 -0
  149. package/dist/transforms/remove-default-locale-publish-option/no-match.input.js +10 -0
  150. package/dist/transforms/remove-default-locale-publish-option/no-match.input.js.map +1 -0
  151. package/dist/transforms/remove-default-locale-publish-option/no-match.output.js +10 -0
  152. package/dist/transforms/remove-default-locale-publish-option/no-match.output.js.map +1 -0
  153. package/dist/transforms/remove-default-locale-publish-option/reassigned.input.js +22 -0
  154. package/dist/transforms/remove-default-locale-publish-option/reassigned.input.js.map +1 -0
  155. package/dist/transforms/remove-default-locale-publish-option/shorthand.input.js +14 -0
  156. package/dist/transforms/remove-default-locale-publish-option/shorthand.input.js.map +1 -0
  157. package/dist/transforms/remove-default-locale-publish-option/shorthand.output.js +13 -0
  158. package/dist/transforms/remove-default-locale-publish-option/shorthand.output.js.map +1 -0
  159. package/dist/transforms/remove-publish-specific-locale/index.d.ts.map +1 -1
  160. package/dist/transforms/remove-publish-specific-locale/index.js.map +1 -1
  161. package/dist/transforms/remove-storage-always-insert-fields/aliased.input.js +11 -0
  162. package/dist/transforms/remove-storage-always-insert-fields/aliased.input.js.map +1 -0
  163. package/dist/transforms/remove-storage-always-insert-fields/aliased.output.js +10 -0
  164. package/dist/transforms/remove-storage-always-insert-fields/aliased.output.js.map +1 -0
  165. package/dist/transforms/remove-storage-always-insert-fields/basic.input.js +54 -0
  166. package/dist/transforms/remove-storage-always-insert-fields/basic.input.js.map +1 -0
  167. package/dist/transforms/remove-storage-always-insert-fields/basic.output.js +48 -0
  168. package/dist/transforms/remove-storage-always-insert-fields/basic.output.js.map +1 -0
  169. package/dist/transforms/remove-storage-always-insert-fields/index.d.ts +3 -0
  170. package/dist/transforms/remove-storage-always-insert-fields/index.d.ts.map +1 -0
  171. package/dist/transforms/remove-storage-always-insert-fields/index.js +71 -0
  172. package/dist/transforms/remove-storage-always-insert-fields/index.js.map +1 -0
  173. package/dist/transforms/remove-storage-always-insert-fields/no-match.input.js +27 -0
  174. package/dist/transforms/remove-storage-always-insert-fields/no-match.input.js.map +1 -0
  175. package/dist/transforms/remove-storage-always-insert-fields/no-match.output.js +27 -0
  176. package/dist/transforms/remove-storage-always-insert-fields/no-match.output.js.map +1 -0
  177. package/dist/transforms/remove-versions-true/index.js +4 -4
  178. package/dist/transforms/remove-versions-true/index.js.map +1 -1
  179. package/dist/transforms/rename-experimental-table-feature/alias.input.js +6 -0
  180. package/dist/transforms/rename-experimental-table-feature/alias.input.js.map +1 -0
  181. package/dist/transforms/rename-experimental-table-feature/alias.output.js +6 -0
  182. package/dist/transforms/rename-experimental-table-feature/alias.output.js.map +1 -0
  183. package/dist/transforms/rename-experimental-table-feature/basic.input.js +19 -0
  184. package/dist/transforms/rename-experimental-table-feature/basic.input.js.map +1 -0
  185. package/dist/transforms/rename-experimental-table-feature/basic.output.js +19 -0
  186. package/dist/transforms/rename-experimental-table-feature/basic.output.js.map +1 -0
  187. package/dist/transforms/rename-experimental-table-feature/collision.input.js +7 -0
  188. package/dist/transforms/rename-experimental-table-feature/collision.input.js.map +1 -0
  189. package/dist/transforms/rename-experimental-table-feature/index.d.ts +3 -0
  190. package/dist/transforms/rename-experimental-table-feature/index.d.ts.map +1 -0
  191. package/dist/transforms/rename-experimental-table-feature/index.js +44 -0
  192. package/dist/transforms/rename-experimental-table-feature/index.js.map +1 -0
  193. package/dist/transforms/rename-experimental-table-feature/no-match.input.js +9 -0
  194. package/dist/transforms/rename-experimental-table-feature/no-match.input.js.map +1 -0
  195. package/dist/upgrade/defaultTag.d.ts +9 -0
  196. package/dist/upgrade/defaultTag.d.ts.map +1 -0
  197. package/dist/upgrade/defaultTag.js +25 -0
  198. package/dist/upgrade/defaultTag.js.map +1 -0
  199. package/dist/upgrade/dispatch.d.ts +38 -0
  200. package/dist/upgrade/dispatch.d.ts.map +1 -0
  201. package/dist/upgrade/dispatch.js +132 -0
  202. package/dist/upgrade/dispatch.js.map +1 -0
  203. package/dist/upgrade/index.d.ts +2 -1
  204. package/dist/upgrade/index.d.ts.map +1 -1
  205. package/dist/upgrade/index.js +49 -24
  206. package/dist/upgrade/index.js.map +1 -1
  207. package/dist/upgrade/prompt.d.ts +6 -3
  208. package/dist/upgrade/prompt.d.ts.map +1 -1
  209. package/dist/upgrade/prompt.js +11 -9
  210. package/dist/upgrade/prompt.js.map +1 -1
  211. package/dist/upgrade/report.d.ts +3 -0
  212. package/dist/upgrade/report.d.ts.map +1 -1
  213. package/dist/upgrade/report.js +8 -2
  214. package/dist/upgrade/report.js.map +1 -1
  215. package/dist/upgrade/rewritePackageJson.d.ts +7 -0
  216. package/dist/upgrade/rewritePackageJson.d.ts.map +1 -1
  217. package/dist/upgrade/rewritePackageJson.js +24 -7
  218. package/dist/upgrade/rewritePackageJson.js.map +1 -1
  219. package/dist/upgrade/selectAgent.d.ts +45 -0
  220. package/dist/upgrade/selectAgent.d.ts.map +1 -0
  221. package/dist/upgrade/selectAgent.js +54 -0
  222. package/dist/upgrade/selectAgent.js.map +1 -0
  223. package/dist/upgrade/selfCommand.d.ts +13 -0
  224. package/dist/upgrade/selfCommand.d.ts.map +1 -0
  225. package/dist/upgrade/selfCommand.js +17 -0
  226. package/dist/upgrade/selfCommand.js.map +1 -0
  227. package/dist/upgrade/types.d.ts +5 -0
  228. package/dist/upgrade/types.d.ts.map +1 -1
  229. package/dist/upgrade/types.js +4 -0
  230. package/dist/upgrade/types.js.map +1 -1
  231. package/package.json +4 -3
  232. package/dist/cli.parseFlags.spec.d.ts +0 -2
  233. package/dist/cli.parseFlags.spec.d.ts.map +0 -1
  234. package/dist/cli.parseFlags.spec.js +0 -121
  235. package/dist/cli.parseFlags.spec.js.map +0 -1
  236. package/dist/runner.spec.d.ts +0 -2
  237. package/dist/runner.spec.d.ts.map +0 -1
  238. package/dist/runner.spec.js +0 -88
  239. package/dist/runner.spec.js.map +0 -1
  240. package/dist/transforms/example-noop/index.spec.d.ts +0 -2
  241. package/dist/transforms/example-noop/index.spec.d.ts.map +0 -1
  242. package/dist/transforms/example-noop/index.spec.js +0 -29
  243. package/dist/transforms/example-noop/index.spec.js.map +0 -1
  244. package/dist/transforms/globals-components-edit/index.spec.d.ts +0 -2
  245. package/dist/transforms/globals-components-edit/index.spec.d.ts.map +0 -1
  246. package/dist/transforms/globals-components-edit/index.spec.js +0 -37
  247. package/dist/transforms/globals-components-edit/index.spec.js.map +0 -1
  248. package/dist/transforms/migrate-after-operation-read/index.spec.d.ts +0 -2
  249. package/dist/transforms/migrate-after-operation-read/index.spec.d.ts.map +0 -1
  250. package/dist/transforms/migrate-after-operation-read/index.spec.js +0 -62
  251. package/dist/transforms/migrate-after-operation-read/index.spec.js.map +0 -1
  252. package/dist/transforms/migrate-aliased-exports/index.spec.d.ts +0 -2
  253. package/dist/transforms/migrate-aliased-exports/index.spec.d.ts.map +0 -1
  254. package/dist/transforms/migrate-aliased-exports/index.spec.js +0 -55
  255. package/dist/transforms/migrate-aliased-exports/index.spec.js.map +0 -1
  256. package/dist/transforms/migrate-azure-chunk-large-files/index.spec.d.ts +0 -2
  257. package/dist/transforms/migrate-azure-chunk-large-files/index.spec.d.ts.map +0 -1
  258. package/dist/transforms/migrate-azure-chunk-large-files/index.spec.js +0 -67
  259. package/dist/transforms/migrate-azure-chunk-large-files/index.spec.js.map +0 -1
  260. package/dist/transforms/migrate-block-references-to-blocks/index.spec.d.ts +0 -2
  261. package/dist/transforms/migrate-block-references-to-blocks/index.spec.d.ts.map +0 -1
  262. package/dist/transforms/migrate-block-references-to-blocks/index.spec.js +0 -45
  263. package/dist/transforms/migrate-block-references-to-blocks/index.spec.js.map +0 -1
  264. package/dist/transforms/migrate-build-script/index.spec.d.ts +0 -2
  265. package/dist/transforms/migrate-build-script/index.spec.d.ts.map +0 -1
  266. package/dist/transforms/migrate-build-script/index.spec.js +0 -81
  267. package/dist/transforms/migrate-build-script/index.spec.js.map +0 -1
  268. package/dist/transforms/migrate-db-types-subpath/index.spec.d.ts +0 -2
  269. package/dist/transforms/migrate-db-types-subpath/index.spec.d.ts.map +0 -1
  270. package/dist/transforms/migrate-db-types-subpath/index.spec.js +0 -46
  271. package/dist/transforms/migrate-db-types-subpath/index.spec.js.map +0 -1
  272. package/dist/transforms/migrate-disabled-fields/index.spec.d.ts +0 -2
  273. package/dist/transforms/migrate-disabled-fields/index.spec.d.ts.map +0 -1
  274. package/dist/transforms/migrate-disabled-fields/index.spec.js +0 -73
  275. package/dist/transforms/migrate-disabled-fields/index.spec.js.map +0 -1
  276. package/dist/transforms/migrate-document-title-context/index.spec.d.ts +0 -2
  277. package/dist/transforms/migrate-document-title-context/index.spec.d.ts.map +0 -1
  278. package/dist/transforms/migrate-document-title-context/index.spec.js +0 -86
  279. package/dist/transforms/migrate-document-title-context/index.spec.js.map +0 -1
  280. package/dist/transforms/migrate-force-select/index.spec.d.ts +0 -2
  281. package/dist/transforms/migrate-force-select/index.spec.d.ts.map +0 -1
  282. package/dist/transforms/migrate-force-select/index.spec.js +0 -107
  283. package/dist/transforms/migrate-force-select/index.spec.js.map +0 -1
  284. package/dist/transforms/migrate-hide-api-url/index.spec.d.ts +0 -2
  285. package/dist/transforms/migrate-hide-api-url/index.spec.d.ts.map +0 -1
  286. package/dist/transforms/migrate-hide-api-url/index.spec.js +0 -118
  287. package/dist/transforms/migrate-hide-api-url/index.spec.js.map +0 -1
  288. package/dist/transforms/migrate-import-export-hooks/index.spec.d.ts +0 -2
  289. package/dist/transforms/migrate-import-export-hooks/index.spec.d.ts.map +0 -1
  290. package/dist/transforms/migrate-import-export-hooks/index.spec.js +0 -65
  291. package/dist/transforms/migrate-import-export-hooks/index.spec.js.map +0 -1
  292. package/dist/transforms/migrate-list-view-select-api/index.spec.d.ts +0 -2
  293. package/dist/transforms/migrate-list-view-select-api/index.spec.d.ts.map +0 -1
  294. package/dist/transforms/migrate-list-view-select-api/index.spec.js +0 -37
  295. package/dist/transforms/migrate-list-view-select-api/index.spec.js.map +0 -1
  296. package/dist/transforms/migrate-next-generate-viewport-export/index.spec.d.ts +0 -2
  297. package/dist/transforms/migrate-next-generate-viewport-export/index.spec.d.ts.map +0 -1
  298. package/dist/transforms/migrate-next-generate-viewport-export/index.spec.js +0 -41
  299. package/dist/transforms/migrate-next-generate-viewport-export/index.spec.js.map +0 -1
  300. package/dist/transforms/migrate-next-subpath-exports/index.spec.d.ts +0 -2
  301. package/dist/transforms/migrate-next-subpath-exports/index.spec.d.ts.map +0 -1
  302. package/dist/transforms/migrate-next-subpath-exports/index.spec.js +0 -46
  303. package/dist/transforms/migrate-next-subpath-exports/index.spec.js.map +0 -1
  304. package/dist/transforms/migrate-slug-field/index.spec.d.ts +0 -2
  305. package/dist/transforms/migrate-slug-field/index.spec.d.ts.map +0 -1
  306. package/dist/transforms/migrate-slug-field/index.spec.js +0 -47
  307. package/dist/transforms/migrate-slug-field/index.spec.js.map +0 -1
  308. package/dist/transforms/migrate-storage-adapters-to-config/index.spec.d.ts +0 -2
  309. package/dist/transforms/migrate-storage-adapters-to-config/index.spec.d.ts.map +0 -1
  310. package/dist/transforms/migrate-storage-adapters-to-config/index.spec.js +0 -85
  311. package/dist/transforms/migrate-storage-adapters-to-config/index.spec.js.map +0 -1
  312. package/dist/transforms/migrate-versions-default/index.spec.d.ts +0 -2
  313. package/dist/transforms/migrate-versions-default/index.spec.d.ts.map +0 -1
  314. package/dist/transforms/migrate-versions-default/index.spec.js +0 -81
  315. package/dist/transforms/migrate-versions-default/index.spec.js.map +0 -1
  316. package/dist/transforms/remove-group-by-true/index.spec.d.ts +0 -2
  317. package/dist/transforms/remove-group-by-true/index.spec.d.ts.map +0 -1
  318. package/dist/transforms/remove-group-by-true/index.spec.js +0 -47
  319. package/dist/transforms/remove-group-by-true/index.spec.js.map +0 -1
  320. package/dist/transforms/remove-localize-status-config/index.spec.d.ts +0 -2
  321. package/dist/transforms/remove-localize-status-config/index.spec.d.ts.map +0 -1
  322. package/dist/transforms/remove-localize-status-config/index.spec.js +0 -38
  323. package/dist/transforms/remove-localize-status-config/index.spec.js.map +0 -1
  324. package/dist/transforms/remove-publish-specific-locale/index.spec.d.ts +0 -2
  325. package/dist/transforms/remove-publish-specific-locale/index.spec.d.ts.map +0 -1
  326. package/dist/transforms/remove-publish-specific-locale/index.spec.js +0 -47
  327. package/dist/transforms/remove-publish-specific-locale/index.spec.js.map +0 -1
  328. package/dist/transforms/remove-versions-true/index.spec.d.ts +0 -2
  329. package/dist/transforms/remove-versions-true/index.spec.d.ts.map +0 -1
  330. package/dist/transforms/remove-versions-true/index.spec.js +0 -38
  331. package/dist/transforms/remove-versions-true/index.spec.js.map +0 -1
  332. package/dist/transforms/rename-storage-adapters-to-storage/index.spec.d.ts +0 -2
  333. package/dist/transforms/rename-storage-adapters-to-storage/index.spec.d.ts.map +0 -1
  334. package/dist/transforms/rename-storage-adapters-to-storage/index.spec.js +0 -55
  335. package/dist/transforms/rename-storage-adapters-to-storage/index.spec.js.map +0 -1
  336. package/dist/transforms/rename-typescript-schema-to-json-schema/index.spec.d.ts +0 -2
  337. package/dist/transforms/rename-typescript-schema-to-json-schema/index.spec.d.ts.map +0 -1
  338. package/dist/transforms/rename-typescript-schema-to-json-schema/index.spec.js +0 -45
  339. package/dist/transforms/rename-typescript-schema-to-json-schema/index.spec.js.map +0 -1
  340. package/dist/upgrade/detectPackageManager.spec.d.ts +0 -2
  341. package/dist/upgrade/detectPackageManager.spec.d.ts.map +0 -1
  342. package/dist/upgrade/detectPackageManager.spec.js +0 -41
  343. package/dist/upgrade/detectPackageManager.spec.js.map +0 -1
  344. package/dist/upgrade/index.spec.d.ts +0 -2
  345. package/dist/upgrade/index.spec.d.ts.map +0 -1
  346. package/dist/upgrade/index.spec.js +0 -132
  347. package/dist/upgrade/index.spec.js.map +0 -1
  348. package/dist/upgrade/packaging.spec.d.ts +0 -2
  349. package/dist/upgrade/packaging.spec.d.ts.map +0 -1
  350. package/dist/upgrade/packaging.spec.js +0 -29
  351. package/dist/upgrade/packaging.spec.js.map +0 -1
  352. package/dist/upgrade/prompt.spec.d.ts +0 -2
  353. package/dist/upgrade/prompt.spec.d.ts.map +0 -1
  354. package/dist/upgrade/prompt.spec.js +0 -51
  355. package/dist/upgrade/prompt.spec.js.map +0 -1
  356. package/dist/upgrade/report.spec.d.ts +0 -2
  357. package/dist/upgrade/report.spec.d.ts.map +0 -1
  358. package/dist/upgrade/report.spec.js +0 -87
  359. package/dist/upgrade/report.spec.js.map +0 -1
  360. package/dist/upgrade/resolveVersions.spec.d.ts +0 -2
  361. package/dist/upgrade/resolveVersions.spec.d.ts.map +0 -1
  362. package/dist/upgrade/resolveVersions.spec.js +0 -82
  363. package/dist/upgrade/resolveVersions.spec.js.map +0 -1
  364. package/dist/upgrade/rewritePackageJson.spec.d.ts +0 -2
  365. package/dist/upgrade/rewritePackageJson.spec.d.ts.map +0 -1
  366. package/dist/upgrade/rewritePackageJson.spec.js +0 -108
  367. package/dist/upgrade/rewritePackageJson.spec.js.map +0 -1
  368. package/dist/upgrade/runInstall.spec.d.ts +0 -2
  369. package/dist/upgrade/runInstall.spec.d.ts.map +0 -1
  370. package/dist/upgrade/runInstall.spec.js +0 -48
  371. package/dist/upgrade/runInstall.spec.js.map +0 -1
  372. package/dist/utils/packageJson.spec.d.ts +0 -2
  373. package/dist/utils/packageJson.spec.d.ts.map +0 -1
  374. package/dist/utils/packageJson.spec.js +0 -41
  375. package/dist/utils/packageJson.spec.js.map +0 -1
@@ -2,45 +2,62 @@ const DEP_FIELDS = [
2
2
  'dependencies',
3
3
  'devDependencies'
4
4
  ];
5
+ /** Any protocol-prefixed specifier (`workspace:*`, `catalog:`, `link:`, `file:`, `npm:`, a URL). */ const PLACEHOLDER_SPEC = /^[a-z][a-z0-9+.-]*:/i;
5
6
  export const isPayloadPackage = (name)=>name === 'payload' || name.startsWith('@payloadcms/');
6
7
  /**
7
8
  * The `@payloadcms/eslint-*` packages are versioned independently of the core
8
9
  * payload packages, so they are tracked on `latest` rather than lockstep-pinned.
9
10
  */ export const isPayloadEslintPackage = (name)=>name.startsWith('@payloadcms/eslint');
11
+ /**
12
+ * A dependency whose version is resolved by the package manager, not a semver
13
+ * range: `workspace:*`, `catalog:`, `link:`, `file:`, `npm:` aliases, URLs.
14
+ * Overwriting one with an exact version would break the link, so it is left as-is.
15
+ */ export const isPlaceholderSpec = (spec)=>typeof spec === 'string' && PLACEHOLDER_SPEC.test(spec);
10
16
  /**
11
17
  * Mutate `data` in place for a v4 upgrade: exact-pin payload packages, drop
12
18
  * payload dependency overrides, and write the toolchain floors. Never touches
13
19
  * next/react — the Next.js upgrade is delegated to Next's own workflow.
14
20
  * Returns a summary for the report. Idempotent.
15
21
  */ export function rewritePackageJson({ data, resolved }) {
16
- const pinnedPayload = pinPayloadPackages(data, resolved.payloadVersion);
22
+ const { pinnedPayload, placeholdersSkipped } = pinPayloadPackages(data, resolved.payloadVersion);
17
23
  const overridesRemoved = removePayloadOverrides(data);
18
24
  const floorsWritten = writeFloors(data, resolved);
19
25
  return {
20
26
  floorsWritten,
21
27
  overridesRemoved,
22
- pinnedPayload
28
+ pinnedPayload,
29
+ placeholdersSkipped
23
30
  };
24
31
  }
25
32
  function pinPayloadPackages(data, version) {
26
33
  const pinned = [];
34
+ const skipped = [];
27
35
  for (const field of DEP_FIELDS){
28
36
  const deps = data[field];
29
37
  if (!isRecord(deps)) {
30
38
  continue;
31
39
  }
32
40
  for (const name of Object.keys(deps)){
41
+ if (!isPayloadPackage(name)) {
42
+ continue;
43
+ }
44
+ // A workspace/catalog/link spec resolves itself; pinning it breaks the link.
45
+ if (isPlaceholderSpec(deps[name])) {
46
+ skipped.push(name);
47
+ continue;
48
+ }
33
49
  if (isPayloadEslintPackage(name)) {
34
50
  deps[name] = 'latest';
35
51
  continue;
36
52
  }
37
- if (isPayloadPackage(name)) {
38
- deps[name] = version;
39
- pinned.push(name);
40
- }
53
+ deps[name] = version;
54
+ pinned.push(name);
41
55
  }
42
56
  }
43
- return pinned;
57
+ return {
58
+ pinnedPayload: pinned,
59
+ placeholdersSkipped: skipped
60
+ };
44
61
  }
45
62
  function removePayloadOverrides(data) {
46
63
  const removed = [];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/upgrade/rewritePackageJson.ts"],"sourcesContent":["import 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}\n\nconst DEP_FIELDS = ['dependencies', 'devDependencies'] as const\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 * 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 = pinPayloadPackages(data, resolved.payloadVersion)\n const overridesRemoved = removePayloadOverrides(data)\n const floorsWritten = writeFloors(data, resolved)\n return { floorsWritten, overridesRemoved, pinnedPayload }\n}\n\nfunction pinPayloadPackages(data: Record<string, unknown>, version: string): string[] {\n const pinned: 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 (isPayloadEslintPackage(name)) {\n deps[name] = 'latest'\n continue\n }\n if (isPayloadPackage(name)) {\n deps[name] = version\n pinned.push(name)\n }\n }\n }\n return pinned\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 pinDep(data, 'typescript', resolved.typescript)\n pinDep(data, '@types/node', resolved.typesNode)\n written.push('typescript', '@types/node')\n\n const engines = isRecord(data.engines) ? data.engines : {}\n engines.node = resolved.enginesNode\n data.engines = engines\n written.push('engines.node')\n\n return written\n}\n\n/** Update a dep wherever it already lives, else add it to devDependencies. */\nfunction pinDep(data: Record<string, unknown>, name: string, version: string): void {\n for (const field of DEP_FIELDS) {\n const deps = data[field]\n if (isRecord(deps) && name in deps) {\n deps[name] = version\n return\n }\n }\n const devDeps = isRecord(data.devDependencies) ? data.devDependencies : {}\n devDeps[name] = version\n data.devDependencies = devDeps\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n"],"names":["DEP_FIELDS","isPayloadPackage","name","startsWith","isPayloadEslintPackage","rewritePackageJson","data","resolved","pinnedPayload","pinPayloadPackages","payloadVersion","overridesRemoved","removePayloadOverrides","floorsWritten","writeFloors","version","pinned","field","deps","isRecord","Object","keys","push","removed","pnpm","overrides","pruneOverrideBlock","length","key","block","label","written","pinDep","typescript","typesNode","engines","node","enginesNode","devDeps","devDependencies","value","Array","isArray"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/upgrade/rewritePackageJson.ts"],"sourcesContent":["import 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 pinDep(data, 'typescript', resolved.typescript)\n pinDep(data, '@types/node', resolved.typesNode)\n written.push('typescript', '@types/node')\n\n const engines = isRecord(data.engines) ? data.engines : {}\n engines.node = resolved.enginesNode\n data.engines = engines\n written.push('engines.node')\n\n return written\n}\n\n/** Update a dep wherever it already lives, else add it to devDependencies. */\nfunction pinDep(data: Record<string, unknown>, name: string, version: string): void {\n for (const field of DEP_FIELDS) {\n const deps = data[field]\n if (isRecord(deps) && name in deps) {\n deps[name] = version\n return\n }\n }\n const devDeps = isRecord(data.devDependencies) ? data.devDependencies : {}\n devDeps[name] = version\n data.devDependencies = devDeps\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n"],"names":["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","pinDep","typescript","typesNode","engines","node","enginesNode","devDeps","devDependencies","value","Array","isArray"],"mappings":"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"}
@@ -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"}
@@ -39,4 +39,9 @@ export type UpgradeDeps = {
39
39
  export declare const TS_FLOOR = "6.0.3";
40
40
  /** Path (relative to dist/) of the bundled runbook the command points users to. */
41
41
  export declare const RUNBOOK_RELATIVE_PATH = "runbook/payload-v4-upgrade.md";
42
+ /**
43
+ * Path (relative to dist/) of the bundled migration guide. Present only when the
44
+ * monorepo copy was available at build time; the report points at it when it exists.
45
+ */
46
+ export declare const MIGRATION_GUIDE_RELATIVE_PATH = "runbook/v4.mdx";
42
47
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/upgrade/types.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,QAAQ,CAAC,EAAE,MAAM,CACf,MAAM,EACN;QACE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAC1C,CACF,CAAA;CACF,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAE/E,MAAM,MAAM,KAAK,GAAG,CAClB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;CAAE,KAC7C,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAE9B,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAA;AAE5D,kFAAkF;AAClF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB,qFAAqF;IACrF,UAAU,EAAE,IAAI,GAAG,MAAM,CAAA;IACzB,0EAA0E;IAC1E,cAAc,EAAE,MAAM,CAAA;IACtB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAA;IAClB,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;IACjC,aAAa,EAAE,aAAa,CAAA;IAC5B,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,UAAU,CAAA;AAE/B,mFAAmF;AACnF,eAAO,MAAM,qBAAqB,kCAAkC,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/upgrade/types.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,QAAQ,CAAC,EAAE,MAAM,CACf,MAAM,EACN;QACE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAC1C,CACF,CAAA;CACF,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAE/E,MAAM,MAAM,KAAK,GAAG,CAClB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;CAAE,KAC7C,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAE9B,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAA;AAE5D,kFAAkF;AAClF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB,qFAAqF;IACrF,UAAU,EAAE,IAAI,GAAG,MAAM,CAAA;IACzB,0EAA0E;IAC1E,cAAc,EAAE,MAAM,CAAA;IACtB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAA;IAClB,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;IACjC,aAAa,EAAE,aAAa,CAAA;IAC5B,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,UAAU,CAAA;AAE/B,mFAAmF;AACnF,eAAO,MAAM,qBAAqB,kCAAkC,CAAA;AAEpE;;;GAGG;AACH,eAAO,MAAM,6BAA6B,mBAAmB,CAAA"}
@@ -3,5 +3,9 @@
3
3
  * lives here, sourced from the v4 migration guide prose. Bump alongside the guide.
4
4
  */ export const TS_FLOOR = '6.0.3';
5
5
  /** Path (relative to dist/) of the bundled runbook the command points users to. */ export const RUNBOOK_RELATIVE_PATH = 'runbook/payload-v4-upgrade.md';
6
+ /**
7
+ * Path (relative to dist/) of the bundled migration guide. Present only when the
8
+ * monorepo copy was available at build time; the report points at it when it exists.
9
+ */ export const MIGRATION_GUIDE_RELATIVE_PATH = 'runbook/v4.mdx';
6
10
 
7
11
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/upgrade/types.ts"],"sourcesContent":["/** Minimal shape of an npm registry packument we read. */\nexport type RegistryPackument = {\n 'dist-tags'?: Record<string, string>\n versions?: Record<\n string,\n {\n engines?: Record<string, string>\n peerDependencies?: Record<string, string>\n }\n >\n}\n\nexport type FetchRegistry = (packageName: string) => Promise<RegistryPackument>\n\nexport type Spawn = (\n command: string,\n args: string[],\n options: { cwd: string; env: NodeJS.ProcessEnv },\n) => Promise<{ code: number }>\n\nexport type PackageManager = 'bun' | 'npm' | 'pnpm' | 'yarn'\n\n/** Target versions the command resolves. Only some are written; see `written`. */\nexport type ResolvedVersions = {\n /** Copied verbatim into engines.node. */\n enginesNode: string\n /** Newest patch within @payloadcms/next's peer range. REPORT ONLY, never written. */\n nextTarget: null | string\n /** Exact canary, applied in lockstep to payload + every @payloadcms/*. */\n payloadVersion: string\n /** TypeScript floor (guide-sourced constant). */\n typescript: string\n /** Newest @types/node patch within the Node major. */\n typesNode: string\n}\n\nexport type UpgradeDeps = {\n exists: (path: string) => boolean\n fetchRegistry: FetchRegistry\n spawn: Spawn\n}\n\n/**\n * TypeScript floor for Payload v4. Nothing machine-readable declares it, so it\n * lives here, sourced from the v4 migration guide prose. Bump alongside the guide.\n */\nexport const TS_FLOOR = '6.0.3'\n\n/** Path (relative to dist/) of the bundled runbook the command points users to. */\nexport const RUNBOOK_RELATIVE_PATH = 'runbook/payload-v4-upgrade.md'\n"],"names":["TS_FLOOR","RUNBOOK_RELATIVE_PATH"],"mappings":"AAAA,wDAAwD,GA0CxD;;;CAGC,GACD,OAAO,MAAMA,WAAW,QAAO;AAE/B,iFAAiF,GACjF,OAAO,MAAMC,wBAAwB,gCAA+B"}
1
+ {"version":3,"sources":["../../src/upgrade/types.ts"],"sourcesContent":["/** Minimal shape of an npm registry packument we read. */\nexport type RegistryPackument = {\n 'dist-tags'?: Record<string, string>\n versions?: Record<\n string,\n {\n engines?: Record<string, string>\n peerDependencies?: Record<string, string>\n }\n >\n}\n\nexport type FetchRegistry = (packageName: string) => Promise<RegistryPackument>\n\nexport type Spawn = (\n command: string,\n args: string[],\n options: { cwd: string; env: NodeJS.ProcessEnv },\n) => Promise<{ code: number }>\n\nexport type PackageManager = 'bun' | 'npm' | 'pnpm' | 'yarn'\n\n/** Target versions the command resolves. Only some are written; see `written`. */\nexport type ResolvedVersions = {\n /** Copied verbatim into engines.node. */\n enginesNode: string\n /** Newest patch within @payloadcms/next's peer range. REPORT ONLY, never written. */\n nextTarget: null | string\n /** Exact canary, applied in lockstep to payload + every @payloadcms/*. */\n payloadVersion: string\n /** TypeScript floor (guide-sourced constant). */\n typescript: string\n /** Newest @types/node patch within the Node major. */\n typesNode: string\n}\n\nexport type UpgradeDeps = {\n exists: (path: string) => boolean\n fetchRegistry: FetchRegistry\n spawn: Spawn\n}\n\n/**\n * TypeScript floor for Payload v4. Nothing machine-readable declares it, so it\n * lives here, sourced from the v4 migration guide prose. Bump alongside the guide.\n */\nexport const TS_FLOOR = '6.0.3'\n\n/** Path (relative to dist/) of the bundled runbook the command points users to. */\nexport const RUNBOOK_RELATIVE_PATH = 'runbook/payload-v4-upgrade.md'\n\n/**\n * Path (relative to dist/) of the bundled migration guide. Present only when the\n * monorepo copy was available at build time; the report points at it when it exists.\n */\nexport const MIGRATION_GUIDE_RELATIVE_PATH = 'runbook/v4.mdx'\n"],"names":["TS_FLOOR","RUNBOOK_RELATIVE_PATH","MIGRATION_GUIDE_RELATIVE_PATH"],"mappings":"AAAA,wDAAwD,GA0CxD;;;CAGC,GACD,OAAO,MAAMA,WAAW,QAAO;AAE/B,iFAAiF,GACjF,OAAO,MAAMC,wBAAwB,gCAA+B;AAEpE;;;CAGC,GACD,OAAO,MAAMC,gCAAgC,iBAAgB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/codemod",
3
- "version": "4.0.0-internal.2f0d313",
3
+ "version": "4.0.0-internal.31ba7ee",
4
4
  "description": "Codemods for migrating Payload projects across versions.",
5
5
  "homepage": "https://payloadcms.com",
6
6
  "repository": {
@@ -29,6 +29,7 @@
29
29
  "README.md"
30
30
  ],
31
31
  "dependencies": {
32
+ "@clack/prompts": "1.2.0",
32
33
  "semver": "^7.8.5",
33
34
  "ts-morph": "^21.0.1"
34
35
  },
@@ -37,8 +38,8 @@
37
38
  "@types/node": "24.12.3",
38
39
  "@types/semver": "^7.7.1",
39
40
  "rimraf": "6.0.1",
40
- "typescript": "6.0.3",
41
- "vitest": "4.1.6"
41
+ "typescript": "npm:@typescript/typescript6@6.0.2",
42
+ "vitest": "5.0.1"
42
43
  },
43
44
  "engines": {
44
45
  "node": ">=24.15.0"
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=cli.parseFlags.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.parseFlags.spec.d.ts","sourceRoot":"","sources":["../src/cli.parseFlags.spec.ts"],"names":[],"mappings":""}
@@ -1,121 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { parseFlags } from './cli.parseFlags.js';
3
- describe('parseFlags', ()=>{
4
- it('defaults path to cwd when no positional arg is given', ()=>{
5
- expect(parseFlags([])).toEqual({
6
- command: undefined,
7
- dry: false,
8
- emitPrompt: false,
9
- force: false,
10
- list: false,
11
- path: process.cwd(),
12
- print: false,
13
- tag: undefined,
14
- transform: undefined
15
- });
16
- });
17
- it('reads positional path', ()=>{
18
- expect(parseFlags([
19
- './src'
20
- ]).path).toBe('./src');
21
- });
22
- it('parses flags', ()=>{
23
- expect(parseFlags([
24
- './src',
25
- '--dry',
26
- '--print'
27
- ])).toMatchObject({
28
- dry: true,
29
- path: './src',
30
- print: true
31
- });
32
- });
33
- it('parses --transform', ()=>{
34
- expect(parseFlags([
35
- '--transform',
36
- 'rename-slate-export'
37
- ])).toMatchObject({
38
- transform: 'rename-slate-export'
39
- });
40
- });
41
- it('parses --list', ()=>{
42
- expect(parseFlags([
43
- '--list'
44
- ]).list).toBe(true);
45
- });
46
- it('treats --dry-run as an alias for --dry', ()=>{
47
- expect(parseFlags([
48
- '--dry-run'
49
- ]).dry).toBe(true);
50
- });
51
- it('parses the upgrade subcommand with default path', ()=>{
52
- expect(parseFlags([
53
- 'upgrade'
54
- ])).toMatchObject({
55
- command: 'upgrade',
56
- path: process.cwd()
57
- });
58
- });
59
- it('parses upgrade with path, tag, force, and dry', ()=>{
60
- expect(parseFlags([
61
- 'upgrade',
62
- './app',
63
- '--tag',
64
- 'latest',
65
- '--force',
66
- '--dry'
67
- ])).toMatchObject({
68
- command: 'upgrade',
69
- dry: true,
70
- force: true,
71
- path: './app',
72
- tag: 'latest'
73
- });
74
- });
75
- it('parses `upgrade prompt` with default path', ()=>{
76
- expect(parseFlags([
77
- 'upgrade',
78
- 'prompt'
79
- ])).toMatchObject({
80
- command: 'upgrade',
81
- emitPrompt: true,
82
- path: process.cwd()
83
- });
84
- });
85
- it('parses `upgrade prompt <path>` with tag', ()=>{
86
- expect(parseFlags([
87
- 'upgrade',
88
- 'prompt',
89
- './app',
90
- '--tag',
91
- 'latest'
92
- ])).toMatchObject({
93
- command: 'upgrade',
94
- emitPrompt: true,
95
- path: './app',
96
- tag: 'latest'
97
- });
98
- });
99
- it('leaves emitPrompt false for a plain upgrade run', ()=>{
100
- expect(parseFlags([
101
- 'upgrade',
102
- './app'
103
- ])).toMatchObject({
104
- command: 'upgrade',
105
- emitPrompt: false,
106
- path: './app'
107
- });
108
- });
109
- it('leaves command undefined for a bare path invocation', ()=>{
110
- expect(parseFlags([
111
- './src',
112
- '--dry'
113
- ])).toMatchObject({
114
- command: undefined,
115
- dry: true,
116
- path: './src'
117
- });
118
- });
119
- });
120
-
121
- //# sourceMappingURL=cli.parseFlags.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli.parseFlags.spec.ts"],"sourcesContent":["import { describe, expect, it } from 'vitest'\n\nimport { parseFlags } from './cli.parseFlags.js'\n\ndescribe('parseFlags', () => {\n it('defaults path to cwd when no positional arg is given', () => {\n expect(parseFlags([])).toEqual({\n command: undefined,\n dry: false,\n emitPrompt: false,\n force: false,\n list: false,\n path: process.cwd(),\n print: false,\n tag: undefined,\n transform: undefined,\n })\n })\n\n it('reads positional path', () => {\n expect(parseFlags(['./src']).path).toBe('./src')\n })\n\n it('parses flags', () => {\n expect(parseFlags(['./src', '--dry', '--print'])).toMatchObject({\n dry: true,\n path: './src',\n print: true,\n })\n })\n\n it('parses --transform', () => {\n expect(parseFlags(['--transform', 'rename-slate-export'])).toMatchObject({\n transform: 'rename-slate-export',\n })\n })\n\n it('parses --list', () => {\n expect(parseFlags(['--list']).list).toBe(true)\n })\n\n it('treats --dry-run as an alias for --dry', () => {\n expect(parseFlags(['--dry-run']).dry).toBe(true)\n })\n\n it('parses the upgrade subcommand with default path', () => {\n expect(parseFlags(['upgrade'])).toMatchObject({\n command: 'upgrade',\n path: process.cwd(),\n })\n })\n\n it('parses upgrade with path, tag, force, and dry', () => {\n expect(parseFlags(['upgrade', './app', '--tag', 'latest', '--force', '--dry'])).toMatchObject({\n command: 'upgrade',\n dry: true,\n force: true,\n path: './app',\n tag: 'latest',\n })\n })\n\n it('parses `upgrade prompt` with default path', () => {\n expect(parseFlags(['upgrade', 'prompt'])).toMatchObject({\n command: 'upgrade',\n emitPrompt: true,\n path: process.cwd(),\n })\n })\n\n it('parses `upgrade prompt <path>` with tag', () => {\n expect(parseFlags(['upgrade', 'prompt', './app', '--tag', 'latest'])).toMatchObject({\n command: 'upgrade',\n emitPrompt: true,\n path: './app',\n tag: 'latest',\n })\n })\n\n it('leaves emitPrompt false for a plain upgrade run', () => {\n expect(parseFlags(['upgrade', './app'])).toMatchObject({\n command: 'upgrade',\n emitPrompt: false,\n path: './app',\n })\n })\n\n it('leaves command undefined for a bare path invocation', () => {\n expect(parseFlags(['./src', '--dry'])).toMatchObject({\n command: undefined,\n dry: true,\n path: './src',\n })\n })\n})\n"],"names":["describe","expect","it","parseFlags","toEqual","command","undefined","dry","emitPrompt","force","list","path","process","cwd","print","tag","transform","toBe","toMatchObject"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAQ;AAE7C,SAASC,UAAU,QAAQ,sBAAqB;AAEhDH,SAAS,cAAc;IACrBE,GAAG,wDAAwD;QACzDD,OAAOE,WAAW,EAAE,GAAGC,OAAO,CAAC;YAC7BC,SAASC;YACTC,KAAK;YACLC,YAAY;YACZC,OAAO;YACPC,MAAM;YACNC,MAAMC,QAAQC,GAAG;YACjBC,OAAO;YACPC,KAAKT;YACLU,WAAWV;QACb;IACF;IAEAJ,GAAG,yBAAyB;QAC1BD,OAAOE,WAAW;YAAC;SAAQ,EAAEQ,IAAI,EAAEM,IAAI,CAAC;IAC1C;IAEAf,GAAG,gBAAgB;QACjBD,OAAOE,WAAW;YAAC;YAAS;YAAS;SAAU,GAAGe,aAAa,CAAC;YAC9DX,KAAK;YACLI,MAAM;YACNG,OAAO;QACT;IACF;IAEAZ,GAAG,sBAAsB;QACvBD,OAAOE,WAAW;YAAC;YAAe;SAAsB,GAAGe,aAAa,CAAC;YACvEF,WAAW;QACb;IACF;IAEAd,GAAG,iBAAiB;QAClBD,OAAOE,WAAW;YAAC;SAAS,EAAEO,IAAI,EAAEO,IAAI,CAAC;IAC3C;IAEAf,GAAG,0CAA0C;QAC3CD,OAAOE,WAAW;YAAC;SAAY,EAAEI,GAAG,EAAEU,IAAI,CAAC;IAC7C;IAEAf,GAAG,mDAAmD;QACpDD,OAAOE,WAAW;YAAC;SAAU,GAAGe,aAAa,CAAC;YAC5Cb,SAAS;YACTM,MAAMC,QAAQC,GAAG;QACnB;IACF;IAEAX,GAAG,iDAAiD;QAClDD,OAAOE,WAAW;YAAC;YAAW;YAAS;YAAS;YAAU;YAAW;SAAQ,GAAGe,aAAa,CAAC;YAC5Fb,SAAS;YACTE,KAAK;YACLE,OAAO;YACPE,MAAM;YACNI,KAAK;QACP;IACF;IAEAb,GAAG,6CAA6C;QAC9CD,OAAOE,WAAW;YAAC;YAAW;SAAS,GAAGe,aAAa,CAAC;YACtDb,SAAS;YACTG,YAAY;YACZG,MAAMC,QAAQC,GAAG;QACnB;IACF;IAEAX,GAAG,2CAA2C;QAC5CD,OAAOE,WAAW;YAAC;YAAW;YAAU;YAAS;YAAS;SAAS,GAAGe,aAAa,CAAC;YAClFb,SAAS;YACTG,YAAY;YACZG,MAAM;YACNI,KAAK;QACP;IACF;IAEAb,GAAG,mDAAmD;QACpDD,OAAOE,WAAW;YAAC;YAAW;SAAQ,GAAGe,aAAa,CAAC;YACrDb,SAAS;YACTG,YAAY;YACZG,MAAM;QACR;IACF;IAEAT,GAAG,uDAAuD;QACxDD,OAAOE,WAAW;YAAC;YAAS;SAAQ,GAAGe,aAAa,CAAC;YACnDb,SAASC;YACTC,KAAK;YACLI,MAAM;QACR;IACF;AACF"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=runner.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner.spec.d.ts","sourceRoot":"","sources":["../src/runner.spec.ts"],"names":[],"mappings":""}
@@ -1,88 +0,0 @@
1
- import { Project } from 'ts-morph';
2
- import { describe, expect, it } from 'vitest';
3
- import { runTransforms } from './runner.js';
4
- function makeProject(files) {
5
- const project = new Project({
6
- useInMemoryFileSystem: true
7
- });
8
- for (const [path, contents] of Object.entries(files)){
9
- project.createSourceFile(path, contents);
10
- }
11
- return project;
12
- }
13
- describe('runTransforms', ()=>{
14
- it('applies each transform in order and aggregates results', async ()=>{
15
- const project = makeProject({
16
- 'a.ts': 'export const a = 1'
17
- });
18
- const t1 = {
19
- name: 't1',
20
- apply: ()=>({
21
- filesChanged: [
22
- 'a.ts'
23
- ]
24
- }),
25
- description: ''
26
- };
27
- const t2 = {
28
- name: 't2',
29
- apply: ()=>({
30
- filesChanged: [],
31
- notes: [
32
- 'nothing to do'
33
- ]
34
- }),
35
- description: ''
36
- };
37
- const result = await runTransforms({
38
- project,
39
- transforms: [
40
- t1,
41
- t2
42
- ]
43
- });
44
- expect(result.results.map((r)=>r.name)).toEqual([
45
- 't1',
46
- 't2'
47
- ]);
48
- expect(result.results[0].filesChanged).toEqual([
49
- 'a.ts'
50
- ]);
51
- expect(result.failed).toBe(false);
52
- });
53
- it('continues past a throwing transform and marks the run failed', async ()=>{
54
- const project = makeProject({
55
- 'a.ts': 'export const a = 1'
56
- });
57
- const boom = {
58
- name: 'boom',
59
- apply: ()=>{
60
- throw new Error('kaboom');
61
- },
62
- description: ''
63
- };
64
- const ok = {
65
- name: 'ok',
66
- apply: ()=>({
67
- filesChanged: []
68
- }),
69
- description: ''
70
- };
71
- const result = await runTransforms({
72
- project,
73
- transforms: [
74
- boom,
75
- ok
76
- ]
77
- });
78
- expect(result.failed).toBe(true);
79
- expect(result.results.map((r)=>r.name)).toEqual([
80
- 'boom',
81
- 'ok'
82
- ]);
83
- expect(result.results[0].error).toBeInstanceOf(Error);
84
- expect(result.results[1].error).toBeUndefined();
85
- });
86
- });
87
-
88
- //# sourceMappingURL=runner.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/runner.spec.ts"],"sourcesContent":["import { Project } from 'ts-morph'\nimport { describe, expect, it } from 'vitest'\n\nimport type { Transform } from './types.js'\n\nimport { runTransforms } from './runner.js'\n\nfunction makeProject(files: Record<string, string>): Project {\n const project = new Project({ useInMemoryFileSystem: true })\n for (const [path, contents] of Object.entries(files)) {\n project.createSourceFile(path, contents)\n }\n return project\n}\n\ndescribe('runTransforms', () => {\n it('applies each transform in order and aggregates results', async () => {\n const project = makeProject({ 'a.ts': 'export const a = 1' })\n\n const t1: Transform = {\n name: 't1',\n apply: () => ({ filesChanged: ['a.ts'] }),\n description: '',\n }\n const t2: Transform = {\n name: 't2',\n apply: () => ({ filesChanged: [], notes: ['nothing to do'] }),\n description: '',\n }\n\n const result = await runTransforms({\n project,\n transforms: [t1, t2],\n })\n\n expect(result.results.map((r) => r.name)).toEqual(['t1', 't2'])\n expect(result.results[0]!.filesChanged).toEqual(['a.ts'])\n expect(result.failed).toBe(false)\n })\n\n it('continues past a throwing transform and marks the run failed', async () => {\n const project = makeProject({ 'a.ts': 'export const a = 1' })\n\n const boom: Transform = {\n name: 'boom',\n apply: () => {\n throw new Error('kaboom')\n },\n description: '',\n }\n const ok: Transform = {\n name: 'ok',\n apply: () => ({ filesChanged: [] }),\n description: '',\n }\n\n const result = await runTransforms({\n project,\n transforms: [boom, ok],\n })\n\n expect(result.failed).toBe(true)\n expect(result.results.map((r) => r.name)).toEqual(['boom', 'ok'])\n expect(result.results[0]!.error).toBeInstanceOf(Error)\n expect(result.results[1]!.error).toBeUndefined()\n })\n})\n"],"names":["Project","describe","expect","it","runTransforms","makeProject","files","project","useInMemoryFileSystem","path","contents","Object","entries","createSourceFile","t1","name","apply","filesChanged","description","t2","notes","result","transforms","results","map","r","toEqual","failed","toBe","boom","Error","ok","error","toBeInstanceOf","toBeUndefined"],"mappings":"AAAA,SAASA,OAAO,QAAQ,WAAU;AAClC,SAASC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAQ;AAI7C,SAASC,aAAa,QAAQ,cAAa;AAE3C,SAASC,YAAYC,KAA6B;IAChD,MAAMC,UAAU,IAAIP,QAAQ;QAAEQ,uBAAuB;IAAK;IAC1D,KAAK,MAAM,CAACC,MAAMC,SAAS,IAAIC,OAAOC,OAAO,CAACN,OAAQ;QACpDC,QAAQM,gBAAgB,CAACJ,MAAMC;IACjC;IACA,OAAOH;AACT;AAEAN,SAAS,iBAAiB;IACxBE,GAAG,0DAA0D;QAC3D,MAAMI,UAAUF,YAAY;YAAE,QAAQ;QAAqB;QAE3D,MAAMS,KAAgB;YACpBC,MAAM;YACNC,OAAO,IAAO,CAAA;oBAAEC,cAAc;wBAAC;qBAAO;gBAAC,CAAA;YACvCC,aAAa;QACf;QACA,MAAMC,KAAgB;YACpBJ,MAAM;YACNC,OAAO,IAAO,CAAA;oBAAEC,cAAc,EAAE;oBAAEG,OAAO;wBAAC;qBAAgB;gBAAC,CAAA;YAC3DF,aAAa;QACf;QAEA,MAAMG,SAAS,MAAMjB,cAAc;YACjCG;YACAe,YAAY;gBAACR;gBAAIK;aAAG;QACtB;QAEAjB,OAAOmB,OAAOE,OAAO,CAACC,GAAG,CAAC,CAACC,IAAMA,EAAEV,IAAI,GAAGW,OAAO,CAAC;YAAC;YAAM;SAAK;QAC9DxB,OAAOmB,OAAOE,OAAO,CAAC,EAAE,CAAEN,YAAY,EAAES,OAAO,CAAC;YAAC;SAAO;QACxDxB,OAAOmB,OAAOM,MAAM,EAAEC,IAAI,CAAC;IAC7B;IAEAzB,GAAG,gEAAgE;QACjE,MAAMI,UAAUF,YAAY;YAAE,QAAQ;QAAqB;QAE3D,MAAMwB,OAAkB;YACtBd,MAAM;YACNC,OAAO;gBACL,MAAM,IAAIc,MAAM;YAClB;YACAZ,aAAa;QACf;QACA,MAAMa,KAAgB;YACpBhB,MAAM;YACNC,OAAO,IAAO,CAAA;oBAAEC,cAAc,EAAE;gBAAC,CAAA;YACjCC,aAAa;QACf;QAEA,MAAMG,SAAS,MAAMjB,cAAc;YACjCG;YACAe,YAAY;gBAACO;gBAAME;aAAG;QACxB;QAEA7B,OAAOmB,OAAOM,MAAM,EAAEC,IAAI,CAAC;QAC3B1B,OAAOmB,OAAOE,OAAO,CAACC,GAAG,CAAC,CAACC,IAAMA,EAAEV,IAAI,GAAGW,OAAO,CAAC;YAAC;YAAQ;SAAK;QAChExB,OAAOmB,OAAOE,OAAO,CAAC,EAAE,CAAES,KAAK,EAAEC,cAAc,CAACH;QAChD5B,OAAOmB,OAAOE,OAAO,CAAC,EAAE,CAAES,KAAK,EAAEE,aAAa;IAChD;AACF"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.spec.d.ts","sourceRoot":"","sources":["../../../src/transforms/example-noop/index.spec.ts"],"names":[],"mappings":""}
@@ -1,29 +0,0 @@
1
- import { readFile } from 'node:fs/promises';
2
- import { dirname, join } from 'node:path';
3
- import { fileURLToPath } from 'node:url';
4
- import { describe, expect, it } from 'vitest';
5
- import { runTransform } from '../../utils/test-helpers.js';
6
- import { exampleNoop } from './index.js';
7
- const here = dirname(fileURLToPath(import.meta.url));
8
- const fixture = (name)=>readFile(join(here, name), 'utf8');
9
- describe('example-noop', ()=>{
10
- it('leaves matching input unchanged', async ()=>{
11
- const input = await fixture('basic.input.ts');
12
- const output = await fixture('basic.output.ts');
13
- const result = await runTransform({
14
- source: input,
15
- transform: exampleNoop
16
- });
17
- expect(result).toBe(output);
18
- });
19
- it('is idempotent', async ()=>{
20
- const output = await fixture('basic.output.ts');
21
- const result = await runTransform({
22
- source: output,
23
- transform: exampleNoop
24
- });
25
- expect(result).toBe(output);
26
- });
27
- });
28
-
29
- //# sourceMappingURL=index.spec.js.map