diff --git a/packages/amplify-cli-core/src/feature-flags/featureFlags.ts b/packages/amplify-cli-core/src/feature-flags/featureFlags.ts index ee5b7a6020d..9100b803d28 100644 --- a/packages/amplify-cli-core/src/feature-flags/featureFlags.ts +++ b/packages/amplify-cli-core/src/feature-flags/featureFlags.ts @@ -557,6 +557,12 @@ export class FeatureFlags { defaultValueForExistingProjects: 1, defaultValueForNewProjects: 1, }, + { + name: 'suppressSchemaMigrationPrompt', + type: 'boolean', + defaultValueForExistingProjects: false, + defaultValueForNewProjects: false + }, ]); this.registerFlag('frontend-ios', [ diff --git a/packages/amplify-graphql-transformer-migrator/tsconfig.json b/packages/amplify-graphql-transformer-migrator/tsconfig.json index ddbee9c0024..1dc6d3e2013 100644 --- a/packages/amplify-graphql-transformer-migrator/tsconfig.json +++ b/packages/amplify-graphql-transformer-migrator/tsconfig.json @@ -2,14 +2,7 @@ "extends": "../../tsconfig.base.json", "compilerOptions": { "rootDir": "src", - "outDir": "lib", - "allowJs": true, - "skipLibCheck": true, - "allowSyntheticDefaultImports": true, - "forceConsistentCasingInFileNames": true, - "noFallthroughCasesInSwitch": true, - "isolatedModules": true, - "jsx": "react-jsx" + "outDir": "lib" }, "references": [ { diff --git a/packages/amplify-provider-awscloudformation/package.json b/packages/amplify-provider-awscloudformation/package.json index b88c932c863..232d874603b 100644 --- a/packages/amplify-provider-awscloudformation/package.json +++ b/packages/amplify-provider-awscloudformation/package.json @@ -35,6 +35,7 @@ "@aws-amplify/graphql-searchable-transformer": "0.6.3", "@aws-amplify/graphql-transformer-core": "0.9.2", "@aws-amplify/graphql-transformer-interfaces": "1.10.0", + "@aws-amplify/graphql-transformer-migrator": "0.1.0", "@aws-cdk/assets": "~1.124.0", "@aws-cdk/aws-apigatewayv2": "~1.124.0", "@aws-cdk/aws-autoscaling": "~1.124.0", diff --git a/packages/amplify-provider-awscloudformation/src/transform-graphql-schema.ts b/packages/amplify-provider-awscloudformation/src/transform-graphql-schema.ts index f0ebbee0586..3a0d6069801 100644 --- a/packages/amplify-provider-awscloudformation/src/transform-graphql-schema.ts +++ b/packages/amplify-provider-awscloudformation/src/transform-graphql-schema.ts @@ -45,6 +45,7 @@ import { transformGraphQLSchema as transformGraphQLSchemaV6, getDirectiveDefinitions as getDirectiveDefinitionsV6, } from './graphql-transformer/transform-graphql-schema'; +import { attemptV2TransformerMigration } from '@aws-amplify/graphql-transformer-migrator'; const apiCategory = 'api'; const storageCategory = 'storage'; @@ -314,10 +315,8 @@ async function migrateProject(context, options) { } export async function transformGraphQLSchema(context, options) { + const suppressSchemaMigrationPrompt = FeatureFlags.getBoolean('graphQLTransformer.suppressSchemaMigrationPrompt'); const transformerVersion = getTransformerVersion(context); - if (transformerVersion === 2) { - return transformGraphQLSchemaV6(context, options); - } const backEndDir = context.amplify.pathManager.getBackendDirPath(); const flags = context.parameters.options; if (flags['no-gql-override']) { @@ -390,6 +389,15 @@ export async function transformGraphQLSchema(context, options) { } } + // This section applies to migrating schemas from V1 to V2 format + let migratedResult = false; + if (transformerVersion === 2 && !suppressSchemaMigrationPrompt) { + migratedResult = await attemptV2TransformerMigration(resourceDir, parameters[ResourceConstants.PARAMETERS.AppSyncApiName], context); + } + if (migratedResult || transformerVersion === 2) { + return transformGraphQLSchemaV6(context, options); + } + const isCLIMigration = options.migrate; const isOldApiVersion = apiProjectIsFromOldVersion(previouslyDeployedBackendDir, resourcesToBeCreated); const migrateOptions = { diff --git a/packages/amplify-provider-awscloudformation/tsconfig.json b/packages/amplify-provider-awscloudformation/tsconfig.json index 534ac673e77..c87531fdfa8 100644 --- a/packages/amplify-provider-awscloudformation/tsconfig.json +++ b/packages/amplify-provider-awscloudformation/tsconfig.json @@ -26,7 +26,8 @@ {"path": "../graphql-predictions-transformer"}, {"path": "../graphql-transformer-core"}, {"path": "../graphql-versioned-transformer"}, + { "path": "../amplify-graphql-transformer-core" }, { "path": "../amplify-graphql-transformer-interfaces" }, - { "path": "../amplify-graphql-transformer-core" } + { "path": "../amplify-graphql-transformer-migrator" } ] }