@aws-amplify/graphql-model-transformer 0.7.0-auth-dir-v-next.3 → 0.7.0-ext12.0

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.
Files changed (36) hide show
  1. package/CHANGELOG.md +19 -19
  2. package/lib/graphql-model-transformer.d.ts +14 -9
  3. package/lib/graphql-model-transformer.d.ts.map +1 -1
  4. package/lib/graphql-model-transformer.js +71 -41
  5. package/lib/graphql-model-transformer.js.map +1 -1
  6. package/lib/graphql-types/mutation.d.ts.map +1 -1
  7. package/lib/graphql-types/mutation.js +2 -5
  8. package/lib/graphql-types/mutation.js.map +1 -1
  9. package/lib/graphql-types/query.js +1 -1
  10. package/lib/graphql-types/query.js.map +1 -1
  11. package/lib/resolvers/common.js +2 -2
  12. package/lib/resolvers/common.js.map +1 -1
  13. package/lib/resolvers/mutation.d.ts.map +1 -1
  14. package/lib/resolvers/mutation.js +0 -1
  15. package/lib/resolvers/mutation.js.map +1 -1
  16. package/lib/resolvers/query.d.ts.map +1 -1
  17. package/lib/resolvers/query.js +7 -5
  18. package/lib/resolvers/query.js.map +1 -1
  19. package/lib/resolvers/subscriptions.js +1 -1
  20. package/lib/resolvers/subscriptions.js.map +1 -1
  21. package/lib/wrappers/object-definition-wrapper.d.ts +2 -15
  22. package/lib/wrappers/object-definition-wrapper.d.ts.map +1 -1
  23. package/lib/wrappers/object-definition-wrapper.js +7 -43
  24. package/lib/wrappers/object-definition-wrapper.js.map +1 -1
  25. package/package.json +34 -32
  26. package/src/__tests__/__snapshots__/model-transformer.test.ts.snap +515 -796
  27. package/src/__tests__/model-transformer.test.ts +92 -6
  28. package/src/graphql-model-transformer.ts +106 -37
  29. package/src/graphql-types/mutation.ts +2 -4
  30. package/src/graphql-types/query.ts +1 -1
  31. package/src/resolvers/common.ts +2 -2
  32. package/src/resolvers/mutation.ts +0 -3
  33. package/src/resolvers/query.ts +10 -11
  34. package/src/resolvers/subscriptions.ts +1 -1
  35. package/src/wrappers/object-definition-wrapper.ts +2 -52
  36. package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md CHANGED
@@ -3,50 +3,50 @@
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
- # [0.7.0-auth-dir-v-next.3](https://github.com/aws-amplify/amplify-cli/compare/@aws-amplify/graphql-model-transformer@0.7.0-auth-dir-v-next.2...@aws-amplify/graphql-model-transformer@0.7.0-auth-dir-v-next.3) (2021-09-15)
6
+ # [0.7.0-ext12.0](https://github.com/aws-amplify/amplify-cli/compare/@aws-amplify/graphql-model-transformer@0.6.4...@aws-amplify/graphql-model-transformer@0.7.0-ext12.0) (2021-11-05)
7
7
 
8
- **Note:** Version bump only for package @aws-amplify/graphql-model-transformer
9
8
 
9
+ ### Bug Fixes
10
10
 
