@payloadcms/codemod 4.0.0-canary.37 → 4.0.0-canary.38

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 (136) hide show
  1. package/README.md +6 -0
  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 +8 -0
  8. package/dist/cli.js.map +1 -1
  9. package/dist/cli.parseFlags.d.ts +1 -0
  10. package/dist/cli.parseFlags.d.ts.map +1 -1
  11. package/dist/cli.parseFlags.js +6 -0
  12. package/dist/cli.parseFlags.js.map +1 -1
  13. package/dist/registry.d.ts.map +1 -1
  14. package/dist/registry.js +8 -0
  15. package/dist/registry.js.map +1 -1
  16. package/dist/runbook/payload-v4-upgrade.md +2 -2
  17. package/dist/runbook/v4.mdx +304 -20
  18. package/dist/transforms/migrate-aliased-exports/index.d.ts.map +1 -1
  19. package/dist/transforms/migrate-aliased-exports/index.js +4 -2
  20. package/dist/transforms/migrate-aliased-exports/index.js.map +1 -1
  21. package/dist/transforms/migrate-aliased-exports/request.input.js +6 -0
  22. package/dist/transforms/migrate-aliased-exports/request.input.js.map +1 -0
  23. package/dist/transforms/migrate-aliased-exports/request.output.js +5 -0
  24. package/dist/transforms/migrate-aliased-exports/request.output.js.map +1 -0
  25. package/dist/transforms/migrate-authorship-default/already-set.input.js +15 -0
  26. package/dist/transforms/migrate-authorship-default/already-set.input.js.map +1 -0
  27. package/dist/transforms/migrate-authorship-default/already-set.output.js +15 -0
  28. package/dist/transforms/migrate-authorship-default/already-set.output.js.map +1 -0
  29. package/dist/transforms/migrate-authorship-default/basic.input.js +16 -0
  30. package/dist/transforms/migrate-authorship-default/basic.input.js.map +1 -0
  31. package/dist/transforms/migrate-authorship-default/basic.output.js +18 -0
  32. package/dist/transforms/migrate-authorship-default/basic.output.js.map +1 -0
  33. package/dist/transforms/migrate-authorship-default/build-config.input.js +32 -0
  34. package/dist/transforms/migrate-authorship-default/build-config.input.js.map +1 -0
  35. package/dist/transforms/migrate-authorship-default/build-config.output.js +35 -0
  36. package/dist/transforms/migrate-authorship-default/build-config.output.js.map +1 -0
  37. package/dist/transforms/migrate-authorship-default/globals.input.js +16 -0
  38. package/dist/transforms/migrate-authorship-default/globals.input.js.map +1 -0
  39. package/dist/transforms/migrate-authorship-default/globals.output.js +17 -0
  40. package/dist/transforms/migrate-authorship-default/globals.output.js.map +1 -0
  41. package/dist/transforms/migrate-authorship-default/index.d.ts +11 -0
  42. package/dist/transforms/migrate-authorship-default/index.d.ts.map +1 -0
  43. package/dist/transforms/migrate-authorship-default/index.js +141 -0
  44. package/dist/transforms/migrate-authorship-default/index.js.map +1 -0
  45. package/dist/transforms/migrate-authorship-default/non-matching.input.js +18 -0
  46. package/dist/transforms/migrate-authorship-default/non-matching.input.js.map +1 -0
  47. package/dist/transforms/migrate-authorship-default/non-matching.output.js +18 -0
  48. package/dist/transforms/migrate-authorship-default/non-matching.output.js.map +1 -0
  49. package/dist/transforms/migrate-authorship-default/satisfies.input.js +11 -0
  50. package/dist/transforms/migrate-authorship-default/satisfies.input.js.map +1 -0
  51. package/dist/transforms/migrate-authorship-default/satisfies.output.js +13 -0
  52. package/dist/transforms/migrate-authorship-default/satisfies.output.js.map +1 -0
  53. package/dist/transforms/migrate-field-component-types/basic.input.js +8 -0
  54. package/dist/transforms/migrate-field-component-types/basic.input.js.map +1 -0
  55. package/dist/transforms/migrate-field-component-types/basic.output.js +8 -0
  56. package/dist/transforms/migrate-field-component-types/basic.output.js.map +1 -0
  57. package/dist/transforms/migrate-field-component-types/index.d.ts +3 -0
  58. package/dist/transforms/migrate-field-component-types/index.d.ts.map +1 -0
  59. package/dist/transforms/migrate-field-component-types/index.js +620 -0
  60. package/dist/transforms/migrate-field-component-types/index.js.map +1 -0
  61. package/dist/transforms/migrate-payload-request-creation/aliases.input.js +8 -0
  62. package/dist/transforms/migrate-payload-request-creation/aliases.input.js.map +1 -0
  63. package/dist/transforms/migrate-payload-request-creation/aliases.output.js +31 -0
  64. package/dist/transforms/migrate-payload-request-creation/aliases.output.js.map +1 -0
  65. package/dist/transforms/migrate-payload-request-creation/collision.input.js +9 -0
  66. package/dist/transforms/migrate-payload-request-creation/collision.input.js.map +1 -0
  67. package/dist/transforms/migrate-payload-request-creation/comments.input.js +9 -0
  68. package/dist/transforms/migrate-payload-request-creation/comments.input.js.map +1 -0
  69. package/dist/transforms/migrate-payload-request-creation/comments.output.js +34 -0
  70. package/dist/transforms/migrate-payload-request-creation/comments.output.js.map +1 -0
  71. package/dist/transforms/migrate-payload-request-creation/empty.input.js +5 -0
  72. package/dist/transforms/migrate-payload-request-creation/empty.input.js.map +1 -0
  73. package/dist/transforms/migrate-payload-request-creation/empty.output.js +7 -0
  74. package/dist/transforms/migrate-payload-request-creation/empty.output.js.map +1 -0
  75. package/dist/transforms/migrate-payload-request-creation/evaluation-order.input.js +10 -0
  76. package/dist/transforms/migrate-payload-request-creation/evaluation-order.input.js.map +1 -0
  77. package/dist/transforms/migrate-payload-request-creation/expression.input.js +8 -0
  78. package/dist/transforms/migrate-payload-request-creation/expression.input.js.map +1 -0
  79. package/dist/transforms/migrate-payload-request-creation/expression.output.js +8 -0
  80. package/dist/transforms/migrate-payload-request-creation/expression.output.js.map +1 -0
  81. package/dist/transforms/migrate-payload-request-creation/getters.input.js +52 -0
  82. package/dist/transforms/migrate-payload-request-creation/getters.input.js.map +1 -0
  83. package/dist/transforms/migrate-payload-request-creation/index.d.ts +3 -0
  84. package/dist/transforms/migrate-payload-request-creation/index.d.ts.map +1 -0
  85. package/dist/transforms/migrate-payload-request-creation/index.js +236 -0
  86. package/dist/transforms/migrate-payload-request-creation/index.js.map +1 -0
  87. package/dist/transforms/migrate-payload-request-creation/internal.input.js +6 -0
  88. package/dist/transforms/migrate-payload-request-creation/internal.input.js.map +1 -0
  89. package/dist/transforms/migrate-payload-request-creation/internal.output.js +6 -0
  90. package/dist/transforms/migrate-payload-request-creation/internal.output.js.map +1 -0
  91. package/dist/transforms/migrate-payload-request-creation/non-matching.input.js +5 -0
  92. package/dist/transforms/migrate-payload-request-creation/non-matching.input.js.map +1 -0
  93. package/dist/transforms/migrate-payload-request-creation/populated.input.js +7 -0
  94. package/dist/transforms/migrate-payload-request-creation/populated.input.js.map +1 -0
  95. package/dist/transforms/migrate-payload-request-creation/populated.output.js +30 -0
  96. package/dist/transforms/migrate-payload-request-creation/populated.output.js.map +1 -0
  97. package/dist/transforms/migrate-payload-request-creation/shadowed.input.js +7 -0
  98. package/dist/transforms/migrate-payload-request-creation/shadowed.input.js.map +1 -0
  99. package/dist/transforms/migrate-payload-request-creation/shadowed.output.js +9 -0
  100. package/dist/transforms/migrate-payload-request-creation/shadowed.output.js.map +1 -0
  101. package/dist/transforms/migrate-payload-request-creation/shorthand.input.js +12 -0
  102. package/dist/transforms/migrate-payload-request-creation/shorthand.input.js.map +1 -0
  103. package/dist/transforms/migrate-payload-request-creation/shorthand.output.js +12 -0
  104. package/dist/transforms/migrate-payload-request-creation/shorthand.output.js.map +1 -0
  105. package/dist/transforms/migrate-payload-request-creation/unsupported.input.js +9 -0
  106. package/dist/transforms/migrate-payload-request-creation/unsupported.input.js.map +1 -0
  107. package/dist/transforms/migrate-sharp-to-transformer/basic.input.js +28 -0
  108. package/dist/transforms/migrate-sharp-to-transformer/basic.input.js.map +1 -0
  109. package/dist/transforms/migrate-sharp-to-transformer/basic.output.js +39 -0
  110. package/dist/transforms/migrate-sharp-to-transformer/basic.output.js.map +1 -0
  111. package/dist/transforms/migrate-sharp-to-transformer/existing-transformers.input.js +27 -0
  112. package/dist/transforms/migrate-sharp-to-transformer/existing-transformers.input.js.map +1 -0
  113. package/dist/transforms/migrate-sharp-to-transformer/existing-transformers.output.js +33 -0
  114. package/dist/transforms/migrate-sharp-to-transformer/existing-transformers.output.js.map +1 -0
  115. package/dist/transforms/migrate-sharp-to-transformer/index.d.ts +3 -0
  116. package/dist/transforms/migrate-sharp-to-transformer/index.d.ts.map +1 -0
  117. package/dist/transforms/migrate-sharp-to-transformer/index.js +430 -0
  118. package/dist/transforms/migrate-sharp-to-transformer/index.js.map +1 -0
  119. package/dist/transforms/migrate-sharp-to-transformer/no-match.input.js +11 -0
  120. package/dist/transforms/migrate-sharp-to-transformer/no-match.input.js.map +1 -0
  121. package/dist/transforms/migrate-sharp-to-transformer/no-match.output.js +11 -0
  122. package/dist/transforms/migrate-sharp-to-transformer/no-match.output.js.map +1 -0
  123. package/dist/transforms/remove-storage-always-insert-fields/index.d.ts.map +1 -1
  124. package/dist/transforms/remove-storage-always-insert-fields/index.js +4 -0
  125. package/dist/transforms/remove-storage-always-insert-fields/index.js.map +1 -1
  126. package/dist/transforms/rename-experimental-table-feature/index.d.ts.map +1 -1
  127. package/dist/transforms/rename-experimental-table-feature/index.js +7 -1
  128. package/dist/transforms/rename-experimental-table-feature/index.js.map +1 -1
  129. package/dist/upgrade/rewritePackageJson.d.ts.map +1 -1
  130. package/dist/upgrade/rewritePackageJson.js +52 -11
  131. package/dist/upgrade/rewritePackageJson.js.map +1 -1
  132. package/dist/utils/project.d.ts +7 -1
  133. package/dist/utils/project.d.ts.map +1 -1
  134. package/dist/utils/project.js +20 -7
  135. package/dist/utils/project.js.map +1 -1
  136. package/package.json +2 -2
