@payloadcms/codemod 4.0.0-internal.b8a92d2 → 4.0.0-internal.bf4bcce
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.
- package/README.md +97 -30
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.help.d.ts +4 -0
- package/dist/cli.help.d.ts.map +1 -0
- package/dist/cli.help.js +29 -0
- package/dist/cli.help.js.map +1 -0
- package/dist/cli.js +49 -27
- package/dist/cli.js.map +1 -1
- package/dist/cli.parseFlags.d.ts +15 -0
- package/dist/cli.parseFlags.d.ts.map +1 -1
- package/dist/cli.parseFlags.js +35 -2
- package/dist/cli.parseFlags.js.map +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +16 -0
- package/dist/registry.js.map +1 -1
- package/dist/runbook/payload-v4-upgrade.md +55 -0
- package/dist/runbook/v4.mdx +2516 -0
- package/dist/transforms/add-override-access-true/basic.input.js +41 -0
- package/dist/transforms/add-override-access-true/basic.input.js.map +1 -0
- package/dist/transforms/add-override-access-true/basic.output.js +50 -0
- package/dist/transforms/add-override-access-true/basic.output.js.map +1 -0
- package/dist/transforms/add-override-access-true/comment-between-properties.input.js +11 -0
- package/dist/transforms/add-override-access-true/comment-between-properties.input.js.map +1 -0
- package/dist/transforms/add-override-access-true/comment-between-properties.output.js +12 -0
- package/dist/transforms/add-override-access-true/comment-between-properties.output.js.map +1 -0
- package/dist/transforms/add-override-access-true/index.d.ts +20 -0
- package/dist/transforms/add-override-access-true/index.d.ts.map +1 -0
- package/dist/transforms/add-override-access-true/index.js +208 -0
- package/dist/transforms/add-override-access-true/index.js.map +1 -0
- package/dist/transforms/add-override-access-true/javascript.input.d.ts +6 -0
- package/dist/transforms/add-override-access-true/javascript.input.d.ts.map +1 -0
- package/dist/transforms/add-override-access-true/javascript.input.js +24 -0
- package/dist/transforms/add-override-access-true/javascript.input.js.map +1 -0
- package/dist/transforms/add-override-access-true/javascript.output.d.ts +6 -0
- package/dist/transforms/add-override-access-true/javascript.output.d.ts.map +1 -0
- package/dist/transforms/add-override-access-true/javascript.output.js +26 -0
- package/dist/transforms/add-override-access-true/javascript.output.js.map +1 -0
- package/dist/transforms/add-override-access-true/non-matching.input.js +42 -0
- package/dist/transforms/add-override-access-true/non-matching.input.js.map +1 -0
- package/dist/transforms/add-override-access-true/non-matching.output.js +42 -0
- package/dist/transforms/add-override-access-true/non-matching.output.js.map +1 -0
- package/dist/transforms/add-override-access-true/single-line.input.js +13 -0
- package/dist/transforms/add-override-access-true/single-line.input.js.map +1 -0
- package/dist/transforms/add-override-access-true/single-line.output.js +17 -0
- package/dist/transforms/add-override-access-true/single-line.output.js.map +1 -0
- package/dist/transforms/add-override-access-true/trailing-comment.input.js +10 -0
- package/dist/transforms/add-override-access-true/trailing-comment.input.js.map +1 -0
- package/dist/transforms/add-override-access-true/trailing-comment.output.js +12 -0
- package/dist/transforms/add-override-access-true/trailing-comment.output.js.map +1 -0
- package/dist/transforms/migrate-admin-context-properties/basic.input.js +32 -0
- package/dist/transforms/migrate-admin-context-properties/basic.input.js.map +1 -0
- package/dist/transforms/migrate-admin-context-properties/basic.output.js +30 -0
- package/dist/transforms/migrate-admin-context-properties/basic.output.js.map +1 -0
- package/dist/transforms/migrate-admin-context-properties/index.d.ts +3 -0
- package/dist/transforms/migrate-admin-context-properties/index.d.ts.map +1 -0
- package/dist/transforms/migrate-admin-context-properties/index.js +302 -0
- package/dist/transforms/migrate-admin-context-properties/index.js.map +1 -0
- package/dist/transforms/migrate-admin-context-properties/no-match.input.js +30 -0
- package/dist/transforms/migrate-admin-context-properties/no-match.input.js.map +1 -0
- package/dist/transforms/migrate-admin-context-properties/no-match.output.js +30 -0
- package/dist/transforms/migrate-admin-context-properties/no-match.output.js.map +1 -0
- package/dist/transforms/migrate-aliased-exports/index.d.ts.map +1 -1
- package/dist/transforms/migrate-aliased-exports/index.js +6 -5
- package/dist/transforms/migrate-aliased-exports/index.js.map +1 -1
- package/dist/transforms/migrate-aliased-exports/request.input.js +6 -0
- package/dist/transforms/migrate-aliased-exports/request.input.js.map +1 -0
- package/dist/transforms/migrate-aliased-exports/request.output.js +5 -0
- package/dist/transforms/migrate-aliased-exports/request.output.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/already-set.input.js +15 -0
- package/dist/transforms/migrate-authorship-default/already-set.input.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/already-set.output.js +15 -0
- package/dist/transforms/migrate-authorship-default/already-set.output.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/basic.input.js +16 -0
- package/dist/transforms/migrate-authorship-default/basic.input.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/basic.output.js +18 -0
- package/dist/transforms/migrate-authorship-default/basic.output.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/build-config.input.js +32 -0
- package/dist/transforms/migrate-authorship-default/build-config.input.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/build-config.output.js +35 -0
- package/dist/transforms/migrate-authorship-default/build-config.output.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/globals.input.js +16 -0
- package/dist/transforms/migrate-authorship-default/globals.input.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/globals.output.js +17 -0
- package/dist/transforms/migrate-authorship-default/globals.output.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/index.d.ts +11 -0
- package/dist/transforms/migrate-authorship-default/index.d.ts.map +1 -0
- package/dist/transforms/migrate-authorship-default/index.js +141 -0
- package/dist/transforms/migrate-authorship-default/index.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/non-matching.input.js +18 -0
- package/dist/transforms/migrate-authorship-default/non-matching.input.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/non-matching.output.js +18 -0
- package/dist/transforms/migrate-authorship-default/non-matching.output.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/satisfies.input.js +11 -0
- package/dist/transforms/migrate-authorship-default/satisfies.input.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/satisfies.output.js +13 -0
- package/dist/transforms/migrate-authorship-default/satisfies.output.js.map +1 -0
- package/dist/transforms/migrate-displayed-field-value-args/basic.input.js +4 -0
- package/dist/transforms/migrate-displayed-field-value-args/basic.input.js.map +1 -0
- package/dist/transforms/migrate-displayed-field-value-args/basic.output.js +8 -0
- package/dist/transforms/migrate-displayed-field-value-args/basic.output.js.map +1 -0
- package/dist/transforms/migrate-displayed-field-value-args/index.d.ts +3 -0
- package/dist/transforms/migrate-displayed-field-value-args/index.d.ts.map +1 -0
- package/dist/transforms/migrate-displayed-field-value-args/index.js +84 -0
- package/dist/transforms/migrate-displayed-field-value-args/index.js.map +1 -0
- package/dist/transforms/migrate-displayed-field-value-args/namespace.input.js +4 -0
- package/dist/transforms/migrate-displayed-field-value-args/namespace.input.js.map +1 -0
- package/dist/transforms/migrate-displayed-field-value-args/namespace.output.js +8 -0
- package/dist/transforms/migrate-displayed-field-value-args/namespace.output.js.map +1 -0
- package/dist/transforms/migrate-displayed-field-value-args/no-match.input.js +4 -0
- package/dist/transforms/migrate-displayed-field-value-args/no-match.input.js.map +1 -0
- package/dist/transforms/migrate-displayed-field-value-args/no-match.output.js +4 -0
- package/dist/transforms/migrate-displayed-field-value-args/no-match.output.js.map +1 -0
- package/dist/transforms/migrate-field-component-types/basic.input.js +8 -0
- package/dist/transforms/migrate-field-component-types/basic.input.js.map +1 -0
- package/dist/transforms/migrate-field-component-types/basic.output.js +8 -0
- package/dist/transforms/migrate-field-component-types/basic.output.js.map +1 -0
- package/dist/transforms/migrate-field-component-types/index.d.ts +3 -0
- package/dist/transforms/migrate-field-component-types/index.d.ts.map +1 -0
- package/dist/transforms/migrate-field-component-types/index.js +620 -0
- package/dist/transforms/migrate-field-component-types/index.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/aliases.input.js +8 -0
- package/dist/transforms/migrate-payload-request-creation/aliases.input.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/aliases.output.js +31 -0
- package/dist/transforms/migrate-payload-request-creation/aliases.output.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/collision.input.js +9 -0
- package/dist/transforms/migrate-payload-request-creation/collision.input.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/comments.input.js +9 -0
- package/dist/transforms/migrate-payload-request-creation/comments.input.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/comments.output.js +34 -0
- package/dist/transforms/migrate-payload-request-creation/comments.output.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/empty.input.js +5 -0
- package/dist/transforms/migrate-payload-request-creation/empty.input.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/empty.output.js +7 -0
- package/dist/transforms/migrate-payload-request-creation/empty.output.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/evaluation-order.input.js +10 -0
- package/dist/transforms/migrate-payload-request-creation/evaluation-order.input.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/expression.input.js +8 -0
- package/dist/transforms/migrate-payload-request-creation/expression.input.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/expression.output.js +8 -0
- package/dist/transforms/migrate-payload-request-creation/expression.output.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/getters.input.js +52 -0
- package/dist/transforms/migrate-payload-request-creation/getters.input.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/index.d.ts +3 -0
- package/dist/transforms/migrate-payload-request-creation/index.d.ts.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/index.js +236 -0
- package/dist/transforms/migrate-payload-request-creation/index.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/internal.input.js +6 -0
- package/dist/transforms/migrate-payload-request-creation/internal.input.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/internal.output.js +6 -0
- package/dist/transforms/migrate-payload-request-creation/internal.output.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/non-matching.input.js +5 -0
- package/dist/transforms/migrate-payload-request-creation/non-matching.input.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/populated.input.js +7 -0
- package/dist/transforms/migrate-payload-request-creation/populated.input.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/populated.output.js +30 -0
- package/dist/transforms/migrate-payload-request-creation/populated.output.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/shadowed.input.js +7 -0
- package/dist/transforms/migrate-payload-request-creation/shadowed.input.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/shadowed.output.js +9 -0
- package/dist/transforms/migrate-payload-request-creation/shadowed.output.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/shorthand.input.js +12 -0
- package/dist/transforms/migrate-payload-request-creation/shorthand.input.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/shorthand.output.js +12 -0
- package/dist/transforms/migrate-payload-request-creation/shorthand.output.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/unsupported.input.js +9 -0
- package/dist/transforms/migrate-payload-request-creation/unsupported.input.js.map +1 -0
- package/dist/transforms/migrate-sharp-to-transformer/basic.input.js +28 -0
- package/dist/transforms/migrate-sharp-to-transformer/basic.input.js.map +1 -0
- package/dist/transforms/migrate-sharp-to-transformer/basic.output.js +39 -0
- package/dist/transforms/migrate-sharp-to-transformer/basic.output.js.map +1 -0
- package/dist/transforms/migrate-sharp-to-transformer/existing-transformers.input.js +27 -0
- package/dist/transforms/migrate-sharp-to-transformer/existing-transformers.input.js.map +1 -0
- package/dist/transforms/migrate-sharp-to-transformer/existing-transformers.output.js +33 -0
- package/dist/transforms/migrate-sharp-to-transformer/existing-transformers.output.js.map +1 -0
- package/dist/transforms/migrate-sharp-to-transformer/index.d.ts +3 -0
- package/dist/transforms/migrate-sharp-to-transformer/index.d.ts.map +1 -0
- package/dist/transforms/migrate-sharp-to-transformer/index.js +430 -0
- package/dist/transforms/migrate-sharp-to-transformer/index.js.map +1 -0
- package/dist/transforms/migrate-sharp-to-transformer/no-match.input.js +11 -0
- package/dist/transforms/migrate-sharp-to-transformer/no-match.input.js.map +1 -0
- package/dist/transforms/migrate-sharp-to-transformer/no-match.output.js +11 -0
- package/dist/transforms/migrate-sharp-to-transformer/no-match.output.js.map +1 -0
- package/dist/transforms/migrate-versions-default/index.js +5 -5
- package/dist/transforms/migrate-versions-default/index.js.map +1 -1
- package/dist/transforms/remove-publish-specific-locale/index.d.ts.map +1 -1
- package/dist/transforms/remove-publish-specific-locale/index.js.map +1 -1
- package/dist/transforms/remove-storage-always-insert-fields/index.d.ts.map +1 -1
- package/dist/transforms/remove-storage-always-insert-fields/index.js +4 -0
- package/dist/transforms/remove-storage-always-insert-fields/index.js.map +1 -1
- package/dist/transforms/remove-versions-true/index.js +4 -4
- package/dist/transforms/remove-versions-true/index.js.map +1 -1
- package/dist/transforms/rename-diff-value-props/basic.input.js +38 -0
- package/dist/transforms/rename-diff-value-props/basic.input.js.map +1 -0
- package/dist/transforms/rename-diff-value-props/basic.output.js +38 -0
- package/dist/transforms/rename-diff-value-props/basic.output.js.map +1 -0
- package/dist/transforms/rename-diff-value-props/index.d.ts +3 -0
- package/dist/transforms/rename-diff-value-props/index.d.ts.map +1 -0
- package/dist/transforms/rename-diff-value-props/index.js +328 -0
- package/dist/transforms/rename-diff-value-props/index.js.map +1 -0
- package/dist/transforms/rename-diff-value-props/no-match.input.js +8 -0
- package/dist/transforms/rename-diff-value-props/no-match.input.js.map +1 -0
- package/dist/transforms/rename-experimental-table-feature/index.d.ts.map +1 -1
- package/dist/transforms/rename-experimental-table-feature/index.js +7 -1
- package/dist/transforms/rename-experimental-table-feature/index.js.map +1 -1
- package/dist/upgrade/defaultTag.d.ts +9 -0
- package/dist/upgrade/defaultTag.d.ts.map +1 -0
- package/dist/upgrade/defaultTag.js +25 -0
- package/dist/upgrade/defaultTag.js.map +1 -0
- package/dist/upgrade/detectPackageManager.d.ts +8 -0
- package/dist/upgrade/detectPackageManager.d.ts.map +1 -0
- package/dist/upgrade/detectPackageManager.js +38 -0
- package/dist/upgrade/detectPackageManager.js.map +1 -0
- package/dist/upgrade/dispatch.d.ts +38 -0
- package/dist/upgrade/dispatch.d.ts.map +1 -0
- package/dist/upgrade/dispatch.js +132 -0
- package/dist/upgrade/dispatch.js.map +1 -0
- package/dist/upgrade/index.d.ts +25 -0
- package/dist/upgrade/index.d.ts.map +1 -0
- package/dist/upgrade/index.js +209 -0
- package/dist/upgrade/index.js.map +1 -0
- package/dist/upgrade/prompt.d.ts +14 -0
- package/dist/upgrade/prompt.d.ts.map +1 -0
- package/dist/upgrade/prompt.js +77 -0
- package/dist/upgrade/prompt.js.map +1 -0
- package/dist/upgrade/report.d.ts +21 -0
- package/dist/upgrade/report.d.ts.map +1 -0
- package/dist/upgrade/report.js +47 -0
- package/dist/upgrade/report.js.map +1 -0
- package/dist/upgrade/resolveVersions.d.ts +13 -0
- package/dist/upgrade/resolveVersions.d.ts.map +1 -0
- package/dist/upgrade/resolveVersions.js +55 -0
- package/dist/upgrade/resolveVersions.js.map +1 -0
- package/dist/upgrade/rewritePackageJson.d.ts +32 -0
- package/dist/upgrade/rewritePackageJson.d.ts.map +1 -0
- package/dist/upgrade/rewritePackageJson.js +164 -0
- package/dist/upgrade/rewritePackageJson.js.map +1 -0
- package/dist/upgrade/runInstall.d.ts +16 -0
- package/dist/upgrade/runInstall.d.ts.map +1 -0
- package/dist/upgrade/runInstall.js +17 -0
- package/dist/upgrade/runInstall.js.map +1 -0
- package/dist/upgrade/selectAgent.d.ts +45 -0
- package/dist/upgrade/selectAgent.d.ts.map +1 -0
- package/dist/upgrade/selectAgent.js +54 -0
- package/dist/upgrade/selectAgent.js.map +1 -0
- package/dist/upgrade/selfCommand.d.ts +13 -0
- package/dist/upgrade/selfCommand.d.ts.map +1 -0
- package/dist/upgrade/selfCommand.js +17 -0
- package/dist/upgrade/selfCommand.js.map +1 -0
- package/dist/upgrade/types.d.ts +47 -0
- package/dist/upgrade/types.d.ts.map +1 -0
- package/dist/upgrade/types.js +11 -0
- package/dist/upgrade/types.js.map +1 -0
- package/dist/utils/project.d.ts +10 -0
- package/dist/utils/project.d.ts.map +1 -0
- package/dist/utils/project.js +43 -0
- package/dist/utils/project.js.map +1 -0
- package/package.json +8 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/transforms/migrate-aliased-exports/index.ts"],"sourcesContent":["import type { ImportDeclaration, ImportSpecifier, SourceFile } from 'ts-morph'\n\nimport type { Transform } from '../../types.js'\n\ntype Migration = {\n rename?: string\n to: string\n}\n\nconst SOURCE_MAP: Record<string, Record<string, Migration>> = {\n '@payloadcms/next/utilities': {\n addDataAndFileToRequest: { to: 'payload' },\n addLocalesToRequestFromData: { to: 'payload' },\n createPayloadRequest: { to: 'payload' },\n headersWithCors: { to: 'payload' },\n mergeHeaders: { to: 'payload' },\n sanitizeLocales: { to: 'payload' },\n },\n '@payloadcms/ui': {\n Column: { to: 'payload' },\n ListComponentClientProps: { rename: 'ListViewClientProps', to: 'payload' },\n ListComponentServerProps: { rename: 'ListViewServerProps', to: 'payload' },\n ListPreferences: { rename: 'CollectionPreferences', to: 'payload' },\n ListViewClientProps: { to: 'payload' },\n ListViewSlots: { to: 'payload' },\n },\n '@payloadcms/ui/shared': {\n EntityType: { to: 'payload/shared' },\n formatAdminURL: { to: 'payload/shared' },\n mergeListSearchAndWhere: { to: 'payload/shared' },\n },\n}\n\ntype MigratingSpec = {\n migration: Migration\n named: ImportSpecifier\n}\n\nexport const migrateAliasedExports: Transform = {\n name: 'migrate-aliased-exports',\n apply: ({ project }) => {\n const filesChanged = new Set<string>()\n const notes: string[] = []\n\n for (const file of project.getSourceFiles()) {\n let mutated = false\n\n for (const importDecl of [...file.getImportDeclarations()]) {\n const migrations = SOURCE_MAP[importDecl.getModuleSpecifierValue()]\n if (!migrations) {\n continue\n }\n\n const named = importDecl.getNamedImports()\n const migrating: MigratingSpec[] = []\n let kept = 0\n\n for (const spec of named) {\n const migration = migrations[spec.getName()]\n if (migration) {\n migrating.push({ migration, named: spec })\n } else {\n kept++\n }\n }\n\n if (migrating.length === 0) {\n continue\n }\n\n const targets = new Set(migrating.map(({ migration }) => migration.to))\n\n if (kept === 0 && targets.size === 1) {\n const [target] = [...targets]\n importDecl.setModuleSpecifier(target!)\n for (const { migration, named: spec } of migrating) {\n applyRename({ migration, notes, sourceFile: file, spec, target: target! })\n }\n mutated = true\n continue\n }\n\n for (const { migration, named: spec } of migrating) {\n const isTypeOnly = importDecl.isTypeOnly() || spec.isTypeOnly()\n const aliasNode = spec.getAliasNode()\n const localName = aliasNode?.getText() ?? spec.getName()\n const canonicalName = migration.rename ?? spec.getName()\n const alias = localName !== canonicalName ? localName : undefined\n\n spec.remove()\n\n attachToTargetImport({\n file,\n isTypeOnly,\n named: { name: canonicalName, alias },\n target: migration.to,\n })\n\n if (migration.rename) {\n notes.push(\n renameNote({ filePath: file.getFilePath(), migration, originalName: spec.getName() }),\n )\n }\n }\n\n const remaining = importDecl.getNamedImports()\n if (\n remaining.length === 0 &&\n !importDecl.getDefaultImport() &&\n !importDecl.getNamespaceImport()\n ) {\n importDecl.remove()\n }\n\n mutated = true\n }\n\n if (mutated) {\n filesChanged.add(file.getFilePath())\n }\n }\n\n return {\n filesChanged: [...filesChanged],\n ...(notes.length > 0 ? { notes } : {}),\n }\n },\n description:\n 'Move imports of aliased re-exports from @payloadcms/ui and @payloadcms/next/utilities to their canonical sources in `payload` / `payload/shared`. Renamed names (`ListPreferences` → `CollectionPreferences`, `ListComponentClientProps` → `ListViewClientProps`, `ListComponentServerProps` → `ListViewServerProps`) are imported using an `as` alias so existing usages keep compiling.',\n}\n\ntype ApplyRenameArgs = {\n migration: Migration\n notes: string[]\n sourceFile: SourceFile\n spec: ImportSpecifier\n target: string\n}\n\nfunction applyRename({ migration, notes, sourceFile, spec, target }: ApplyRenameArgs): void {\n if (!migration.rename) {\n return\n }\n\n const originalName = spec.getName()\n const aliasNode = spec.getAliasNode()\n const localName = aliasNode?.getText() ?? originalName\n\n spec.setName(migration.rename)\n\n if (localName !== migration.rename) {\n spec.setAlias(localName)\n } else {\n spec.removeAlias()\n }\n\n notes.push(renameNote({ filePath: sourceFile.getFilePath(), migration, originalName }))\n}\n\ntype RenameNoteArgs = {\n filePath: string\n migration: Migration\n originalName: string\n}\n\nfunction renameNote({ filePath, migration, originalName }: RenameNoteArgs): string {\n return `${filePath}: \\`${originalName}\\` is now \\`${migration.rename}\\` in \\`${migration.to}\\`. Codemod imported as \\`${migration.rename} as ${originalName}\\`; rename usages manually if you want to drop the alias.`\n}\n\ntype AttachToTargetArgs = {\n file: SourceFile\n isTypeOnly: boolean\n named: { alias?: string; name: string }\n target: string\n}\n\nfunction attachToTargetImport({ file, isTypeOnly, named, target }: AttachToTargetArgs): void {\n const localName = named.alias ?? named.name\n const existing = findExistingTarget({ file, isTypeOnly, target })\n\n if (existing) {\n const declTypeOnly = existing.isTypeOnly()\n const alreadyHas = existing\n .getNamedImports()\n .some((spec) => (spec.getAliasNode()?.getText() ?? spec.getName()) === localName)\n if (alreadyHas) {\n return\n }\n existing.addNamedImport({\n name: named.name,\n alias: named.alias,\n isTypeOnly: !declTypeOnly && isTypeOnly,\n })\n return\n }\n\n file.addImportDeclaration({\n isTypeOnly,\n moduleSpecifier: target,\n namedImports: [{ name: named.name, alias: named.alias }],\n })\n}\n\ntype FindExistingTargetArgs = {\n file: SourceFile\n isTypeOnly: boolean\n target: string\n}\n\nfunction findExistingTarget({\n file,\n isTypeOnly,\n target,\n}: FindExistingTargetArgs): ImportDeclaration | undefined {\n const candidates = file\n .getImportDeclarations()\n .filter((decl) => decl.getModuleSpecifierValue() === target)\n\n if (candidates.length === 0) {\n return undefined\n }\n\n if (isTypeOnly) {\n return candidates.find((decl) => decl.isTypeOnly()) ?? candidates[0]\n }\n\n return candidates.find((decl) => !decl.isTypeOnly()) ?? candidates[0]\n}\n"],"names":["SOURCE_MAP","addDataAndFileToRequest","to","addLocalesToRequestFromData","createPayloadRequest","headersWithCors","mergeHeaders","sanitizeLocales","Column","ListComponentClientProps","rename","ListComponentServerProps","ListPreferences","ListViewClientProps","ListViewSlots","EntityType","formatAdminURL","mergeListSearchAndWhere","migrateAliasedExports","name","apply","project","filesChanged","Set","notes","file","getSourceFiles","mutated","importDecl","getImportDeclarations","migrations","getModuleSpecifierValue","named","getNamedImports","migrating","kept","spec","migration","getName","push","length","targets","map","size","target","setModuleSpecifier","applyRename","sourceFile","isTypeOnly","aliasNode","getAliasNode","localName","getText","canonicalName","alias","undefined","remove","attachToTargetImport","renameNote","filePath","getFilePath","originalName","remaining","getDefaultImport","getNamespaceImport","add","description","setName","setAlias","removeAlias","existing","findExistingTarget","declTypeOnly","alreadyHas","some","addNamedImport","addImportDeclaration","moduleSpecifier","namedImports","candidates","filter","decl","find"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-aliased-exports/index.ts"],"sourcesContent":["import type { ImportDeclaration, ImportSpecifier, SourceFile } from 'ts-morph'\n\nimport type { Transform } from '../../types.js'\n\ntype Migration = {\n rename?: string\n to: string\n}\n\nconst SOURCE_MAP: Record<string, Record<string, Migration>> = {\n '@payloadcms/next/utilities': {\n addDataAndFileToRequest: { to: 'payload' },\n addLocalesToRequestFromData: { to: 'payload' },\n createPayloadRequest: { rename: 'createPayloadRequestFromWebRequest', to: 'payload' },\n headersWithCors: { to: 'payload' },\n mergeHeaders: { to: 'payload' },\n sanitizeLocales: { to: 'payload' },\n },\n '@payloadcms/ui': {\n Column: { to: 'payload' },\n ListComponentClientProps: { rename: 'ListViewClientProps', to: 'payload' },\n ListComponentServerProps: { rename: 'ListViewServerProps', to: 'payload' },\n ListPreferences: { rename: 'CollectionPreferences', to: 'payload' },\n ListViewClientProps: { to: 'payload' },\n ListViewSlots: { to: 'payload' },\n },\n '@payloadcms/ui/shared': {\n EntityType: { to: 'payload/shared' },\n formatAdminURL: { to: 'payload/shared' },\n mergeListSearchAndWhere: { to: 'payload/shared' },\n },\n}\n\ntype MigratingSpec = {\n migration: Migration\n named: ImportSpecifier\n}\n\nexport const migrateAliasedExports: Transform = {\n name: 'migrate-aliased-exports',\n apply: ({ project }) => {\n const filesChanged = new Set<string>()\n const notes: string[] = []\n\n for (const file of project.getSourceFiles()) {\n let mutated = false\n\n for (const importDecl of [...file.getImportDeclarations()]) {\n const migrations = SOURCE_MAP[importDecl.getModuleSpecifierValue()]\n if (!migrations) {\n continue\n }\n\n const named = importDecl.getNamedImports()\n const migrating: MigratingSpec[] = []\n let kept = 0\n\n for (const spec of named) {\n const migration = migrations[spec.getName()]\n if (migration) {\n migrating.push({ migration, named: spec })\n } else {\n kept++\n }\n }\n\n if (migrating.length === 0) {\n continue\n }\n\n const targets = new Set(migrating.map(({ migration }) => migration.to))\n\n if (kept === 0 && targets.size === 1) {\n const [target] = [...targets]\n importDecl.setModuleSpecifier(target!)\n for (const { migration, named: spec } of migrating) {\n applyRename({ migration, notes, sourceFile: file, spec })\n }\n mutated = true\n continue\n }\n\n for (const { migration, named: spec } of migrating) {\n const isTypeOnly = importDecl.isTypeOnly() || spec.isTypeOnly()\n const aliasNode = spec.getAliasNode()\n const localName = aliasNode?.getText() ?? spec.getName()\n const canonicalName = migration.rename ?? spec.getName()\n const originalName = spec.getName()\n const alias = localName !== canonicalName ? localName : undefined\n\n spec.remove()\n\n attachToTargetImport({\n file,\n isTypeOnly,\n named: { name: canonicalName, alias },\n target: migration.to,\n })\n\n if (migration.rename) {\n notes.push(renameNote({ filePath: file.getFilePath(), migration, originalName }))\n }\n }\n\n const remaining = importDecl.getNamedImports()\n if (\n remaining.length === 0 &&\n !importDecl.getDefaultImport() &&\n !importDecl.getNamespaceImport()\n ) {\n importDecl.remove()\n }\n\n mutated = true\n }\n\n if (mutated) {\n filesChanged.add(file.getFilePath())\n }\n }\n\n return {\n filesChanged: [...filesChanged],\n ...(notes.length > 0 ? { notes } : {}),\n }\n },\n description:\n 'Move imports of aliased re-exports from @payloadcms/ui and @payloadcms/next/utilities to their canonical sources in `payload` / `payload/shared`. Renamed names (`createPayloadRequest` → `createPayloadRequestFromWebRequest`, `ListPreferences` → `CollectionPreferences`, `ListComponentClientProps` → `ListViewClientProps`, `ListComponentServerProps` → `ListViewServerProps`) are imported using an `as` alias so existing usages keep compiling.',\n}\n\ntype ApplyRenameArgs = {\n migration: Migration\n notes: string[]\n sourceFile: SourceFile\n spec: ImportSpecifier\n}\n\nfunction applyRename({ migration, notes, sourceFile, spec }: ApplyRenameArgs): void {\n if (!migration.rename) {\n return\n }\n\n const originalName = spec.getName()\n const aliasNode = spec.getAliasNode()\n const localName = aliasNode?.getText() ?? originalName\n\n spec.setName(migration.rename)\n\n if (localName !== migration.rename) {\n spec.setAlias(localName)\n } else {\n spec.removeAlias()\n }\n\n notes.push(renameNote({ filePath: sourceFile.getFilePath(), migration, originalName }))\n}\n\ntype RenameNoteArgs = {\n filePath: string\n migration: Migration\n originalName: string\n}\n\nfunction renameNote({ filePath, migration, originalName }: RenameNoteArgs): string {\n return `${filePath}: \\`${originalName}\\` is now \\`${migration.rename}\\` in \\`${migration.to}\\`. Codemod imported as \\`${migration.rename} as ${originalName}\\`; rename usages manually if you want to drop the alias.`\n}\n\ntype AttachToTargetArgs = {\n file: SourceFile\n isTypeOnly: boolean\n named: { alias?: string; name: string }\n target: string\n}\n\nfunction attachToTargetImport({ file, isTypeOnly, named, target }: AttachToTargetArgs): void {\n const localName = named.alias ?? named.name\n const existing = findExistingTarget({ file, isTypeOnly, target })\n\n if (existing) {\n const declTypeOnly = existing.isTypeOnly()\n const alreadyHas = existing\n .getNamedImports()\n .some((spec) => (spec.getAliasNode()?.getText() ?? spec.getName()) === localName)\n if (alreadyHas) {\n return\n }\n existing.addNamedImport({\n name: named.name,\n alias: named.alias,\n isTypeOnly: !declTypeOnly && isTypeOnly,\n })\n return\n }\n\n file.addImportDeclaration({\n isTypeOnly,\n moduleSpecifier: target,\n namedImports: [{ name: named.name, alias: named.alias }],\n })\n}\n\ntype FindExistingTargetArgs = {\n file: SourceFile\n isTypeOnly: boolean\n target: string\n}\n\nfunction findExistingTarget({\n file,\n isTypeOnly,\n target,\n}: FindExistingTargetArgs): ImportDeclaration | undefined {\n const candidates = file\n .getImportDeclarations()\n .filter((decl) => decl.getModuleSpecifierValue() === target)\n\n if (candidates.length === 0) {\n return undefined\n }\n\n if (isTypeOnly) {\n return candidates.find((decl) => decl.isTypeOnly()) ?? candidates[0]\n }\n\n return candidates.find((decl) => !decl.isTypeOnly()) ?? candidates[0]\n}\n"],"names":["SOURCE_MAP","addDataAndFileToRequest","to","addLocalesToRequestFromData","createPayloadRequest","rename","headersWithCors","mergeHeaders","sanitizeLocales","Column","ListComponentClientProps","ListComponentServerProps","ListPreferences","ListViewClientProps","ListViewSlots","EntityType","formatAdminURL","mergeListSearchAndWhere","migrateAliasedExports","name","apply","project","filesChanged","Set","notes","file","getSourceFiles","mutated","importDecl","getImportDeclarations","migrations","getModuleSpecifierValue","named","getNamedImports","migrating","kept","spec","migration","getName","push","length","targets","map","size","target","setModuleSpecifier","applyRename","sourceFile","isTypeOnly","aliasNode","getAliasNode","localName","getText","canonicalName","originalName","alias","undefined","remove","attachToTargetImport","renameNote","filePath","getFilePath","remaining","getDefaultImport","getNamespaceImport","add","description","setName","setAlias","removeAlias","existing","findExistingTarget","declTypeOnly","alreadyHas","some","addNamedImport","addImportDeclaration","moduleSpecifier","namedImports","candidates","filter","decl","find"],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { createPayloadRequest } from '@payloadcms/next/utilities';
|
|
2
|
+
import { createPayloadRequest as webRequest } from '@payloadcms/next/utilities';
|
|
3
|
+
const req = createPayloadRequest(args);
|
|
4
|
+
const aliased = webRequest(args);
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=request.input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-aliased-exports/request.input.ts"],"sourcesContent":["import { createPayloadRequest } from '@payloadcms/next/utilities'\nimport { createPayloadRequest as webRequest, unrelated } from '@payloadcms/next/utilities'\n\nconst req = createPayloadRequest(args)\nconst aliased = webRequest(args)\n"],"names":["createPayloadRequest","webRequest","req","args","aliased"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,6BAA4B;AACjE,SAASA,wBAAwBC,UAAU,QAAmB,6BAA4B;AAE1F,MAAMC,MAAMF,qBAAqBG;AACjC,MAAMC,UAAUH,WAAWE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-aliased-exports/request.output.ts"],"sourcesContent":["import { createPayloadRequestFromWebRequest as createPayloadRequest, createPayloadRequestFromWebRequest as webRequest } from 'payload'\nimport { unrelated } from '@payloadcms/next/utilities'\n\nconst req = createPayloadRequest(args)\nconst aliased = webRequest(args)\n"],"names":["createPayloadRequestFromWebRequest","createPayloadRequest","webRequest","req","args","aliased"],"mappings":"AAAA,SAASA,sCAAsCC,oBAAoB,EAAED,sCAAsCE,UAAU,QAAQ,UAAS;AAGtI,MAAMC,MAAMF,qBAAqBG;AACjC,MAAMC,UAAUH,WAAWE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-authorship-default/already-set.input.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload'\n\nexport const Posts: CollectionConfig = {\n slug: 'posts',\n fields: [],\n authorship: {\n updatedBy: false,\n },\n}\n\nexport const Users: CollectionConfig = {\n slug: 'users',\n auth: true,\n fields: [],\n authorship: false,\n}\n"],"names":["Posts","slug","fields","authorship","updatedBy","Users","auth"],"mappings":"AAEA,OAAO,MAAMA,QAA0B;IACrCC,MAAM;IACNC,QAAQ,EAAE;IACVC,YAAY;QACVC,WAAW;IACb;AACF,EAAC;AAED,OAAO,MAAMC,QAA0B;IACrCJ,MAAM;IACNK,MAAM;IACNJ,QAAQ,EAAE;IACVC,YAAY;AACd,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-authorship-default/already-set.output.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload'\n\nexport const Posts: CollectionConfig = {\n slug: 'posts',\n fields: [],\n authorship: {\n updatedBy: false,\n },\n}\n\nexport const Users: CollectionConfig = {\n slug: 'users',\n auth: true,\n fields: [],\n authorship: false,\n}\n"],"names":["Posts","slug","fields","authorship","updatedBy","Users","auth"],"mappings":"AAEA,OAAO,MAAMA,QAA0B;IACrCC,MAAM;IACNC,QAAQ,EAAE;IACVC,YAAY;QACVC,WAAW;IACb;AACF,EAAC;AAED,OAAO,MAAMC,QAA0B;IACrCJ,MAAM;IACNK,MAAM;IACNJ,QAAQ,EAAE;IACVC,YAAY;AACd,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-authorship-default/basic.input.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload'\n\nexport const Posts: CollectionConfig = {\n slug: 'posts',\n fields: [\n {\n name: 'title',\n type: 'text',\n },\n ],\n}\n\nexport const Media: CollectionConfig = {\n slug: 'media',\n fields: [],\n upload: true,\n}\n"],"names":["Posts","slug","fields","name","type","Media","upload"],"mappings":"AAEA,OAAO,MAAMA,QAA0B;IACrCC,MAAM;IACNC,QAAQ;QACN;YACEC,MAAM;YACNC,MAAM;QACR;KACD;AACH,EAAC;AAED,OAAO,MAAMC,QAA0B;IACrCJ,MAAM;IACNC,QAAQ,EAAE;IACVI,QAAQ;AACV,EAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export const Posts = {
|
|
2
|
+
slug: 'posts',
|
|
3
|
+
fields: [
|
|
4
|
+
{
|
|
5
|
+
name: 'title',
|
|
6
|
+
type: 'text'
|
|
7
|
+
}
|
|
8
|
+
],
|
|
9
|
+
authorship: false
|
|
10
|
+
};
|
|
11
|
+
export const Media = {
|
|
12
|
+
slug: 'media',
|
|
13
|
+
fields: [],
|
|
14
|
+
upload: true,
|
|
15
|
+
authorship: false
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=basic.output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-authorship-default/basic.output.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload'\n\nexport const Posts: CollectionConfig = {\n slug: 'posts',\n fields: [\n {\n name: 'title',\n type: 'text',\n },\n ],\n authorship: false,\n}\n\nexport const Media: CollectionConfig = {\n slug: 'media',\n fields: [],\n upload: true,\n authorship: false,\n}\n"],"names":["Posts","slug","fields","name","type","authorship","Media","upload"],"mappings":"AAEA,OAAO,MAAMA,QAA0B;IACrCC,MAAM;IACNC,QAAQ;QACN;YACEC,MAAM;YACNC,MAAM;QACR;KACD;IACDC,YAAY;AACd,EAAC;AAED,OAAO,MAAMC,QAA0B;IACrCL,MAAM;IACNC,QAAQ,EAAE;IACVK,QAAQ;IACRF,YAAY;AACd,EAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { buildConfig } from 'payload';
|
|
2
|
+
export default buildConfig({
|
|
3
|
+
collections: [
|
|
4
|
+
{
|
|
5
|
+
slug: 'posts',
|
|
6
|
+
fields: [
|
|
7
|
+
{
|
|
8
|
+
name: 'title',
|
|
9
|
+
type: 'text'
|
|
10
|
+
}
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
slug: 'media',
|
|
15
|
+
fields: [],
|
|
16
|
+
upload: true
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
globals: [
|
|
20
|
+
{
|
|
21
|
+
slug: 'header',
|
|
22
|
+
fields: [
|
|
23
|
+
{
|
|
24
|
+
name: 'nav',
|
|
25
|
+
type: 'text'
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=build-config.input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-authorship-default/build-config.input.ts"],"sourcesContent":["import { buildConfig } from 'payload'\n\nexport default buildConfig({\n collections: [\n {\n slug: 'posts',\n fields: [\n {\n name: 'title',\n type: 'text',\n },\n ],\n },\n {\n slug: 'media',\n fields: [],\n upload: true,\n },\n ],\n globals: [\n {\n slug: 'header',\n fields: [\n {\n name: 'nav',\n type: 'text',\n },\n ],\n },\n ],\n})\n"],"names":["buildConfig","collections","slug","fields","name","type","upload","globals"],"mappings":"AAAA,SAASA,WAAW,QAAQ,UAAS;AAErC,eAAeA,YAAY;IACzBC,aAAa;QACX;YACEC,MAAM;YACNC,QAAQ;gBACN;oBACEC,MAAM;oBACNC,MAAM;gBACR;aACD;QACH;QACA;YACEH,MAAM;YACNC,QAAQ,EAAE;YACVG,QAAQ;QACV;KACD;IACDC,SAAS;QACP;YACEL,MAAM;YACNC,QAAQ;gBACN;oBACEC,MAAM;oBACNC,MAAM;gBACR;aACD;QACH;KACD;AACH,GAAE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { buildConfig } from 'payload';
|
|
2
|
+
export default buildConfig({
|
|
3
|
+
collections: [
|
|
4
|
+
{
|
|
5
|
+
slug: 'posts',
|
|
6
|
+
fields: [
|
|
7
|
+
{
|
|
8
|
+
name: 'title',
|
|
9
|
+
type: 'text'
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
authorship: false
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
slug: 'media',
|
|
16
|
+
fields: [],
|
|
17
|
+
upload: true,
|
|
18
|
+
authorship: false
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
globals: [
|
|
22
|
+
{
|
|
23
|
+
slug: 'header',
|
|
24
|
+
fields: [
|
|
25
|
+
{
|
|
26
|
+
name: 'nav',
|
|
27
|
+
type: 'text'
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
authorship: false
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=build-config.output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-authorship-default/build-config.output.ts"],"sourcesContent":["import { buildConfig } from 'payload'\n\nexport default buildConfig({\n collections: [\n {\n slug: 'posts',\n fields: [\n {\n name: 'title',\n type: 'text',\n },\n ],\n authorship: false,\n },\n {\n slug: 'media',\n fields: [],\n upload: true,\n authorship: false,\n },\n ],\n globals: [\n {\n slug: 'header',\n fields: [\n {\n name: 'nav',\n type: 'text',\n },\n ],\n authorship: false,\n },\n ],\n})\n"],"names":["buildConfig","collections","slug","fields","name","type","authorship","upload","globals"],"mappings":"AAAA,SAASA,WAAW,QAAQ,UAAS;AAErC,eAAeA,YAAY;IACzBC,aAAa;QACX;YACEC,MAAM;YACNC,QAAQ;gBACN;oBACEC,MAAM;oBACNC,MAAM;gBACR;aACD;YACDC,YAAY;QACd;QACA;YACEJ,MAAM;YACNC,QAAQ,EAAE;YACVI,QAAQ;YACRD,YAAY;QACd;KACD;IACDE,SAAS;QACP;YACEN,MAAM;YACNC,QAAQ;gBACN;oBACEC,MAAM;oBACNC,MAAM;gBACR;aACD;YACDC,YAAY;QACd;KACD;AACH,GAAE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-authorship-default/globals.input.ts"],"sourcesContent":["import type { GlobalConfig } from 'payload'\n\nexport const Header: GlobalConfig = {\n slug: 'header',\n fields: [\n {\n name: 'nav',\n type: 'text',\n },\n ],\n}\n\nexport const Footer: GlobalConfig = {\n slug: 'footer',\n fields: [],\n authorship: false,\n}\n"],"names":["Header","slug","fields","name","type","Footer","authorship"],"mappings":"AAEA,OAAO,MAAMA,SAAuB;IAClCC,MAAM;IACNC,QAAQ;QACN;YACEC,MAAM;YACNC,MAAM;QACR;KACD;AACH,EAAC;AAED,OAAO,MAAMC,SAAuB;IAClCJ,MAAM;IACNC,QAAQ,EAAE;IACVI,YAAY;AACd,EAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const Header = {
|
|
2
|
+
slug: 'header',
|
|
3
|
+
fields: [
|
|
4
|
+
{
|
|
5
|
+
name: 'nav',
|
|
6
|
+
type: 'text'
|
|
7
|
+
}
|
|
8
|
+
],
|
|
9
|
+
authorship: false
|
|
10
|
+
};
|
|
11
|
+
export const Footer = {
|
|
12
|
+
slug: 'footer',
|
|
13
|
+
fields: [],
|
|
14
|
+
authorship: false
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=globals.output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-authorship-default/globals.output.ts"],"sourcesContent":["import type { GlobalConfig } from 'payload'\n\nexport const Header: GlobalConfig = {\n slug: 'header',\n fields: [\n {\n name: 'nav',\n type: 'text',\n },\n ],\n authorship: false,\n}\n\nexport const Footer: GlobalConfig = {\n slug: 'footer',\n fields: [],\n authorship: false,\n}\n"],"names":["Header","slug","fields","name","type","authorship","Footer"],"mappings":"AAEA,OAAO,MAAMA,SAAuB;IAClCC,MAAM;IACNC,QAAQ;QACN;YACEC,MAAM;YACNC,MAAM;QACR;KACD;IACDC,YAAY;AACd,EAAC;AAED,OAAO,MAAMC,SAAuB;IAClCL,MAAM;IACNC,QAAQ,EAAE;IACVG,YAAY;AACd,EAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Transform } from '../../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Finds Collection/Global config object literals and adds `authorship: false` if the property
|
|
4
|
+
* is absent. Covers three annotation forms plus inline entries in a `buildConfig` call:
|
|
5
|
+
* const X: CollectionConfig = { ... }
|
|
6
|
+
* { ... } satisfies GlobalConfig
|
|
7
|
+
* { ... } as CollectionConfig
|
|
8
|
+
* buildConfig({ collections: [ { ... } ], globals: [ { ... } ] })
|
|
9
|
+
*/
|
|
10
|
+
export declare const migrateAuthorshipDefault: Transform;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transforms/migrate-authorship-default/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAW/C;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAmCtC,CAAA"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { Node } from 'ts-morph';
|
|
2
|
+
// Only user-authored config types. The `Sanitized*` variants are internal runtime types
|
|
3
|
+
// whose `authorship` property is required, so injecting `false` would break their types.
|
|
4
|
+
const AUTHORSHIP_CONFIG_TYPE_NAMES = new Set([
|
|
5
|
+
'CollectionConfig',
|
|
6
|
+
'GlobalConfig'
|
|
7
|
+
]);
|
|
8
|
+
const isAuthorshipConfigTypeName = (typeText)=>{
|
|
9
|
+
const baseName = typeText.replace(/<.*>$/, '').trim();
|
|
10
|
+
return AUTHORSHIP_CONFIG_TYPE_NAMES.has(baseName);
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Finds Collection/Global config object literals and adds `authorship: false` if the property
|
|
14
|
+
* is absent. Covers three annotation forms plus inline entries in a `buildConfig` call:
|
|
15
|
+
* const X: CollectionConfig = { ... }
|
|
16
|
+
* { ... } satisfies GlobalConfig
|
|
17
|
+
* { ... } as CollectionConfig
|
|
18
|
+
* buildConfig({ collections: [ { ... } ], globals: [ { ... } ] })
|
|
19
|
+
*/ export const migrateAuthorshipDefault = {
|
|
20
|
+
name: 'migrate-authorship-default',
|
|
21
|
+
apply: ({ project })=>{
|
|
22
|
+
const filesChanged = new Set();
|
|
23
|
+
for (const sourceFile of project.getSourceFiles()){
|
|
24
|
+
let mutated = false;
|
|
25
|
+
sourceFile.forEachDescendant((node)=>{
|
|
26
|
+
const objectLiteral = resolveAuthorshipConfigObject(node);
|
|
27
|
+
if (!objectLiteral) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (objectLiteral.getProperty('authorship')) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
objectLiteral.addPropertyAssignment({
|
|
34
|
+
name: 'authorship',
|
|
35
|
+
initializer: 'false'
|
|
36
|
+
});
|
|
37
|
+
mutated = true;
|
|
38
|
+
});
|
|
39
|
+
if (mutated) {
|
|
40
|
+
filesChanged.add(sourceFile.getFilePath());
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
filesChanged: [
|
|
45
|
+
...filesChanged
|
|
46
|
+
]
|
|
47
|
+
};
|
|
48
|
+
},
|
|
49
|
+
description: 'Add `authorship: false` to CollectionConfig and GlobalConfig objects that do not already have an authorship property, preserving the previous behaviour after createdBy / updatedBy tracking became enabled by default.'
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Given a node, returns its ObjectLiteralExpression if the node represents a
|
|
53
|
+
* CollectionConfig- or GlobalConfig-typed value in one of the three recognised forms.
|
|
54
|
+
* Returns undefined for everything else.
|
|
55
|
+
*/ const resolveAuthorshipConfigObject = (node)=>{
|
|
56
|
+
// Form 1: const X: CollectionConfig = { ... }
|
|
57
|
+
if (Node.isVariableDeclaration(node)) {
|
|
58
|
+
const typeNode = node.getTypeNode();
|
|
59
|
+
if (!typeNode) {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
const typeText = typeNode.getText().trim();
|
|
63
|
+
if (!isAuthorshipConfigTypeName(typeText)) {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
const initializer = node.getInitializer();
|
|
67
|
+
if (initializer && Node.isObjectLiteralExpression(initializer)) {
|
|
68
|
+
return initializer;
|
|
69
|
+
}
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
// Form 2: { ... } satisfies CollectionConfig
|
|
73
|
+
if (Node.isSatisfiesExpression(node)) {
|
|
74
|
+
const typeNode = node.getTypeNode();
|
|
75
|
+
if (!typeNode) {
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
const typeText = typeNode.getText().trim();
|
|
79
|
+
if (!isAuthorshipConfigTypeName(typeText)) {
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
const expr = node.getExpression();
|
|
83
|
+
if (Node.isObjectLiteralExpression(expr)) {
|
|
84
|
+
return expr;
|
|
85
|
+
}
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
// Form 3: { ... } as CollectionConfig
|
|
89
|
+
if (Node.isAsExpression(node)) {
|
|
90
|
+
const typeNode = node.getTypeNode();
|
|
91
|
+
if (!typeNode) {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
const typeText = typeNode.getText().trim();
|
|
95
|
+
if (!isAuthorshipConfigTypeName(typeText)) {
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
|
98
|
+
const expr = node.getExpression();
|
|
99
|
+
if (Node.isObjectLiteralExpression(expr)) {
|
|
100
|
+
return expr;
|
|
101
|
+
}
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
// Form 4: inline entries in `buildConfig({ collections: [ { ... } ], globals: [ { ... } ] })`
|
|
105
|
+
if (Node.isObjectLiteralExpression(node) && isInlineBuildConfigEntry(node)) {
|
|
106
|
+
return node;
|
|
107
|
+
}
|
|
108
|
+
return undefined;
|
|
109
|
+
};
|
|
110
|
+
const CONFIG_ENTRY_PROPERTY_NAMES = new Set([
|
|
111
|
+
'collections',
|
|
112
|
+
'globals'
|
|
113
|
+
]);
|
|
114
|
+
/**
|
|
115
|
+
* True when `node` is an inline object-literal element of a `collections` or `globals` array
|
|
116
|
+
* passed to a `buildConfig(...)` call, e.g. `buildConfig({ collections: [{ ... }] })`.
|
|
117
|
+
*/ const isInlineBuildConfigEntry = (node)=>{
|
|
118
|
+
const array = node.getParent();
|
|
119
|
+
if (!array || !Node.isArrayLiteralExpression(array)) {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
const property = array.getParent();
|
|
123
|
+
if (!property || !Node.isPropertyAssignment(property)) {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
if (!CONFIG_ENTRY_PROPERTY_NAMES.has(property.getName())) {
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
const configObject = property.getParent();
|
|
130
|
+
if (!configObject || !Node.isObjectLiteralExpression(configObject)) {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
const call = configObject.getParent();
|
|
134
|
+
if (!call || !Node.isCallExpression(call)) {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
const callee = call.getExpression();
|
|
138
|
+
return Node.isIdentifier(callee) && callee.getText() === 'buildConfig';
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-authorship-default/index.ts"],"sourcesContent":["import { Node } from 'ts-morph'\n\nimport type { Transform } from '../../types.js'\n\n// Only user-authored config types. The `Sanitized*` variants are internal runtime types\n// whose `authorship` property is required, so injecting `false` would break their types.\nconst AUTHORSHIP_CONFIG_TYPE_NAMES = new Set(['CollectionConfig', 'GlobalConfig'])\n\nconst isAuthorshipConfigTypeName = (typeText: string): boolean => {\n const baseName = typeText.replace(/<.*>$/, '').trim()\n return AUTHORSHIP_CONFIG_TYPE_NAMES.has(baseName)\n}\n\n/**\n * Finds Collection/Global config object literals and adds `authorship: false` if the property\n * is absent. Covers three annotation forms plus inline entries in a `buildConfig` call:\n * const X: CollectionConfig = { ... }\n * { ... } satisfies GlobalConfig\n * { ... } as CollectionConfig\n * buildConfig({ collections: [ { ... } ], globals: [ { ... } ] })\n */\nexport const migrateAuthorshipDefault: Transform = {\n name: 'migrate-authorship-default',\n apply: ({ project }) => {\n const filesChanged = new Set<string>()\n\n for (const sourceFile of project.getSourceFiles()) {\n let mutated = false\n\n sourceFile.forEachDescendant((node) => {\n const objectLiteral = resolveAuthorshipConfigObject(node)\n if (!objectLiteral) {\n return\n }\n\n if (objectLiteral.getProperty('authorship')) {\n return\n }\n\n objectLiteral.addPropertyAssignment({\n name: 'authorship',\n initializer: 'false',\n })\n\n mutated = true\n })\n\n if (mutated) {\n filesChanged.add(sourceFile.getFilePath())\n }\n }\n\n return { filesChanged: [...filesChanged] }\n },\n description:\n 'Add `authorship: false` to CollectionConfig and GlobalConfig objects that do not already have an authorship property, preserving the previous behaviour after createdBy / updatedBy tracking became enabled by default.',\n}\n\n/**\n * Given a node, returns its ObjectLiteralExpression if the node represents a\n * CollectionConfig- or GlobalConfig-typed value in one of the three recognised forms.\n * Returns undefined for everything else.\n */\nconst resolveAuthorshipConfigObject = (node: Node) => {\n // Form 1: const X: CollectionConfig = { ... }\n if (Node.isVariableDeclaration(node)) {\n const typeNode = node.getTypeNode()\n if (!typeNode) {\n return undefined\n }\n const typeText = typeNode.getText().trim()\n if (!isAuthorshipConfigTypeName(typeText)) {\n return undefined\n }\n const initializer = node.getInitializer()\n if (initializer && Node.isObjectLiteralExpression(initializer)) {\n return initializer\n }\n return undefined\n }\n\n // Form 2: { ... } satisfies CollectionConfig\n if (Node.isSatisfiesExpression(node)) {\n const typeNode = node.getTypeNode()\n if (!typeNode) {\n return undefined\n }\n const typeText = typeNode.getText().trim()\n if (!isAuthorshipConfigTypeName(typeText)) {\n return undefined\n }\n const expr = node.getExpression()\n if (Node.isObjectLiteralExpression(expr)) {\n return expr\n }\n return undefined\n }\n\n // Form 3: { ... } as CollectionConfig\n if (Node.isAsExpression(node)) {\n const typeNode = node.getTypeNode()\n if (!typeNode) {\n return undefined\n }\n const typeText = typeNode.getText().trim()\n if (!isAuthorshipConfigTypeName(typeText)) {\n return undefined\n }\n const expr = node.getExpression()\n if (Node.isObjectLiteralExpression(expr)) {\n return expr\n }\n return undefined\n }\n\n // Form 4: inline entries in `buildConfig({ collections: [ { ... } ], globals: [ { ... } ] })`\n if (Node.isObjectLiteralExpression(node) && isInlineBuildConfigEntry(node)) {\n return node\n }\n\n return undefined\n}\n\nconst CONFIG_ENTRY_PROPERTY_NAMES = new Set(['collections', 'globals'])\n\n/**\n * True when `node` is an inline object-literal element of a `collections` or `globals` array\n * passed to a `buildConfig(...)` call, e.g. `buildConfig({ collections: [{ ... }] })`.\n */\nconst isInlineBuildConfigEntry = (node: Node): boolean => {\n const array = node.getParent()\n if (!array || !Node.isArrayLiteralExpression(array)) {\n return false\n }\n\n const property = array.getParent()\n if (!property || !Node.isPropertyAssignment(property)) {\n return false\n }\n\n if (!CONFIG_ENTRY_PROPERTY_NAMES.has(property.getName())) {\n return false\n }\n\n const configObject = property.getParent()\n if (!configObject || !Node.isObjectLiteralExpression(configObject)) {\n return false\n }\n\n const call = configObject.getParent()\n if (!call || !Node.isCallExpression(call)) {\n return false\n }\n\n const callee = call.getExpression()\n return Node.isIdentifier(callee) && callee.getText() === 'buildConfig'\n}\n"],"names":["Node","AUTHORSHIP_CONFIG_TYPE_NAMES","Set","isAuthorshipConfigTypeName","typeText","baseName","replace","trim","has","migrateAuthorshipDefault","name","apply","project","filesChanged","sourceFile","getSourceFiles","mutated","forEachDescendant","node","objectLiteral","resolveAuthorshipConfigObject","getProperty","addPropertyAssignment","initializer","add","getFilePath","description","isVariableDeclaration","typeNode","getTypeNode","undefined","getText","getInitializer","isObjectLiteralExpression","isSatisfiesExpression","expr","getExpression","isAsExpression","isInlineBuildConfigEntry","CONFIG_ENTRY_PROPERTY_NAMES","array","getParent","isArrayLiteralExpression","property","isPropertyAssignment","getName","configObject","call","isCallExpression","callee","isIdentifier"],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const unrelated = {
|
|
2
|
+
collections: []
|
|
3
|
+
};
|
|
4
|
+
const untyped = {
|
|
5
|
+
slug: 'untyped',
|
|
6
|
+
fields: []
|
|
7
|
+
};
|
|
8
|
+
// Sanitized configs are internal runtime types with a required `authorship`
|
|
9
|
+
// property, so the codemod must leave them untouched.
|
|
10
|
+
const sanitizedCollection = {
|
|
11
|
+
slug: 'sanitized-collection'
|
|
12
|
+
};
|
|
13
|
+
const sanitizedGlobal = {
|
|
14
|
+
slug: 'sanitized-global'
|
|
15
|
+
};
|
|
16
|
+
export { };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=non-matching.input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-authorship-default/non-matching.input.ts"],"sourcesContent":["import type { Config, SanitizedCollectionConfig, SanitizedGlobalConfig } from 'payload'\n\nconst unrelated: Config = {\n collections: [],\n}\n\nconst untyped = {\n slug: 'untyped',\n fields: [],\n}\n\n// Sanitized configs are internal runtime types with a required `authorship`\n// property, so the codemod must leave them untouched.\nconst sanitizedCollection: SanitizedCollectionConfig = {\n slug: 'sanitized-collection',\n}\n\nconst sanitizedGlobal: SanitizedGlobalConfig = {\n slug: 'sanitized-global',\n}\n"],"names":["unrelated","collections","untyped","slug","fields","sanitizedCollection","sanitizedGlobal"],"mappings":"AAEA,MAAMA,YAAoB;IACxBC,aAAa,EAAE;AACjB;AAEA,MAAMC,UAAU;IACdC,MAAM;IACNC,QAAQ,EAAE;AACZ;AAEA,4EAA4E;AAC5E,sDAAsD;AACtD,MAAMC,sBAAiD;IACrDF,MAAM;AACR;AAEA,MAAMG,kBAAyC;IAC7CH,MAAM;AACR;AAnBA,WAAuF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const unrelated = {
|
|
2
|
+
collections: []
|
|
3
|
+
};
|
|
4
|
+
const untyped = {
|
|
5
|
+
slug: 'untyped',
|
|
6
|
+
fields: []
|
|
7
|
+
};
|
|
8
|
+
// Sanitized configs are internal runtime types with a required `authorship`
|
|
9
|
+
// property, so the codemod must leave them untouched.
|
|
10
|
+
const sanitizedCollection = {
|
|
11
|
+
slug: 'sanitized-collection'
|
|
12
|
+
};
|
|
13
|
+
const sanitizedGlobal = {
|
|
14
|
+
slug: 'sanitized-global'
|
|
15
|
+
};
|
|
16
|
+
export { };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=non-matching.output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-authorship-default/non-matching.output.ts"],"sourcesContent":["import type { Config, SanitizedCollectionConfig, SanitizedGlobalConfig } from 'payload'\n\nconst unrelated: Config = {\n collections: [],\n}\n\nconst untyped = {\n slug: 'untyped',\n fields: [],\n}\n\n// Sanitized configs are internal runtime types with a required `authorship`\n// property, so the codemod must leave them untouched.\nconst sanitizedCollection: SanitizedCollectionConfig = {\n slug: 'sanitized-collection',\n}\n\nconst sanitizedGlobal: SanitizedGlobalConfig = {\n slug: 'sanitized-global',\n}\n"],"names":["unrelated","collections","untyped","slug","fields","sanitizedCollection","sanitizedGlobal"],"mappings":"AAEA,MAAMA,YAAoB;IACxBC,aAAa,EAAE;AACjB;AAEA,MAAMC,UAAU;IACdC,MAAM;IACNC,QAAQ,EAAE;AACZ;AAEA,4EAA4E;AAC5E,sDAAsD;AACtD,MAAMC,sBAAiD;IACrDF,MAAM;AACR;AAEA,MAAMG,kBAAyC;IAC7CH,MAAM;AACR;AAnBA,WAAuF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-authorship-default/satisfies.input.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload'\n\nexport const Posts = {\n slug: 'posts',\n fields: [],\n} satisfies CollectionConfig\n\nexport const Media = {\n slug: 'media',\n fields: [],\n upload: true,\n} satisfies CollectionConfig\n"],"names":["Posts","slug","fields","Media","upload"],"mappings":"AAEA,OAAO,MAAMA,QAAQ;IACnBC,MAAM;IACNC,QAAQ,EAAE;AACZ,EAA4B;AAE5B,OAAO,MAAMC,QAAQ;IACnBF,MAAM;IACNC,QAAQ,EAAE;IACVE,QAAQ;AACV,EAA4B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-authorship-default/satisfies.output.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload'\n\nexport const Posts = {\n slug: 'posts',\n fields: [],\n authorship: false,\n} satisfies CollectionConfig\n\nexport const Media = {\n slug: 'media',\n fields: [],\n upload: true,\n authorship: false,\n} satisfies CollectionConfig\n"],"names":["Posts","slug","fields","authorship","Media","upload"],"mappings":"AAEA,OAAO,MAAMA,QAAQ;IACnBC,MAAM;IACNC,QAAQ,EAAE;IACVC,YAAY;AACd,EAA4B;AAE5B,OAAO,MAAMC,QAAQ;IACnBH,MAAM;IACNC,QAAQ,EAAE;IACVG,QAAQ;IACRF,YAAY;AACd,EAA4B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-displayed-field-value-args/basic.input.ts"],"sourcesContent":["import { getDisplayedFieldValue as display } from '@payloadcms/ui/utilities/getDisplayedFieldValue'\n\nconst result = display(fileSize, field, i18n)\n"],"names":["getDisplayedFieldValue","display","result","fileSize","field","i18n"],"mappings":"AAAA,SAASA,0BAA0BC,OAAO,QAAQ,kDAAiD;AAEnG,MAAMC,SAASD,QAAQE,UAAUC,OAAOC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-displayed-field-value-args/basic.output.ts"],"sourcesContent":["import { getDisplayedFieldValue as display } from '@payloadcms/ui/utilities/getDisplayedFieldValue'\n\nconst result = display({ cellData: fileSize, field: field, i18n: i18n })\n"],"names":["getDisplayedFieldValue","display","result","cellData","fileSize","field","i18n"],"mappings":"AAAA,SAASA,0BAA0BC,OAAO,QAAQ,kDAAiD;AAEnG,MAAMC,SAASD,QAAQ;IAAEE,UAAUC;IAAUC,OAAOA;IAAOC,MAAMA;AAAK"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transforms/migrate-displayed-field-value-args/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAK/C,eAAO,MAAM,8BAA8B,EAAE,SA+D5C,CAAA"}
|