@payloadcms/codemod 4.0.0-internal.cd47d20 → 4.0.0-internal.ce66a41
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 +3 -1
- 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 +8 -0
- package/dist/cli.js.map +1 -1
- package/dist/cli.parseFlags.d.ts +1 -0
- package/dist/cli.parseFlags.d.ts.map +1 -1
- package/dist/cli.parseFlags.js +6 -0
- package/dist/cli.parseFlags.js.map +1 -1
- package/dist/registry.js +2 -2
- package/dist/registry.js.map +1 -1
- package/dist/runbook/v4.mdx +134 -21
- package/dist/transforms/migrate-field-component-types/index.d.ts.map +1 -1
- package/dist/transforms/migrate-field-component-types/index.js +4 -0
- package/dist/transforms/migrate-field-component-types/index.js.map +1 -1
- 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/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/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/rewritePackageJson.d.ts.map +1 -1
- package/dist/upgrade/rewritePackageJson.js +52 -11
- package/dist/upgrade/rewritePackageJson.js.map +1 -1
- package/dist/utils/project.d.ts +7 -1
- package/dist/utils/project.d.ts.map +1 -1
- package/dist/utils/project.js +20 -7
- package/dist/utils/project.js.map +1 -1
- package/package.json +2 -2
- package/dist/transforms/remove-strict-draft-types/basic.input.js +0 -28
- package/dist/transforms/remove-strict-draft-types/basic.input.js.map +0 -1
- package/dist/transforms/remove-strict-draft-types/basic.output.js +0 -24
- package/dist/transforms/remove-strict-draft-types/basic.output.js.map +0 -1
- package/dist/transforms/remove-strict-draft-types/index.d.ts +0 -3
- package/dist/transforms/remove-strict-draft-types/index.d.ts.map +0 -1
- package/dist/transforms/remove-strict-draft-types/index.js +0 -44
- package/dist/transforms/remove-strict-draft-types/index.js.map +0 -1
- package/dist/transforms/remove-strict-draft-types/no-match.input.js +0 -11
- package/dist/transforms/remove-strict-draft-types/no-match.input.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/transforms/migrate-field-component-types/index.ts"],"sourcesContent":["import type { Expression, ImportDeclaration, SourceFile } from 'ts-morph'\n\nimport { Node, SyntaxKind, VariableDeclarationKind } from 'ts-morph'\n\nimport type { Transform } from '../../types.js'\n\nconst FIELD_NAMES = [\n 'Array',\n 'Blocks',\n 'Checkbox',\n 'Code',\n 'Collapsible',\n 'Date',\n 'Email',\n 'Group',\n 'Join',\n 'JSON',\n 'Number',\n 'Point',\n 'Radio',\n 'Relationship',\n 'RichText',\n 'Row',\n 'Select',\n 'Tabs',\n 'Text',\n 'Textarea',\n 'UI',\n 'Upload',\n] as const\n\nconst FIELDS_WITH_SPECIALIZED_COMPONENTS = [\n 'Array',\n 'Blocks',\n 'Checkbox',\n 'Code',\n 'Collapsible',\n 'Date',\n 'Email',\n 'Group',\n 'Join',\n 'JSON',\n 'Number',\n 'Point',\n 'Radio',\n 'Relationship',\n 'RichText',\n 'Row',\n 'Select',\n 'Tabs',\n 'Text',\n 'Textarea',\n 'Upload',\n] as const\n\nconst SPECIALIZED_COMPONENT_NAMES = [\n 'FieldDescriptionClient',\n 'FieldDescriptionServer',\n 'FieldDiffClient',\n 'FieldDiffServer',\n 'FieldErrorClient',\n 'FieldErrorServer',\n 'FieldLabelClient',\n 'FieldLabelServer',\n] as const\n\nconst COMPONENT_TO_PROPS = new Map<string, string>([\n ['BlockRowLabelClientComponent', 'BlockRowLabelClientProps'],\n ['BlockRowLabelServerComponent', 'BlockRowLabelServerProps'],\n ['FieldClientComponent', 'FieldClientProps'],\n ['FieldDescriptionClientComponent', 'FieldDescriptionClientProps'],\n ['FieldDescriptionServerComponent', 'FieldDescriptionServerProps'],\n ['FieldDiffClientComponent', 'FieldDiffClientProps'],\n ['FieldDiffServerComponent', 'FieldDiffServerProps'],\n ['FieldErrorClientComponent', 'FieldErrorClientProps'],\n ['FieldErrorServerComponent', 'FieldErrorServerProps'],\n ['FieldLabelClientComponent', 'FieldLabelClientProps'],\n ['FieldLabelServerComponent', 'FieldLabelServerProps'],\n ['FieldServerComponent', 'FieldServerProps'],\n ...FIELD_NAMES.flatMap((fieldName) => [\n [`${fieldName}FieldClientComponent`, `${fieldName}FieldClientProps`] as const,\n [`${fieldName}FieldServerComponent`, `${fieldName}FieldServerProps`] as const,\n ]),\n ...FIELDS_WITH_SPECIALIZED_COMPONENTS.flatMap((fieldName) =>\n SPECIALIZED_COMPONENT_NAMES.map(\n (componentName) =>\n [`${fieldName}${componentName}Component`, `${fieldName}${componentName}Props`] as const,\n ),\n ),\n ['UIFieldDiffClientComponent', 'UIFieldDiffClientProps'],\n ['UIFieldDiffServerComponent', 'UIFieldDiffServerProps'],\n])\n\nconst COMPONENT_GENERIC_DEFAULTS = new Map<string, readonly string[]>([\n ['FieldDiffClientComponent', ['ClientFieldWithOptionalType']],\n ['FieldDiffServerComponent', ['Field', 'ClientFieldWithOptionalType']],\n ['FieldErrorServerComponent', ['Field', 'ClientFieldWithOptionalType']],\n ['FieldLabelClientComponent', ['ClientFieldWithOptionalType']],\n ['FieldLabelServerComponent', ['Field', 'ClientFieldWithOptionalType']],\n])\n\nexport const migrateFieldComponentTypes: Transform = {\n name: 'migrate-field-component-types',\n apply: ({ project }) => {\n const filesChanged = new Set<string>()\n const notes: string[] = []\n\n for (const file of project.getSourceFiles()) {\n collectUnsupportedImportNotes({ file, notes })\n\n let mutated = false\n let reactBinding: ResolvedReactBinding | undefined\n\n for (const importDeclaration of [...file.getImportDeclarations()]) {\n if (importDeclaration.getModuleSpecifierValue() !== 'payload') {\n continue\n }\n\n const componentImports = importDeclaration\n .getNamedImports()\n .filter((specifier) => COMPONENT_TO_PROPS.has(specifier.getName()))\n .map((specifier) => ({\n componentName: specifier.getName(),\n localName: specifier.getAliasNode()?.getText() ?? specifier.getName(),\n }))\n let importMutated = false\n\n for (const componentImport of componentImports) {\n const { componentName, localName } = componentImport\n const propsName = COMPONENT_TO_PROPS.get(componentName)\n\n if (!propsName) {\n continue\n }\n\n const specifier = importDeclaration\n .getNamedImports()\n .find(\n (namedImport) =>\n namedImport.getName() === componentName &&\n (namedImport.getAliasNode()?.getText() ?? namedImport.getName()) === localName,\n )\n\n if (!specifier) {\n continue\n }\n\n const binding = specifier.getAliasNode() ?? specifier.getNameNode()\n const references = binding\n .findReferencesAsNodes()\n .filter((node) => node !== binding && node.getSourceFile() === file)\n const unsupportedReference = references.find((reference) => {\n const parent = reference.getParent()\n\n return !Node.isTypeReference(parent) || parent.getTypeName() !== reference\n })\n\n if (unsupportedReference) {\n notes.push(\n `${file.getFilePath()}:${unsupportedReference.getStartLineNumber()}: Unsupported use of \\`${componentName}\\`. Replace it with the corresponding props type manually.`,\n )\n continue\n }\n\n const classDeclaration = references\n .map((reference) => reference.getFirstAncestorByKind(SyntaxKind.VariableDeclaration))\n .find((declaration, referenceIndex) => {\n const initializer = declaration?.getInitializer()\n const reference = references[referenceIndex]\n const componentPropertyPath = reference\n ? getComponentPropertyPath({ reference })\n : undefined\n\n return initializer\n ? initializerContainsClassComponent({ componentPropertyPath, initializer })\n : false\n })\n\n if (classDeclaration) {\n notes.push(\n `${file.getFilePath()}:${classDeclaration.getStartLineNumber()}: Cannot automatically migrate \\`${componentName}\\` because it types a class component. Replace it with a compatible props annotation manually.`,\n )\n continue\n }\n\n if (references.length === 0) {\n specifier.remove()\n importMutated = true\n mutated = true\n continue\n }\n\n const propsImport = resolvePropsImport({\n file,\n propsName,\n })\n\n reactBinding ??= resolveReactTypeBinding(file)\n\n for (const reference of references.reverse()) {\n const typeReference = reference.getParentIfKindOrThrow(SyntaxKind.TypeReference)\n const typeArguments = typeReference\n .getTypeArguments()\n .map((typeArgument) => typeArgument.getText())\n const propsTypeArguments = materializeGenericDefaults({\n componentName,\n file,\n importDeclaration,\n typeArguments,\n })\n const propsType =\n propsTypeArguments.length > 0\n ? `${propsImport.localName}<${propsTypeArguments.join(', ')}>`\n : propsImport.localName\n\n typeReference.replaceWithText(`${reactBinding.localName}.FC<${propsType}>`)\n }\n\n const currentSpecifier = importDeclaration\n .getNamedImports()\n .find(\n (namedImport) =>\n namedImport.getName() === componentName &&\n (namedImport.getAliasNode()?.getText() ?? namedImport.getName()) === localName,\n )\n\n if (propsImport.exists) {\n currentSpecifier?.remove()\n } else if (currentSpecifier) {\n currentSpecifier.setName(propsName)\n\n if (propsImport.localName === propsName) {\n currentSpecifier.removeAlias()\n } else {\n currentSpecifier.setAlias(propsImport.localName)\n }\n }\n\n importMutated = true\n mutated = true\n }\n\n if (importMutated) {\n removeEmptyImport(importDeclaration)\n }\n }\n\n if (reactBinding?.shouldAddImport) {\n addReactTypeImport({ file, reactName: reactBinding.localName })\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 'Replace field component aliases imported from `payload` with the corresponding props types wrapped in `React.FC`. Generic arguments are preserved. Explicit class components and unsupported import forms are left unchanged with notes for manual migration.',\n}\n\ntype ResolvePropsImportArgs = {\n file: SourceFile\n propsName: string\n}\n\ntype MaterializeGenericDefaultsArgs = {\n componentName: string\n file: SourceFile\n importDeclaration: ImportDeclaration\n typeArguments: string[]\n}\n\nfunction materializeGenericDefaults({\n componentName,\n file,\n importDeclaration,\n typeArguments,\n}: MaterializeGenericDefaultsArgs): string[] {\n const genericDefaults = COMPONENT_GENERIC_DEFAULTS.get(componentName)\n\n if (!genericDefaults || typeArguments.length >= genericDefaults.length) {\n return typeArguments\n }\n\n return [\n ...typeArguments,\n ...genericDefaults.slice(typeArguments.length).map((typeName) =>\n resolvePayloadTypeImport({\n file,\n importDeclaration,\n typeName,\n }),\n ),\n ]\n}\n\ntype ResolvePayloadTypeImportArgs = {\n file: SourceFile\n importDeclaration: ImportDeclaration\n typeName: string\n}\n\nfunction resolvePayloadTypeImport({\n file,\n importDeclaration,\n typeName,\n}: ResolvePayloadTypeImportArgs): string {\n for (const declaration of file.getImportDeclarations()) {\n if (declaration.getModuleSpecifierValue() !== 'payload') {\n continue\n }\n\n const existing = declaration\n .getNamedImports()\n .find((namedImport) => namedImport.getName() === typeName)\n\n if (existing) {\n const localName = existing.getAliasNode()?.getText() ?? typeName\n\n if (\n !hasCompetingDeclaration({\n file,\n importDeclaration: declaration,\n localName,\n })\n ) {\n return localName\n }\n }\n }\n\n const localName = getAvailableName({ file, preferredName: typeName, suffix: 'Type' })\n\n importDeclaration.addNamedImport({\n name: typeName,\n alias: localName === typeName ? undefined : localName,\n isTypeOnly: !importDeclaration.isTypeOnly(),\n })\n\n return localName\n}\n\ntype ResolvedPropsImport = {\n exists: boolean\n localName: string\n}\n\nfunction resolvePropsImport({ file, propsName }: ResolvePropsImportArgs): ResolvedPropsImport {\n for (const declaration of file.getImportDeclarations()) {\n if (declaration.getModuleSpecifierValue() !== 'payload') {\n continue\n }\n\n const existing = declaration\n .getNamedImports()\n .find((namedImport) => namedImport.getName() === propsName)\n\n if (existing) {\n const localName = existing.getAliasNode()?.getText() ?? propsName\n\n if (\n !hasCompetingDeclaration({\n file,\n importDeclaration: declaration,\n localName,\n })\n ) {\n return {\n exists: true,\n localName,\n }\n }\n }\n }\n\n const localName = getAvailableName({ file, preferredName: propsName, suffix: 'Type' })\n\n return { exists: false, localName }\n}\n\ntype ResolvedReactBinding = {\n localName: string\n shouldAddImport: boolean\n}\n\nfunction resolveReactTypeBinding(file: SourceFile): ResolvedReactBinding {\n const reactImports = file\n .getImportDeclarations()\n .filter((declaration) => declaration.getModuleSpecifierValue() === 'react')\n\n for (const declaration of reactImports) {\n const namespaceImport = declaration.getNamespaceImport()\n if (\n namespaceImport &&\n !hasCompetingDeclaration({\n file,\n importDeclaration: declaration,\n localName: namespaceImport.getText(),\n })\n ) {\n return { localName: namespaceImport.getText(), shouldAddImport: false }\n }\n\n const defaultImport = declaration.getDefaultImport()\n if (\n defaultImport &&\n !hasCompetingDeclaration({\n file,\n importDeclaration: declaration,\n localName: defaultImport.getText(),\n })\n ) {\n return { localName: defaultImport.getText(), shouldAddImport: false }\n }\n }\n\n return {\n localName: getAvailableName({ file, preferredName: 'React', suffix: 'Type' }),\n shouldAddImport: true,\n }\n}\n\ntype HasCompetingDeclarationArgs = {\n file: SourceFile\n importDeclaration: ImportDeclaration\n localName: string\n}\n\nfunction hasCompetingDeclaration({\n file,\n importDeclaration,\n localName,\n}: HasCompetingDeclarationArgs): boolean {\n return file.getDescendantsOfKind(SyntaxKind.Identifier).some((identifier) => {\n if (\n identifier.getText() !== localName ||\n identifier.getFirstAncestorByKind(SyntaxKind.ImportDeclaration) === importDeclaration\n ) {\n return false\n }\n\n const parent = identifier.getParent()\n\n return (\n (Node.isTypeParameterDeclaration(parent) ||\n Node.isParameterDeclaration(parent) ||\n Node.isVariableDeclaration(parent) ||\n Node.isFunctionDeclaration(parent) ||\n Node.isClassDeclaration(parent) ||\n Node.isTypeAliasDeclaration(parent) ||\n Node.isInterfaceDeclaration(parent)) &&\n parent.getNameNode() === identifier\n )\n })\n}\n\ntype AddReactTypeImportArgs = {\n file: SourceFile\n reactName: string\n}\n\nfunction addReactTypeImport({ file, reactName }: AddReactTypeImportArgs): void {\n const importDeclarations = file.getImportDeclarations()\n const lastImport = importDeclarations.at(-1)\n const statements = file.getStatements()\n const insertionIndex = lastImport ? statements.indexOf(lastImport) + 1 : 0\n const nextStatement = statements.at(insertionIndex)\n const needsTerminator =\n lastImport && nextStatement\n ? lastImport.getEndLineNumber() === nextStatement.getStartLineNumber()\n : false\n\n file.insertStatements(\n insertionIndex,\n `import type ${reactName} from 'react'${needsTerminator ? ';' : ''}`,\n )\n}\n\ntype InitializerContainsClassComponentArgs = {\n componentPropertyPath?: string[]\n initializer: Expression\n visitedExpressions?: Set<Expression>\n}\n\nfunction initializerContainsClassComponent({\n componentPropertyPath,\n initializer,\n visitedExpressions = new Set<Expression>(),\n}: InitializerContainsClassComponentArgs): boolean {\n let expression = initializer\n\n while (\n Node.isParenthesizedExpression(expression) ||\n Node.isAsExpression(expression) ||\n Node.isSatisfiesExpression(expression) ||\n Node.isTypeAssertion(expression) ||\n Node.isNonNullExpression(expression)\n ) {\n expression = expression.getExpression()\n }\n\n if (visitedExpressions.has(expression)) {\n return false\n }\n\n visitedExpressions.add(expression)\n\n if (Node.isClassExpression(expression)) {\n return true\n }\n\n if (Node.isArrayLiteralExpression(expression)) {\n return expression.getElements().some((element) => {\n const nestedExpression = Node.isSpreadElement(element) ? element.getExpression() : element\n\n return Node.isExpression(nestedExpression)\n ? initializerContainsClassComponent({\n componentPropertyPath,\n initializer: nestedExpression,\n visitedExpressions,\n })\n : false\n })\n }\n\n if (Node.isConditionalExpression(expression)) {\n return [expression.getWhenTrue(), expression.getWhenFalse()].some((nestedExpression) =>\n initializerContainsClassComponent({\n componentPropertyPath,\n initializer: nestedExpression,\n visitedExpressions,\n }),\n )\n }\n\n if (Node.isObjectLiteralExpression(expression)) {\n const properties = expression.getProperties()\n const componentPropertyName = componentPropertyPath?.[0]\n const remainingComponentPropertyPath = componentPropertyPath?.slice(1)\n const propertiesToInspect = componentPropertyName\n ? properties.filter((property) => {\n if (Node.isSpreadAssignment(property)) {\n return true\n }\n\n if (\n !Node.isPropertyAssignment(property) &&\n !Node.isShorthandPropertyAssignment(property)\n ) {\n return false\n }\n\n const propertyName = getStaticPropertyName({ nameNode: property.getNameNode() })\n\n return propertyName === undefined || propertyName === componentPropertyName\n })\n : properties\n\n return propertiesToInspect.some((property) => {\n if (Node.isPropertyAssignment(property)) {\n const propertyInitializer = property.getInitializer()\n\n return propertyInitializer && Node.isExpression(propertyInitializer)\n ? initializerContainsClassComponent({\n componentPropertyPath: remainingComponentPropertyPath,\n initializer: propertyInitializer,\n visitedExpressions,\n })\n : false\n }\n\n if (Node.isShorthandPropertyAssignment(property)) {\n return initializerContainsClassComponent({\n componentPropertyPath: remainingComponentPropertyPath,\n initializer: property.getNameNode(),\n visitedExpressions,\n })\n }\n\n return Node.isSpreadAssignment(property)\n ? initializerContainsClassComponent({\n componentPropertyPath,\n initializer: property.getExpression(),\n visitedExpressions,\n })\n : false\n })\n }\n\n if (!Node.isIdentifier(expression)) {\n return false\n }\n\n return expression.getDefinitions().some((definition) => {\n const declaration = definition.getDeclarationNode()\n\n if (Node.isClassDeclaration(declaration)) {\n return true\n }\n\n if (Node.isVariableDeclaration(declaration)) {\n const referencedInitializer = declaration.getInitializer()\n\n return referencedInitializer\n ? initializerContainsClassComponent({\n componentPropertyPath,\n initializer: referencedInitializer,\n visitedExpressions,\n })\n : false\n }\n\n return false\n })\n}\n\ntype GetComponentPropertyPathArgs = {\n reference: Node\n}\n\nfunction getComponentPropertyPath({\n reference,\n}: GetComponentPropertyPathArgs): string[] | undefined {\n const propertySignatures = reference.getAncestors().filter(Node.isPropertySignature).reverse()\n\n if (propertySignatures.length === 0) {\n return undefined\n }\n\n const propertyPath = propertySignatures.map((property) =>\n getStaticPropertyName({ nameNode: property.getNameNode() }),\n )\n\n return propertyPath.every((propertyName): propertyName is string => propertyName !== undefined)\n ? propertyPath\n : undefined\n}\n\ntype GetStaticPropertyNameArgs = {\n nameNode: Node\n}\n\nfunction getStaticPropertyName({ nameNode }: GetStaticPropertyNameArgs): string | undefined {\n if (Node.isComputedPropertyName(nameNode)) {\n return getStaticComputedPropertyName({ expression: nameNode.getExpression() })\n }\n\n if (Node.isStringLiteral(nameNode) || Node.isNoSubstitutionTemplateLiteral(nameNode)) {\n return nameNode.getLiteralText()\n }\n\n if (Node.isNumericLiteral(nameNode)) {\n return String(nameNode.getLiteralValue())\n }\n\n return Node.isIdentifier(nameNode) ? nameNode.getText() : undefined\n}\n\ntype GetStaticComputedPropertyNameArgs = {\n expression: Expression\n visitedExpressions?: Set<Expression>\n}\n\nfunction getStaticComputedPropertyName({\n expression: initialExpression,\n visitedExpressions = new Set<Expression>(),\n}: GetStaticComputedPropertyNameArgs): string | undefined {\n let expression = initialExpression\n\n while (\n Node.isParenthesizedExpression(expression) ||\n Node.isAsExpression(expression) ||\n Node.isSatisfiesExpression(expression) ||\n Node.isTypeAssertion(expression) ||\n Node.isNonNullExpression(expression)\n ) {\n expression = expression.getExpression()\n }\n\n if (visitedExpressions.has(expression)) {\n return undefined\n }\n\n visitedExpressions.add(expression)\n\n if (Node.isStringLiteral(expression) || Node.isNoSubstitutionTemplateLiteral(expression)) {\n return expression.getLiteralText()\n }\n\n if (Node.isNumericLiteral(expression)) {\n return String(expression.getLiteralValue())\n }\n\n if (!Node.isIdentifier(expression)) {\n return undefined\n }\n\n for (const definition of expression.getDefinitions()) {\n const declaration = definition.getDeclarationNode()\n\n if (\n Node.isVariableDeclaration(declaration) &&\n declaration.getVariableStatement()?.getDeclarationKind() === VariableDeclarationKind.Const\n ) {\n const initializer = declaration.getInitializer()\n const propertyName =\n initializer && Node.isExpression(initializer)\n ? getStaticComputedPropertyName({ expression: initializer, visitedExpressions })\n : undefined\n\n if (propertyName !== undefined) {\n return propertyName\n }\n }\n }\n\n return undefined\n}\n\ntype GetAvailableNameArgs = {\n file: SourceFile\n preferredName: string\n suffix: string\n}\n\nfunction getAvailableName({ file, preferredName, suffix }: GetAvailableNameArgs): string {\n const usedNames = new Set(\n file.getDescendantsOfKind(SyntaxKind.Identifier).map((identifier) => identifier.getText()),\n )\n\n if (!usedNames.has(preferredName)) {\n return preferredName\n }\n\n let candidate = `${preferredName}${suffix}`\n let index = 2\n\n while (usedNames.has(candidate)) {\n candidate = `${preferredName}${suffix}${index}`\n index++\n }\n\n return candidate\n}\n\ntype CollectUnsupportedImportNotesArgs = {\n file: SourceFile\n notes: string[]\n}\n\nfunction collectUnsupportedImportNotes({ file, notes }: CollectUnsupportedImportNotesArgs): void {\n for (const exportDeclaration of file.getExportDeclarations()) {\n if (exportDeclaration.getModuleSpecifierValue() !== 'payload') {\n continue\n }\n\n for (const namedExport of exportDeclaration.getNamedExports()) {\n if (COMPONENT_TO_PROPS.has(namedExport.getName())) {\n notes.push(\n `${file.getFilePath()}:${namedExport.getStartLineNumber()}: Unsupported re-export of \\`${namedExport.getName()}\\`. Replace it with the corresponding props type manually.`,\n )\n }\n }\n }\n\n for (const importDeclaration of file.getImportDeclarations()) {\n if (importDeclaration.getModuleSpecifierValue() !== 'payload') {\n continue\n }\n\n const namespaceImport = importDeclaration.getNamespaceImport()\n if (!namespaceImport) {\n continue\n }\n\n const namespaceName = namespaceImport.getText()\n for (const qualifiedName of file.getDescendantsOfKind(SyntaxKind.QualifiedName)) {\n const componentName = qualifiedName.getRight().getText()\n\n if (\n qualifiedName.getLeft().getText() === namespaceName &&\n COMPONENT_TO_PROPS.has(componentName)\n ) {\n notes.push(\n `${file.getFilePath()}:${qualifiedName.getStartLineNumber()}: Unsupported namespace reference to \\`${componentName}\\`. Replace it with the corresponding props type manually.`,\n )\n }\n }\n }\n\n for (const importType of file.getDescendantsOfKind(SyntaxKind.ImportType)) {\n const argument = importType.getArgument()\n const literal = Node.isLiteralTypeNode(argument) ? argument.getLiteral() : undefined\n const qualifier = importType.getQualifier()\n\n if (\n Node.isStringLiteral(literal) &&\n literal.getLiteralText() === 'payload' &&\n qualifier &&\n COMPONENT_TO_PROPS.has(qualifier.getText())\n ) {\n const componentName = qualifier.getText()\n\n notes.push(\n `${file.getFilePath()}:${importType.getStartLineNumber()}: Unsupported inline import of \\`${componentName}\\`. Replace it with the corresponding props type manually.`,\n )\n }\n }\n}\n\nfunction removeEmptyImport(importDeclaration: ImportDeclaration): void {\n if (\n importDeclaration.wasForgotten() ||\n importDeclaration.getNamedImports().length > 0 ||\n importDeclaration.getDefaultImport() ||\n importDeclaration.getNamespaceImport()\n ) {\n return\n }\n\n importDeclaration.remove()\n}\n"],"names":["Node","SyntaxKind","VariableDeclarationKind","FIELD_NAMES","FIELDS_WITH_SPECIALIZED_COMPONENTS","SPECIALIZED_COMPONENT_NAMES","COMPONENT_TO_PROPS","Map","flatMap","fieldName","map","componentName","COMPONENT_GENERIC_DEFAULTS","migrateFieldComponentTypes","name","apply","project","filesChanged","Set","notes","file","getSourceFiles","collectUnsupportedImportNotes","mutated","reactBinding","importDeclaration","getImportDeclarations","getModuleSpecifierValue","componentImports","getNamedImports","filter","specifier","has","getName","localName","getAliasNode","getText","importMutated","componentImport","propsName","get","find","namedImport","binding","getNameNode","references","findReferencesAsNodes","node","getSourceFile","unsupportedReference","reference","parent","getParent","isTypeReference","getTypeName","push","getFilePath","getStartLineNumber","classDeclaration","getFirstAncestorByKind","VariableDeclaration","declaration","referenceIndex","initializer","getInitializer","componentPropertyPath","getComponentPropertyPath","undefined","initializerContainsClassComponent","length","remove","propsImport","resolvePropsImport","resolveReactTypeBinding","reverse","typeReference","getParentIfKindOrThrow","TypeReference","typeArguments","getTypeArguments","typeArgument","propsTypeArguments","materializeGenericDefaults","propsType","join","replaceWithText","currentSpecifier","exists","setName","removeAlias","setAlias","removeEmptyImport","shouldAddImport","addReactTypeImport","reactName","add","description","genericDefaults","slice","typeName","resolvePayloadTypeImport","existing","hasCompetingDeclaration","getAvailableName","preferredName","suffix","addNamedImport","alias","isTypeOnly","reactImports","namespaceImport","getNamespaceImport","defaultImport","getDefaultImport","getDescendantsOfKind","Identifier","some","identifier","ImportDeclaration","isTypeParameterDeclaration","isParameterDeclaration","isVariableDeclaration","isFunctionDeclaration","isClassDeclaration","isTypeAliasDeclaration","isInterfaceDeclaration","importDeclarations","lastImport","at","statements","getStatements","insertionIndex","indexOf","nextStatement","needsTerminator","getEndLineNumber","insertStatements","visitedExpressions","expression","isParenthesizedExpression","isAsExpression","isSatisfiesExpression","isTypeAssertion","isNonNullExpression","getExpression","isClassExpression","isArrayLiteralExpression","getElements","element","nestedExpression","isSpreadElement","isExpression","isConditionalExpression","getWhenTrue","getWhenFalse","isObjectLiteralExpression","properties","getProperties","componentPropertyName","remainingComponentPropertyPath","propertiesToInspect","property","isSpreadAssignment","isPropertyAssignment","isShorthandPropertyAssignment","propertyName","getStaticPropertyName","nameNode","propertyInitializer","isIdentifier","getDefinitions","definition","getDeclarationNode","referencedInitializer","propertySignatures","getAncestors","isPropertySignature","propertyPath","every","isComputedPropertyName","getStaticComputedPropertyName","isStringLiteral","isNoSubstitutionTemplateLiteral","getLiteralText","isNumericLiteral","String","getLiteralValue","initialExpression","getVariableStatement","getDeclarationKind","Const","usedNames","candidate","index","exportDeclaration","getExportDeclarations","namedExport","getNamedExports","namespaceName","qualifiedName","QualifiedName","getRight","getLeft","importType","ImportType","argument","getArgument","literal","isLiteralTypeNode","getLiteral","qualifier","getQualifier","wasForgotten"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-field-component-types/index.ts"],"sourcesContent":["import type { Expression, ImportDeclaration, SourceFile } from 'ts-morph'\n\nimport { Node, SyntaxKind, VariableDeclarationKind } from 'ts-morph'\n\nimport type { Transform } from '../../types.js'\n\nconst FIELD_NAMES = [\n 'Array',\n 'Blocks',\n 'Checkbox',\n 'Code',\n 'Collapsible',\n 'Date',\n 'Email',\n 'Group',\n 'Join',\n 'JSON',\n 'Number',\n 'Point',\n 'Radio',\n 'Relationship',\n 'RichText',\n 'Row',\n 'Select',\n 'Tabs',\n 'Text',\n 'Textarea',\n 'UI',\n 'Upload',\n] as const\n\nconst FIELDS_WITH_SPECIALIZED_COMPONENTS = [\n 'Array',\n 'Blocks',\n 'Checkbox',\n 'Code',\n 'Collapsible',\n 'Date',\n 'Email',\n 'Group',\n 'Join',\n 'JSON',\n 'Number',\n 'Point',\n 'Radio',\n 'Relationship',\n 'RichText',\n 'Row',\n 'Select',\n 'Tabs',\n 'Text',\n 'Textarea',\n 'Upload',\n] as const\n\nconst SPECIALIZED_COMPONENT_NAMES = [\n 'FieldDescriptionClient',\n 'FieldDescriptionServer',\n 'FieldDiffClient',\n 'FieldDiffServer',\n 'FieldErrorClient',\n 'FieldErrorServer',\n 'FieldLabelClient',\n 'FieldLabelServer',\n] as const\n\nconst COMPONENT_TO_PROPS = new Map<string, string>([\n ['BlockRowLabelClientComponent', 'BlockRowLabelClientProps'],\n ['BlockRowLabelServerComponent', 'BlockRowLabelServerProps'],\n ['FieldClientComponent', 'FieldClientProps'],\n ['FieldDescriptionClientComponent', 'FieldDescriptionClientProps'],\n ['FieldDescriptionServerComponent', 'FieldDescriptionServerProps'],\n ['FieldDiffClientComponent', 'FieldDiffClientProps'],\n ['FieldDiffServerComponent', 'FieldDiffServerProps'],\n ['FieldErrorClientComponent', 'FieldErrorClientProps'],\n ['FieldErrorServerComponent', 'FieldErrorServerProps'],\n ['FieldLabelClientComponent', 'FieldLabelClientProps'],\n ['FieldLabelServerComponent', 'FieldLabelServerProps'],\n ['FieldServerComponent', 'FieldServerProps'],\n ...FIELD_NAMES.flatMap((fieldName) => [\n [`${fieldName}FieldClientComponent`, `${fieldName}FieldClientProps`] as const,\n [`${fieldName}FieldServerComponent`, `${fieldName}FieldServerProps`] as const,\n ]),\n ...FIELDS_WITH_SPECIALIZED_COMPONENTS.flatMap((fieldName) =>\n SPECIALIZED_COMPONENT_NAMES.map(\n (componentName) =>\n [`${fieldName}${componentName}Component`, `${fieldName}${componentName}Props`] as const,\n ),\n ),\n ['UIFieldDiffClientComponent', 'UIFieldDiffClientProps'],\n ['UIFieldDiffServerComponent', 'UIFieldDiffServerProps'],\n])\n\nconst COMPONENT_GENERIC_DEFAULTS = new Map<string, readonly string[]>([\n ['FieldDiffClientComponent', ['ClientFieldWithOptionalType']],\n ['FieldDiffServerComponent', ['Field', 'ClientFieldWithOptionalType']],\n ['FieldErrorServerComponent', ['Field', 'ClientFieldWithOptionalType']],\n ['FieldLabelClientComponent', ['ClientFieldWithOptionalType']],\n ['FieldLabelServerComponent', ['Field', 'ClientFieldWithOptionalType']],\n])\n\nexport const migrateFieldComponentTypes: Transform = {\n name: 'migrate-field-component-types',\n apply: ({ project }) => {\n const filesChanged = new Set<string>()\n const notes: string[] = []\n\n for (const file of project.getSourceFiles()) {\n collectUnsupportedImportNotes({ file, notes })\n\n let mutated = false\n let reactBinding: ResolvedReactBinding | undefined\n\n for (const importDeclaration of [...file.getImportDeclarations()]) {\n if (importDeclaration.getModuleSpecifierValue() !== 'payload') {\n continue\n }\n\n const componentImports = importDeclaration\n .getNamedImports()\n .filter((specifier) => COMPONENT_TO_PROPS.has(specifier.getName()))\n .map((specifier) => ({\n componentName: specifier.getName(),\n localName: specifier.getAliasNode()?.getText() ?? specifier.getName(),\n }))\n let importMutated = false\n\n for (const componentImport of componentImports) {\n const { componentName, localName } = componentImport\n const propsName = COMPONENT_TO_PROPS.get(componentName)\n\n if (!propsName) {\n continue\n }\n\n const specifier = importDeclaration\n .getNamedImports()\n .find(\n (namedImport) =>\n namedImport.getName() === componentName &&\n (namedImport.getAliasNode()?.getText() ?? namedImport.getName()) === localName,\n )\n\n if (!specifier) {\n continue\n }\n\n const binding = specifier.getAliasNode() ?? specifier.getNameNode()\n\n // Always an Identifier in valid code: a string-literal import name requires an alias.\n if (!Node.isIdentifier(binding)) {\n continue\n }\n\n const references = binding\n .findReferencesAsNodes()\n .filter((node) => node !== binding && node.getSourceFile() === file)\n const unsupportedReference = references.find((reference) => {\n const parent = reference.getParent()\n\n return !Node.isTypeReference(parent) || parent.getTypeName() !== reference\n })\n\n if (unsupportedReference) {\n notes.push(\n `${file.getFilePath()}:${unsupportedReference.getStartLineNumber()}: Unsupported use of \\`${componentName}\\`. Replace it with the corresponding props type manually.`,\n )\n continue\n }\n\n const classDeclaration = references\n .map((reference) => reference.getFirstAncestorByKind(SyntaxKind.VariableDeclaration))\n .find((declaration, referenceIndex) => {\n const initializer = declaration?.getInitializer()\n const reference = references[referenceIndex]\n const componentPropertyPath = reference\n ? getComponentPropertyPath({ reference })\n : undefined\n\n return initializer\n ? initializerContainsClassComponent({ componentPropertyPath, initializer })\n : false\n })\n\n if (classDeclaration) {\n notes.push(\n `${file.getFilePath()}:${classDeclaration.getStartLineNumber()}: Cannot automatically migrate \\`${componentName}\\` because it types a class component. Replace it with a compatible props annotation manually.`,\n )\n continue\n }\n\n if (references.length === 0) {\n specifier.remove()\n importMutated = true\n mutated = true\n continue\n }\n\n const propsImport = resolvePropsImport({\n file,\n propsName,\n })\n\n reactBinding ??= resolveReactTypeBinding(file)\n\n for (const reference of references.reverse()) {\n const typeReference = reference.getParentIfKindOrThrow(SyntaxKind.TypeReference)\n const typeArguments = typeReference\n .getTypeArguments()\n .map((typeArgument) => typeArgument.getText())\n const propsTypeArguments = materializeGenericDefaults({\n componentName,\n file,\n importDeclaration,\n typeArguments,\n })\n const propsType =\n propsTypeArguments.length > 0\n ? `${propsImport.localName}<${propsTypeArguments.join(', ')}>`\n : propsImport.localName\n\n typeReference.replaceWithText(`${reactBinding.localName}.FC<${propsType}>`)\n }\n\n const currentSpecifier = importDeclaration\n .getNamedImports()\n .find(\n (namedImport) =>\n namedImport.getName() === componentName &&\n (namedImport.getAliasNode()?.getText() ?? namedImport.getName()) === localName,\n )\n\n if (propsImport.exists) {\n currentSpecifier?.remove()\n } else if (currentSpecifier) {\n currentSpecifier.setName(propsName)\n\n if (propsImport.localName === propsName) {\n currentSpecifier.removeAlias()\n } else {\n currentSpecifier.setAlias(propsImport.localName)\n }\n }\n\n importMutated = true\n mutated = true\n }\n\n if (importMutated) {\n removeEmptyImport(importDeclaration)\n }\n }\n\n if (reactBinding?.shouldAddImport) {\n addReactTypeImport({ file, reactName: reactBinding.localName })\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 'Replace field component aliases imported from `payload` with the corresponding props types wrapped in `React.FC`. Generic arguments are preserved. Explicit class components and unsupported import forms are left unchanged with notes for manual migration.',\n}\n\ntype ResolvePropsImportArgs = {\n file: SourceFile\n propsName: string\n}\n\ntype MaterializeGenericDefaultsArgs = {\n componentName: string\n file: SourceFile\n importDeclaration: ImportDeclaration\n typeArguments: string[]\n}\n\nfunction materializeGenericDefaults({\n componentName,\n file,\n importDeclaration,\n typeArguments,\n}: MaterializeGenericDefaultsArgs): string[] {\n const genericDefaults = COMPONENT_GENERIC_DEFAULTS.get(componentName)\n\n if (!genericDefaults || typeArguments.length >= genericDefaults.length) {\n return typeArguments\n }\n\n return [\n ...typeArguments,\n ...genericDefaults.slice(typeArguments.length).map((typeName) =>\n resolvePayloadTypeImport({\n file,\n importDeclaration,\n typeName,\n }),\n ),\n ]\n}\n\ntype ResolvePayloadTypeImportArgs = {\n file: SourceFile\n importDeclaration: ImportDeclaration\n typeName: string\n}\n\nfunction resolvePayloadTypeImport({\n file,\n importDeclaration,\n typeName,\n}: ResolvePayloadTypeImportArgs): string {\n for (const declaration of file.getImportDeclarations()) {\n if (declaration.getModuleSpecifierValue() !== 'payload') {\n continue\n }\n\n const existing = declaration\n .getNamedImports()\n .find((namedImport) => namedImport.getName() === typeName)\n\n if (existing) {\n const localName = existing.getAliasNode()?.getText() ?? typeName\n\n if (\n !hasCompetingDeclaration({\n file,\n importDeclaration: declaration,\n localName,\n })\n ) {\n return localName\n }\n }\n }\n\n const localName = getAvailableName({ file, preferredName: typeName, suffix: 'Type' })\n\n importDeclaration.addNamedImport({\n name: typeName,\n alias: localName === typeName ? undefined : localName,\n isTypeOnly: !importDeclaration.isTypeOnly(),\n })\n\n return localName\n}\n\ntype ResolvedPropsImport = {\n exists: boolean\n localName: string\n}\n\nfunction resolvePropsImport({ file, propsName }: ResolvePropsImportArgs): ResolvedPropsImport {\n for (const declaration of file.getImportDeclarations()) {\n if (declaration.getModuleSpecifierValue() !== 'payload') {\n continue\n }\n\n const existing = declaration\n .getNamedImports()\n .find((namedImport) => namedImport.getName() === propsName)\n\n if (existing) {\n const localName = existing.getAliasNode()?.getText() ?? propsName\n\n if (\n !hasCompetingDeclaration({\n file,\n importDeclaration: declaration,\n localName,\n })\n ) {\n return {\n exists: true,\n localName,\n }\n }\n }\n }\n\n const localName = getAvailableName({ file, preferredName: propsName, suffix: 'Type' })\n\n return { exists: false, localName }\n}\n\ntype ResolvedReactBinding = {\n localName: string\n shouldAddImport: boolean\n}\n\nfunction resolveReactTypeBinding(file: SourceFile): ResolvedReactBinding {\n const reactImports = file\n .getImportDeclarations()\n .filter((declaration) => declaration.getModuleSpecifierValue() === 'react')\n\n for (const declaration of reactImports) {\n const namespaceImport = declaration.getNamespaceImport()\n if (\n namespaceImport &&\n !hasCompetingDeclaration({\n file,\n importDeclaration: declaration,\n localName: namespaceImport.getText(),\n })\n ) {\n return { localName: namespaceImport.getText(), shouldAddImport: false }\n }\n\n const defaultImport = declaration.getDefaultImport()\n if (\n defaultImport &&\n !hasCompetingDeclaration({\n file,\n importDeclaration: declaration,\n localName: defaultImport.getText(),\n })\n ) {\n return { localName: defaultImport.getText(), shouldAddImport: false }\n }\n }\n\n return {\n localName: getAvailableName({ file, preferredName: 'React', suffix: 'Type' }),\n shouldAddImport: true,\n }\n}\n\ntype HasCompetingDeclarationArgs = {\n file: SourceFile\n importDeclaration: ImportDeclaration\n localName: string\n}\n\nfunction hasCompetingDeclaration({\n file,\n importDeclaration,\n localName,\n}: HasCompetingDeclarationArgs): boolean {\n return file.getDescendantsOfKind(SyntaxKind.Identifier).some((identifier) => {\n if (\n identifier.getText() !== localName ||\n identifier.getFirstAncestorByKind(SyntaxKind.ImportDeclaration) === importDeclaration\n ) {\n return false\n }\n\n const parent = identifier.getParent()\n\n return (\n (Node.isTypeParameterDeclaration(parent) ||\n Node.isParameterDeclaration(parent) ||\n Node.isVariableDeclaration(parent) ||\n Node.isFunctionDeclaration(parent) ||\n Node.isClassDeclaration(parent) ||\n Node.isTypeAliasDeclaration(parent) ||\n Node.isInterfaceDeclaration(parent)) &&\n parent.getNameNode() === identifier\n )\n })\n}\n\ntype AddReactTypeImportArgs = {\n file: SourceFile\n reactName: string\n}\n\nfunction addReactTypeImport({ file, reactName }: AddReactTypeImportArgs): void {\n const importDeclarations = file.getImportDeclarations()\n const lastImport = importDeclarations.at(-1)\n const statements = file.getStatements()\n const insertionIndex = lastImport ? statements.indexOf(lastImport) + 1 : 0\n const nextStatement = statements.at(insertionIndex)\n const needsTerminator =\n lastImport && nextStatement\n ? lastImport.getEndLineNumber() === nextStatement.getStartLineNumber()\n : false\n\n file.insertStatements(\n insertionIndex,\n `import type ${reactName} from 'react'${needsTerminator ? ';' : ''}`,\n )\n}\n\ntype InitializerContainsClassComponentArgs = {\n componentPropertyPath?: string[]\n initializer: Expression\n visitedExpressions?: Set<Expression>\n}\n\nfunction initializerContainsClassComponent({\n componentPropertyPath,\n initializer,\n visitedExpressions = new Set<Expression>(),\n}: InitializerContainsClassComponentArgs): boolean {\n let expression = initializer\n\n while (\n Node.isParenthesizedExpression(expression) ||\n Node.isAsExpression(expression) ||\n Node.isSatisfiesExpression(expression) ||\n Node.isTypeAssertion(expression) ||\n Node.isNonNullExpression(expression)\n ) {\n expression = expression.getExpression()\n }\n\n if (visitedExpressions.has(expression)) {\n return false\n }\n\n visitedExpressions.add(expression)\n\n if (Node.isClassExpression(expression)) {\n return true\n }\n\n if (Node.isArrayLiteralExpression(expression)) {\n return expression.getElements().some((element) => {\n const nestedExpression = Node.isSpreadElement(element) ? element.getExpression() : element\n\n return Node.isExpression(nestedExpression)\n ? initializerContainsClassComponent({\n componentPropertyPath,\n initializer: nestedExpression,\n visitedExpressions,\n })\n : false\n })\n }\n\n if (Node.isConditionalExpression(expression)) {\n return [expression.getWhenTrue(), expression.getWhenFalse()].some((nestedExpression) =>\n initializerContainsClassComponent({\n componentPropertyPath,\n initializer: nestedExpression,\n visitedExpressions,\n }),\n )\n }\n\n if (Node.isObjectLiteralExpression(expression)) {\n const properties = expression.getProperties()\n const componentPropertyName = componentPropertyPath?.[0]\n const remainingComponentPropertyPath = componentPropertyPath?.slice(1)\n const propertiesToInspect = componentPropertyName\n ? properties.filter((property) => {\n if (Node.isSpreadAssignment(property)) {\n return true\n }\n\n if (\n !Node.isPropertyAssignment(property) &&\n !Node.isShorthandPropertyAssignment(property)\n ) {\n return false\n }\n\n const propertyName = getStaticPropertyName({ nameNode: property.getNameNode() })\n\n return propertyName === undefined || propertyName === componentPropertyName\n })\n : properties\n\n return propertiesToInspect.some((property) => {\n if (Node.isPropertyAssignment(property)) {\n const propertyInitializer = property.getInitializer()\n\n return propertyInitializer && Node.isExpression(propertyInitializer)\n ? initializerContainsClassComponent({\n componentPropertyPath: remainingComponentPropertyPath,\n initializer: propertyInitializer,\n visitedExpressions,\n })\n : false\n }\n\n if (Node.isShorthandPropertyAssignment(property)) {\n return initializerContainsClassComponent({\n componentPropertyPath: remainingComponentPropertyPath,\n initializer: property.getNameNode(),\n visitedExpressions,\n })\n }\n\n return Node.isSpreadAssignment(property)\n ? initializerContainsClassComponent({\n componentPropertyPath,\n initializer: property.getExpression(),\n visitedExpressions,\n })\n : false\n })\n }\n\n if (!Node.isIdentifier(expression)) {\n return false\n }\n\n return expression.getDefinitions().some((definition) => {\n const declaration = definition.getDeclarationNode()\n\n if (Node.isClassDeclaration(declaration)) {\n return true\n }\n\n if (Node.isVariableDeclaration(declaration)) {\n const referencedInitializer = declaration.getInitializer()\n\n return referencedInitializer\n ? initializerContainsClassComponent({\n componentPropertyPath,\n initializer: referencedInitializer,\n visitedExpressions,\n })\n : false\n }\n\n return false\n })\n}\n\ntype GetComponentPropertyPathArgs = {\n reference: Node\n}\n\nfunction getComponentPropertyPath({\n reference,\n}: GetComponentPropertyPathArgs): string[] | undefined {\n const propertySignatures = reference.getAncestors().filter(Node.isPropertySignature).reverse()\n\n if (propertySignatures.length === 0) {\n return undefined\n }\n\n const propertyPath = propertySignatures.map((property) =>\n getStaticPropertyName({ nameNode: property.getNameNode() }),\n )\n\n return propertyPath.every((propertyName): propertyName is string => propertyName !== undefined)\n ? propertyPath\n : undefined\n}\n\ntype GetStaticPropertyNameArgs = {\n nameNode: Node\n}\n\nfunction getStaticPropertyName({ nameNode }: GetStaticPropertyNameArgs): string | undefined {\n if (Node.isComputedPropertyName(nameNode)) {\n return getStaticComputedPropertyName({ expression: nameNode.getExpression() })\n }\n\n if (Node.isStringLiteral(nameNode) || Node.isNoSubstitutionTemplateLiteral(nameNode)) {\n return nameNode.getLiteralText()\n }\n\n if (Node.isNumericLiteral(nameNode)) {\n return String(nameNode.getLiteralValue())\n }\n\n return Node.isIdentifier(nameNode) ? nameNode.getText() : undefined\n}\n\ntype GetStaticComputedPropertyNameArgs = {\n expression: Expression\n visitedExpressions?: Set<Expression>\n}\n\nfunction getStaticComputedPropertyName({\n expression: initialExpression,\n visitedExpressions = new Set<Expression>(),\n}: GetStaticComputedPropertyNameArgs): string | undefined {\n let expression = initialExpression\n\n while (\n Node.isParenthesizedExpression(expression) ||\n Node.isAsExpression(expression) ||\n Node.isSatisfiesExpression(expression) ||\n Node.isTypeAssertion(expression) ||\n Node.isNonNullExpression(expression)\n ) {\n expression = expression.getExpression()\n }\n\n if (visitedExpressions.has(expression)) {\n return undefined\n }\n\n visitedExpressions.add(expression)\n\n if (Node.isStringLiteral(expression) || Node.isNoSubstitutionTemplateLiteral(expression)) {\n return expression.getLiteralText()\n }\n\n if (Node.isNumericLiteral(expression)) {\n return String(expression.getLiteralValue())\n }\n\n if (!Node.isIdentifier(expression)) {\n return undefined\n }\n\n for (const definition of expression.getDefinitions()) {\n const declaration = definition.getDeclarationNode()\n\n if (\n Node.isVariableDeclaration(declaration) &&\n declaration.getVariableStatement()?.getDeclarationKind() === VariableDeclarationKind.Const\n ) {\n const initializer = declaration.getInitializer()\n const propertyName =\n initializer && Node.isExpression(initializer)\n ? getStaticComputedPropertyName({ expression: initializer, visitedExpressions })\n : undefined\n\n if (propertyName !== undefined) {\n return propertyName\n }\n }\n }\n\n return undefined\n}\n\ntype GetAvailableNameArgs = {\n file: SourceFile\n preferredName: string\n suffix: string\n}\n\nfunction getAvailableName({ file, preferredName, suffix }: GetAvailableNameArgs): string {\n const usedNames = new Set(\n file.getDescendantsOfKind(SyntaxKind.Identifier).map((identifier) => identifier.getText()),\n )\n\n if (!usedNames.has(preferredName)) {\n return preferredName\n }\n\n let candidate = `${preferredName}${suffix}`\n let index = 2\n\n while (usedNames.has(candidate)) {\n candidate = `${preferredName}${suffix}${index}`\n index++\n }\n\n return candidate\n}\n\ntype CollectUnsupportedImportNotesArgs = {\n file: SourceFile\n notes: string[]\n}\n\nfunction collectUnsupportedImportNotes({ file, notes }: CollectUnsupportedImportNotesArgs): void {\n for (const exportDeclaration of file.getExportDeclarations()) {\n if (exportDeclaration.getModuleSpecifierValue() !== 'payload') {\n continue\n }\n\n for (const namedExport of exportDeclaration.getNamedExports()) {\n if (COMPONENT_TO_PROPS.has(namedExport.getName())) {\n notes.push(\n `${file.getFilePath()}:${namedExport.getStartLineNumber()}: Unsupported re-export of \\`${namedExport.getName()}\\`. Replace it with the corresponding props type manually.`,\n )\n }\n }\n }\n\n for (const importDeclaration of file.getImportDeclarations()) {\n if (importDeclaration.getModuleSpecifierValue() !== 'payload') {\n continue\n }\n\n const namespaceImport = importDeclaration.getNamespaceImport()\n if (!namespaceImport) {\n continue\n }\n\n const namespaceName = namespaceImport.getText()\n for (const qualifiedName of file.getDescendantsOfKind(SyntaxKind.QualifiedName)) {\n const componentName = qualifiedName.getRight().getText()\n\n if (\n qualifiedName.getLeft().getText() === namespaceName &&\n COMPONENT_TO_PROPS.has(componentName)\n ) {\n notes.push(\n `${file.getFilePath()}:${qualifiedName.getStartLineNumber()}: Unsupported namespace reference to \\`${componentName}\\`. Replace it with the corresponding props type manually.`,\n )\n }\n }\n }\n\n for (const importType of file.getDescendantsOfKind(SyntaxKind.ImportType)) {\n const argument = importType.getArgument()\n const literal = Node.isLiteralTypeNode(argument) ? argument.getLiteral() : undefined\n const qualifier = importType.getQualifier()\n\n if (\n Node.isStringLiteral(literal) &&\n literal.getLiteralText() === 'payload' &&\n qualifier &&\n COMPONENT_TO_PROPS.has(qualifier.getText())\n ) {\n const componentName = qualifier.getText()\n\n notes.push(\n `${file.getFilePath()}:${importType.getStartLineNumber()}: Unsupported inline import of \\`${componentName}\\`. Replace it with the corresponding props type manually.`,\n )\n }\n }\n}\n\nfunction removeEmptyImport(importDeclaration: ImportDeclaration): void {\n if (\n importDeclaration.wasForgotten() ||\n importDeclaration.getNamedImports().length > 0 ||\n importDeclaration.getDefaultImport() ||\n importDeclaration.getNamespaceImport()\n ) {\n return\n }\n\n importDeclaration.remove()\n}\n"],"names":["Node","SyntaxKind","VariableDeclarationKind","FIELD_NAMES","FIELDS_WITH_SPECIALIZED_COMPONENTS","SPECIALIZED_COMPONENT_NAMES","COMPONENT_TO_PROPS","Map","flatMap","fieldName","map","componentName","COMPONENT_GENERIC_DEFAULTS","migrateFieldComponentTypes","name","apply","project","filesChanged","Set","notes","file","getSourceFiles","collectUnsupportedImportNotes","mutated","reactBinding","importDeclaration","getImportDeclarations","getModuleSpecifierValue","componentImports","getNamedImports","filter","specifier","has","getName","localName","getAliasNode","getText","importMutated","componentImport","propsName","get","find","namedImport","binding","getNameNode","isIdentifier","references","findReferencesAsNodes","node","getSourceFile","unsupportedReference","reference","parent","getParent","isTypeReference","getTypeName","push","getFilePath","getStartLineNumber","classDeclaration","getFirstAncestorByKind","VariableDeclaration","declaration","referenceIndex","initializer","getInitializer","componentPropertyPath","getComponentPropertyPath","undefined","initializerContainsClassComponent","length","remove","propsImport","resolvePropsImport","resolveReactTypeBinding","reverse","typeReference","getParentIfKindOrThrow","TypeReference","typeArguments","getTypeArguments","typeArgument","propsTypeArguments","materializeGenericDefaults","propsType","join","replaceWithText","currentSpecifier","exists","setName","removeAlias","setAlias","removeEmptyImport","shouldAddImport","addReactTypeImport","reactName","add","description","genericDefaults","slice","typeName","resolvePayloadTypeImport","existing","hasCompetingDeclaration","getAvailableName","preferredName","suffix","addNamedImport","alias","isTypeOnly","reactImports","namespaceImport","getNamespaceImport","defaultImport","getDefaultImport","getDescendantsOfKind","Identifier","some","identifier","ImportDeclaration","isTypeParameterDeclaration","isParameterDeclaration","isVariableDeclaration","isFunctionDeclaration","isClassDeclaration","isTypeAliasDeclaration","isInterfaceDeclaration","importDeclarations","lastImport","at","statements","getStatements","insertionIndex","indexOf","nextStatement","needsTerminator","getEndLineNumber","insertStatements","visitedExpressions","expression","isParenthesizedExpression","isAsExpression","isSatisfiesExpression","isTypeAssertion","isNonNullExpression","getExpression","isClassExpression","isArrayLiteralExpression","getElements","element","nestedExpression","isSpreadElement","isExpression","isConditionalExpression","getWhenTrue","getWhenFalse","isObjectLiteralExpression","properties","getProperties","componentPropertyName","remainingComponentPropertyPath","propertiesToInspect","property","isSpreadAssignment","isPropertyAssignment","isShorthandPropertyAssignment","propertyName","getStaticPropertyName","nameNode","propertyInitializer","getDefinitions","definition","getDeclarationNode","referencedInitializer","propertySignatures","getAncestors","isPropertySignature","propertyPath","every","isComputedPropertyName","getStaticComputedPropertyName","isStringLiteral","isNoSubstitutionTemplateLiteral","getLiteralText","isNumericLiteral","String","getLiteralValue","initialExpression","getVariableStatement","getDeclarationKind","Const","usedNames","candidate","index","exportDeclaration","getExportDeclarations","namedExport","getNamedExports","namespaceName","qualifiedName","QualifiedName","getRight","getLeft","importType","ImportType","argument","getArgument","literal","isLiteralTypeNode","getLiteral","qualifier","getQualifier","wasForgotten"],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import sharp from 'sharp';
|
|
2
|
+
import { buildConfig } from 'payload';
|
|
3
|
+
export default buildConfig({
|
|
4
|
+
collections: [
|
|
5
|
+
{
|
|
6
|
+
slug: 'media',
|
|
7
|
+
fields: [],
|
|
8
|
+
upload: {
|
|
9
|
+
crop: false,
|
|
10
|
+
imageSizes: [
|
|
11
|
+
{
|
|
12
|
+
name: 'square',
|
|
13
|
+
height: 400,
|
|
14
|
+
width: 400
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
resizeOptions: {
|
|
18
|
+
width: 200,
|
|
19
|
+
height: 200
|
|
20
|
+
},
|
|
21
|
+
staticDir: 'media'
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
sharp
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=basic.input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-sharp-to-transformer/basic.input.ts"],"sourcesContent":["import sharp from 'sharp'\nimport { buildConfig } from 'payload'\n\nexport default buildConfig({\n collections: [\n {\n slug: 'media',\n fields: [],\n upload: {\n crop: false,\n imageSizes: [{ name: 'square', height: 400, width: 400 }],\n resizeOptions: {\n width: 200,\n height: 200,\n },\n staticDir: 'media',\n },\n },\n ],\n sharp,\n})\n"],"names":["sharp","buildConfig","collections","slug","fields","upload","crop","imageSizes","name","height","width","resizeOptions","staticDir"],"mappings":"AAAA,OAAOA,WAAW,QAAO;AACzB,SAASC,WAAW,QAAQ,UAAS;AAErC,eAAeA,YAAY;IACzBC,aAAa;QACX;YACEC,MAAM;YACNC,QAAQ,EAAE;YACVC,QAAQ;gBACNC,MAAM;gBACNC,YAAY;oBAAC;wBAAEC,MAAM;wBAAUC,QAAQ;wBAAKC,OAAO;oBAAI;iBAAE;gBACzDC,eAAe;oBACbD,OAAO;oBACPD,QAAQ;gBACV;gBACAG,WAAW;YACb;QACF;KACD;IACDZ;AACF,GAAE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import sharp from 'sharp';
|
|
2
|
+
import { buildConfig } from 'payload';
|
|
3
|
+
import { sharpTransformer } from '@payloadcms/transformer-sharp';
|
|
4
|
+
export default buildConfig({
|
|
5
|
+
collections: [
|
|
6
|
+
{
|
|
7
|
+
slug: 'media',
|
|
8
|
+
fields: [],
|
|
9
|
+
upload: {
|
|
10
|
+
staticDir: 'media'
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
upload: {
|
|
15
|
+
transformers: [
|
|
16
|
+
sharpTransformer({
|
|
17
|
+
sharp,
|
|
18
|
+
collections: {
|
|
19
|
+
media: {
|
|
20
|
+
resizeOptions: {
|
|
21
|
+
width: 200,
|
|
22
|
+
height: 200
|
|
23
|
+
},
|
|
24
|
+
variants: [
|
|
25
|
+
{
|
|
26
|
+
name: 'square',
|
|
27
|
+
height: 400,
|
|
28
|
+
width: 400
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
crop: false
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
})
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=basic.output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-sharp-to-transformer/basic.output.ts"],"sourcesContent":["import sharp from 'sharp'\nimport { buildConfig } from 'payload'\nimport { sharpTransformer } from '@payloadcms/transformer-sharp'\n\nexport default buildConfig({\n collections: [\n {\n slug: 'media',\n fields: [],\n upload: {\n staticDir: 'media',\n },\n },\n ],\n upload: { transformers: [sharpTransformer({ sharp, collections: { media: { resizeOptions: {\n width: 200,\n height: 200,\n }, variants: [{ name: 'square', height: 400, width: 400 }], crop: false } } })] },\n})\n"],"names":["sharp","buildConfig","sharpTransformer","collections","slug","fields","upload","staticDir","transformers","media","resizeOptions","width","height","variants","name","crop"],"mappings":"AAAA,OAAOA,WAAW,QAAO;AACzB,SAASC,WAAW,QAAQ,UAAS;AACrC,SAASC,gBAAgB,QAAQ,gCAA+B;AAEhE,eAAeD,YAAY;IACzBE,aAAa;QACX;YACEC,MAAM;YACNC,QAAQ,EAAE;YACVC,QAAQ;gBACNC,WAAW;YACb;QACF;KACD;IACDD,QAAQ;QAAEE,cAAc;YAACN,iBAAiB;gBAAEF;gBAAOG,aAAa;oBAAEM,OAAO;wBAAEC,eAAe;4BACpFC,OAAO;4BACPC,QAAQ;wBACZ;wBAAGC,UAAU;4BAAC;gCAAEC,MAAM;gCAAUF,QAAQ;gCAAKD,OAAO;4BAAI;yBAAE;wBAAEI,MAAM;oBAAM;gBAAE;YAAE;SAAG;IAAC;AACpF,GAAE"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { customTransformer } from './customTransformer.js';
|
|
2
|
+
import { buildConfig } from 'payload';
|
|
3
|
+
export default buildConfig({
|
|
4
|
+
collections: [
|
|
5
|
+
{
|
|
6
|
+
slug: 'media',
|
|
7
|
+
fields: [],
|
|
8
|
+
upload: {
|
|
9
|
+
imageSizes: [
|
|
10
|
+
{
|
|
11
|
+
name: 'square',
|
|
12
|
+
height: 400,
|
|
13
|
+
width: 400
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
upload: {
|
|
20
|
+
abortOnLimit: true,
|
|
21
|
+
transformers: [
|
|
22
|
+
customTransformer()
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=existing-transformers.input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-sharp-to-transformer/existing-transformers.input.ts"],"sourcesContent":["import { customTransformer } from './customTransformer.js'\nimport { buildConfig } from 'payload'\n\nexport default buildConfig({\n collections: [\n {\n slug: 'media',\n fields: [],\n upload: {\n imageSizes: [{ name: 'square', height: 400, width: 400 }],\n },\n },\n ],\n upload: {\n abortOnLimit: true,\n transformers: [customTransformer()],\n },\n})\n"],"names":["customTransformer","buildConfig","collections","slug","fields","upload","imageSizes","name","height","width","abortOnLimit","transformers"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,yBAAwB;AAC1D,SAASC,WAAW,QAAQ,UAAS;AAErC,eAAeA,YAAY;IACzBC,aAAa;QACX;YACEC,MAAM;YACNC,QAAQ,EAAE;YACVC,QAAQ;gBACNC,YAAY;oBAAC;wBAAEC,MAAM;wBAAUC,QAAQ;wBAAKC,OAAO;oBAAI;iBAAE;YAC3D;QACF;KACD;IACDJ,QAAQ;QACNK,cAAc;QACdC,cAAc;YAACX;SAAoB;IACrC;AACF,GAAE"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { customTransformer } from './customTransformer.js';
|
|
2
|
+
import { buildConfig } from 'payload';
|
|
3
|
+
import { sharpTransformer } from '@payloadcms/transformer-sharp';
|
|
4
|
+
export default buildConfig({
|
|
5
|
+
collections: [
|
|
6
|
+
{
|
|
7
|
+
slug: 'media',
|
|
8
|
+
fields: [],
|
|
9
|
+
upload: {}
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
upload: {
|
|
13
|
+
abortOnLimit: true,
|
|
14
|
+
transformers: [
|
|
15
|
+
customTransformer(),
|
|
16
|
+
sharpTransformer({
|
|
17
|
+
collections: {
|
|
18
|
+
media: {
|
|
19
|
+
variants: [
|
|
20
|
+
{
|
|
21
|
+
name: 'square',
|
|
22
|
+
height: 400,
|
|
23
|
+
width: 400
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
})
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=existing-transformers.output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-sharp-to-transformer/existing-transformers.output.ts"],"sourcesContent":["import { customTransformer } from './customTransformer.js'\nimport { buildConfig } from 'payload'\nimport { sharpTransformer } from '@payloadcms/transformer-sharp'\n\nexport default buildConfig({\n collections: [\n {\n slug: 'media',\n fields: [],\n upload: {},\n },\n ],\n upload: {\n abortOnLimit: true,\n transformers: [customTransformer(), sharpTransformer({ collections: { media: { variants: [{ name: 'square', height: 400, width: 400 }] } } })],\n },\n})\n"],"names":["customTransformer","buildConfig","sharpTransformer","collections","slug","fields","upload","abortOnLimit","transformers","media","variants","name","height","width"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,yBAAwB;AAC1D,SAASC,WAAW,QAAQ,UAAS;AACrC,SAASC,gBAAgB,QAAQ,gCAA+B;AAEhE,eAAeD,YAAY;IACzBE,aAAa;QACX;YACEC,MAAM;YACNC,QAAQ,EAAE;YACVC,QAAQ,CAAC;QACX;KACD;IACDA,QAAQ;QACNC,cAAc;QACdC,cAAc;YAACR;YAAqBE,iBAAiB;gBAAEC,aAAa;oBAAEM,OAAO;wBAAEC,UAAU;4BAAC;gCAAEC,MAAM;gCAAUC,QAAQ;gCAAKC,OAAO;4BAAI;yBAAE;oBAAC;gBAAE;YAAE;SAAG;IAChJ;AACF,GAAE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transforms/migrate-sharp-to-transformer/index.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAoe/C,eAAO,MAAM,yBAAyB,EAAE,SA4JvC,CAAA"}
|