@aws-amplify/graphql-index-transformer 1.2.9-test-tag-1.0 → 1.2.10-no-internal-synth.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. package/CHANGELOG.md +7 -1
  2. package/lib/graphql-index-transformer.d.ts +13 -0
  3. package/lib/graphql-index-transformer.d.ts.map +1 -0
  4. package/lib/graphql-index-transformer.js +143 -0
  5. package/lib/graphql-index-transformer.js.map +1 -0
  6. package/lib/graphql-primary-key-transformer.d.ts +15 -0
  7. package/lib/graphql-primary-key-transformer.d.ts.map +1 -0
  8. package/lib/graphql-primary-key-transformer.js +144 -0
  9. package/lib/graphql-primary-key-transformer.js.map +1 -0
  10. package/lib/index.d.ts +4 -0
  11. package/lib/index.d.ts.map +1 -0
  12. package/lib/index.js +10 -0
  13. package/lib/index.js.map +1 -0
  14. package/lib/resolvers/generators/dynamodb-vtl-generator.d.ts +8 -0
  15. package/lib/resolvers/generators/dynamodb-vtl-generator.d.ts.map +1 -0
  16. package/lib/resolvers/generators/dynamodb-vtl-generator.js +51 -0
  17. package/lib/resolvers/generators/dynamodb-vtl-generator.js.map +1 -0
  18. package/lib/resolvers/generators/index.d.ts +4 -0
  19. package/lib/resolvers/generators/index.d.ts.map +1 -0
  20. package/lib/resolvers/generators/index.js +20 -0
  21. package/lib/resolvers/generators/index.js.map +1 -0
  22. package/lib/resolvers/generators/rds-vtl-generator.d.ts +10 -0
  23. package/lib/resolvers/generators/rds-vtl-generator.d.ts.map +1 -0
  24. package/lib/resolvers/generators/rds-vtl-generator.js +65 -0
  25. package/lib/resolvers/generators/rds-vtl-generator.js.map +1 -0
  26. package/lib/resolvers/generators/vtl-generator.d.ts +7 -0
  27. package/lib/resolvers/generators/vtl-generator.d.ts.map +1 -0
  28. package/lib/resolvers/generators/vtl-generator.js +3 -0
  29. package/lib/resolvers/generators/vtl-generator.js.map +1 -0
  30. package/lib/resolvers/index.d.ts +3 -0
  31. package/lib/resolvers/index.d.ts.map +1 -0
  32. package/lib/resolvers/index.js +19 -0
  33. package/lib/resolvers/index.js.map +1 -0
  34. package/lib/resolvers/resolvers.d.ts +23 -0
  35. package/lib/resolvers/resolvers.d.ts.map +1 -0
  36. package/lib/resolvers/resolvers.js +569 -0
  37. package/lib/resolvers/resolvers.js.map +1 -0
  38. package/lib/schema.d.ts +13 -0
  39. package/lib/schema.d.ts.map +1 -0
  40. package/lib/schema.js +340 -0
  41. package/lib/schema.js.map +1 -0
  42. package/lib/types.d.ts +15 -0
  43. package/lib/types.d.ts.map +1 -0
  44. package/lib/types.js +3 -0
  45. package/lib/types.js.map +1 -0
  46. package/lib/utils.d.ts +7 -0
  47. package/lib/utils.d.ts.map +1 -0
  48. package/lib/utils.js +84 -0
  49. package/lib/utils.js.map +1 -0
  50. package/package.json +10 -7