11
+ * **graphql-model-transformer:** fixed model transformer ID generation when ID field is not specified ([#8633](https://github.com/aws-amplify/amplify-cli/issues/8633)) ([b515d16](https://github.com/aws-amplify/amplify-cli/commit/b515d1617a98d613b2d9feb424ece12204d63402))
12
+ * **graphql-model-transformer:** override resource logical id to fix v1 to v2 transformer migration ([#8597](https://github.com/aws-amplify/amplify-cli/issues/8597)) ([e3a2afb](https://github.com/aws-amplify/amplify-cli/commit/e3a2afbbed6e97f143fc7c83064e2193f4c91bdd))
11
13
 
12
14
 
15
+ ### Features
13
16
 
14
- # [0.7.0-auth-dir-v-next.2](https://github.com/aws-amplify/amplify-cli/compare/@aws-amplify/graphql-model-transformer@0.7.0-auth-dir-v-next.1...@aws-amplify/graphql-model-transformer@0.7.0-auth-dir-v-next.2) (2021-09-14)
17
+ * generate list types as non-null ([#8166](https://github.com/aws-amplify/amplify-cli/issues/8166)) ([93786c1](https://github.com/aws-amplify/amplify-cli/commit/93786c13ef04c72748ca32a1ef7878c0e6b5b129))
15
18
 
16
19
 
17
- ### Bug Fixes
18
20
 
19
- * **graphql-model-transformer:** use hasAuth flag when sandbox mode is disabled ([#8179](https://github.com/aws-amplify/amplify-cli/issues/8179)) ([727bb6f](https://github.com/aws-amplify/amplify-cli/commit/727bb6ff8c726669f358e5d61fe895229bd7a6a4))
20
21
 
21
22
 
23
+ ## [0.6.4](https://github.com/aws-amplify/amplify-cli/compare/@aws-amplify/graphql-model-transformer@0.6.3...@aws-amplify/graphql-model-transformer@0.6.4) (2021-10-10)
22
24
 
25
+ **Note:** Version bump only for package @aws-amplify/graphql-model-transformer
23
26
 
24
27
 
25
- # [0.7.0-auth-dir-v-next.1](https://github.com/aws-amplify/amplify-cli/compare/@aws-amplify/graphql-model-transformer@0.6.1...@aws-amplify/graphql-model-transformer@0.7.0-auth-dir-v-next.1) (2021-09-14)
26
28
 
27
29
 
28
- ### Features
29
30
 
30
- * [@model](https://github.com/model) conflict resolution ([3f93ab1](https://github.com/aws-amplify/amplify-cli/commit/3f93ab1fb349605d57aa976ce9831488db2403a5))
31
- * add [@auth](https://github.com/auth) base package with Access Control ([31bd152](https://github.com/aws-amplify/amplify-cli/commit/31bd15276e3bf2e86f5b188bf581d3abbf7ab223))
32
- * graphql auth v2 add auth on mutation and subscription resolvers ([acaff15](https://github.com/aws-amplify/amplify-cli/commit/acaff150efa7da285330e718aaf3fc36cae465d8))
33
- * graphql auth v2 add schemaChanges, iam policy generation, and query/read resolvers ([7ac761b](https://github.com/aws-amplify/amplify-cli/commit/7ac761b422c23f09eea2602f147ebfd6052e5c80))
34
- * **graphql-model-transformer:** set up transformer for sandbox mode directive ([#8138](https://github.com/aws-amplify/amplify-cli/issues/8138)) ([e805311](https://github.com/aws-amplify/amplify-cli/commit/e805311d80393afef7e0bc7ad757b51706e7a3bf))
31
+ ## [0.6.3](https://github.com/aws-amplify/amplify-cli/compare/@aws-amplify/graphql-model-transformer@0.6.2...@aws-amplify/graphql-model-transformer@0.6.3) (2021-09-27)
35
32
 
36
33
 
34
+ ### Bug Fixes
37
35
 
36
+ * **graphql-model-transformer:** [@model](https://github.com/model) conflict resolution ([#8035](https://github.com/aws-amplify/amplify-cli/issues/8035)) ([f3bdc4a](https://github.com/aws-amplify/amplify-cli/commit/f3bdc4ac1fcf596f634d9d2e968785e76f7b138c))
37
+ * **graphql-model-transformer:** iam role name does not exceed 64 characters ([#8244](https://github.com/aws-amplify/amplify-cli/issues/8244)) ([812a671](https://github.com/aws-amplify/amplify-cli/commit/812a67163d6dd33160bf7ace9afd538c83a7af1a))
38
+ * **graphql-model-transformer:** remove unnecessary warnings for resolver config per type ([#8265](https://github.com/aws-amplify/amplify-cli/issues/8265)) ([2f2f0a5](https://github.com/aws-amplify/amplify-cli/commit/2f2f0a5bea59278219c1f4ebb5276927dc5a0fbd))
38
39
 
39
40
 
40
- # [0.7.0-auth-dir-v-next.0](https://github.com/aws-amplify/amplify-cli/compare/@aws-amplify/graphql-model-transformer@0.6.1...@aws-amplify/graphql-model-transformer@0.7.0-auth-dir-v-next.0) (2021-09-14)
41
41
 
42
42
 
43
- ### Features
44
43
 
45
- * [@model](https://github.com/model) conflict resolution ([3f93ab1](https://github.com/aws-amplify/amplify-cli/commit/3f93ab1fb349605d57aa976ce9831488db2403a5))
46
- * add [@auth](https://github.com/auth) base package with Access Control ([31bd152](https://github.com/aws-amplify/amplify-cli/commit/31bd15276e3bf2e86f5b188bf581d3abbf7ab223))
47
- * graphql auth v2 add auth on mutation and subscription resolvers ([acaff15](https://github.com/aws-amplify/amplify-cli/commit/acaff150efa7da285330e718aaf3fc36cae465d8))
48
- * graphql auth v2 add schemaChanges, iam policy generation, and query/read resolvers ([7ac761b](https://github.com/aws-amplify/amplify-cli/commit/7ac761b422c23f09eea2602f147ebfd6052e5c80))
49
- * **graphql-model-transformer:** set up transformer for sandbox mode directive ([#8138](https://github.com/aws-amplify/amplify-cli/issues/8138)) ([e805311](https://github.com/aws-amplify/amplify-cli/commit/e805311d80393afef7e0bc7ad757b51706e7a3bf))
44
+ ## [0.6.2](https://github.com/aws-amplify/amplify-cli/compare/@aws-amplify/graphql-model-transformer@0.6.1...@aws-amplify/graphql-model-transformer@0.6.2) (2021-09-14)
45
+
46
+
47
+ ### Bug Fixes
48
+
49
+ * **graphql-model-transformer:** fix typo in print block ([#8152](https://github.com/aws-amplify/amplify-cli/issues/8152)) ([7377e58](https://github.com/aws-amplify/amplify-cli/commit/7377e58535dd5555d9e11cf3114fb23cdbb1f382))
50
50
 
51
51
 
52
52
 
@@ -48,28 +48,31 @@ export declare class ModelTransformer extends TransformerModelBase implements Tr
48
48
  prepare: (context: TransformerPrepareStepContextProvider) => void;
49
49
  transformSchema: (ctx: TransformerTransformSchemaStepContextProvider) => void;
50
50
  generateResolvers: (context: TransformerContextProvider) => void;
51
- generateGetResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string) => TransformerResolverProvider;
52
- generateListResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string) => TransformerResolverProvider;
53
- generateUpdateResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string) => TransformerResolverProvider;
54
- generateDeleteResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string) => TransformerResolverProvider;
55
- generateOnCreateResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string) => TransformerResolverProvider;
56
- generateOnUpdateResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string) => TransformerResolverProvider;
57
- generateOnDeleteResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string) => TransformerResolverProvider;
58
- generateSyncResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string) => TransformerResolverProvider;
51
+ generateGetResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
52
+ generateListResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
53
+ generateUpdateResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
54
+ generateDeleteResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
55
+ generateOnCreateResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
56
+ generateOnUpdateResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
57
+ generateOnDeleteResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
58
+ generateSyncResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
59
59
  getQueryFieldNames: (ctx: TransformerTransformSchemaStepContextProvider, type: ObjectTypeDefinitionNode) => Set<{
60
60
  fieldName: string;
61
61
  typeName: string;
62
62
  type: QueryFieldType;
63
+ resolverLogicalId: string;
63
64
  }>;
64
65
  getMutationFieldNames: (ctx: TransformerTransformSchemaStepContextProvider, type: ObjectTypeDefinitionNode) => Set<{
65
66
  fieldName: string;
66
67
  typeName: string;
67
68
  type: MutationFieldType;
69
+ resolverLogicalId: string;
68
70
  }>;
69
71
  getMutationName: (subscriptionType: SubscriptionFieldType, mutationMap: Set<{
70
72
  fieldName: string;
71
73
  typeName: string;
72
74
  type: MutationFieldType;
75
+ resolverLogicalId: string;
73
76
  }>) => string;
74
77
  private createQueryFields;
75
78
  private createMutationFields;
@@ -78,10 +81,11 @@ export declare class ModelTransformer extends TransformerModelBase implements Tr
78
81
  fieldName: string;
79
82
  typeName: string;
80
83
  type: SubscriptionFieldType;
84
+ resolverLogicalId: string;
81
85
  }>;
82
86
  getDataSourceResource: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode) => DataSourceInstance;
83
87
  getDataSourceType: () => AppSyncDataSourceType;
84
- generateCreateResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string) => TransformerResolverProvider;
88
+ generateCreateResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
85
89
  getInputs: (ctx: TransformerTransformSchemaStepContextProvider, type: ObjectTypeDefinitionNode, operation: {
86
90
  fieldName: string;
87
91
  typeName: string;
@@ -103,6 +107,7 @@ export declare class ModelTransformer extends TransformerModelBase implements Tr
103
107
  private createIAMRole;
104
108
  private ensureModelSortDirectionEnum;
105
109
  private getOptions;
110
+ private ensureValidSubscriptionName;
106
111
  }
107
112
  export {};
108
113
  //# sourceMappingURL=graphql-model-transformer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"graphql-model-transformer.d.ts","sourceRoot":"","sources":["../src/graphql-model-transformer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graphql-model-transformer.d.ts","sourceRoot":"","sources":["../src/graphql-model-transformer.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
18
18
  __setModuleDefault(result, mod);
19
19
  return result;
20
20
  };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
21
24
  Object.defineProperty(exports, "__esModule", { value: true });
22
25
  exports.ModelTransformer = exports.directiveDefinition = exports.SubscriptionLevel = void 0;
23
26
  const graphql_transformer_core_1 = require("@aws-amplify/graphql-transformer-core");
@@ -30,6 +33,7 @@ const graphql_types_1 = require("./graphql-types");
30
33
  const resolvers_1 = require("./resolvers");
31
34
  const query_1 = require("./resolvers/query");
32
35
  const object_definition_wrapper_1 = require("./wrappers/object-definition-wrapper");
36
+ const md5_1 = __importDefault(require("md5"));
33
37
  var SubscriptionLevel;
34
38
  (function (SubscriptionLevel) {
35
39
  SubscriptionLevel["off"] = "off";
@@ -84,14 +88,15 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
84
88
  throw new graphql_transformer_core_1.InvalidDirectiveError(`'${definition.name.value}' is a reserved type name and currently in use within the default schema element.`);
85
89
  }
86
90
  const typeName = definition.name.value;
87
- const directiveWrapped = new object_definition_wrapper_1.DirectiveWrapper(directive);
91
+ if (ctx.isProjectUsingDataStore()) {
92
+ graphql_transformer_core_1.SyncUtils.validateResolverConfigForType(ctx, typeName);
93
+ }
94
+ const directiveWrapped = new graphql_transformer_core_1.DirectiveWrapper(directive);
88
95
  const options = directiveWrapped.getArguments({
89
96
  queries: {
90
97
  get: graphql_transformer_common_1.toCamelCase(['get', typeName]),
91
98
  list: graphql_transformer_common_1.toCamelCase(['list', graphql_transformer_common_1.plurality(typeName, true)]),
92
- ...(ctx.isProjectUsingDataStore()
93
- ? { sync: graphql_transformer_common_1.toCamelCase(['sync', graphql_transformer_common_1.plurality(typeName, true)]) }
94
- : undefined),
99
+ ...(ctx.isProjectUsingDataStore() ? { sync: graphql_transformer_common_1.toCamelCase(['sync', graphql_transformer_common_1.plurality(typeName, true)]) } : undefined),
95
100
  },
96
101
  mutations: {
97
102
  create: graphql_transformer_common_1.toCamelCase(['create', typeName]),
@@ -100,9 +105,9 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
100
105
  },
101
106
  subscriptions: {
102
107
  level: SubscriptionLevel.on,
103
- onCreate: [graphql_transformer_common_1.toCamelCase(['onCreate', typeName])],
104
- onDelete: [graphql_transformer_common_1.toCamelCase(['onDelete', typeName])],
105
- onUpdate: [graphql_transformer_common_1.toCamelCase(['onUpdate', typeName])],
108
+ onCreate: [this.ensureValidSubscriptionName(graphql_transformer_common_1.toCamelCase(['onCreate', typeName]))],
109
+ onDelete: [this.ensureValidSubscriptionName(graphql_transformer_common_1.toCamelCase(['onDelete', typeName]))],
110
+ onUpdate: [this.ensureValidSubscriptionName(graphql_transformer_common_1.toCamelCase(['onUpdate', typeName]))],
106
111
  },
107
112
  timestamps: {
108
113
  createdAt: 'createdAt',
@@ -133,7 +138,6 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
133
138
  ctx.output.addSubscriptionFields(subscriptionsFields);
134
139
  this.addAutoGeneratableFields(ctx, type);
135
140
  if (ctx.isProjectUsingDataStore()) {
136
- this.options.SyncConfig = graphql_transformer_core_1.SyncUtils.getSyncConfig(ctx, def.name.value);
137
141
  this.addModelSyncFields(ctx, type);
138
142
  }
139
143
  }
@@ -150,13 +154,13 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
150
154
  let resolver;
151
155
  switch (query.type) {
152
156
  case graphql_transformer_interfaces_1.QueryFieldType.GET:
153
- resolver = this.generateGetResolver(context, def, query.typeName, query.fieldName);
157
+ resolver = this.generateGetResolver(context, def, query.typeName, query.fieldName, query.resolverLogicalId);
154
158
  break;
155
159
  case graphql_transformer_interfaces_1.QueryFieldType.LIST:
156
- resolver = this.generateListResolver(context, def, query.typeName, query.fieldName);
160
+ resolver = this.generateListResolver(context, def, query.typeName, query.fieldName, query.resolverLogicalId);
157
161
  break;
158
162
  case graphql_transformer_interfaces_1.QueryFieldType.SYNC:
159
- resolver = this.generateSyncResolver(context, def, query.typeName, query.fieldName);
163
+ resolver = this.generateSyncResolver(context, def, query.typeName, query.fieldName, query.resolverLogicalId);
160
164
  break;
161
165
  default:
162
166
  throw new Error('Unknown query field type');
@@ -170,13 +174,13 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
170
174
  let resolver;
171
175
  switch (mutation.type) {
172
176
  case graphql_transformer_interfaces_1.MutationFieldType.CREATE:
173
- resolver = this.generateCreateResolver(context, def, mutation.typeName, mutation.fieldName);
177
+ resolver = this.generateCreateResolver(context, def, mutation.typeName, mutation.fieldName, mutation.resolverLogicalId);
174
178
  break;
175
179
  case graphql_transformer_interfaces_1.MutationFieldType.DELETE:
176
- resolver = this.generateDeleteResolver(context, def, mutation.typeName, mutation.fieldName);
180
+ resolver = this.generateDeleteResolver(context, def, mutation.typeName, mutation.fieldName, mutation.resolverLogicalId);
177
181
  break;
178
182
  case graphql_transformer_interfaces_1.MutationFieldType.UPDATE:
179
- resolver = this.generateUpdateResolver(context, def, mutation.typeName, mutation.fieldName);
183
+ resolver = this.generateUpdateResolver(context, def, mutation.typeName, mutation.fieldName, mutation.resolverLogicalId);
180
184
  break;
181
185
  default:
182
186
  throw new Error('Unknown mutation field type');
@@ -192,13 +196,13 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
192
196
  let resolver;
193
197
  switch (subscription.type) {
194
198
  case graphql_transformer_interfaces_1.SubscriptionFieldType.ON_CREATE:
195
- resolver = this.generateOnCreateResolver(context, def, subscription.typeName, subscription.fieldName);
199
+ resolver = this.generateOnCreateResolver(context, def, subscription.typeName, subscription.fieldName, subscription.resolverLogicalId);
196
200
  break;
197
201
  case graphql_transformer_interfaces_1.SubscriptionFieldType.ON_UPDATE:
198
- resolver = this.generateOnUpdateResolver(context, def, subscription.typeName, subscription.fieldName);
202
+ resolver = this.generateOnUpdateResolver(context, def, subscription.typeName, subscription.fieldName, subscription.resolverLogicalId);
199
203
  break;
200
204
  case graphql_transformer_interfaces_1.SubscriptionFieldType.ON_DELETE:
201
- resolver = this.generateOnDeleteResolver(context, def, subscription.typeName, subscription.fieldName);
205
+ resolver = this.generateOnDeleteResolver(context, def, subscription.typeName, subscription.fieldName, subscription.resolverLogicalId);
202
206
  break;
203
207
  default:
204
208
  throw new Error('Unknown subscription field type');
@@ -210,71 +214,71 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
210
214
  }
211
215
  }
212
216
  };
213
- this.generateGetResolver = (ctx, type, typeName, fieldName) => {
217
+ this.generateGetResolver = (ctx, type, typeName, fieldName, resolverLogicalId) => {
214
218
  const isSyncEnabled = ctx.isProjectUsingDataStore();
215
219
  const dataSource = this.datasourceMap[type.name.value];
216
220
  const resolverKey = `Get${resolvers_1.generateResolverKey(typeName, fieldName)}`;
217
221
  if (!this.resolverMap[resolverKey]) {
218
- this.resolverMap[resolverKey] = ctx.resolvers.generateQueryResolver(typeName, fieldName, dataSource, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(query_1.generateGetRequestTemplate(), `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(query_1.generateGetResponseTemplate(isSyncEnabled), `${typeName}.${fieldName}.res.vtl`));
222
+ this.resolverMap[resolverKey] = ctx.resolvers.generateQueryResolver(typeName, fieldName, resolverLogicalId, dataSource, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(query_1.generateGetRequestTemplate(), `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(query_1.generateGetResponseTemplate(isSyncEnabled), `${typeName}.${fieldName}.res.vtl`));
219
223
  }
220
224
  return this.resolverMap[resolverKey];
221
225
  };
222
- this.generateListResolver = (ctx, type, typeName, fieldName) => {
226
+ this.generateListResolver = (ctx, type, typeName, fieldName, resolverLogicalId) => {
223
227
  const isSyncEnabled = ctx.isProjectUsingDataStore();
224
228
  const dataSource = this.datasourceMap[type.name.value];
225
229
  const resolverKey = `List${resolvers_1.generateResolverKey(typeName, fieldName)}`;
226
230
  if (!this.resolverMap[resolverKey]) {
227
- this.resolverMap[resolverKey] = ctx.resolvers.generateQueryResolver(typeName, fieldName, dataSource, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(query_1.generateListRequestTemplate(), `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateDefaultResponseMappingTemplate(isSyncEnabled), `${typeName}.${fieldName}.res.vtl`));
231
+ this.resolverMap[resolverKey] = ctx.resolvers.generateQueryResolver(typeName, fieldName, resolverLogicalId, dataSource, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(query_1.generateListRequestTemplate(), `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateDefaultResponseMappingTemplate(isSyncEnabled), `${typeName}.${fieldName}.res.vtl`));
228
232
  }
229
233
  return this.resolverMap[resolverKey];
230
234
  };
231
- this.generateUpdateResolver = (ctx, type, typeName, fieldName) => {
235
+ this.generateUpdateResolver = (ctx, type, typeName, fieldName, resolverLogicalId) => {
232
236
  const isSyncEnabled = ctx.isProjectUsingDataStore();
233
237
  const dataSource = this.datasourceMap[type.name.value];
234
238
  const resolverKey = `Update${resolvers_1.generateResolverKey(typeName, fieldName)}`;
235
239
  if (!this.resolverMap[resolverKey]) {
236
- const resolver = ctx.resolvers.generateMutationResolver(typeName, fieldName, dataSource, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateUpdateRequestTemplate(typeName, isSyncEnabled), `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateDefaultResponseMappingTemplate(isSyncEnabled, true), `${typeName}.${fieldName}.res.vtl`));
240
+ const resolver = ctx.resolvers.generateMutationResolver(typeName, fieldName, resolverLogicalId, dataSource, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateUpdateRequestTemplate(typeName, isSyncEnabled), `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateDefaultResponseMappingTemplate(isSyncEnabled, true), `${typeName}.${fieldName}.res.vtl`));
237
241
  resolver.addToSlot('init', graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateUpdateInitSlotTemplate(type.name.value, this.modelDirectiveConfig.get(type.name.value)), `${typeName}.${fieldName}.{slotName}.{slotIndex}.req.vtl`));
238
242
  this.resolverMap[resolverKey] = resolver;
239
243
  }
240
244
  return this.resolverMap[resolverKey];
241
245
  };
242
- this.generateDeleteResolver = (ctx, type, typeName, fieldName) => {
246
+ this.generateDeleteResolver = (ctx, type, typeName, fieldName, resolverLogicalId) => {
243
247
  const isSyncEnabled = ctx.isProjectUsingDataStore();
244
248
  const dataSource = this.datasourceMap[type.name.value];
245
249
  const resolverKey = `delete${resolvers_1.generateResolverKey(typeName, fieldName)}`;
246
250
  if (!this.resolverMap[resolverKey]) {
247
- this.resolverMap[resolverKey] = ctx.resolvers.generateMutationResolver(typeName, fieldName, dataSource, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateDeleteRequestTemplate(isSyncEnabled), `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateDefaultResponseMappingTemplate(isSyncEnabled, true), `${typeName}.${fieldName}.res.vtl`));
251
+ this.resolverMap[resolverKey] = ctx.resolvers.generateMutationResolver(typeName, fieldName, resolverLogicalId, dataSource, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateDeleteRequestTemplate(isSyncEnabled), `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateDefaultResponseMappingTemplate(isSyncEnabled, true), `${typeName}.${fieldName}.res.vtl`));
248
252
  }
249
253
  return this.resolverMap[resolverKey];
250
254
  };
251
- this.generateOnCreateResolver = (ctx, type, typeName, fieldName) => {
255
+ this.generateOnCreateResolver = (ctx, type, typeName, fieldName, resolverLogicalId) => {
252
256
  const resolverKey = `OnCreate${resolvers_1.generateResolverKey(typeName, fieldName)}`;
253
257
  if (!this.resolverMap[resolverKey]) {
254
- this.resolverMap[resolverKey] = ctx.resolvers.generateSubscriptionResolver(typeName, fieldName, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateSubscriptionRequestTemplate(), `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateSubscriptionResponseTemplate(), `${typeName}.${fieldName}.res.vtl`));
258
+ this.resolverMap[resolverKey] = ctx.resolvers.generateSubscriptionResolver(typeName, fieldName, resolverLogicalId, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateSubscriptionRequestTemplate(), `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateSubscriptionResponseTemplate(), `${typeName}.${fieldName}.res.vtl`));
255
259
  }
256
260
  return this.resolverMap[resolverKey];
257
261
  };
258
- this.generateOnUpdateResolver = (ctx, type, typeName, fieldName) => {
262
+ this.generateOnUpdateResolver = (ctx, type, typeName, fieldName, resolverLogicalId) => {
259
263
  const resolverKey = `OnUpdate${resolvers_1.generateResolverKey(typeName, fieldName)}`;
260
264
  if (!this.resolverMap[resolverKey]) {
261
- this.resolverMap[resolverKey] = ctx.resolvers.generateSubscriptionResolver(typeName, fieldName, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateSubscriptionRequestTemplate(), `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateSubscriptionResponseTemplate(), `${typeName}.${fieldName}.res.vtl`));
265
+ this.resolverMap[resolverKey] = ctx.resolvers.generateSubscriptionResolver(typeName, fieldName, resolverLogicalId, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateSubscriptionRequestTemplate(), `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateSubscriptionResponseTemplate(), `${typeName}.${fieldName}.res.vtl`));
262
266
  }
263
267
  return this.resolverMap[resolverKey];
264
268
  };
265
- this.generateOnDeleteResolver = (ctx, type, typeName, fieldName) => {
269
+ this.generateOnDeleteResolver = (ctx, type, typeName, fieldName, resolverLogicalId) => {
266
270
  const resolverKey = `OnDelete${resolvers_1.generateResolverKey(typeName, fieldName)}`;
267
271
  if (!this.resolverMap[resolverKey]) {
268
- this.resolverMap[resolverKey] = ctx.resolvers.generateSubscriptionResolver(typeName, fieldName, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateSubscriptionRequestTemplate(), `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateSubscriptionResponseTemplate(), `${typeName}.${fieldName}.res.vtl`));
272
+ this.resolverMap[resolverKey] = ctx.resolvers.generateSubscriptionResolver(typeName, fieldName, resolverLogicalId, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateSubscriptionRequestTemplate(), `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateSubscriptionResponseTemplate(), `${typeName}.${fieldName}.res.vtl`));
269
273
  }
270
274
  return this.resolverMap[resolverKey];
271
275
  };
272
- this.generateSyncResolver = (ctx, type, typeName, fieldName) => {
276
+ this.generateSyncResolver = (ctx, type, typeName, fieldName, resolverLogicalId) => {
273
277
  const isSyncEnabled = ctx.isProjectUsingDataStore();
274
278
  const dataSource = this.datasourceMap[type.name.value];
275
279
  const resolverKey = `Sync${resolvers_1.generateResolverKey(typeName, fieldName)}`;
276
280
  if (!this.resolverMap[resolverKey]) {
277
- this.resolverMap[resolverKey] = ctx.resolvers.generateQueryResolver(typeName, fieldName, dataSource, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(query_1.generateSyncRequestTemplate(), `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateDefaultResponseMappingTemplate(isSyncEnabled), `${typeName}.${fieldName}.res.vtl`));
281
+ this.resolverMap[resolverKey] = ctx.resolvers.generateQueryResolver(typeName, fieldName, resolverLogicalId, dataSource, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(query_1.generateSyncRequestTemplate(), `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateDefaultResponseMappingTemplate(isSyncEnabled), `${typeName}.${fieldName}.res.vtl`));
278
282
  }
279
283
  return this.resolverMap[resolverKey];
280
284
  };
@@ -288,6 +292,7 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
288
292
  typeName: 'Query',
289
293
  fieldName: modelDirectiveConfig.queries.get || graphql_transformer_common_1.toCamelCase(['get', typeName]),
290
294
  type: graphql_transformer_interfaces_1.QueryFieldType.GET,
295
+ resolverLogicalId: graphql_transformer_common_1.ResolverResourceIDs.DynamoDBGetResolverResourceID(typeName),
291
296
  });
292
297
  }
293
298
  if ((_b = modelDirectiveConfig === null || modelDirectiveConfig === void 0 ? void 0 : modelDirectiveConfig.queries) === null || _b === void 0 ? void 0 : _b.list) {
@@ -295,6 +300,7 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
295
300
  typeName: 'Query',
296
301
  fieldName: modelDirectiveConfig.queries.list || graphql_transformer_common_1.toCamelCase(['list', typeName]),
297
302
  type: graphql_transformer_interfaces_1.QueryFieldType.LIST,
303
+ resolverLogicalId: graphql_transformer_common_1.ResolverResourceIDs.DynamoDBListResolverResourceID(typeName),
298
304
  });
299
305
  }
300
306
  if ((_c = modelDirectiveConfig === null || modelDirectiveConfig === void 0 ? void 0 : modelDirectiveConfig.queries) === null || _c === void 0 ? void 0 : _c.sync) {
@@ -302,6 +308,7 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
302
308
  typeName: 'Query',
303
309
  fieldName: modelDirectiveConfig.queries.sync || graphql_transformer_common_1.toCamelCase(['sync', typeName]),
304
310
  type: graphql_transformer_interfaces_1.QueryFieldType.SYNC,
311
+ resolverLogicalId: graphql_transformer_common_1.ResolverResourceIDs.SyncResolverResourceID(typeName),
305
312
  });
306
313
  }
307
314
  return fields;
@@ -321,6 +328,18 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
321
328
  throw new Error('Unknown mutation type');
322
329
  }
323
330
  };
331
+ const getMutationResolverLogicalId = (type) => {
332
+ switch (type) {
333
+ case 'create':
334
+ return graphql_transformer_common_1.ResolverResourceIDs.DynamoDBCreateResolverResourceID(typeName);
335
+ case 'update':
336
+ return graphql_transformer_common_1.ResolverResourceIDs.DynamoDBUpdateResolverResourceID(typeName);
337
+ case 'delete':
338
+ return graphql_transformer_common_1.ResolverResourceIDs.DynamoDBDeleteResolverResourceID(typeName);
339
+ default:
340
+ throw new Error('Unknown mutation type');
341
+ }
342
+ };
324
343
  const fieldNames = new Set();
325
344
  for (let [mutationType, mutationName] of Object.entries((modelDirectiveConfig === null || modelDirectiveConfig === void 0 ? void 0 : modelDirectiveConfig.mutations) || {})) {
326
345
  if (mutationName) {
@@ -328,6 +347,7 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
328
347
  typeName: 'Mutation',
329
348
  fieldName: mutationName,
330
349
  type: getMutationType(mutationType),
350
+ resolverLogicalId: getMutationResolverLogicalId(mutationType),
331
351
  });
332
352
  }
333
353
  }
@@ -402,6 +422,7 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
402
422
  typeName: 'Subscription',
403
423
  fieldName: fieldName,
404
424
  type: graphql_transformer_interfaces_1.SubscriptionFieldType.ON_CREATE,
425
+ resolverLogicalId: graphql_transformer_common_1.ModelResourceIDs.ModelOnCreateSubscriptionName(type.name.value),
405
426
  });
406
427
  }
407
428
  }
@@ -411,6 +432,7 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
411
432
  typeName: 'Subscription',
412
433
  fieldName: fieldName,
413
434
  type: graphql_transformer_interfaces_1.SubscriptionFieldType.ON_UPDATE,
435
+ resolverLogicalId: graphql_transformer_common_1.ModelResourceIDs.ModelOnUpdateSubscriptionName(type.name.value),
414
436
  });
415
437
  }
416
438
  }
@@ -420,6 +442,7 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
420
442
  typeName: 'Subscription',
421
443
  fieldName: fieldName,
422
444
  type: graphql_transformer_interfaces_1.SubscriptionFieldType.ON_DELETE,
445
+ resolverLogicalId: graphql_transformer_common_1.ModelResourceIDs.ModelOnDeleteSubscriptionName(type.name.value),
423
446
  });
424
447
  }
425
448
  }
@@ -432,12 +455,12 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
432
455
  this.getDataSourceType = () => {
433
456
  return graphql_transformer_interfaces_1.AppSyncDataSourceType.AMAZON_DYNAMODB;
434
457
  };
435
- this.generateCreateResolver = (ctx, type, typeName, fieldName) => {
458
+ this.generateCreateResolver = (ctx, type, typeName, fieldName, resolverLogicalId) => {
436
459
  const isSyncEnabled = ctx.isProjectUsingDataStore();
437
460
  const dataSource = this.datasourceMap[type.name.value];
438
461
  const resolverKey = `Create${resolvers_1.generateResolverKey(typeName, fieldName)}`;
439
462
  if (!this.resolverMap[resolverKey]) {
440
- const resolver = ctx.resolvers.generateMutationResolver(typeName, fieldName, dataSource, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateCreateRequestTemplate(type.name.value), `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateDefaultResponseMappingTemplate(isSyncEnabled, true), `${typeName}.${fieldName}.res.vtl`));
463
+ const resolver = ctx.resolvers.generateMutationResolver(typeName, fieldName, resolverLogicalId, dataSource, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateCreateRequestTemplate(type.name.value), `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateDefaultResponseMappingTemplate(isSyncEnabled, true), `${typeName}.${fieldName}.res.vtl`));
441
464
  this.resolverMap[resolverKey] = resolver;
442
465
  resolver.addToSlot('init', graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString(resolvers_1.generateCreateInitSlotTemplate(type.name.value, this.modelDirectiveConfig.get(type.name.value)), `${typeName}.${fieldName}.{slotName}.{slotIndex}.req.vtl`));
443
466
  }
@@ -640,6 +663,11 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
640
663
  ...options,
641
664
  };
642
665
  };
666
+ this.ensureValidSubscriptionName = (name) => {
667
+ if (name.length <= 50)
668
+ return name;
669
+ return name.slice(0, 45) + md5_1.default(name).slice(0, 5);
670
+ };
643
671
  this.options = this.getOptions(options);
644
672
  }
645
673
  createModelTable(stack, def, context) {
@@ -696,7 +724,7 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
696
724
  stream: aws_dynamodb_1.StreamViewType.NEW_AND_OLD_IMAGES,
697
725
  encryption: aws_dynamodb_1.TableEncryption.DEFAULT,
698
726
  removalPolicy: removalPolicy,
699
- ...(this.options.SyncConfig ? { timeToLiveAttribute: '_ttl' } : undefined),
727
+ ...(context.isProjectUsingDataStore() ? { timeToLiveAttribute: '_ttl' } : undefined),
700
728
  });
