Skip to content

Commit a94649e

Browse files
author
Dane Pilcher
authored
feat: use default directives from @aws-amplify/graphql-directives (#796)
1 parent ea6d95d commit a94649e

30 files changed

+253
-509
lines changed

dependency_licenses.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -684,7 +684,7 @@ Apache License
684684

685685
-----
686686

687-
The following software may be included in this product: @aws-amplify/graphql-schema-test-library, @aws-amplify/graphql-transformer-interfaces, graphql-mapping-template, graphql-transformer-common, graphql-transformer-core. A copy of the source code may be downloaded from https://github.com/aws-amplify/amplify-category-api.git (@aws-amplify/graphql-schema-test-library), https://github.com/aws-amplify/amplify-category-api.git (@aws-amplify/graphql-transformer-interfaces), https://github.com/aws-amplify/amplify-category-api.git (graphql-mapping-template), https://github.com/aws-amplify/amplify-category-api.git (graphql-transformer-common), https://github.com/aws-amplify/amplify-category-api.git (graphql-transformer-core). This software contains the following license and notice below:
687+
The following software may be included in this product: @aws-amplify/graphql-directives, @aws-amplify/graphql-schema-test-library, @aws-amplify/graphql-transformer-interfaces, graphql-mapping-template, graphql-transformer-common, graphql-transformer-core. A copy of the source code may be downloaded from https://github.com/aws-amplify/amplify-category-api.git (@aws-amplify/graphql-directives), https://github.com/aws-amplify/amplify-category-api.git (@aws-amplify/graphql-schema-test-library), https://github.com/aws-amplify/amplify-category-api.git (@aws-amplify/graphql-transformer-interfaces), https://github.com/aws-amplify/amplify-category-api.git (graphql-mapping-template), https://github.com/aws-amplify/amplify-category-api.git (graphql-transformer-common), https://github.com/aws-amplify/amplify-category-api.git (graphql-transformer-core). This software contains the following license and notice below:
688688

689689
Apache License
690690
Version 2.0, January 2004

packages/amplify-codegen/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
"extract-api": "ts-node ../../scripts/extract-api.ts"
2222
},
2323
"dependencies": {
24+
"@aws-amplify/graphql-directives": "^1.0.1",
2425
"@aws-amplify/graphql-docs-generator": "4.2.1",
2526
"@aws-amplify/graphql-generator": "0.2.4",
2627
"@aws-amplify/graphql-types-generator": "3.4.6",

packages/amplify-codegen/src/commands/models.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ const fs = require('fs-extra');
33
const globby = require('globby');
44
const { FeatureFlags, pathManager } = require('@aws-amplify/amplify-cli-core');
55
const { generateModels: generateModelsHelper } = require('@aws-amplify/graphql-generator');
6+
const { DefaultDirectives } = require('@aws-amplify/graphql-directives');
67
const { validateAmplifyFlutterMinSupportedVersion } = require('../utils/validateAmplifyFlutterMinSupportedVersion');
7-
const defaultDirectiveDefinitions = require('../utils/defaultDirectiveDefinitions');
88
const getProjectRoot = require('../utils/getProjectRoot');
99
const { getModelSchemaPathParam, hasModelSchemaPathParam } = require('../utils/getModelSchemaPathParam');
1010
const { isDataStoreEnabled } = require('graphql-transformer-core');
@@ -131,7 +131,7 @@ const getDirectives = async (context, apiResourcePath) => {
131131
resourceDir: apiResourcePath,
132132
});
133133
} catch {
134-
return defaultDirectiveDefinitions;
134+
return DefaultDirectives.map(directive => directive.definition).join('\n');
135135
}
136136
};
137137

packages/amplify-codegen/src/utils/defaultDirectiveDefinitions.js

Lines changed: 0 additions & 113 deletions
This file was deleted.