package/README.md CHANGED
@@ -18,6 +18,7 @@ With no arguments, runs every registered transform against the current directory
18
18
  - `--list`: print registered transforms.
19
19
  - `--dry`: analyze only; write nothing.
20
20
  - `--print`: print transformed sources to stdout instead of writing.
21
+ - `-h`, `--help`: print usage for all commands and exit. Works on any command, e.g. `upgrade run --help`.
21
22
 
22
23
  ## `upgrade` command
23
24
 
@@ -85,10 +86,13 @@ The tool loads your project via [ts-morph](https://ts-morph.com/), using your `t
85
86
  - `migrate-disabled-fields`: migrates `field.admin.disableListColumn`, `disableListFilter`, `disableGroupBy`, `disableBulkEdit` and their equivalents on `imageSize.admin` into the consolidated `disabled` object form.
86
87
  - `globals-components-edit`: Globals: rename `admin.components.elements` to `admin.components.edit` and hoist `Description` to top-level `admin.components.Description` to match Collection conventions.
87
88
  - `migrate-force-select`: migrates `forceSelect: { ... }` on Collection/Global configs to a `select` function that augments the caller's `select` when present and returns `undefined` (preserving full-document reads) when not. Shallow values become a spread (`{ ...select, ... }`); nested values use `deepMergeSimple` from `payload/shared` (auto-imported) to preserve the previous deep-merge semantics. Non-literal values, sibling `select` already present, and unsupported member kinds are surfaced as notes for manual review.
89
+ - `migrate-field-component-types`: replaces field component aliases—including concrete fields, canonical generics, labels, descriptions, errors, diffs, and block row labels—with the corresponding props types wrapped in `React.FC`. Generic arguments are preserved. Explicit class components, re-exports, namespace references, and inline imports are left unchanged with notes for manual migration.
88
90
  - `migrate-block-references-to-blocks`: renames blocks field `blockReferences` configs to `blocks`, and removes a sibling `blocks: []` placeholder when present. If a non-empty `blocks` sibling already exists, the transform leaves the field untouched and surfaces a note for manual review.
89
91
  - `migrate-hide-api-url`: migrates `admin.hideAPIURL: true` to `admin.components.views.edit.api.tab.condition: () => false` on collection and global configs.
90
92
  - `migrate-aliased-exports`: rewrites imports of types and utilities that used to be re-exported from `@payloadcms/ui` and `@payloadcms/next/utilities` to their canonical sources in `payload` / `payload/shared`.
93
+ - `migrate-payload-request-creation`: renames named request-helper and admin-context imports from `payload` and `payload/internal`. Calls migrate only with a plain identifier payload and either `{}` or an initialized local `const` options identifier whose type exposes all seven old option properties (or is `any`). The generated argument captures payload first and forwards only `context`, `depth`, `fallbackLocale`, `locale`, `req`, `urlSuffix`, and `user` through getters, preserving inherited getters, read order, and async rejection behavior. Existing `CreateLocalReqOptions` named imports from `payload` become options-only usages of `Omit<CreatePayloadRequestArgs, 'payload'>`; relative/private imports of that internal type require manual migration. Unsupported shapes, type usages, and collisions leave the affected binding unchanged with notes.
91
94
  - `migrate-document-title-context`: migrates `title` and `setDocumentTitle` destructured from `useDocumentInfo()` to `useDocumentTitle()`. They were removed from `DocumentInfoContext` in v4 and now live on `DocumentTitleContext`.
95
+ - `migrate-sharp-to-transformer`: moves a top-level `sharp` dependency and per-collection Sharp-specific `upload` options (`resizeOptions`, `imageSizes`, `formatOptions`, `trimOptions`, `constructorOptions`, `withMetadata`, `crop`, `focalPoint`) into `sharpTransformer({ collections })`, registered under `upload.transformers`. Appends to an existing `transformers` array instead of overwriting it, and no-ops if a `sharpTransformer` call is already present. **Limitations:** only inline `buildConfig({...})` object literals and inline collection/`upload` object literals are migrated; a dynamic `collections` array, an externally-defined collection, or a non-inline `upload` object are left untouched with a note for manual review. A collection's `upload` object built from a spread (e.g. `upload: { ...sharedUploadConfig }`) is noted for manual review, since Sharp-specific fields hidden inside the spread aren't visible to the transform and are left un-migrated. Surfaces a note reminding you to install `@payloadcms/transformer-sharp` (`pnpm add @payloadcms/transformer-sharp`). The transform preserves AST structure but does not re-format output. Run `prettier --write` (or your project's formatter) after applying.
92
96
  - `migrate-storage-adapters-to-config`: moves storage adapter factory calls (`s3Storage`, `gcsStorage`, `azureStorage`, `r2Storage`, `vercelBlobStorage`) from `plugins` to the new top-level `storage` array. Removes `plugins` if it becomes empty after the move. **Limitations:** aliased imports (e.g. `import { s3Storage as myS3 }`) are not detected; rename any aliases to the canonical factory name before running, or migrate those calls manually. The transform preserves AST structure but does not re-format output. Run `prettier --write` (or your project's formatter) after applying.
93
97
  - `rename-storage-adapters-to-storage`: renames the top-level `storageAdapters` config property to `storage`. Skips any object that already has a `storage` property. Run this if you previously ran `migrate-storage-adapters-to-config` and need to update the property name.
94
98
  - `migrate-azure-chunk-large-files`: removes the `chunkLargeFiles` option from `azureStorage` `clientUploads` config. Chunked client uploads are the default in v4, so the flag no longer exists; `clientUploads: { chunkLargeFiles: true }` collapses to `clientUploads: true`. Surfaces a note when `chunkLargeFiles: false` was removed, since v4 can no longer disable chunking (and its broader CORS requirements apply).
@@ -97,8 +101,10 @@ The tool loads your project via [ts-morph](https://ts-morph.com/), using your `t
97
101
  - `migrate-db-types-subpath`: rewrites imports from the removed `/types` subpath exports of `@payloadcms/drizzle`, `@payloadcms/db-postgres`, `@payloadcms/db-sqlite`, `@payloadcms/db-vercel-postgres`, and `@payloadcms/db-d1-sqlite` to their main entry points. Also handles re-export declarations and `declare module` augmentations.
98
102
  - `migrate-next-subpath-exports`: rewrites imports, re-exports, and string-literal component paths from the removed `@payloadcms/next/client`, `@payloadcms/next/rsc`, and `@payloadcms/next/templates` subpaths to their canonical `@payloadcms/ui` or `@payloadcms/ui/rsc` sources. After running, regenerate the import map with `payload generate:importmap`.
99
103
  - `migrate-next-generate-viewport-export`: adds a `generateViewport` export to app router layout files that already use Payload's shared Next.js layout, preserving Next.js viewport behavior without touching custom viewport implementations.
104
+ - `migrate-lexical-is-html-element`: rewrites imports of the removed `isHTMLElement` utility from `@payloadcms/richtext-lexical` (and `/client`) to its canonical source, `lexical`, splitting it out of mixed imports and merging into an existing `lexical` import when present. Surfaces a note reminding you that `lexical` is now a required dependency (`pnpm add lexical`).
100
105
  - `migrate-after-operation-read`: rewrites `operation === 'read'` checks inside collection `afterOperation` hooks to handle the `find` and `findByID` operations (the deprecated `'read'` value was removed). Handles `===`/`!==`/`==`/`!=` against a destructured (or aliased) or property-accessed `operation` argument. Leaves `beforeOperation` (which still uses `'read'`) untouched, and surfaces notes for non-inline hooks and `switch` statements that need manual review.
101
106
  - `migrate-versions-default`: adds `versions: false` to every `CollectionConfig` or `GlobalConfig` object that does not already have a `versions` property. Preserves the previous opt-in behaviour now that `versions` defaults to `true` for both collections and globals. Detects the three common annotation forms: `: CollectionConfig`, `satisfies GlobalConfig`, and `as CollectionConfig`.
107
+ - `migrate-authorship-default`: adds `authorship: false` to every `CollectionConfig` or `GlobalConfig` object that does not already have an `authorship` property. Preserves the previous behaviour now that authorship tracking (`createdBy` / `updatedBy`) is enabled by default for both collections and globals. Detects the three common annotation forms: `: CollectionConfig`, `satisfies GlobalConfig`, and `as CollectionConfig`.
102
108
  - `remove-versions-true`: removes the now-redundant `versions: true` property from `CollectionConfig` and `GlobalConfig` objects. Only removes the bare boolean `true`; object-form configs (e.g. `versions: { drafts: true }`) are left untouched.
103
109
  - `add-override-access-true`: adds an explicit `overrideAccess: true` to Local API calls (`payload.find(...)`, `req.payload.create(...)`, `payload.jobs.run()`, and the rest) that omit it, preserving the Payload 3 default of skipping access control now that Payload 4 changes the default to `false`. Detection is syntactic so it works on JavaScript projects with no `tsconfig.json`. Deliberately never touches internal operations such as `findOperation(...)`, where a missing value meant `false` and inserting `true` would disable access control. Skips `resetPassword` (no destructuring default to preserve), calls whose argument object contains a spread, and non-Payload receivers. Review each inserted `true` and switch to `false` wherever the operation acts on behalf of a user.
104
110
  - `remove-group-by-true`: removes `admin.groupBy` from `CollectionConfig` objects. The experimental `groupBy` flag has been removed; groupBy is now an always-available per-user UI preference.
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAmBA,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAyFhF"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAoBA,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CA+FhF"}
@@ -0,0 +1,4 @@
1
+ export declare function renderHelp({ command }: {
2
+ command: string;
3
+ }): string;
4
+ //# sourceMappingURL=cli.help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.help.d.ts","sourceRoot":"","sources":["../src/cli.help.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CA0BnE"}
@@ -0,0 +1,29 @@
1
+ export function renderHelp({ command }) {
2
+ return `Usage:
3
+ ${command} [path] [options]
4
+ ${command} upgrade [run | prompt] [options]
5
+
6
+ Commands:
7
+ (none) Run transforms only against [path] (default: cwd)
8
+ upgrade Pick how to run the full v3 -> v4 upgrade
9
+ upgrade run Bump Payload deps, install, then run transforms in cwd
10
+ upgrade prompt Print the upgrade orchestration prompt
11
+
12
+ Transform options:
13
+ --transform <name> Run a single transform by name
14
+ --list Print registered transforms
15
+ --dry, --dry-run Analyze only; write nothing
16
+ --print Print transformed sources to stdout instead of writing
17
+
18
+ Upgrade options:
19
+ --agent <name> Coding agent to hand off to (claude, codex); skips the picker
20
+ --tag <dist-tag> Dist-tag to resolve Payload versions from
21
+ --dry, --dry-run Preview changes; write and install nothing
22
+ --force Skip the dirty-git-tree warning
23
+
24
+ General options:
25
+ -h, --help Show this help
26
+ `;
27
+ }
28
+
29
+ //# sourceMappingURL=cli.help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli.help.ts"],"sourcesContent":["export function renderHelp({ command }: { command: string }): string {\n return `Usage:\n ${command} [path] [options]\n ${command} upgrade [run | prompt] [options]\n\nCommands:\n (none) Run transforms only against [path] (default: cwd)\n upgrade Pick how to run the full v3 -> v4 upgrade\n upgrade run Bump Payload deps, install, then run transforms in cwd\n upgrade prompt Print the upgrade orchestration prompt\n\nTransform options:\n --transform <name> Run a single transform by name\n --list Print registered transforms\n --dry, --dry-run Analyze only; write nothing\n --print Print transformed sources to stdout instead of writing\n\nUpgrade options:\n --agent <name> Coding agent to hand off to (claude, codex); skips the picker\n --tag <dist-tag> Dist-tag to resolve Payload versions from\n --dry, --dry-run Preview changes; write and install nothing\n --force Skip the dirty-git-tree warning\n\nGeneral options:\n -h, --help Show this help\n`\n}\n"],"names":["renderHelp","command"],"mappings":"AAAA,OAAO,SAASA,WAAW,EAAEC,OAAO,EAAuB;IACzD,OAAO,CAAC;EACR,EAAEA,QAAQ;EACV,EAAEA,QAAQ;;;;;;;;;;;;;;;;;;;;;;AAsBZ,CAAC;AACD"}
package/dist/cli.js CHANGED
@@ -1,5 +1,6 @@
1
1
  /* eslint-disable no-console */ import { writeFileSync } from 'node:fs';
2
2
  import { resolve } from 'node:path';
3
+ import { renderHelp } from './cli.help.js';
3
4
  import { parseFlags } from './cli.parseFlags.js';
4
5
  import { transforms as registry } from './registry.js';
5
6
  import { runTransforms } from './runner.js';
@@ -11,6 +12,13 @@ import { loadPackageJsons, serializePackageJson } from './utils/packageJson.js';
11
12
  import { loadProject } from './utils/project.js';
12
13
  export async function main(argv = process.argv.slice(2)) {
13
14
  const flags = parseFlags(argv);
15
+ // Checked first so `--help` on any command prints usage instead of running it.
16
+ if (flags.help) {
17
+ console.log(renderHelp({
18
+ command: resolveSelfCommand()
19
+ }));
20
+ return;
21
+ }
14
22
  if (flags.command === 'upgrade') {
15
23
  if (flags.upgrade === 'prompt') {
16
24
  console.log(renderUpgradePrompt({
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli.ts"],"sourcesContent":["import type { Project } from 'ts-morph'\n\n/* eslint-disable no-console */\nimport { writeFileSync } from 'node:fs'\nimport { resolve } from 'node:path'\n\nimport type { TransformRunResult } from './runner.js'\nimport type { Transform } from './types.js'\n\nimport { parseFlags } from './cli.parseFlags.js'\nimport { transforms as registry } from './registry.js'\nimport { runTransforms } from './runner.js'\nimport { runDispatch } from './upgrade/dispatch.js'\nimport { runUpgrade } from './upgrade/index.js'\nimport { renderUpgradePrompt } from './upgrade/prompt.js'\nimport { resolveSelfCommand } from './upgrade/selfCommand.js'\nimport { loadPackageJsons, serializePackageJson } from './utils/packageJson.js'\nimport { loadProject } from './utils/project.js'\n\nexport async function main(argv: string[] = process.argv.slice(2)): Promise<void> {\n const flags = parseFlags(argv)\n\n if (flags.command === 'upgrade') {\n if (flags.upgrade === 'prompt') {\n console.log(renderUpgradePrompt({ command: resolveSelfCommand() }))\n return\n }\n\n if (flags.upgrade === 'run') {\n const { failed } = await runUpgrade({\n flags: { dry: flags.dry, force: flags.force, tag: flags.tag },\n path: flags.path,\n })\n if (failed) {\n process.exitCode = 1\n }\n return\n }\n\n const { failed } = await runDispatch({\n agentFlag: flags.agent,\n path: flags.path,\n upgradeFlags: { dry: flags.dry, force: flags.force, tag: flags.tag },\n })\n if (failed) {\n process.exitCode = 1\n }\n return\n }\n\n if (flags.list) {\n printList()\n return\n }\n\n const selected = selectTransforms(registry, flags.transform)\n if (selected.length === 0) {\n console.error(`No transforms matched${flags.transform ? ` \"${flags.transform}\"` : ''}.`)\n process.exitCode = 1\n return\n }\n\n const project = loadProject(resolve(flags.path))\n const snapshot = snapshotProject(project)\n\n const packageJsons = loadPackageJsons(resolve(flags.path))\n\n const { failed, results } = await runTransforms({\n // Shares the same `data` reference, so transform mutations are visible\n // below for change detection (do not clone here).\n packageJsons: packageJsons.map(({ data, path }) => ({ data, path })),\n project,\n transforms: selected,\n })\n\n const changed = project\n .getSourceFiles()\n .filter((file) => snapshot.get(file.getFilePath()) !== file.getFullText())\n\n const changedPackageJsons = packageJsons.filter(\n (pkg) => serializePackageJson(pkg.data, pkg.originalText) !== pkg.originalText,\n )\n\n if (flags.print) {\n if (changed.length === 0 && changedPackageJsons.length === 0) {\n console.log('(no files changed)')\n } else {\n for (const file of changed) {\n console.log(`// ${file.getFilePath()}`)\n console.log(file.getFullText())\n }\n for (const pkg of changedPackageJsons) {\n console.log(`// ${pkg.path}`)\n console.log(serializePackageJson(pkg.data, pkg.originalText))\n }\n }\n } else if (!flags.dry) {\n await Promise.all(changed.map((file) => file.save()))\n for (const pkg of changedPackageJsons) {\n writeFileSync(pkg.path, serializePackageJson(pkg.data, pkg.originalText))\n }\n }\n\n printSummary(results)\n\n if (failed) {\n process.exitCode = 1\n }\n}\n\nfunction selectTransforms(available: Transform[], name: string | undefined): Transform[] {\n if (!name) {\n return available\n }\n return available.filter((t) => t.name === name)\n}\n\nfunction printList(): void {\n if (registry.length === 0) {\n console.log('No transforms registered.')\n return\n }\n for (const t of registry) {\n console.log(`${t.name} ${t.description}`)\n }\n}\n\nfunction snapshotProject(project: Project): Map<string, string> {\n return new Map(project.getSourceFiles().map((file) => [file.getFilePath(), file.getFullText()]))\n}\n\nfunction printSummary(results: TransformRunResult[]): void {\n console.log('')\n console.log('Codemod summary:')\n for (const r of results) {\n if (r.error) {\n console.log(` [FAIL] ${r.name} — ${r.error.message}`)\n continue\n }\n console.log(` [ok] ${r.name} — ${r.filesChanged.length} file(s) changed`)\n for (const note of r.notes ?? []) {\n console.log(` note: ${note}`)\n }\n }\n}\n"],"names":["writeFileSync","resolve","parseFlags","transforms","registry","runTransforms","runDispatch","runUpgrade","renderUpgradePrompt","resolveSelfCommand","loadPackageJsons","serializePackageJson","loadProject","main","argv","process","slice","flags","command","upgrade","console","log","failed","dry","force","tag","path","exitCode","agentFlag","agent","upgradeFlags","list","printList","selected","selectTransforms","transform","length","error","project","snapshot","snapshotProject","packageJsons","results","map","data","changed","getSourceFiles","filter","file","get","getFilePath","getFullText","changedPackageJsons","pkg","originalText","print","Promise","all","save","printSummary","available","name","t","description","Map","r","message","filesChanged","note","notes"],"mappings":"AAEA,6BAA6B,GAC7B,SAASA,aAAa,QAAQ,UAAS;AACvC,SAASC,OAAO,QAAQ,YAAW;AAKnC,SAASC,UAAU,QAAQ,sBAAqB;AAChD,SAASC,cAAcC,QAAQ,QAAQ,gBAAe;AACtD,SAASC,aAAa,QAAQ,cAAa;AAC3C,SAASC,WAAW,QAAQ,wBAAuB;AACnD,SAASC,UAAU,QAAQ,qBAAoB;AAC/C,SAASC,mBAAmB,QAAQ,sBAAqB;AACzD,SAASC,kBAAkB,QAAQ,2BAA0B;AAC7D,SAASC,gBAAgB,EAAEC,oBAAoB,QAAQ,yBAAwB;AAC/E,SAASC,WAAW,QAAQ,qBAAoB;AAEhD,OAAO,eAAeC,KAAKC,OAAiBC,QAAQD,IAAI,CAACE,KAAK,CAAC,EAAE;IAC/D,MAAMC,QAAQf,WAAWY;IAEzB,IAAIG,MAAMC,OAAO,KAAK,WAAW;QAC/B,IAAID,MAAME,OAAO,KAAK,UAAU;YAC9BC,QAAQC,GAAG,CAACb,oBAAoB;gBAAEU,SAAST;YAAqB;YAChE;QACF;QAEA,IAAIQ,MAAME,OAAO,KAAK,OAAO;YAC3B,MAAM,EAAEG,MAAM,EAAE,GAAG,MAAMf,WAAW;gBAClCU,OAAO;oBAAEM,KAAKN,MAAMM,GAAG;oBAAEC,OAAOP,MAAMO,KAAK;oBAAEC,KAAKR,MAAMQ,GAAG;gBAAC;gBAC5DC,MAAMT,MAAMS,IAAI;YAClB;YACA,IAAIJ,QAAQ;gBACVP,QAAQY,QAAQ,GAAG;YACrB;YACA;QACF;QAEA,MAAM,EAAEL,MAAM,EAAE,GAAG,MAAMhB,YAAY;YACnCsB,WAAWX,MAAMY,KAAK;YACtBH,MAAMT,MAAMS,IAAI;YAChBI,cAAc;gBAAEP,KAAKN,MAAMM,GAAG;gBAAEC,OAAOP,MAAMO,KAAK;gBAAEC,KAAKR,MAAMQ,GAAG;YAAC;QACrE;QACA,IAAIH,QAAQ;YACVP,QAAQY,QAAQ,GAAG;QACrB;QACA;IACF;IAEA,IAAIV,MAAMc,IAAI,EAAE;QACdC;QACA;IACF;IAEA,MAAMC,WAAWC,iBAAiB9B,UAAUa,MAAMkB,SAAS;IAC3D,IAAIF,SAASG,MAAM,KAAK,GAAG;QACzBhB,QAAQiB,KAAK,CAAC,CAAC,qBAAqB,EAAEpB,MAAMkB,SAAS,GAAG,CAAC,EAAE,EAAElB,MAAMkB,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QACvFpB,QAAQY,QAAQ,GAAG;QACnB;IACF;IAEA,MAAMW,UAAU1B,YAAYX,QAAQgB,MAAMS,IAAI;IAC9C,MAAMa,WAAWC,gBAAgBF;IAEjC,MAAMG,eAAe/B,iBAAiBT,QAAQgB,MAAMS,IAAI;IAExD,MAAM,EAAEJ,MAAM,EAAEoB,OAAO,EAAE,GAAG,MAAMrC,cAAc;QAC9C,uEAAuE;QACvE,kDAAkD;QAClDoC,cAAcA,aAAaE,GAAG,CAAC,CAAC,EAAEC,IAAI,EAAElB,IAAI,EAAE,GAAM,CAAA;gBAAEkB;gBAAMlB;YAAK,CAAA;QACjEY;QACAnC,YAAY8B;IACd;IAEA,MAAMY,UAAUP,QACbQ,cAAc,GACdC,MAAM,CAAC,CAACC,OAAST,SAASU,GAAG,CAACD,KAAKE,WAAW,QAAQF,KAAKG,WAAW;IAEzE,MAAMC,sBAAsBX,aAAaM,MAAM,CAC7C,CAACM,MAAQ1C,qBAAqB0C,IAAIT,IAAI,EAAES,IAAIC,YAAY,MAAMD,IAAIC,YAAY;IAGhF,IAAIrC,MAAMsC,KAAK,EAAE;QACf,IAAIV,QAAQT,MAAM,KAAK,KAAKgB,oBAAoBhB,MAAM,KAAK,GAAG;YAC5DhB,QAAQC,GAAG,CAAC;QACd,OAAO;YACL,KAAK,MAAM2B,QAAQH,QAAS;gBAC1BzB,QAAQC,GAAG,CAAC,CAAC,GAAG,EAAE2B,KAAKE,WAAW,IAAI;gBACtC9B,QAAQC,GAAG,CAAC2B,KAAKG,WAAW;YAC9B;YACA,KAAK,MAAME,OAAOD,oBAAqB;gBACrChC,QAAQC,GAAG,CAAC,CAAC,GAAG,EAAEgC,IAAI3B,IAAI,EAAE;gBAC5BN,QAAQC,GAAG,CAACV,qBAAqB0C,IAAIT,IAAI,EAAES,IAAIC,YAAY;YAC7D;QACF;IACF,OAAO,IAAI,CAACrC,MAAMM,GAAG,EAAE;QACrB,MAAMiC,QAAQC,GAAG,CAACZ,QAAQF,GAAG,CAAC,CAACK,OAASA,KAAKU,IAAI;QACjD,KAAK,MAAML,OAAOD,oBAAqB;YACrCpD,cAAcqD,IAAI3B,IAAI,EAAEf,qBAAqB0C,IAAIT,IAAI,EAAES,IAAIC,YAAY;QACzE;IACF;IAEAK,aAAajB;IAEb,IAAIpB,QAAQ;QACVP,QAAQY,QAAQ,GAAG;IACrB;AACF;AAEA,SAASO,iBAAiB0B,SAAsB,EAAEC,IAAwB;IACxE,IAAI,CAACA,MAAM;QACT,OAAOD;IACT;IACA,OAAOA,UAAUb,MAAM,CAAC,CAACe,IAAMA,EAAED,IAAI,KAAKA;AAC5C;AAEA,SAAS7B;IACP,IAAI5B,SAASgC,MAAM,KAAK,GAAG;QACzBhB,QAAQC,GAAG,CAAC;QACZ;IACF;IACA,KAAK,MAAMyC,KAAK1D,SAAU;QACxBgB,QAAQC,GAAG,CAAC,GAAGyC,EAAED,IAAI,CAAC,EAAE,EAAEC,EAAEC,WAAW,EAAE;IAC3C;AACF;AAEA,SAASvB,gBAAgBF,OAAgB;IACvC,OAAO,IAAI0B,IAAI1B,QAAQQ,cAAc,GAAGH,GAAG,CAAC,CAACK,OAAS;YAACA,KAAKE,WAAW;YAAIF,KAAKG,WAAW;SAAG;AAChG;AAEA,SAASQ,aAAajB,OAA6B;IACjDtB,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZ,KAAK,MAAM4C,KAAKvB,QAAS;QACvB,IAAIuB,EAAE5B,KAAK,EAAE;YACXjB,QAAQC,GAAG,CAAC,CAAC,SAAS,EAAE4C,EAAEJ,IAAI,CAAC,GAAG,EAAEI,EAAE5B,KAAK,CAAC6B,OAAO,EAAE;YACrD;QACF;QACA9C,QAAQC,GAAG,CAAC,CAAC,OAAO,EAAE4C,EAAEJ,IAAI,CAAC,GAAG,EAAEI,EAAEE,YAAY,CAAC/B,MAAM,CAAC,gBAAgB,CAAC;QACzE,KAAK,MAAMgC,QAAQH,EAAEI,KAAK,IAAI,EAAE,CAAE;YAChCjD,QAAQC,GAAG,CAAC,CAAC,YAAY,EAAE+C,MAAM;QACnC;IACF;AACF"}
1
+ {"version":3,"sources":["../src/cli.ts"],"sourcesContent":["import type { Project } from 'ts-morph'\n\n/* eslint-disable no-console */\nimport { writeFileSync } from 'node:fs'\nimport { resolve } from 'node:path'\n\nimport type { TransformRunResult } from './runner.js'\nimport type { Transform } from './types.js'\n\nimport { renderHelp } from './cli.help.js'\nimport { parseFlags } from './cli.parseFlags.js'\nimport { transforms as registry } from './registry.js'\nimport { runTransforms } from './runner.js'\nimport { runDispatch } from './upgrade/dispatch.js'\nimport { runUpgrade } from './upgrade/index.js'\nimport { renderUpgradePrompt } from './upgrade/prompt.js'\nimport { resolveSelfCommand } from './upgrade/selfCommand.js'\nimport { loadPackageJsons, serializePackageJson } from './utils/packageJson.js'\nimport { loadProject } from './utils/project.js'\n\nexport async function main(argv: string[] = process.argv.slice(2)): Promise<void> {\n const flags = parseFlags(argv)\n\n // Checked first so `--help` on any command prints usage instead of running it.\n if (flags.help) {\n console.log(renderHelp({ command: resolveSelfCommand() }))\n return\n }\n\n if (flags.command === 'upgrade') {\n if (flags.upgrade === 'prompt') {\n console.log(renderUpgradePrompt({ command: resolveSelfCommand() }))\n return\n }\n\n if (flags.upgrade === 'run') {\n const { failed } = await runUpgrade({\n flags: { dry: flags.dry, force: flags.force, tag: flags.tag },\n path: flags.path,\n })\n if (failed) {\n process.exitCode = 1\n }\n return\n }\n\n const { failed } = await runDispatch({\n agentFlag: flags.agent,\n path: flags.path,\n upgradeFlags: { dry: flags.dry, force: flags.force, tag: flags.tag },\n })\n if (failed) {\n process.exitCode = 1\n }\n return\n }\n\n if (flags.list) {\n printList()\n return\n }\n\n const selected = selectTransforms(registry, flags.transform)\n if (selected.length === 0) {\n console.error(`No transforms matched${flags.transform ? ` \"${flags.transform}\"` : ''}.`)\n process.exitCode = 1\n return\n }\n\n const project = loadProject(resolve(flags.path))\n const snapshot = snapshotProject(project)\n\n const packageJsons = loadPackageJsons(resolve(flags.path))\n\n const { failed, results } = await runTransforms({\n // Shares the same `data` reference, so transform mutations are visible\n // below for change detection (do not clone here).\n packageJsons: packageJsons.map(({ data, path }) => ({ data, path })),\n project,\n transforms: selected,\n })\n\n const changed = project\n .getSourceFiles()\n .filter((file) => snapshot.get(file.getFilePath()) !== file.getFullText())\n\n const changedPackageJsons = packageJsons.filter(\n (pkg) => serializePackageJson(pkg.data, pkg.originalText) !== pkg.originalText,\n )\n\n if (flags.print) {\n if (changed.length === 0 && changedPackageJsons.length === 0) {\n console.log('(no files changed)')\n } else {\n for (const file of changed) {\n console.log(`// ${file.getFilePath()}`)\n console.log(file.getFullText())\n }\n for (const pkg of changedPackageJsons) {\n console.log(`// ${pkg.path}`)\n console.log(serializePackageJson(pkg.data, pkg.originalText))\n }\n }\n } else if (!flags.dry) {\n await Promise.all(changed.map((file) => file.save()))\n for (const pkg of changedPackageJsons) {\n writeFileSync(pkg.path, serializePackageJson(pkg.data, pkg.originalText))\n }\n }\n\n printSummary(results)\n\n if (failed) {\n process.exitCode = 1\n }\n}\n\nfunction selectTransforms(available: Transform[], name: string | undefined): Transform[] {\n if (!name) {\n return available\n }\n return available.filter((t) => t.name === name)\n}\n\nfunction printList(): void {\n if (registry.length === 0) {\n console.log('No transforms registered.')\n return\n }\n for (const t of registry) {\n console.log(`${t.name} ${t.description}`)\n }\n}\n\nfunction snapshotProject(project: Project): Map<string, string> {\n return new Map(project.getSourceFiles().map((file) => [file.getFilePath(), file.getFullText()]))\n}\n\nfunction printSummary(results: TransformRunResult[]): void {\n console.log('')\n console.log('Codemod summary:')\n for (const r of results) {\n if (r.error) {\n console.log(` [FAIL] ${r.name} — ${r.error.message}`)\n continue\n }\n console.log(` [ok] ${r.name} — ${r.filesChanged.length} file(s) changed`)\n for (const note of r.notes ?? []) {\n console.log(` note: ${note}`)\n }\n }\n}\n"],"names":["writeFileSync","resolve","renderHelp","parseFlags","transforms","registry","runTransforms","runDispatch","runUpgrade","renderUpgradePrompt","resolveSelfCommand","loadPackageJsons","serializePackageJson","loadProject","main","argv","process","slice","flags","help","console","log","command","upgrade","failed","dry","force","tag","path","exitCode","agentFlag","agent","upgradeFlags","list","printList","selected","selectTransforms","transform","length","error","project","snapshot","snapshotProject","packageJsons","results","map","data","changed","getSourceFiles","filter","file","get","getFilePath","getFullText","changedPackageJsons","pkg","originalText","print","Promise","all","save","printSummary","available","name","t","description","Map","r","message","filesChanged","note","notes"],"mappings":"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"}
@@ -12,6 +12,7 @@ export type CliFlags = {
12
12
  command?: CliCommand;
13
13
  dry: boolean;
14
14
  force: boolean;
15
+ help: boolean;
15
16
  list: boolean;
16
17
  path: string;
17
18
  print: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"cli.parseFlags.d.ts","sourceRoot":"","sources":["../src/cli.parseFlags.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG,SAAS,CAAA;AAElC;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,QAAQ,GAAG,KAAK,CAAA;AAE7D,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,UAAU,CAAA;IACpB,GAAG,EAAE,OAAO,CAAA;IACZ,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,OAAO,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,iBAAiB,CAAA;CAC5B,CAAA;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,CAmCnD"}
1
+ {"version":3,"file":"cli.parseFlags.d.ts","sourceRoot":"","sources":["../src/cli.parseFlags.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG,SAAS,CAAA;AAElC;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,QAAQ,GAAG,KAAK,CAAA;AAE7D,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,UAAU,CAAA;IACpB,GAAG,EAAE,OAAO,CAAA;IACZ,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,OAAO,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,iBAAiB,CAAA;CAC5B,CAAA;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,CAqCnD"}
@@ -19,6 +19,11 @@ export function parseFlags(argv) {
19
19
  type: 'boolean',
20
20
  default: false
21
21
  },
22
+ help: {
23
+ type: 'boolean',
24
+ default: false,
25
+ short: 'h'
26
+ },
22
27
  list: {
23
28
  type: 'boolean',
24
29
  default: false
@@ -46,6 +51,7 @@ export function parseFlags(argv) {
46
51
  command,
47
52
  dry: Boolean(values.dry) || Boolean(values['dry-run']),
48
53
  force: Boolean(values.force),
54
+ help: Boolean(values.help),
49
55
  list: Boolean(values.list),
50
56
  path,
51
57
  print: Boolean(values.print),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli.parseFlags.ts"],"sourcesContent":["import { parseArgs } from 'node:util'\n\nexport type CliCommand = 'upgrade'\n\n/**\n * The three `upgrade` verbs:\n * - `dispatch` (bare `upgrade`): interactive picker to hand the orchestration\n * prompt to a coding agent, or print it.\n * - `run` (`upgrade run`): the deterministic mechanical slice.\n * - `prompt` (`upgrade prompt`): print the orchestration prompt to stdout.\n */\nexport type UpgradeSubcommand = 'dispatch' | 'prompt' | 'run'\n\nexport type CliFlags = {\n agent?: string\n command?: CliCommand\n dry: boolean\n force: boolean\n list: boolean\n path: string\n print: boolean\n tag?: string\n transform?: string\n upgrade?: UpgradeSubcommand\n}\n\nexport function parseFlags(argv: string[]): CliFlags {\n const { positionals, values } = parseArgs({\n allowPositionals: true,\n args: argv,\n options: {\n agent: { type: 'string' },\n dry: { type: 'boolean', default: false },\n 'dry-run': { type: 'boolean', default: false },\n force: { type: 'boolean', default: false },\n list: { type: 'boolean', default: false },\n print: { type: 'boolean', default: false },\n tag: { type: 'string' },\n transform: { type: 'string' },\n },\n })\n\n const isUpgrade = positionals[0] === 'upgrade'\n const command = isUpgrade ? 'upgrade' : undefined\n const upgrade = isUpgrade ? resolveUpgradeVerb(positionals[1]) : undefined\n // The upgrade command always operates on the current directory; only the bare\n // transform command takes a positional path.\n const path = isUpgrade ? process.cwd() : (positionals[0] ?? process.cwd())\n\n return {\n agent: values.agent,\n command,\n dry: Boolean(values.dry) || Boolean(values['dry-run']),\n force: Boolean(values.force),\n list: Boolean(values.list),\n path,\n print: Boolean(values.print),\n tag: values.tag,\n transform: values.transform,\n upgrade,\n }\n}\n\nfunction resolveUpgradeVerb(verb: string | undefined): UpgradeSubcommand {\n if (verb === 'prompt' || verb === 'run') {\n return verb\n }\n return 'dispatch'\n}\n"],"names":["parseArgs","parseFlags","argv","positionals","values","allowPositionals","args","options","agent","type","dry","default","force","list","print","tag","transform","isUpgrade","command","undefined","upgrade","resolveUpgradeVerb","path","process","cwd","Boolean","verb"],"mappings":"AAAA,SAASA,SAAS,QAAQ,YAAW;AA0BrC,OAAO,SAASC,WAAWC,IAAc;IACvC,MAAM,EAAEC,WAAW,EAAEC,MAAM,EAAE,GAAGJ,UAAU;QACxCK,kBAAkB;QAClBC,MAAMJ;QACNK,SAAS;YACPC,OAAO;gBAAEC,MAAM;YAAS;YACxBC,KAAK;gBAAED,MAAM;gBAAWE,SAAS;YAAM;YACvC,WAAW;gBAAEF,MAAM;gBAAWE,SAAS;YAAM;YAC7CC,OAAO;gBAAEH,MAAM;gBAAWE,SAAS;YAAM;YACzCE,MAAM;gBAAEJ,MAAM;gBAAWE,SAAS;YAAM;YACxCG,OAAO;gBAAEL,MAAM;gBAAWE,SAAS;YAAM;YACzCI,KAAK;gBAAEN,MAAM;YAAS;YACtBO,WAAW;gBAAEP,MAAM;YAAS;QAC9B;IACF;IAEA,MAAMQ,YAAYd,WAAW,CAAC,EAAE,KAAK;IACrC,MAAMe,UAAUD,YAAY,YAAYE;IACxC,MAAMC,UAAUH,YAAYI,mBAAmBlB,WAAW,CAAC,EAAE,IAAIgB;IACjE,8EAA8E;IAC9E,6CAA6C;IAC7C,MAAMG,OAAOL,YAAYM,QAAQC,GAAG,KAAMrB,WAAW,CAAC,EAAE,IAAIoB,QAAQC,GAAG;IAEvE,OAAO;QACLhB,OAAOJ,OAAOI,KAAK;QACnBU;QACAR,KAAKe,QAAQrB,OAAOM,GAAG,KAAKe,QAAQrB,MAAM,CAAC,UAAU;QACrDQ,OAAOa,QAAQrB,OAAOQ,KAAK;QAC3BC,MAAMY,QAAQrB,OAAOS,IAAI;QACzBS;QACAR,OAAOW,QAAQrB,OAAOU,KAAK;QAC3BC,KAAKX,OAAOW,GAAG;QACfC,WAAWZ,OAAOY,SAAS;QAC3BI;IACF;AACF;AAEA,SAASC,mBAAmBK,IAAwB;IAClD,IAAIA,SAAS,YAAYA,SAAS,OAAO;QACvC,OAAOA;IACT;IACA,OAAO;AACT"}
1
+ {"version":3,"sources":["../src/cli.parseFlags.ts"],"sourcesContent":["import { parseArgs } from 'node:util'\n\nexport type CliCommand = 'upgrade'\n\n/**\n * The three `upgrade` verbs:\n * - `dispatch` (bare `upgrade`): interactive picker to hand the orchestration\n * prompt to a coding agent, or print it.\n * - `run` (`upgrade run`): the deterministic mechanical slice.\n * - `prompt` (`upgrade prompt`): print the orchestration prompt to stdout.\n */\nexport type UpgradeSubcommand = 'dispatch' | 'prompt' | 'run'\n\nexport type CliFlags = {\n agent?: string\n command?: CliCommand\n dry: boolean\n force: boolean\n help: boolean\n list: boolean\n path: string\n print: boolean\n tag?: string\n transform?: string\n upgrade?: UpgradeSubcommand\n}\n\nexport function parseFlags(argv: string[]): CliFlags {\n const { positionals, values } = parseArgs({\n allowPositionals: true,\n args: argv,\n options: {\n agent: { type: 'string' },\n dry: { type: 'boolean', default: false },\n 'dry-run': { type: 'boolean', default: false },\n force: { type: 'boolean', default: false },\n help: { type: 'boolean', default: false, short: 'h' },\n list: { type: 'boolean', default: false },\n print: { type: 'boolean', default: false },\n tag: { type: 'string' },\n transform: { type: 'string' },\n },\n })\n\n const isUpgrade = positionals[0] === 'upgrade'\n const command = isUpgrade ? 'upgrade' : undefined\n const upgrade = isUpgrade ? resolveUpgradeVerb(positionals[1]) : undefined\n // The upgrade command always operates on the current directory; only the bare\n // transform command takes a positional path.\n const path = isUpgrade ? process.cwd() : (positionals[0] ?? process.cwd())\n\n return {\n agent: values.agent,\n command,\n dry: Boolean(values.dry) || Boolean(values['dry-run']),\n force: Boolean(values.force),\n help: Boolean(values.help),\n list: Boolean(values.list),\n path,\n print: Boolean(values.print),\n tag: values.tag,\n transform: values.transform,\n upgrade,\n }\n}\n\nfunction resolveUpgradeVerb(verb: string | undefined): UpgradeSubcommand {\n if (verb === 'prompt' || verb === 'run') {\n return verb\n }\n return 'dispatch'\n}\n"],"names":["parseArgs","parseFlags","argv","positionals","values","allowPositionals","args","options","agent","type","dry","default","force","help","short","list","print","tag","transform","isUpgrade","command","undefined","upgrade","resolveUpgradeVerb","path","process","cwd","Boolean","verb"],"mappings":"AAAA,SAASA,SAAS,QAAQ,YAAW;AA2BrC,OAAO,SAASC,WAAWC,IAAc;IACvC,MAAM,EAAEC,WAAW,EAAEC,MAAM,EAAE,GAAGJ,UAAU;QACxCK,kBAAkB;QAClBC,MAAMJ;QACNK,SAAS;YACPC,OAAO;gBAAEC,MAAM;YAAS;YACxBC,KAAK;gBAAED,MAAM;gBAAWE,SAAS;YAAM;YACvC,WAAW;gBAAEF,MAAM;gBAAWE,SAAS;YAAM;YAC7CC,OAAO;gBAAEH,MAAM;gBAAWE,SAAS;YAAM;YACzCE,MAAM;gBAAEJ,MAAM;gBAAWE,SAAS;gBAAOG,OAAO;YAAI;YACpDC,MAAM;gBAAEN,MAAM;gBAAWE,SAAS;YAAM;YACxCK,OAAO;gBAAEP,MAAM;gBAAWE,SAAS;YAAM;YACzCM,KAAK;gBAAER,MAAM;YAAS;YACtBS,WAAW;gBAAET,MAAM;YAAS;QAC9B;IACF;IAEA,MAAMU,YAAYhB,WAAW,CAAC,EAAE,KAAK;IACrC,MAAMiB,UAAUD,YAAY,YAAYE;IACxC,MAAMC,UAAUH,YAAYI,mBAAmBpB,WAAW,CAAC,EAAE,IAAIkB;IACjE,8EAA8E;IAC9E,6CAA6C;IAC7C,MAAMG,OAAOL,YAAYM,QAAQC,GAAG,KAAMvB,WAAW,CAAC,EAAE,IAAIsB,QAAQC,GAAG;IAEvE,OAAO;QACLlB,OAAOJ,OAAOI,KAAK;QACnBY;QACAV,KAAKiB,QAAQvB,OAAOM,GAAG,KAAKiB,QAAQvB,MAAM,CAAC,UAAU;QACrDQ,OAAOe,QAAQvB,OAAOQ,KAAK;QAC3BC,MAAMc,QAAQvB,OAAOS,IAAI;QACzBE,MAAMY,QAAQvB,OAAOW,IAAI;QACzBS;QACAR,OAAOW,QAAQvB,OAAOY,KAAK;QAC3BC,KAAKb,OAAOa,GAAG;QACfC,WAAWd,OAAOc,SAAS;QAC3BI;IACF;AACF;AAEA,SAASC,mBAAmBK,IAAwB;IAClD,IAAIA,SAAS,YAAYA,SAAS,OAAO;QACvC,OAAOA;IACT;IACA,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAgC3C,eAAO,MAAM,UAAU,EAAE,SAAS,EA8BjC,CAAA"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAoC3C,eAAO,MAAM,UAAU,EAAE,SAAS,EAkCjC,CAAA"}
package/dist/registry.js CHANGED
@@ -3,18 +3,22 @@ import { exampleNoop } from './transforms/example-noop/index.js';
3
3
  import { globalsComponentsEdit } from './transforms/globals-components-edit/index.js';
4
4
  import { migrateAfterOperationRead } from './transforms/migrate-after-operation-read/index.js';
5
5
  import { migrateAliasedExports } from './transforms/migrate-aliased-exports/index.js';
6
+ import { migrateAuthorshipDefault } from './transforms/migrate-authorship-default/index.js';
6
7
  import { migrateAzureChunkLargeFiles } from './transforms/migrate-azure-chunk-large-files/index.js';
7
8
  import { migrateBlockReferencesToBlocks } from './transforms/migrate-block-references-to-blocks/index.js';
8
9
  import { migrateBuildScript } from './transforms/migrate-build-script/index.js';
9
10
  import { migrateDbTypesSubpath } from './transforms/migrate-db-types-subpath/index.js';
10
11
  import { migrateDisabledFields } from './transforms/migrate-disabled-fields/index.js';
11
12
  import { migrateDocumentTitleContext } from './transforms/migrate-document-title-context/index.js';
13
+ import { migrateFieldComponentTypes } from './transforms/migrate-field-component-types/index.js';
12
14
  import { migrateForceSelect } from './transforms/migrate-force-select/index.js';
13
15
  import { migrateHideAPIURL } from './transforms/migrate-hide-api-url/index.js';
14
16
  import { migrateImportExportHooks } from './transforms/migrate-import-export-hooks/index.js';
15
17
  import { migrateListViewSelectAPI } from './transforms/migrate-list-view-select-api/index.js';
16
18
  import { migrateNextGenerateViewportExport } from './transforms/migrate-next-generate-viewport-export/index.js';
17
19
  import { migrateNextSubpathExports } from './transforms/migrate-next-subpath-exports/index.js';
20
+ import { migratePayloadRequestCreation } from './transforms/migrate-payload-request-creation/index.js';
21
+ import { migrateSharpToTransformer } from './transforms/migrate-sharp-to-transformer/index.js';
18
22
  import { migrateSlugField } from './transforms/migrate-slug-field/index.js';
19
23
  import { migrateStorageAdaptersToConfig } from './transforms/migrate-storage-adapters-to-config/index.js';
20
24
  import { migrateVersionsDefault } from './transforms/migrate-versions-default/index.js';
@@ -36,10 +40,13 @@ export const transforms = [
36
40
  migrateListViewSelectAPI,
37
41
  migrateDisabledFields,
38
42
  migrateForceSelect,
43
+ migrateFieldComponentTypes,
39
44
  migrateAliasedExports,
45
+ migratePayloadRequestCreation,
40
46
  migrateBlockReferencesToBlocks,
41
47
  migrateBuildScript,
42
48
  migrateDocumentTitleContext,
49
+ migrateSharpToTransformer,
43
50
  migrateStorageAdaptersToConfig,
44
51
  migrateAzureChunkLargeFiles,
45
52
  renameStorageAdaptersToStorage,
@@ -49,6 +56,7 @@ export const transforms = [
49
56
  migrateNextSubpathExports,
50
57
  migrateSlugField,
51
58
  migrateVersionsDefault,
59
+ migrateAuthorshipDefault,
52
60
  removeDefaultLocalePublishOption,
53
61
  removeGroupByTrue,
54
62
  removeLocalizeStatusConfig,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/registry.ts"],"sourcesContent":["import type { Transform } from './types.js'\n\nimport { addOverrideAccessTrue } from './transforms/add-override-access-true/index.js'\nimport { exampleNoop } from './transforms/example-noop/index.js'\nimport { globalsComponentsEdit } from './transforms/globals-components-edit/index.js'\nimport { migrateAfterOperationRead } from './transforms/migrate-after-operation-read/index.js'\nimport { migrateAliasedExports } from './transforms/migrate-aliased-exports/index.js'\nimport { migrateAzureChunkLargeFiles } from './transforms/migrate-azure-chunk-large-files/index.js'\nimport { migrateBlockReferencesToBlocks } from './transforms/migrate-block-references-to-blocks/index.js'\nimport { migrateBuildScript } from './transforms/migrate-build-script/index.js'\nimport { migrateDbTypesSubpath } from './transforms/migrate-db-types-subpath/index.js'\nimport { migrateDisabledFields } from './transforms/migrate-disabled-fields/index.js'\nimport { migrateDocumentTitleContext } from './transforms/migrate-document-title-context/index.js'\nimport { migrateForceSelect } from './transforms/migrate-force-select/index.js'\nimport { migrateHideAPIURL } from './transforms/migrate-hide-api-url/index.js'\nimport { migrateImportExportHooks } from './transforms/migrate-import-export-hooks/index.js'\nimport { migrateListViewSelectAPI } from './transforms/migrate-list-view-select-api/index.js'\nimport { migrateNextGenerateViewportExport } from './transforms/migrate-next-generate-viewport-export/index.js'\nimport { migrateNextSubpathExports } from './transforms/migrate-next-subpath-exports/index.js'\nimport { migrateSlugField } from './transforms/migrate-slug-field/index.js'\nimport { migrateStorageAdaptersToConfig } from './transforms/migrate-storage-adapters-to-config/index.js'\nimport { migrateVersionsDefault } from './transforms/migrate-versions-default/index.js'\nimport { removeDefaultLocalePublishOption } from './transforms/remove-default-locale-publish-option/index.js'\nimport { removeGroupByTrue } from './transforms/remove-group-by-true/index.js'\nimport { removeLocalizeStatusConfig } from './transforms/remove-localize-status-config/index.js'\nimport { removePublishSpecificLocale } from './transforms/remove-publish-specific-locale/index.js'\nimport { removeStorageAlwaysInsertFields } from './transforms/remove-storage-always-insert-fields/index.js'\nimport { removeVersionsTrue } from './transforms/remove-versions-true/index.js'\nimport { renameExperimentalTableFeature } from './transforms/rename-experimental-table-feature/index.js'\nimport { renameStorageAdaptersToStorage } from './transforms/rename-storage-adapters-to-storage/index.js'\nimport { renameTypescriptSchemaToJsonSchema } from './transforms/rename-typescript-schema-to-json-schema/index.js'\n\nexport const transforms: Transform[] = [\n exampleNoop,\n addOverrideAccessTrue,\n migrateAfterOperationRead,\n migrateHideAPIURL,\n globalsComponentsEdit,\n migrateListViewSelectAPI,\n migrateDisabledFields,\n migrateForceSelect,\n migrateAliasedExports,\n migrateBlockReferencesToBlocks,\n migrateBuildScript,\n migrateDocumentTitleContext,\n migrateStorageAdaptersToConfig,\n migrateAzureChunkLargeFiles,\n renameStorageAdaptersToStorage,\n migrateImportExportHooks,\n migrateDbTypesSubpath,\n migrateNextGenerateViewportExport,\n migrateNextSubpathExports,\n migrateSlugField,\n migrateVersionsDefault,\n removeDefaultLocalePublishOption,\n removeGroupByTrue,\n removeLocalizeStatusConfig,\n removeVersionsTrue,\n removePublishSpecificLocale,\n removeStorageAlwaysInsertFields,\n renameTypescriptSchemaToJsonSchema,\n renameExperimentalTableFeature,\n]\n"],"names":["addOverrideAccessTrue","exampleNoop","globalsComponentsEdit","migrateAfterOperationRead","migrateAliasedExports","migrateAzureChunkLargeFiles","migrateBlockReferencesToBlocks","migrateBuildScript","migrateDbTypesSubpath","migrateDisabledFields","migrateDocumentTitleContext","migrateForceSelect","migrateHideAPIURL","migrateImportExportHooks","migrateListViewSelectAPI","migrateNextGenerateViewportExport","migrateNextSubpathExports","migrateSlugField","migrateStorageAdaptersToConfig","migrateVersionsDefault","removeDefaultLocalePublishOption","removeGroupByTrue","removeLocalizeStatusConfig","removePublishSpecificLocale","removeStorageAlwaysInsertFields","removeVersionsTrue","renameExperimentalTableFeature","renameStorageAdaptersToStorage","renameTypescriptSchemaToJsonSchema","transforms"],"mappings":"AAEA,SAASA,qBAAqB,QAAQ,iDAAgD;AACtF,SAASC,WAAW,QAAQ,qCAAoC;AAChE,SAASC,qBAAqB,QAAQ,gDAA+C;AACrF,SAASC,yBAAyB,QAAQ,qDAAoD;AAC9F,SAASC,qBAAqB,QAAQ,gDAA+C;AACrF,SAASC,2BAA2B,QAAQ,wDAAuD;AACnG,SAASC,8BAA8B,QAAQ,2DAA0D;AACzG,SAASC,kBAAkB,QAAQ,6CAA4C;AAC/E,SAASC,qBAAqB,QAAQ,iDAAgD;AACtF,SAASC,qBAAqB,QAAQ,gDAA+C;AACrF,SAASC,2BAA2B,QAAQ,uDAAsD;AAClG,SAASC,kBAAkB,QAAQ,6CAA4C;AAC/E,SAASC,iBAAiB,QAAQ,6CAA4C;AAC9E,SAASC,wBAAwB,QAAQ,oDAAmD;AAC5F,SAASC,wBAAwB,QAAQ,qDAAoD;AAC7F,SAASC,iCAAiC,QAAQ,8DAA6D;AAC/G,SAASC,yBAAyB,QAAQ,qDAAoD;AAC9F,SAASC,gBAAgB,QAAQ,2CAA0C;AAC3E,SAASC,8BAA8B,QAAQ,2DAA0D;AACzG,SAASC,sBAAsB,QAAQ,iDAAgD;AACvF,SAASC,gCAAgC,QAAQ,6DAA4D;AAC7G,SAASC,iBAAiB,QAAQ,6CAA4C;AAC9E,SAASC,0BAA0B,QAAQ,sDAAqD;AAChG,SAASC,2BAA2B,QAAQ,uDAAsD;AAClG,SAASC,+BAA+B,QAAQ,4DAA2D;AAC3G,SAASC,kBAAkB,QAAQ,6CAA4C;AAC/E,SAASC,8BAA8B,QAAQ,0DAAyD;AACxG,SAASC,8BAA8B,QAAQ,2DAA0D;AACzG,SAASC,kCAAkC,QAAQ,gEAA+D;AAElH,OAAO,MAAMC,aAA0B;IACrC5B;IACAD;IACAG;IACAS;IACAV;IACAY;IACAL;IACAE;IACAP;IACAE;IACAC;IACAG;IACAQ;IACAb;IACAsB;IACAd;IACAL;IACAO;IACAC;IACAC;IACAE;IACAC;IACAC;IACAC;IACAG;IACAF;IACAC;IACAI;IACAF;CACD,CAAA"}
1
+ {"version":3,"sources":["../src/registry.ts"],"sourcesContent":["import type { Transform } from './types.js'\n\nimport { addOverrideAccessTrue } from './transforms/add-override-access-true/index.js'\nimport { exampleNoop } from './transforms/example-noop/index.js'\nimport { globalsComponentsEdit } from './transforms/globals-components-edit/index.js'\nimport { migrateAfterOperationRead } from './transforms/migrate-after-operation-read/index.js'\nimport { migrateAliasedExports } from './transforms/migrate-aliased-exports/index.js'\nimport { migrateAuthorshipDefault } from './transforms/migrate-authorship-default/index.js'\nimport { migrateAzureChunkLargeFiles } from './transforms/migrate-azure-chunk-large-files/index.js'\nimport { migrateBlockReferencesToBlocks } from './transforms/migrate-block-references-to-blocks/index.js'\nimport { migrateBuildScript } from './transforms/migrate-build-script/index.js'\nimport { migrateDbTypesSubpath } from './transforms/migrate-db-types-subpath/index.js'\nimport { migrateDisabledFields } from './transforms/migrate-disabled-fields/index.js'\nimport { migrateDocumentTitleContext } from './transforms/migrate-document-title-context/index.js'\nimport { migrateFieldComponentTypes } from './transforms/migrate-field-component-types/index.js'\nimport { migrateForceSelect } from './transforms/migrate-force-select/index.js'\nimport { migrateHideAPIURL } from './transforms/migrate-hide-api-url/index.js'\nimport { migrateImportExportHooks } from './transforms/migrate-import-export-hooks/index.js'\nimport { migrateListViewSelectAPI } from './transforms/migrate-list-view-select-api/index.js'\nimport { migrateNextGenerateViewportExport } from './transforms/migrate-next-generate-viewport-export/index.js'\nimport { migrateNextSubpathExports } from './transforms/migrate-next-subpath-exports/index.js'\nimport { migratePayloadRequestCreation } from './transforms/migrate-payload-request-creation/index.js'\nimport { migrateSharpToTransformer } from './transforms/migrate-sharp-to-transformer/index.js'\nimport { migrateSlugField } from './transforms/migrate-slug-field/index.js'\nimport { migrateStorageAdaptersToConfig } from './transforms/migrate-storage-adapters-to-config/index.js'\nimport { migrateVersionsDefault } from './transforms/migrate-versions-default/index.js'\nimport { removeDefaultLocalePublishOption } from './transforms/remove-default-locale-publish-option/index.js'\nimport { removeGroupByTrue } from './transforms/remove-group-by-true/index.js'\nimport { removeLocalizeStatusConfig } from './transforms/remove-localize-status-config/index.js'\nimport { removePublishSpecificLocale } from './transforms/remove-publish-specific-locale/index.js'\nimport { removeStorageAlwaysInsertFields } from './transforms/remove-storage-always-insert-fields/index.js'\nimport { removeVersionsTrue } from './transforms/remove-versions-true/index.js'\nimport { renameExperimentalTableFeature } from './transforms/rename-experimental-table-feature/index.js'\nimport { renameStorageAdaptersToStorage } from './transforms/rename-storage-adapters-to-storage/index.js'\nimport { renameTypescriptSchemaToJsonSchema } from './transforms/rename-typescript-schema-to-json-schema/index.js'\n\nexport const transforms: Transform[] = [\n exampleNoop,\n addOverrideAccessTrue,\n migrateAfterOperationRead,\n migrateHideAPIURL,\n globalsComponentsEdit,\n migrateListViewSelectAPI,\n migrateDisabledFields,\n migrateForceSelect,\n migrateFieldComponentTypes,\n migrateAliasedExports,\n migratePayloadRequestCreation,\n migrateBlockReferencesToBlocks,\n migrateBuildScript,\n migrateDocumentTitleContext,\n migrateSharpToTransformer,\n migrateStorageAdaptersToConfig,\n migrateAzureChunkLargeFiles,\n renameStorageAdaptersToStorage,\n migrateImportExportHooks,\n migrateDbTypesSubpath,\n migrateNextGenerateViewportExport,\n migrateNextSubpathExports,\n migrateSlugField,\n migrateVersionsDefault,\n migrateAuthorshipDefault,\n removeDefaultLocalePublishOption,\n removeGroupByTrue,\n removeLocalizeStatusConfig,\n removeVersionsTrue,\n removePublishSpecificLocale,\n removeStorageAlwaysInsertFields,\n renameTypescriptSchemaToJsonSchema,\n renameExperimentalTableFeature,\n]\n"],"names":["addOverrideAccessTrue","exampleNoop","globalsComponentsEdit","migrateAfterOperationRead","migrateAliasedExports","migrateAuthorshipDefault","migrateAzureChunkLargeFiles","migrateBlockReferencesToBlocks","migrateBuildScript","migrateDbTypesSubpath","migrateDisabledFields","migrateDocumentTitleContext","migrateFieldComponentTypes","migrateForceSelect","migrateHideAPIURL","migrateImportExportHooks","migrateListViewSelectAPI","migrateNextGenerateViewportExport","migrateNextSubpathExports","migratePayloadRequestCreation","migrateSharpToTransformer","migrateSlugField","migrateStorageAdaptersToConfig","migrateVersionsDefault","removeDefaultLocalePublishOption","removeGroupByTrue","removeLocalizeStatusConfig","removePublishSpecificLocale","removeStorageAlwaysInsertFields","removeVersionsTrue","renameExperimentalTableFeature","renameStorageAdaptersToStorage","renameTypescriptSchemaToJsonSchema","transforms"],"mappings":"AAEA,SAASA,qBAAqB,QAAQ,iDAAgD;AACtF,SAASC,WAAW,QAAQ,qCAAoC;AAChE,SAASC,qBAAqB,QAAQ,gDAA+C;AACrF,SAASC,yBAAyB,QAAQ,qDAAoD;AAC9F,SAASC,qBAAqB,QAAQ,gDAA+C;AACrF,SAASC,wBAAwB,QAAQ,mDAAkD;AAC3F,SAASC,2BAA2B,QAAQ,wDAAuD;AACnG,SAASC,8BAA8B,QAAQ,2DAA0D;AACzG,SAASC,kBAAkB,QAAQ,6CAA4C;AAC/E,SAASC,qBAAqB,QAAQ,iDAAgD;AACtF,SAASC,qBAAqB,QAAQ,gDAA+C;AACrF,SAASC,2BAA2B,QAAQ,uDAAsD;AAClG,SAASC,0BAA0B,QAAQ,sDAAqD;AAChG,SAASC,kBAAkB,QAAQ,6CAA4C;AAC/E,SAASC,iBAAiB,QAAQ,6CAA4C;AAC9E,SAASC,wBAAwB,QAAQ,oDAAmD;AAC5F,SAASC,wBAAwB,QAAQ,qDAAoD;AAC7F,SAASC,iCAAiC,QAAQ,8DAA6D;AAC/G,SAASC,yBAAyB,QAAQ,qDAAoD;AAC9F,SAASC,6BAA6B,QAAQ,yDAAwD;AACtG,SAASC,yBAAyB,QAAQ,qDAAoD;AAC9F,SAASC,gBAAgB,QAAQ,2CAA0C;AAC3E,SAASC,8BAA8B,QAAQ,2DAA0D;AACzG,SAASC,sBAAsB,QAAQ,iDAAgD;AACvF,SAASC,gCAAgC,QAAQ,6DAA4D;AAC7G,SAASC,iBAAiB,QAAQ,6CAA4C;AAC9E,SAASC,0BAA0B,QAAQ,sDAAqD;AAChG,SAASC,2BAA2B,QAAQ,uDAAsD;AAClG,SAASC,+BAA+B,QAAQ,4DAA2D;AAC3G,SAASC,kBAAkB,QAAQ,6CAA4C;AAC/E,SAASC,8BAA8B,QAAQ,0DAAyD;AACxG,SAASC,8BAA8B,QAAQ,2DAA0D;AACzG,SAASC,kCAAkC,QAAQ,gEAA+D;AAElH,OAAO,MAAMC,aAA0B;IACrChC;IACAD;IACAG;IACAW;IACAZ;IACAc;IACAN;IACAG;IACAD;IACAR;IACAe;IACAZ;IACAC;IACAG;IACAS;IACAE;IACAhB;IACAyB;IACAhB;IACAN;IACAQ;IACAC;IACAG;IACAE;IACAlB;IACAmB;IACAC;IACAC;IACAG;IACAF;IACAC;IACAI;IACAF;CACD,CAAA"}
@@ -19,11 +19,11 @@ while the v3 packages are still installed:
19
19
 
20
20
  ## 1. Next.js 16
21
21
 
22
- Payload v4 requires Next 16. The command did not touch Next. Run Next's own recommended agent
22
+ Payload v4 requires Next 16.4 or higher. The command did not touch Next. Run Next's own recommended agent
23
23
  workflow, which bumps Next + React and migrates the code as one unit:
24
24
  <https://nextjs.org/docs/app/guides/upgrading/version-16#use-an-ai-agent-recommended>
25
25
 
26
- Keep the resulting Next version within `>=16.2.6 <17` (the exact target is printed in the
26
+ Keep the resulting Next version within `>=16.4.0 <17` (the exact target is printed in the
27
27
  upgrade report), since Next's `upgrade latest` may point past 16 in future.
28
28
 
29
29
  ## 2. Regenerate generated files