package/CHANGELOG.md CHANGED
@@ -3,7 +3,13 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## [1.2.9-test-tag-1.0](https://github.com/aws-amplify/amplify-category-api/compare/@aws-amplify/graphql-index-transformer@1.2.8...@aws-amplify/graphql-index-transformer@1.2.9-test-tag-1.0) (2023-07-26)
6
+ ## [1.2.10-no-internal-synth.0](https://github.com/aws-amplify/amplify-category-api/compare/@aws-amplify/graphql-index-transformer@1.2.9...@aws-amplify/graphql-index-transformer@1.2.10-no-internal-synth.0) (2023-08-08)
7
+
8
+ ### Bug Fixes
9
+
10
+ - default-value, index, predictions, and searchable tests pass ([65c57e2](https://github.com/aws-amplify/amplify-category-api/commit/65c57e2c73e4b7dd39eec426858aef5cd16587d3))
11
+
12
+ ## [1.2.9](https://github.com/aws-amplify/amplify-category-api/compare/@aws-amplify/graphql-index-transformer@1.2.8...@aws-amplify/graphql-index-transformer@1.2.9) (2023-07-21)
7
13
 
8
14
  **Note:** Version bump only for package @aws-amplify/graphql-index-transformer
9
15
 
@@ -0,0 +1,13 @@
1
+ import { TransformerPluginBase } from '@aws-amplify/graphql-transformer-core';
2
+ import { TransformerContextProvider, TransformerSchemaVisitStepContextProvider, TransformerTransformSchemaStepContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
3
+ import { DirectiveNode, FieldDefinitionNode, InterfaceTypeDefinitionNode, ObjectTypeDefinitionNode } from 'graphql';
4
+ export declare class IndexTransformer extends TransformerPluginBase {
5
+ private directiveList;
6
+ private resolverMap;
7
+ constructor();
8
+ field: (parent: ObjectTypeDefinitionNode | InterfaceTypeDefinitionNode, definition: FieldDefinitionNode, directive: DirectiveNode, context: TransformerSchemaVisitStepContextProvider) => void;
9
+ after: (ctx: TransformerContextProvider) => void;
10
+ transformSchema: (ctx: TransformerTransformSchemaStepContextProvider) => void;
11
+ generateResolvers: (ctx: TransformerContextProvider) => void;
12
+ }
13
+ //# sourceMappingURL=graphql-index-transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-index-transformer.d.ts","sourceRoot":"","sources":["../src/graphql-index-transformer.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,qBAAqB,EACtB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,0BAA0B,EAE1B,yCAAyC,EACzC,6CAA6C,EAC9C,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,aAAa,EAEb,mBAAmB,EACnB,2BAA2B,EAE3B,wBAAwB,EACzB,MAAM,SAAS,CAAC;AAejB,qBAAa,gBAAiB,SAAQ,qBAAqB;IACzD,OAAO,CAAC,aAAa,CAAqC;IAE1D,OAAO,CAAC,WAAW,CAAuD;;IAM1E,KAAK,WACK,wBAAwB,GAAG,2BAA2B,cAClD,mBAAmB,aACpB,aAAa,WACf,yCAAyC,KACjD,IAAI,CAsBL;IAEK,KAAK,QAAS,0BAA0B,KAAG,IAAI,CASpD;IAEF,eAAe,QAAS,6CAA6C,KAAG,IAAI,CAQ1E;IAEF,iBAAiB,QAAS,0BAA0B,KAAG,IAAI,CAKzD;CACH"}
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IndexTransformer = void 0;
4
+ const graphql_transformer_core_1 = require("@aws-amplify/graphql-transformer-core");
5
+ const graphql_1 = require("graphql");
6
+ const graphql_transformer_common_1 = require("graphql-transformer-common");
7
+ const resolvers_1 = require("./resolvers");
8
+ const schema_1 = require("./schema");
9
+ const utils_1 = require("./utils");
10
+ const directiveName = 'index';
11
+ const directiveDefinition = `
12
+ directive @${directiveName}(name: String, sortKeyFields: [String], queryField: String) repeatable on FIELD_DEFINITION
13
+ `;
14
+ class IndexTransformer extends graphql_transformer_core_1.TransformerPluginBase {
15
+ constructor() {
16
+ super('amplify-index-transformer', directiveDefinition);
17
+ this.directiveList = [];
18
+ this.resolverMap = new Map();
19
+ this.field = (parent, definition, directive, context) => {
20
+ const directiveWrapped = new graphql_transformer_core_1.DirectiveWrapper(directive);
21
+ const args = directiveWrapped.getArguments({
22
+ object: parent,
23
+ field: definition,
24
+ directive,
25
+ }, (0, graphql_transformer_core_1.generateGetArgumentsInput)(context.transformParameters));
26
+ args.sortKeyFields = getOrGenerateDefaultSortKeyFields(args);
27
+ args.name = getOrGenerateDefaultName(args);
28
+ args.queryField = getOrGenerateDefaultQueryField(context, args);
29
+ args.sortKey = [];
30
+ validate(args, context);
31
+ this.directiveList.push(args);
32
+ };
33
+ this.after = (ctx) => {
34
+ if (!ctx.isProjectUsingDataStore())
35
+ return;
36
+ this.resolverMap.forEach((syncVTLContent, resource) => {
37
+ if (syncVTLContent) {
38
+ (0, resolvers_1.constructSyncVTL)(syncVTLContent, resource);
39
+ }
40
+ });
41
+ };
42
+ this.transformSchema = (ctx) => {
43
+ const context = ctx;
44
+ for (const config of this.directiveList) {
45
+ (0, schema_1.ensureQueryField)(config, context);
46
+ (0, schema_1.addKeyConditionInputs)(config, context);
47
+ (0, schema_1.updateMutationConditionInput)(config, context);
48
+ }
49
+ };
50
+ this.generateResolvers = (ctx) => {
51
+ for (const config of this.directiveList) {
52
+ (0, resolvers_1.appendSecondaryIndex)(config, ctx);
53
+ (0, resolvers_1.updateResolversForIndex)(config, ctx, this.resolverMap);
54
+ }
55
+ };
56
+ }
57
+ }
58
+ exports.IndexTransformer = IndexTransformer;
59
+ const getOrGenerateDefaultName = (config) => {
60
+ if (config.name) {
61
+ return config.name;
62
+ }
63
+ if (config.name === null) {
64
+ throw new Error('Explicit null value not allowed for name field on @index');
65
+ }
66
+ return (0, utils_1.generateKeyAndQueryNameForConfig)(config);
67
+ };
68
+ const getOrGenerateDefaultQueryField = (context, config) => {
69
+ const autoIndexQueryNamesIsEnabled = context.transformParameters.enableAutoIndexQueryNames;
70
+ if (config.queryField === null || (!autoIndexQueryNamesIsEnabled && !config.queryField)) {
71
+ return null;
72
+ }
73
+ if (config.queryField) {
74
+ return config.queryField;
75
+ }
76
+ return (0, utils_1.generateKeyAndQueryNameForConfig)(config);
77
+ };
78
+ const getOrGenerateDefaultSortKeyFields = (config) => {
79
+ if (!config.sortKeyFields) {
80
+ return [];
81
+ }
82
+ if (!Array.isArray(config.sortKeyFields)) {
83
+ return [config.sortKeyFields];
84
+ }
85
+ return config.sortKeyFields;
86
+ };
87
+ const validate = (config, ctx) => {
88
+ const { name, object, field, sortKeyFields } = config;
89
+ (0, utils_1.validateNotSelfReferencing)(config);
90
+ const modelDirective = object.directives.find((directive) => directive.name.value === 'model');
91
+ if (!modelDirective) {
92
+ throw new graphql_transformer_core_1.InvalidDirectiveError(`The @${directiveName} directive may only be added to object definitions annotated with @model.`);
93
+ }
94
+ config.modelDirective = modelDirective;
95
+ const fieldMap = new Map();
96
+ for (const objectField of object.fields) {
97
+ fieldMap.set(objectField.name.value, objectField);
98
+ for (const peerDirective of objectField.directives) {
99
+ if (peerDirective === config.directive) {
100
+ continue;
101
+ }
102
+ if (peerDirective.name.value === 'primaryKey') {
103
+ const hasSortFields = peerDirective.arguments.some((arg) => { var _a; return arg.name.value === 'sortKeyFields' && ((_a = arg.value.values) === null || _a === void 0 ? void 0 : _a.length) > 0; });
104
+ config.primaryKeyField = objectField;
105
+ if (!hasSortFields && objectField.name.value === field.name.value) {
106
+ throw new graphql_transformer_core_1.InvalidDirectiveError(`Invalid @index '${name}'. You may not create an index where the partition key ` +
107
+ 'is the same as that of the primary key unless the primary key has a sort field. ' +
108
+ 'You cannot have a local secondary index without a sort key in the primary key.');
109
+ }
110
+ }
111
+ if (peerDirective.name.value === directiveName &&
112
+ peerDirective.arguments.some((arg) => arg.name.value === 'name' && arg.value.value === name)) {
113
+ throw new graphql_transformer_core_1.InvalidDirectiveError(`You may only supply one @${directiveName} with the name '${name}' on type '${object.name.value}'.`);
114
+ }
115
+ }
116
+ for (const peerDirective of objectField.directives) {
117
+ const hasSortFields = peerDirective.arguments.some((arg) => { var _a; return arg.name.value === 'sortKeyFields' && ((_a = arg.value.values) === null || _a === void 0 ? void 0 : _a.length) > 0; });
118
+ if (!ctx.transformParameters.secondaryKeyAsGSI &&
119
+ !hasSortFields &&
120
+ objectField == config.primaryKeyField &&
121
+ objectField.name.value === field.name.value) {
122
+ throw new graphql_transformer_core_1.InvalidDirectiveError(`Invalid @index '${name}'. You may not create an index where the partition key ` +
123
+ 'is the same as that of the primary key unless the index has a sort field. ' +
124
+ 'You cannot have a local secondary index without a sort key in the index.');
125
+ }
126
+ }
127
+ }
128
+ const enums = ctx.output.getTypeDefinitionsOfKind(graphql_1.Kind.ENUM_TYPE_DEFINITION);
129
+ if (!(0, graphql_transformer_common_1.isScalarOrEnum)(field.type, enums) || (0, graphql_transformer_common_1.isListType)(field.type)) {
130
+ throw new graphql_transformer_core_1.InvalidDirectiveError(`Index '${name}' on type '${object.name.value}.${field.name.value}' cannot be a non-scalar.`);
131
+ }
132
+ for (const sortKeyFieldName of sortKeyFields) {
133
+ const sortField = fieldMap.get(sortKeyFieldName);
134
+ if (!sortField) {
135
+ throw new graphql_transformer_core_1.InvalidDirectiveError(`Can't find field '${sortKeyFieldName}' in ${object.name.value}, but it was specified in index '${name}'.`);
136
+ }
137
+ if (!(0, graphql_transformer_common_1.isScalarOrEnum)(sortField.type, enums) || (0, graphql_transformer_common_1.isListType)(sortField.type)) {
138
+ throw new graphql_transformer_core_1.InvalidDirectiveError(`The sort key of index '${name}' on type '${object.name.value}.${sortField.name.value}' cannot be a non-scalar.`);
139
+ }
140
+ config.sortKey.push(sortField);
141
+ }
142
+ };
143
+ //# sourceMappingURL=graphql-index-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-index-transformer.js","sourceRoot":"","sources":["../src/graphql-index-transformer.ts"],"names":[],"mappings":";;;AAAA,oFAK+C;AAO/C,qCAOiB;AACjB,2EAAwE;AACxE,2CAA8F;AAC9F,qCAAiG;AAEjG,mCAAuF;AAEvF,MAAM,aAAa,GAAG,OAAO,CAAC;AAC9B,MAAM,mBAAmB,GAAG;eACb,aAAa;CAC3B,CAAC;AAKF,MAAa,gBAAiB,SAAQ,gDAAqB;IAKzD;QACE,KAAK,CAAC,2BAA2B,EAAE,mBAAmB,CAAC,CAAC;QALlD,kBAAa,GAAkC,EAAE,CAAC;QAElD,gBAAW,GAA6C,IAAI,GAAG,EAAE,CAAC;QAM1E,UAAK,GAAG,CACN,MAA8D,EAC9D,UAA+B,EAC/B,SAAwB,EACxB,OAAkD,EAC5C,EAAE;YACR,MAAM,gBAAgB,GAAG,IAAI,2CAAgB,CAAC,SAAS,CAAC,CAAC;YACzD,MAAM,IAAI,GAAG,gBAAgB,CAAC,YAAY,CACxC;gBACE,MAAM,EAAE,MAAkC;gBAC1C,KAAK,EAAE,UAAU;gBACjB,SAAS;aACqB,EAChC,IAAA,oDAAyB,EAAC,OAAO,CAAC,mBAAmB,CAAC,CACvD,CAAC;YAMF,IAAI,CAAC,aAAa,GAAG,iCAAiC,CAAC,IAAI,CAAC,CAAC;YAC7D,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,UAAU,GAAG,8BAA8B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAChE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAElB,QAAQ,CAAC,IAAI,EAAE,OAAqC,CAAC,CAAC;YACtD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC,CAAC;QAEK,UAAK,GAAG,CAAC,GAA+B,EAAQ,EAAE;YACvD,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE;gBAAE,OAAO;YAG3C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,QAAQ,EAAE,EAAE;gBACpD,IAAI,cAAc,EAAE;oBAClB,IAAA,4BAAgB,EAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;iBAC5C;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,oBAAe,GAAG,CAAC,GAAkD,EAAQ,EAAE;YAC7E,MAAM,OAAO,GAAG,GAAiC,CAAC;YAElD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE;gBACvC,IAAA,yBAAgB,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAClC,IAAA,8BAAqB,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACvC,IAAA,qCAA4B,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;aAC/C;QACH,CAAC,CAAC;QAEF,sBAAiB,GAAG,CAAC,GAA+B,EAAQ,EAAE;YAC5D,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE;gBACvC,IAAA,gCAAoB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAClC,IAAA,mCAAuB,EAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;aACxD;QACH,CAAC,CAAC;IAzDF,CAAC;CA0DF;AAjED,4CAiEC;AAMD,MAAM,wBAAwB,GAAG,CAAC,MAAmC,EAAU,EAAE;IAC/E,IAAI,MAAM,CAAC,IAAI,EAAE;QACf,OAAO,MAAM,CAAC,IAAI,CAAC;KACpB;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;KAC7E;IAED,OAAO,IAAA,wCAAgC,EAAC,MAAM,CAAC,CAAC;AAClD,CAAC,CAAC;AAMF,MAAM,8BAA8B,GAAG,CACrC,OAAkD,EAClD,MAAmC,EACpB,EAAE;IACjB,MAAM,4BAA4B,GAAG,OAAO,CAAC,mBAAmB,CAAC,yBAAyB,CAAC;IAE3F,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,CAAC,4BAA4B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;QACvF,OAAO,IAAI,CAAC;KACb;IAED,IAAI,MAAM,CAAC,UAAU,EAAE;QACrB,OAAO,MAAM,CAAC,UAAU,CAAC;KAC1B;IAED,OAAO,IAAA,wCAAgC,EAAC,MAAM,CAAC,CAAC;AAClD,CAAC,CAAC;AAOF,MAAM,iCAAiC,GAAG,CAAC,MAAmC,EAAY,EAAE;IAC1F,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;QACzB,OAAO,EAAE,CAAC;KACX;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;QACxC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;KAC/B;IACD,OAAO,MAAM,CAAC,aAAa,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,MAAmC,EAAE,GAA+B,EAAQ,EAAE;IAC9F,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IACtD,IAAA,kCAA0B,EAAC,MAAM,CAAC,CAAC;IAEnC,MAAM,cAAc,GAAG,MAAM,CAAC,UAAW,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;IAEhG,IAAI,CAAC,cAAc,EAAE;QACnB,MAAM,IAAI,gDAAqB,CAAC,QAAQ,aAAa,2EAA2E,CAAC,CAAC;KACnI;IAED,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;IAEvC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;IAExD,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,MAAO,EAAE;QACxC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAElD,KAAK,MAAM,aAAa,IAAI,WAAW,CAAC,UAAW,EAAE;YACnD,IAAI,aAAa,KAAK,MAAM,CAAC,SAAS,EAAE;gBACtC,SAAS;aACV;YAED,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,KAAK,YAAY,EAAE;gBAC7C,MAAM,aAAa,GAAG,aAAa,CAAC,SAAU,CAAC,IAAI,CACjD,CAAC,GAAQ,EAAE,EAAE,WAAC,OAAA,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,eAAe,IAAI,CAAA,MAAA,GAAG,CAAC,KAAK,CAAC,MAAM,0CAAE,MAAM,IAAG,CAAC,CAAA,EAAA,CACjF,CAAC;gBACF,MAAM,CAAC,eAAe,GAAG,WAAW,CAAC;gBAErC,IAAI,CAAC,aAAa,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;oBACjE,MAAM,IAAI,gDAAqB,CAC7B,mBAAmB,IAAI,yDAAyD;wBAC9E,kFAAkF;wBAClF,gFAAgF,CACnF,CAAC;iBACH;aACF;YAED,IACE,aAAa,CAAC,IAAI,CAAC,KAAK,KAAK,aAAa;gBAC1C,aAAa,CAAC,SAAU,CAAC,IAAI,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,EAClG;gBACA,MAAM,IAAI,gDAAqB,CAC7B,4BAA4B,aAAa,mBAAmB,IAAI,cAAc,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,CACpG,CAAC;aACH;SACF;QAED,KAAK,MAAM,aAAa,IAAI,WAAW,CAAC,UAAW,EAAE;YACnD,MAAM,aAAa,GAAG,aAAa,CAAC,SAAU,CAAC,IAAI,CAAC,CAAC,GAAQ,EAAE,EAAE,WAAC,OAAA,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,eAAe,IAAI,CAAA,MAAA,GAAG,CAAC,KAAK,CAAC,MAAM,0CAAE,MAAM,IAAG,CAAC,CAAA,EAAA,CAAC,CAAC;YAEtI,IACE,CAAC,GAAG,CAAC,mBAAmB,CAAC,iBAAiB;gBAC1C,CAAC,aAAa;gBACd,WAAW,IAAI,MAAM,CAAC,eAAe;gBACrC,WAAW,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,EAC3C;gBACA,MAAM,IAAI,gDAAqB,CAC7B,mBAAmB,IAAI,yDAAyD;oBAC9E,4EAA4E;oBAC5E,0EAA0E,CAC7E,CAAC;aACH;SACF;KACF;IAED,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,wBAAwB,CAAC,cAAI,CAAC,oBAAoB,CAA6B,CAAC;IAEzG,IAAI,CAAC,IAAA,2CAAc,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAA,uCAAU,EAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QAChE,MAAM,IAAI,gDAAqB,CAAC,UAAU,IAAI,cAAc,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,2BAA2B,CAAC,CAAC;KAC/H;IAED,KAAK,MAAM,gBAAgB,IAAI,aAAa,EAAE;QAC5C,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAEjD,IAAI,CAAC,SAAS,EAAE;YACd,MAAM,IAAI,gDAAqB,CAC7B,qBAAqB,gBAAgB,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,oCAAoC,IAAI,IAAI,CAC3G,CAAC;SACH;QAED,IAAI,CAAC,IAAA,2CAAc,EAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAA,uCAAU,EAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACxE,MAAM,IAAI,gDAAqB,CAC7B,0BAA0B,IAAI,cAAc,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,2BAA2B,CACjH,CAAC;SACH;QAED,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAChC;AACH,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { TransformerPluginBase } from '@aws-amplify/graphql-transformer-core';
2
+ import { TransformerContextProvider, TransformerSchemaVisitStepContextProvider, TransformerTransformSchemaStepContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
3
+ import { DirectiveNode, FieldDefinitionNode, InterfaceTypeDefinitionNode, ObjectTypeDefinitionNode } from 'graphql';
4
+ import { PrimaryKeyDirectiveConfiguration } from './types';
5
+ export declare class PrimaryKeyTransformer extends TransformerPluginBase {
6
+ private directiveList;
7
+ private resolverMap;
8
+ constructor();
9
+ field: (parent: ObjectTypeDefinitionNode | InterfaceTypeDefinitionNode, definition: FieldDefinitionNode, directive: DirectiveNode, context: TransformerSchemaVisitStepContextProvider) => void;
10
+ after: (ctx: TransformerContextProvider) => void;
11
+ transformSchema: (ctx: TransformerTransformSchemaStepContextProvider) => void;
12
+ generateResolvers: (ctx: TransformerContextProvider) => void;
13
+ }
14
+ export declare function updateListField(config: PrimaryKeyDirectiveConfiguration, ctx: TransformerContextProvider): void;
15
+ //# sourceMappingURL=graphql-primary-key-transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-primary-key-transformer.d.ts","sourceRoot":"","sources":["../src/graphql-primary-key-transformer.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,qBAAqB,EAEtB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,0BAA0B,EAE1B,yCAAyC,EACzC,6CAA6C,EAC9C,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,aAAa,EAEb,mBAAmB,EACnB,2BAA2B,EAE3B,wBAAwB,EACzB,MAAM,SAAS,CAAC;AAajB,OAAO,EAAE,gCAAgC,EAAE,MAAM,SAAS,CAAC;AAQ3D,qBAAa,qBAAsB,SAAQ,qBAAqB;IAC9D,OAAO,CAAC,aAAa,CAA0C;IAE/D,OAAO,CAAC,WAAW,CAAuD;;IAM1E,KAAK,WACK,wBAAwB,GAAG,2BAA2B,cAClD,mBAAmB,aACpB,aAAa,WACf,yCAAyC,KACjD,IAAI,CAqBL;IAEK,KAAK,QAAS,0BAA0B,KAAG,IAAI,CASpD;IAEF,eAAe,QAAS,6CAA6C,KAAG,IAAI,CAW1E;IAEF,iBAAiB,QAAS,0BAA0B,KAAG,IAAI,CAMzD;CACH;AAwED,wBAAgB,eAAe,CAAC,MAAM,EAAE,gCAAgC,EAAE,GAAG,EAAE,0BAA0B,GAAG,IAAI,CAoC/G"}
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateListField = exports.PrimaryKeyTransformer = void 0;
4
+ const graphql_transformer_core_1 = require("@aws-amplify/graphql-transformer-core");
5
+ const graphql_1 = require("graphql");
6
+ const graphql_transformer_common_1 = require("graphql-transformer-common");
7
+ const resolvers_1 = require("./resolvers/resolvers");
8
+ const schema_1 = require("./schema");
9
+ const utils_1 = require("./utils");
10
+ const directiveName = 'primaryKey';
11
+ const directiveDefinition = `
12
+ directive @${directiveName}(sortKeyFields: [String]) on FIELD_DEFINITION
13
+ `;
14
+ class PrimaryKeyTransformer extends graphql_transformer_core_1.TransformerPluginBase {
15
+ constructor() {
16
+ super('amplify-primary-key-transformer', directiveDefinition);
17
+ this.directiveList = [];
18
+ this.resolverMap = new Map();
19
+ this.field = (parent, definition, directive, context) => {
20
+ const directiveWrapped = new graphql_transformer_core_1.DirectiveWrapper(directive);
21
+ const args = directiveWrapped.getArguments({
22
+ object: parent,
23
+ field: definition,
24
+ directive,
25
+ }, (0, graphql_transformer_core_1.generateGetArgumentsInput)(context.transformParameters));
26
+ if (!args.sortKeyFields) {
27
+ args.sortKeyFields = [];
28
+ }
29
+ else if (!Array.isArray(args.sortKeyFields)) {
30
+ args.sortKeyFields = [args.sortKeyFields];
31
+ }
32
+ args.sortKey = [];
33
+ validate(args, context);
34
+ this.directiveList.push(args);
35
+ };
36
+ this.after = (ctx) => {
37
+ if (!ctx.isProjectUsingDataStore())
38
+ return;
39
+ this.resolverMap.forEach((syncVTLContent, resource) => {
40
+ if (syncVTLContent) {
41
+ (0, resolvers_1.constructSyncVTL)(syncVTLContent, resource);
42
+ }
43
+ });
44
+ };
45
+ this.transformSchema = (ctx) => {
46
+ const context = ctx;
47
+ for (const config of this.directiveList) {
48
+ (0, schema_1.updateGetField)(config, context);
49
+ updateListField(config, context);
50
+ (0, schema_1.updateInputObjects)(config, context);
51
+ (0, schema_1.removeAutoCreatedPrimaryKey)(config, context);
52
+ (0, schema_1.addKeyConditionInputs)(config, context);
53
+ (0, schema_1.updateMutationConditionInput)(config, context);
54
+ }
55
+ };
56
+ this.generateResolvers = (ctx) => {
57
+ for (const config of this.directiveList) {
58
+ const dbInfo = ctx.modelToDatasourceMap.get(config.object.name.value);
59
+ const vtlGenerator = (0, resolvers_1.getVTLGenerator)(dbInfo);
60
+ vtlGenerator.generatePrimaryKeyVTL(config, ctx, this.resolverMap);
61
+ }
62
+ };
63
+ }
64
+ }
65
+ exports.PrimaryKeyTransformer = PrimaryKeyTransformer;
66
+ function validate(config, ctx) {
67
+ const { object, field, sortKeyFields } = config;
68
+ (0, utils_1.validateNotSelfReferencing)(config);
69
+ const modelDirective = object.directives.find((directive) => {
70
+ return directive.name.value === 'model';
71
+ });
72
+ if (!modelDirective) {
73
+ throw new graphql_transformer_core_1.InvalidDirectiveError(`The @${directiveName} directive may only be added to object definitions annotated with @model.`);
74
+ }
75
+ config.modelDirective = modelDirective;
76
+ const fieldMap = new Map();
77
+ for (const objectField of object.fields) {
78
+ fieldMap.set(objectField.name.value, objectField);
79
+ if (field === objectField) {
80
+ continue;
81
+ }
82
+ for (const directive of objectField.directives) {
83
+ if (directive.name.value === directiveName) {
84
+ throw new graphql_transformer_core_1.InvalidDirectiveError(`You may only supply one primary key on type '${object.name.value}'.`);
85
+ }
86
+ }
87
+ }
88
+ if (!(0, graphql_transformer_common_1.isNonNullType)(field.type)) {
89
+ throw new graphql_transformer_core_1.InvalidDirectiveError(`The primary key on type '${object.name.value}' must reference non-null fields.`);
90
+ }
91
+ const enums = ctx.output.getTypeDefinitionsOfKind(graphql_1.Kind.ENUM_TYPE_DEFINITION);
92
+ if (!(0, graphql_transformer_common_1.isScalarOrEnum)(field.type, enums) || (0, graphql_transformer_common_1.isListType)(field.type)) {
93
+ throw new graphql_transformer_core_1.InvalidDirectiveError(`The primary key on type '${object.name.value}.${field.name.value}' cannot be a non-scalar.`);
94
+ }
95
+ for (const sortKeyFieldName of sortKeyFields) {
96
+ const sortField = fieldMap.get(sortKeyFieldName);
97
+ if (!sortField) {
98
+ throw new graphql_transformer_core_1.InvalidDirectiveError(`Can't find field '${sortKeyFieldName}' in ${object.name.value}, but it was specified in the primary key.`);
99
+ }
100
+ if (!(0, graphql_transformer_common_1.isScalarOrEnum)(sortField.type, enums) || (0, graphql_transformer_common_1.isListType)(sortField.type)) {
101
+ throw new graphql_transformer_core_1.InvalidDirectiveError(`The primary key's sort key on type '${object.name.value}.${sortField.name.value}' cannot be a non-scalar.`);
102
+ }
103
+ if (!(0, graphql_transformer_common_1.isNonNullType)(sortField.type)) {
104
+ throw new graphql_transformer_core_1.InvalidDirectiveError(`The primary key on type '${object.name.value}' must reference non-null fields.`);
105
+ }
106
+ if (!(0, utils_1.validateNotOwnerAuth)(sortKeyFieldName, config, ctx)) {
107
+ throw new graphql_transformer_core_1.InvalidDirectiveError(`The primary key's sort key type '${sortKeyFieldName}' cannot be used as an owner @auth field too. Please use another field for the sort key.`);
108
+ }
109
+ config.sortKey.push(sortField);
110
+ }
111
+ }
112
+ function updateListField(config, ctx) {
113
+ const resolverName = (0, utils_1.lookupResolverName)(config, ctx, 'list');
114
+ let query = ctx.output.getQuery();
115
+ if (!(resolverName && query)) {
116
+ return;
117
+ }
118
+ let listField = query.fields.find((field) => field.name.value === resolverName);
119
+ if (listField) {
120
+ const args = [(0, schema_1.createHashField)(config)];
121
+ const dbInfo = ctx.modelToDatasourceMap.get(config.object.name.value);
122
+ if ((dbInfo === null || dbInfo === void 0 ? void 0 : dbInfo.dbType) !== 'MySQL') {
123
+ const sortField = (0, schema_1.tryAndCreateSortField)(config, ctx);
124
+ if (sortField) {
125
+ args.push(sortField);
126
+ }
127
+ }
128
+ if (Array.isArray(listField.arguments)) {
129
+ args.push(...listField.arguments);
130
+ }
131
+ args.push((0, graphql_transformer_common_1.makeInputValueDefinition)('sortDirection', (0, graphql_transformer_common_1.makeNamedType)('ModelSortDirection')));
132
+ (0, schema_1.ensureModelSortDirectionEnum)(ctx);
133
+ listField = { ...listField, arguments: args };
134
+ query = {
135
+ ...query,
136
+ fields: query.fields.map((field) => {
137
+ return field.name.value === listField.name.value ? listField : field;
138
+ }),
139
+ };
140
+ ctx.output.updateObject(query);
141
+ }
142
+ }
143
+ exports.updateListField = updateListField;
144
+ //# sourceMappingURL=graphql-primary-key-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-primary-key-transformer.js","sourceRoot":"","sources":["../src/graphql-primary-key-transformer.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export { IndexTransformer } from './graphql-index-transformer';
2
+ export { PrimaryKeyTransformer } from './graphql-primary-key-transformer';
3
+ export { attributeTypeFromType } from './resolvers/resolvers';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC"}
package/lib/index.js ADDED
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.attributeTypeFromType = exports.PrimaryKeyTransformer = exports.IndexTransformer = void 0;
4
+ var graphql_index_transformer_1 = require("./graphql-index-transformer");
5
+ Object.defineProperty(exports, "IndexTransformer", { enumerable: true, get: function () { return graphql_index_transformer_1.IndexTransformer; } });
6
+ var graphql_primary_key_transformer_1 = require("./graphql-primary-key-transformer");
7
+ Object.defineProperty(exports, "PrimaryKeyTransformer", { enumerable: true, get: function () { return graphql_primary_key_transformer_1.PrimaryKeyTransformer; } });
8
+ var resolvers_1 = require("./resolvers/resolvers");
9
+ Object.defineProperty(exports, "attributeTypeFromType", { enumerable: true, get: function () { return resolvers_1.attributeTypeFromType; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yEAA+D;AAAtD,6HAAA,gBAAgB,OAAA;AACzB,qFAA0E;AAAjE,wIAAA,qBAAqB,OAAA;AAC9B,mDAA8D;AAArD,kHAAA,qBAAqB,OAAA"}
@@ -0,0 +1,8 @@
1
+ import { TransformerContextProvider, TransformerResolverProvider } from '@aws-amplify/graphql-transformer-interfaces';
2
+ import { IndexDirectiveConfiguration, PrimaryKeyDirectiveConfiguration } from '../../types';
3
+ import { IndexVTLGenerator } from './vtl-generator';
4
+ export declare class DynamoDBIndexVTLGenerator implements IndexVTLGenerator {
5
+ generateIndexQueryRequestTemplate(config: IndexDirectiveConfiguration, ctx: TransformerContextProvider, tableName: string, operationName: string): string;
6
+ generatePrimaryKeyVTL: (config: PrimaryKeyDirectiveConfiguration, ctx: TransformerContextProvider, resolverMap: Map<TransformerResolverProvider, string>) => void;
7
+ }
8
+ //# sourceMappingURL=dynamodb-vtl-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamodb-vtl-generator.d.ts","sourceRoot":"","sources":["../../../src/resolvers/generators/dynamodb-vtl-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAuBtH,OAAO,EAAE,2BAA2B,EAAE,gCAAgC,EAAE,MAAM,aAAa,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,qBAAa,yBAA0B,YAAW,iBAAiB;IACjE,iCAAiC,CAC/B,MAAM,EAAE,2BAA2B,EACnC,GAAG,EAAE,0BAA0B,EAC/B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GACpB,MAAM;IAmET,qBAAqB,WACX,gCAAgC,OACnC,0BAA0B,eAClB,IAAI,2BAA2B,EAAE,MAAM,CAAC,KACpD,IAAI,CAGL;CACH"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DynamoDBIndexVTLGenerator = void 0;
4
+ const graphql_mapping_template_1 = require("graphql-mapping-template");
5
+ const graphql_transformer_common_1 = require("graphql-transformer-common");
6
+ const resolvers_1 = require("../resolvers");
7
+ class DynamoDBIndexVTLGenerator {
8
+ constructor() {
9
+ this.generatePrimaryKeyVTL = (config, ctx, resolverMap) => {
10
+ (0, resolvers_1.replaceDdbPrimaryKey)(config, ctx);
11
+ (0, resolvers_1.updateResolvers)(config, ctx, resolverMap);
12
+ };
13
+ }
14
+ generateIndexQueryRequestTemplate(config, ctx, tableName, operationName) {
15
+ const { name, object, queryField } = config;
16
+ if (!(name && queryField)) {
17
+ throw new Error('Expected name and queryField to be defined while generating resolver.');
18
+ }
19
+ const authFilter = (0, graphql_mapping_template_1.ref)('ctx.stash.authFilter');
20
+ const requestVariable = 'QueryRequest';
21
+ return (0, graphql_mapping_template_1.print)((0, graphql_mapping_template_1.compoundExpression)([
22
+ (0, resolvers_1.setQuerySnippet)(config, ctx, false),
23
+ (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('limit'), (0, graphql_mapping_template_1.ref)(`util.defaultIfNull($context.args.limit, ${graphql_transformer_common_1.ResourceConstants.DEFAULT_PAGE_LIMIT})`)),
24
+ (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)(requestVariable), (0, graphql_mapping_template_1.obj)({
25
+ version: (0, graphql_mapping_template_1.str)(graphql_mapping_template_1.RESOLVER_VERSION_ID),
26
+ operation: (0, graphql_mapping_template_1.str)('Query'),
27
+ limit: (0, graphql_mapping_template_1.ref)('limit'),
28
+ query: (0, graphql_mapping_template_1.ref)(graphql_transformer_common_1.ResourceConstants.SNIPPETS.ModelQueryExpression),
29
+ index: (0, graphql_mapping_template_1.str)(name),
30
+ })),
31
+ (0, graphql_mapping_template_1.ifElse)((0, graphql_mapping_template_1.raw)(`!$util.isNull($ctx.args.sortDirection)
32
+ && $ctx.args.sortDirection == "DESC"`), (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)(`${requestVariable}.scanIndexForward`), (0, graphql_mapping_template_1.bool)(false)), (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)(`${requestVariable}.scanIndexForward`), (0, graphql_mapping_template_1.bool)(true))),
33
+ (0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.ref)('context.args.nextToken'), (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)(`${requestVariable}.nextToken`), (0, graphql_mapping_template_1.ref)('context.args.nextToken')), true),
34
+ (0, graphql_mapping_template_1.ifElse)((0, graphql_mapping_template_1.not)((0, graphql_mapping_template_1.isNullOrEmpty)(authFilter)), (0, graphql_mapping_template_1.compoundExpression)([
35
+ (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('filter'), authFilter),
36
+ (0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.not)((0, graphql_mapping_template_1.isNullOrEmpty)((0, graphql_mapping_template_1.ref)('ctx.args.filter'))), (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('filter'), (0, graphql_mapping_template_1.obj)({ and: (0, graphql_mapping_template_1.list)([(0, graphql_mapping_template_1.ref)('filter'), (0, graphql_mapping_template_1.ref)('ctx.args.filter')]) }))),
37
+ ]), (0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.not)((0, graphql_mapping_template_1.isNullOrEmpty)((0, graphql_mapping_template_1.ref)('ctx.args.filter'))), (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('filter'), (0, graphql_mapping_template_1.ref)('ctx.args.filter')))),
38
+ (0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.not)((0, graphql_mapping_template_1.isNullOrEmpty)((0, graphql_mapping_template_1.ref)('filter'))), (0, graphql_mapping_template_1.compoundExpression)([
39
+ (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('filterExpression'), (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.parseJson'), (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.transform.toDynamoDBFilterExpression'), (0, graphql_mapping_template_1.ref)('filter')))),
40
+ (0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.isNullOrEmpty)((0, graphql_mapping_template_1.ref)('filterExpression')), (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.error'), (0, graphql_mapping_template_1.str)('Unable to process the filter expression'), (0, graphql_mapping_template_1.str)('Unrecognized Filter'))),
41
+ (0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.not)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.isNullOrBlank'), (0, graphql_mapping_template_1.ref)('filterExpression.expression'))), (0, graphql_mapping_template_1.compoundExpression)([
42
+ (0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.equals)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('filterExpression.expressionValues.size')), (0, graphql_mapping_template_1.int)(0)), (0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('filterExpression.remove'), (0, graphql_mapping_template_1.str)('expressionValues')))),
43
+ (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)(`${requestVariable}.filter`), (0, graphql_mapping_template_1.ref)('filterExpression')),
44
+ ])),
45
+ ])),
46
+ (0, graphql_mapping_template_1.raw)(`$util.toJson($${requestVariable})`),
47
+ ]));
48
+ }
49
+ }
50
+ exports.DynamoDBIndexVTLGenerator = DynamoDBIndexVTLGenerator;
51
+ //# sourceMappingURL=dynamodb-vtl-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamodb-vtl-generator.js","sourceRoot":"","sources":["../../../src/resolvers/generators/dynamodb-vtl-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './vtl-generator';
2
+ export * from './dynamodb-vtl-generator';
3
+ export * from './rds-vtl-generator';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/resolvers/generators/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./vtl-generator"), exports);
18
+ __exportStar(require("./dynamodb-vtl-generator"), exports);
19
+ __exportStar(require("./rds-vtl-generator"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/resolvers/generators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,2DAAyC;AACzC,sDAAoC"}
@@ -0,0 +1,10 @@
1
+ import { TransformerContextProvider, TransformerResolverProvider } from '@aws-amplify/graphql-transformer-interfaces';
2
+ import { IndexDirectiveConfiguration, PrimaryKeyDirectiveConfiguration } from '../../types';
3
+ import { IndexVTLGenerator } from './vtl-generator';
4
+ export declare class RDSIndexVTLGenerator implements IndexVTLGenerator {
5
+ generateIndexQueryRequestTemplate(config: IndexDirectiveConfiguration, ctx: TransformerContextProvider, tableName: string, operationName: string): string;
6
+ generatePrimaryKeyVTL: (config: PrimaryKeyDirectiveConfiguration, ctx: TransformerContextProvider, resolverMap: Map<TransformerResolverProvider, string>) => void;
7
+ updateResolvers: (config: PrimaryKeyDirectiveConfiguration, ctx: TransformerContextProvider, resolverMap: Map<TransformerResolverProvider, string>) => void;
8
+ setPrimaryKeySnippet: (config: PrimaryKeyDirectiveConfiguration) => string;
9
+ }
10
+ //# sourceMappingURL=rds-vtl-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rds-vtl-generator.d.ts","sourceRoot":"","sources":["../../../src/resolvers/generators/rds-vtl-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAGtH,OAAO,EAAE,2BAA2B,EAAE,gCAAgC,EAAE,MAAM,aAAa,CAAC;AAE5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,qBAAa,oBAAqB,YAAW,iBAAiB;IAC5D,iCAAiC,CAC/B,MAAM,EAAE,2BAA2B,EACnC,GAAG,EAAE,0BAA0B,EAC/B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GACpB,MAAM;IAwBT,qBAAqB,WACX,gCAAgC,OACnC,0BAA0B,eAClB,IAAI,2BAA2B,EAAE,MAAM,CAAC,KACpD,IAAI,CAEL;IAEF,eAAe,WACL,gCAAgC,OACnC,0BAA0B,eAClB,IAAI,2BAA2B,EAAE,MAAM,CAAC,KACpD,IAAI,CA+BL;IAEF,oBAAoB,WAAY,gCAAgC,KAAG,MAAM,CAUvE;CACH"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RDSIndexVTLGenerator = void 0;
4
+ const graphql_mapping_template_1 = require("graphql-mapping-template");
5
+ const resolvers_1 = require("../resolvers");
6
+ class RDSIndexVTLGenerator {
7
+ constructor() {
8
+ this.generatePrimaryKeyVTL = (config, ctx, resolverMap) => {
9
+ this.updateResolvers(config, ctx, resolverMap);
10
+ };
11
+ this.updateResolvers = (config, ctx, resolverMap) => {
12
+ const getResolver = (0, resolvers_1.getResolverObject)(config, ctx, 'get');
13
+ const listResolver = (0, resolvers_1.getResolverObject)(config, ctx, 'list');
14
+ const createResolver = (0, resolvers_1.getResolverObject)(config, ctx, 'create');
15
+ const updateResolver = (0, resolvers_1.getResolverObject)(config, ctx, 'update');
16
+ const deleteResolver = (0, resolvers_1.getResolverObject)(config, ctx, 'delete');
17
+ const primaryKeySnippet = this.setPrimaryKeySnippet(config);
18
+ if (getResolver) {
19
+ (0, resolvers_1.addIndexToResolverSlot)(getResolver, [primaryKeySnippet]);
20
+ }
21
+ if (listResolver) {
22
+ const sortDirectionValidation = (0, graphql_mapping_template_1.printBlock)('Validate the sort direction input')((0, graphql_mapping_template_1.compoundExpression)((0, resolvers_1.validateSortDirectionInput)(config, true)));
23
+ (0, resolvers_1.addIndexToResolverSlot)(listResolver, [primaryKeySnippet, sortDirectionValidation]);
24
+ }
25
+ if (createResolver) {
26
+ (0, resolvers_1.addIndexToResolverSlot)(createResolver, [primaryKeySnippet]);
27
+ }
28
+ if (updateResolver) {
29
+ (0, resolvers_1.addIndexToResolverSlot)(updateResolver, [primaryKeySnippet]);
30
+ }
31
+ if (deleteResolver) {
32
+ (0, resolvers_1.addIndexToResolverSlot)(deleteResolver, [primaryKeySnippet]);
33
+ }
34
+ };
35
+ this.setPrimaryKeySnippet = (config) => {
36
+ const expressions = [(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('keys'), (0, graphql_mapping_template_1.list)([])), (0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('keys.add'), (0, graphql_mapping_template_1.str)(config.field.name.value)))];
37
+ config.sortKeyFields.map((field) => {
38
+ expressions.push((0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('keys.add'), (0, graphql_mapping_template_1.str)(field))));
39
+ });
40
+ expressions.push((0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('ctx.stash.put'), (0, graphql_mapping_template_1.str)('keys'), (0, graphql_mapping_template_1.ref)('keys'))));
41
+ return (0, graphql_mapping_template_1.printBlock)('Set the primary key information in metadata')((0, graphql_mapping_template_1.compoundExpression)(expressions));
42
+ };
43
+ }
44
+ generateIndexQueryRequestTemplate(config, ctx, tableName, operationName) {
45
+ return (0, graphql_mapping_template_1.printBlock)('Invoke RDS Lambda data source')((0, graphql_mapping_template_1.compoundExpression)([
46
+ (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('lambdaInput'), (0, graphql_mapping_template_1.obj)({})),
47
+ (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('lambdaInput.args'), (0, graphql_mapping_template_1.obj)({})),
48
+ (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('lambdaInput.table'), (0, graphql_mapping_template_1.str)(tableName)),
49
+ (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('lambdaInput.operation'), (0, graphql_mapping_template_1.str)('INDEX')),
50
+ (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('lambdaInput.operationName'), (0, graphql_mapping_template_1.str)(operationName)),
51
+ (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('lambdaInput.args.metadata'), (0, graphql_mapping_template_1.obj)({})),
52
+ (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('lambdaInput.args.metadata.keys'), (0, graphql_mapping_template_1.list)([])),
53
+ (0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('lambdaInput.args.metadata.keys.addAll'), (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.defaultIfNull'), (0, graphql_mapping_template_1.ref)('ctx.stash.keys'), (0, graphql_mapping_template_1.list)([])))),
54
+ (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('lambdaInput.args.input'), (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.defaultIfNull'), (0, graphql_mapping_template_1.ref)('ctx.stash.defaultValues'), (0, graphql_mapping_template_1.obj)({}))),
55
+ (0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('lambdaInput.args.input.putAll'), (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.defaultIfNull'), (0, graphql_mapping_template_1.ref)('context.arguments'), (0, graphql_mapping_template_1.obj)({})))),
56
+ (0, graphql_mapping_template_1.obj)({
57
+ version: (0, graphql_mapping_template_1.str)('2018-05-29'),
58
+ operation: (0, graphql_mapping_template_1.str)('Invoke'),
59
+ payload: (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.toJson'), (0, graphql_mapping_template_1.ref)('lambdaInput')),
60
+ }),
61
+ ]));
62
+ }
63
+ }
64
+ exports.RDSIndexVTLGenerator = RDSIndexVTLGenerator;
65
+ //# sourceMappingURL=rds-vtl-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rds-vtl-generator.js","sourceRoot":"","sources":["../../../src/resolvers/generators/rds-vtl-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { TransformerContextProvider, TransformerResolverProvider } from '@aws-amplify/graphql-transformer-interfaces';
2
+ import { IndexDirectiveConfiguration, PrimaryKeyDirectiveConfiguration } from '../../types';
3
+ export interface IndexVTLGenerator {
4
+ generatePrimaryKeyVTL(config: PrimaryKeyDirectiveConfiguration, ctx: TransformerContextProvider, resolverMap: Map<TransformerResolverProvider, string>): void;
5
+ generateIndexQueryRequestTemplate(config: IndexDirectiveConfiguration, ctx: TransformerContextProvider, tableName: string, operationName: string): string;
6
+ }
7
+ //# sourceMappingURL=vtl-generator.d.ts.map