packages/amplify-codegen/src/utils/index.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ const getSDLSchemaLocation = require('./getSDLSchemaLocation');
1616
const switchToSDLSchema = require('./switchToSDLSchema');
1717
const ensureIntrospectionSchema = require('./ensureIntrospectionSchema');
1818
const { readSchemaFromFile } = require('./readSchemaFromFile');
19-
const defaultDirectiveDefinitions = require('./defaultDirectiveDefinitions');
2019
const getRelativeTypesPath = require('./getRelativeTypesPath');
2120
module.exports = {
2221
getAppSyncAPIDetails,
@@ -37,6 +36,5 @@ module.exports = {
3736
switchToSDLSchema,
3837
ensureIntrospectionSchema,
3938
readSchemaFromFile,
40-
defaultDirectiveDefinitions,
4139
getRelativeTypesPath,
4240
};

packages/amplify-codegen/tests/commands/models.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ const {
33
validateAmplifyFlutterMinSupportedVersion,
44
MINIMUM_SUPPORTED_VERSION_CONSTRAINT,
55
} = require('../../src/utils/validateAmplifyFlutterMinSupportedVersion');
6-
const defaultDirectiveDefinitions = require('../../src/utils/defaultDirectiveDefinitions');
6+
const { DefaultDirectives } = require('@aws-amplify/graphql-directives');
77
const mockFs = require('mock-fs');
88
const fs = require('fs');
99
const path = require('path');
@@ -308,6 +308,6 @@ function addMocksToContext() {
308308
},
309309
],
310310
});
311-
MOCK_CONTEXT.amplify.executeProviderUtils.mockReturnValue(defaultDirectiveDefinitions);
311+
MOCK_CONTEXT.amplify.executeProviderUtils.mockReturnValue(DefaultDirectives.map(directive => directive.definition).join('\n'));
312312
MOCK_CONTEXT.amplify.pathManager.getBackendDirPath.mockReturnValue(MOCK_BACKEND_DIRECTORY);
313313
}

packages/appsync-modelgen-plugin/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
"ts-dedent": "^1.1.0"
4040
},
4141
"devDependencies": {
42+
"@aws-amplify/graphql-directives": "^1.0.1",
4243
"@graphql-codegen/testing": "^1.17.7",
4344
"@graphql-codegen/typescript": "^2.8.3",
4445
"@types/fs-extra": "^8.1.2",

packages/appsync-modelgen-plugin/src/__tests__/utils/process-connections-v2.test.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { DefaultDirectives } from '@aws-amplify/graphql-directives';
12
import { CodeGenModelMap, CodeGenModel, CodeGenField } from '../../visitors/appsync-visitor';
23
import { processConnectionsV2 } from '../../utils/process-connections-v2';
34
import {
@@ -7,7 +8,7 @@ import {
78
CodeGenFieldConnectionHasOne,
89
} from '../../utils/process-connections';
910
import { buildSchema, parse, visit } from 'graphql';
10-
import { directives, scalars } from '../../scalars/supported-directives';
11+
import { scalars } from '../../scalars/supported-scalars';
1112
import { AppSyncModelVisitor, CodeGenGenerateEnum } from '../../visitors/appsync-visitor';
1213

1314
describe('GraphQL V2 process connections tests', () => {
@@ -636,6 +637,7 @@ describe('Connection process with custom Primary Key support tests', () => {
636637
transformerVersion: 2
637638
};
638639
const ast = parse(schema);
640+
const directives = DefaultDirectives.map(directive => directive.definition).join('\n');
639641
const builtSchema = buildSchema([schema, directives, scalars].join('\n'))
640642
const visitor = new AppSyncModelVisitor(
641643
builtSchema,
@@ -1033,4 +1035,4 @@ describe('Connection process with custom Primary Key support tests', () => {
10331035
});
10341036
});
10351037
})
1036-
});
1038+
});

packages/appsync-modelgen-plugin/src/__tests__/visitors/appsync-dart-visitor.test.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import { buildSchema, GraphQLSchema, parse, visit } from 'graphql';
2-
import { directives, scalars } from '../../scalars/supported-directives';
2+
import { AppSyncDirectives, DefaultDirectives, V1Directives, DeprecatedDirective, Directive } from '@aws-amplify/graphql-directives';
3+
import { scalars } from '../../scalars/supported-scalars';
34
import { AppSyncModelDartVisitor } from '../../visitors/appsync-dart-visitor';
45
import { CodeGenGenerateEnum } from '../../visitors/appsync-visitor';
56
import { DART_SCALAR_MAP } from '../../scalars';
67

