@payloadcms/codemod 4.0.0-internal.31ba7ee → 4.0.0-internal.3b50481
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 +5 -0
- 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.d.ts.map +1 -1
- package/dist/registry.js +6 -0
- package/dist/registry.js.map +1 -1
- package/dist/runbook/payload-v4-upgrade.md +2 -2
- package/dist/runbook/v4.mdx +419 -66
- 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-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-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/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
|
@@ -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"}
|