701
729
  const cfnTable = table.node.defaultChild;
702
730
  cfnTable.provisionedThroughput = cdk.Fn.conditionIf(usePayPerRequestBilling.logicalId, cdk.Fn.ref('AWS::NoValue'), {
@@ -729,7 +757,8 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
729
757
  const dataSource = context.api.host.addDynamoDbDataSource(datasourceRoleLogicalID, table, { name: tableLogicalName, serviceRole: role }, stack);
730
758
  const cfnDataSource = dataSource.node.defaultChild;
731
759
  cfnDataSource.addDependsOn(role.node.defaultChild);
732
- if (this.options.SyncConfig) {
760
+ cfnDataSource.overrideLogicalId(datasourceRoleLogicalID);
761
+ if (context.isProjectUsingDataStore()) {
733
762
  const datasourceDynamoDb = cfnDataSource.dynamoDbConfig;
734
763
  datasourceDynamoDb.deltaSyncConfig = {
735
764
  deltaSyncTableName: context.resourceHelper.generateResourceName(graphql_transformer_common_1.SyncResourceIDs.syncTableName),
@@ -748,7 +777,7 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
748
777
  this.datasourceMap[def.name.value] = dataSource;
749
778
  }
750
779
  createIAMRole(context, def, stack, tableName) {
751
- const roleName = context.resourceHelper.generateResourceName(graphql_transformer_common_1.ModelResourceIDs.ModelTableIAMRoleID(def.name.value));
780
+ const roleName = context.resourceHelper.generateIAMRoleName(graphql_transformer_common_1.ModelResourceIDs.ModelTableIAMRoleID(def.name.value));
752
781
  const role = new iam.Role(stack, graphql_transformer_common_1.ModelResourceIDs.ModelTableIAMRoleID(def.name.value), {
753
782
  roleName: roleName,
754
783
  assumedBy: new iam.ServicePrincipal('appsync.amazonaws.com'),
@@ -775,7 +804,7 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
775
804
  cdk.Fn.sub('arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/${tablename}/*', {
776
805
  tablename: tableName,
777
806
  }),
778
- ...(this.options.SyncConfig
807
+ ...(context.isProjectUsingDataStore()
779
808
  ? [
780
809
  cdk.Fn.sub('arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/${tablename}', {
781
810
  tablename: amplifyDataStoreTableName,
@@ -789,8 +818,9 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
789
818
  }),
790
819
  ],
791
820
  }));
792
- if (this.options.SyncConfig && graphql_transformer_core_1.SyncUtils.isLambdaSyncConfig(this.options.SyncConfig)) {
793
- role.attachInlinePolicy(graphql_transformer_core_1.SyncUtils.createSyncLambdaIAMPolicy(stack, this.options.SyncConfig.LambdaConflictHandler.name, this.options.SyncConfig.LambdaConflictHandler.region));
821
+ const syncConfig = graphql_transformer_core_1.SyncUtils.getSyncConfig(context, def.name.value);
822
+ if (syncConfig && graphql_transformer_core_1.SyncUtils.isLambdaSyncConfig(syncConfig)) {
823
+ role.attachInlinePolicy(graphql_transformer_core_1.SyncUtils.createSyncLambdaIAMPolicy(stack, syncConfig.LambdaConflictHandler.name, syncConfig.LambdaConflictHandler.region));
794
824
  }
795
825
  return role;
796
826
  }