7-
const buildSchemaWithDirectives = (schema: String): GraphQLSchema => {
8+
const buildSchemaWithDirectives = (schema: String, directives: String): GraphQLSchema => {
89
return buildSchema([schema, directives, scalars].join('\n'));
910
};
1011

@@ -16,6 +17,7 @@ const getVisitor = ({
1617
transformerVersion = 1,
1718
dartUpdateAmplifyCoreDependency = false,
1819
respectPrimaryKeyAttributesOnConnectionField = false,
20+
directives = DefaultDirectives,
1921
}: {
2022
schema: string;
2123
selectedType?: string;
@@ -24,13 +26,15 @@ const getVisitor = ({
2426
transformerVersion?: number;
2527
dartUpdateAmplifyCoreDependency?: boolean;
2628
respectPrimaryKeyAttributesOnConnectionField?: boolean;
29+
directives?: readonly Directive[];
2730
}) => {
2831
const ast = parse(schema);
29-
const builtSchema = buildSchemaWithDirectives(schema);
32+
const stringDirectives = directives.map(directive => directive.definition).join('\n');
33+
const builtSchema = buildSchemaWithDirectives(schema, stringDirectives);
3034
const visitor = new AppSyncModelDartVisitor(
3135
builtSchema,
3236
{
33-
directives,
37+
directives: stringDirectives,
3438
target: 'dart',
3539
scalars: DART_SCALAR_MAP,
3640
isTimestampFieldsAdded,
@@ -85,7 +89,7 @@ describe('AppSync Dart Visitor', () => {
8589
book: String
8690
}
8791
`;
88-
const visitor = getVisitor({ schema });
92+
const visitor = getVisitor({ schema, directives: [...AppSyncDirectives, ...V1Directives, DeprecatedDirective] });
8993
const generatedCode = visitor.generate();
9094
expect(generatedCode).toMatchSnapshot();
9195
});
@@ -272,7 +276,7 @@ describe('AppSync Dart Visitor', () => {
272276
`;
273277
const outputModels: string[] = ['Todo', 'Task'];
274278
outputModels.forEach(model => {
275-
const generatedCode = getVisitor({schema, selectedType: model}).generate();
279+
const generatedCode = getVisitor({schema, selectedType: model, directives: [...AppSyncDirectives, ...V1Directives, DeprecatedDirective] }).generate();
276280
expect(generatedCode).toMatchSnapshot();
277281
});
278282
});
@@ -301,7 +305,7 @@ describe('AppSync Dart Visitor', () => {
301305
`;
302306
const outputModels: string[] = ['Blog', 'Comment', 'Post'];
303307
outputModels.forEach(model => {
304-
const generatedCode = getVisitor({ schema, selectedType: model }).generate();
308+
const generatedCode = getVisitor({ schema, selectedType: model, directives: [...AppSyncDirectives, ...V1Directives, DeprecatedDirective] }).generate();
305309
expect(generatedCode).toMatchSnapshot();
306310
});
307311
});
@@ -457,7 +461,7 @@ describe('AppSync Dart Visitor', () => {
457461
`;
458462
const outputModels: string[] = ['Blog', 'Comment', 'Post'];
459463
outputModels.forEach(model => {
460-
const generatedCode = getVisitor({ schema, selectedType: model }).generate();
464+
const generatedCode = getVisitor({ schema, selectedType: model, directives: [...AppSyncDirectives, ...V1Directives, DeprecatedDirective] }).generate();
461465
expect(generatedCode).toMatchSnapshot();
462466
});
463467
});

packages/appsync-modelgen-plugin/src/__tests__/visitors/appsync-java-api-lazyload-css-visitor.test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { buildSchema, GraphQLSchema, parse, visit } from 'graphql';
2+
import { DefaultDirectives } from '@aws-amplify/graphql-directives';
23
import { validateJava } from '../utils/validate-java';
3-
import { directives, scalars } from '../../scalars/supported-directives';
4+
import { scalars } from '../../scalars/supported-scalars';
45
import { AppSyncModelJavaVisitor } from '../../visitors/appsync-java-visitor';
56
import { CodeGenGenerateEnum } from '../../visitors/appsync-visitor';
67
import { JAVA_SCALAR_MAP } from '../../scalars';
@@ -13,6 +14,9 @@ const defaultJavaVisitorSettings = {
1314
respectPrimaryKeyAttributesOnConnectionField: false,
1415
generateModelsForLazyLoadAndCustomSelectionSet: true
1516
}
17+
18+
const directives = DefaultDirectives.map(directive => directive.definition).join('\n');
19+
1620
const buildSchemaWithDirectives = (schema: String): GraphQLSchema => {
1721
return buildSchema([schema, directives, scalars].join('\n'));
1822
};

0 commit comments

Comments
 (0)