@aws-amplify/graphql-model-transformer 0.13.4 → 0.13.5-beta.2

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.
@@ -18,11 +18,8 @@ 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
- };
24
21
  Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.ModelTransformer = exports.directiveDefinition = exports.SubscriptionLevel = void 0;
22
+ exports.ModelTransformer = exports.directiveDefinition = void 0;
26
23
  const graphql_transformer_core_1 = require("@aws-amplify/graphql-transformer-core");
27
24
  const graphql_transformer_interfaces_1 = require("@aws-amplify/graphql-transformer-interfaces");
28
25
  const aws_dynamodb_1 = require("@aws-cdk/aws-dynamodb");
@@ -32,14 +29,8 @@ const graphql_transformer_common_1 = require("graphql-transformer-common");
32
29
  const graphql_types_1 = require("./graphql-types");
33
30
  const resolvers_1 = require("./resolvers");
34
31
  const query_1 = require("./resolvers/query");
35
- const md5_1 = __importDefault(require("md5"));
36
32
  const definitions_1 = require("./definitions");
37
- var SubscriptionLevel;
38
- (function (SubscriptionLevel) {
39
- SubscriptionLevel["off"] = "off";
40
- SubscriptionLevel["public"] = "public";
41
- SubscriptionLevel["on"] = "on";
42
- })(SubscriptionLevel = exports.SubscriptionLevel || (exports.SubscriptionLevel = {}));
33
+ const directive_1 = require("./directive");
43
34
  exports.directiveDefinition = `
44
35
  directive @model(
45
36
  queries: ModelQueryMap
@@ -111,9 +102,9 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
111
102
  };
112
103
  this.object = (definition, directive, ctx) => {
113
104
  var _a, _b, _c;
114
- const isTypeNameReserved = definition.name.value === ctx.output.getQueryTypeName() ||
115
- definition.name.value === ctx.output.getMutationTypeName() ||
116
- definition.name.value === ctx.output.getSubscriptionTypeName();
105
+ const isTypeNameReserved = definition.name.value === ctx.output.getQueryTypeName()
106
+ || definition.name.value === ctx.output.getMutationTypeName()
107
+ || definition.name.value === ctx.output.getSubscriptionTypeName();
117
108
  if (isTypeNameReserved) {
118
109
  throw new graphql_transformer_core_1.InvalidDirectiveError(`'${definition.name.value}' is a reserved type name and currently in use within the default schema element.`);
119
110
  }
@@ -134,7 +125,7 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
134
125
  delete: (0, graphql_transformer_core_1.getFieldNameFor)('delete', typeName),
135
126
  },
136
127
  subscriptions: {
137
- level: SubscriptionLevel.on,
128
+ level: directive_1.SubscriptionLevel.on,
138
129
  onCreate: [(0, graphql_transformer_core_1.getFieldNameFor)('onCreate', typeName)],
139
130
  onDelete: [(0, graphql_transformer_core_1.getFieldNameFor)('onDelete', typeName)],
140
131
  onUpdate: [(0, graphql_transformer_core_1.getFieldNameFor)('onUpdate', typeName)],
@@ -156,17 +147,16 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
156
147
  this.modelDirectiveConfig.set(typeName, options);
157
148
  this.typesWithModelDirective.add(typeName);
158
149
  };
159
- this.validate = () => { };
160
150
  this.prepare = (context) => {
161
- for (const modelTypeName of this.typesWithModelDirective) {
151
+ this.typesWithModelDirective.forEach(modelTypeName => {
162
152
  const type = context.output.getObject(modelTypeName);
163
153
  context.providerRegistry.registerDataSourceProvider(type, this);
164
- }
154
+ });
165
155
  };
166
156
  this.transformSchema = (ctx) => {
167
157
  (0, graphql_types_1.addModelConditionInputs)(ctx);
168
158
  this.ensureModelSortDirectionEnum(ctx);
169
- for (const type of this.typesWithModelDirective) {
159
+ this.typesWithModelDirective.forEach(type => {
170
160
  const def = ctx.output.getObject(type);
171
161
  const hasAuth = def.directives.some(dir => dir.name.value === 'auth');
172
162
  this.createNonModelInputs(ctx, def);
@@ -184,31 +174,31 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
184
174
  const apiKeyDirArray = [(0, graphql_transformer_common_1.makeDirective)(definitions_1.API_KEY_DIRECTIVE, [])];
185
175
  (0, graphql_types_1.extendTypeWithDirectives)(ctx, def.name.value, apiKeyDirArray);
186
176
  (0, graphql_types_1.propagateApiKeyToNestedTypes)(ctx, def, new Set());
187
- for (let operationField of queryFields) {
177
+ queryFields.forEach(operationField => {
188
178
  const operationName = operationField.name.value;
189
179
  (0, graphql_types_1.addDirectivesToOperation)(ctx, ctx.output.getQueryTypeName(), operationName, apiKeyDirArray);
190
- }
191
- for (let operationField of mutationFields) {
180
+ });
181
+ mutationFields.forEach(operationField => {
192
182
  const operationName = operationField.name.value;
193
183
  (0, graphql_types_1.addDirectivesToOperation)(ctx, ctx.output.getMutationTypeName(), operationName, apiKeyDirArray);
194
- }
195
- for (let operationField of subscriptionsFields) {
184
+ });
185
+ subscriptionsFields.forEach(operationField => {
196
186
  const operationName = operationField.name.value;
197
187
  (0, graphql_types_1.addDirectivesToOperation)(ctx, ctx.output.getSubscriptionTypeName(), operationName, apiKeyDirArray);
198
- }
188
+ });
199
189
  }
200
- }
190
+ });
201
191
  };
202
192
  this.generateResolvers = (context) => {
203
- var _a, _b;
204
- for (let type of this.typesWithModelDirective) {
193
+ this.typesWithModelDirective.forEach(type => {
194
+ var _a, _b;
205
195
  const def = context.output.getObject(type);
206
196
  const tableBaseName = context.resourceHelper.getModelNameMapping(def.name.value);
207
197
  const tableLogicalName = graphql_transformer_common_1.ModelResourceIDs.ModelTableResourceID(tableBaseName);
208
198
  const stack = context.stackManager.getStackFor(tableLogicalName, tableBaseName);
209
199
  this.createModelTable(stack, def, context);
210
- const queryFields = this.getQueryFieldNames(context, def);
211
- for (let query of queryFields.values()) {
200
+ const queryFields = this.getQueryFieldNames(def);
201
+ queryFields.forEach(query => {
212
202
  let resolver;
213
203
  switch (query.type) {
214
204
  case graphql_transformer_interfaces_1.QueryFieldType.GET:
@@ -226,9 +216,9 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
226
216
  resolver.addToSlot('postAuth', graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString((0, resolvers_1.generateAuthExpressionForSandboxMode)(context.sandboxModeEnabled), `${query.typeName}.${query.fieldName}.{slotName}.{slotIndex}.req.vtl`));
227
217
  resolver.mapToStack(context.stackManager.getStackFor(query.resolverLogicalId, def.name.value));
228
218
  context.resolvers.addResolver(query.typeName, query.fieldName, resolver);
229
- }
230
- const mutationFields = this.getMutationFieldNames(context, def);
231
- for (let mutation of mutationFields.values()) {
219
+ });
220
+ const mutationFields = this.getMutationFieldNames(def);
221
+ mutationFields.forEach(mutation => {
232
222
  let resolver;
233
223
  switch (mutation.type) {
234
224
  case graphql_transformer_interfaces_1.MutationFieldType.CREATE:
@@ -246,21 +236,21 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
246
236
  resolver.addToSlot('postAuth', graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString((0, resolvers_1.generateAuthExpressionForSandboxMode)(context.sandboxModeEnabled), `${mutation.typeName}.${mutation.fieldName}.{slotName}.{slotIndex}.req.vtl`));
247
237
  resolver.mapToStack(context.stackManager.getStackFor(mutation.resolverLogicalId, def.name.value));
248
238
  context.resolvers.addResolver(mutation.typeName, mutation.fieldName, resolver);
249
- }
239
+ });
250
240
  const subscriptionLevel = (_b = (_a = this.modelDirectiveConfig.get(def.name.value)) === null || _a === void 0 ? void 0 : _a.subscriptions) === null || _b === void 0 ? void 0 : _b.level;
251
- if (subscriptionLevel === SubscriptionLevel.on) {
252
- const subscriptionFields = this.getSubscriptionFieldNames(context, def);
253
- for (let subscription of subscriptionFields.values()) {
241
+ if (subscriptionLevel === directive_1.SubscriptionLevel.on) {
242
+ const subscriptionFields = this.getSubscriptionFieldNames(def);
243
+ subscriptionFields.forEach(subscription => {
254
244
  let resolver;
255
245
  switch (subscription.type) {
256
246
  case graphql_transformer_interfaces_1.SubscriptionFieldType.ON_CREATE:
257
- resolver = this.generateOnCreateResolver(context, def, subscription.typeName, subscription.fieldName, subscription.resolverLogicalId);
247
+ resolver = this.generateOnCreateResolver(context, subscription.typeName, subscription.fieldName, subscription.resolverLogicalId);
258
248
  break;
259
249
  case graphql_transformer_interfaces_1.SubscriptionFieldType.ON_UPDATE:
260
- resolver = this.generateOnUpdateResolver(context, def, subscription.typeName, subscription.fieldName, subscription.resolverLogicalId);
250
+ resolver = this.generateOnUpdateResolver(context, subscription.typeName, subscription.fieldName, subscription.resolverLogicalId);
261
251
  break;
262
252
  case graphql_transformer_interfaces_1.SubscriptionFieldType.ON_DELETE:
263
- resolver = this.generateOnDeleteResolver(context, def, subscription.typeName, subscription.fieldName, subscription.resolverLogicalId);
253
+ resolver = this.generateOnDeleteResolver(context, subscription.typeName, subscription.fieldName, subscription.resolverLogicalId);
264
254
  break;
265
255
  default:
266
256
  throw new Error('Unknown subscription field type');
@@ -268,9 +258,9 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
268
258
  resolver.addToSlot('postAuth', graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString((0, resolvers_1.generateAuthExpressionForSandboxMode)(context.sandboxModeEnabled), `${subscription.typeName}.${subscription.fieldName}.{slotName}.{slotIndex}.req.vtl`));
269
259
  resolver.mapToStack(context.stackManager.getStackFor(subscription.resolverLogicalId, def.name.value));
270
260
  context.resolvers.addResolver(subscription.typeName, subscription.fieldName, resolver);
271
- }
261
+ });
272
262
  }
273
- }
263
+ });
274
264
  };
275
265
  this.generateGetResolver = (ctx, type, typeName, fieldName, resolverLogicalId) => {
276
266
  const isSyncEnabled = ctx.isProjectUsingDataStore();
@@ -296,7 +286,7 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
296
286
  const resolverKey = `Update${(0, resolvers_1.generateResolverKey)(typeName, fieldName)}`;
297
287
  if (!this.resolverMap[resolverKey]) {
298
288
  const resolver = ctx.resolvers.generateMutationResolver(typeName, fieldName, resolverLogicalId, dataSource, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString((0, resolvers_1.generateUpdateRequestTemplate)(typeName, isSyncEnabled), `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString((0, resolvers_1.generateDefaultResponseMappingTemplate)(isSyncEnabled, true), `${typeName}.${fieldName}.res.vtl`));
299
- resolver.addToSlot('init', graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString((0, resolvers_1.generateUpdateInitSlotTemplate)(type.name.value, this.modelDirectiveConfig.get(type.name.value)), `${typeName}.${fieldName}.{slotName}.{slotIndex}.req.vtl`));
289
+ resolver.addToSlot('init', graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString((0, resolvers_1.generateUpdateInitSlotTemplate)(this.modelDirectiveConfig.get(type.name.value)), `${typeName}.${fieldName}.{slotName}.{slotIndex}.req.vtl`));
300
290
  this.resolverMap[resolverKey] = resolver;
301
291
  }
302
292
  return this.resolverMap[resolverKey];
@@ -310,21 +300,21 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
310
300
  }
311
301
  return this.resolverMap[resolverKey];
312
302
  };
313
- this.generateOnCreateResolver = (ctx, type, typeName, fieldName, resolverLogicalId) => {
303
+ this.generateOnCreateResolver = (ctx, typeName, fieldName, resolverLogicalId) => {
314
304
  const resolverKey = `OnCreate${(0, resolvers_1.generateResolverKey)(typeName, fieldName)}`;
315
305
  if (!this.resolverMap[resolverKey]) {
316
306
  this.resolverMap[resolverKey] = ctx.resolvers.generateSubscriptionResolver(typeName, fieldName, resolverLogicalId, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString((0, resolvers_1.generateSubscriptionRequestTemplate)(), `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString((0, resolvers_1.generateSubscriptionResponseTemplate)(), `${typeName}.${fieldName}.res.vtl`));
317
307
  }
318
308
  return this.resolverMap[resolverKey];
319
309
  };
320
- this.generateOnUpdateResolver = (ctx, type, typeName, fieldName, resolverLogicalId) => {
310
+ this.generateOnUpdateResolver = (ctx, typeName, fieldName, resolverLogicalId) => {
321
311
  const resolverKey = `OnUpdate${(0, resolvers_1.generateResolverKey)(typeName, fieldName)}`;
322
312
  if (!this.resolverMap[resolverKey]) {
323
313
  this.resolverMap[resolverKey] = ctx.resolvers.generateSubscriptionResolver(typeName, fieldName, resolverLogicalId, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString((0, resolvers_1.generateSubscriptionRequestTemplate)(), `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString((0, resolvers_1.generateSubscriptionResponseTemplate)(), `${typeName}.${fieldName}.res.vtl`));
324
314
  }
325
315
  return this.resolverMap[resolverKey];
326
316
  };
327
- this.generateOnDeleteResolver = (ctx, type, typeName, fieldName, resolverLogicalId) => {
317
+ this.generateOnDeleteResolver = (ctx, typeName, fieldName, resolverLogicalId) => {
328
318
  const resolverKey = `OnDelete${(0, resolvers_1.generateResolverKey)(typeName, fieldName)}`;
329
319
  if (!this.resolverMap[resolverKey]) {
330
320
  this.resolverMap[resolverKey] = ctx.resolvers.generateSubscriptionResolver(typeName, fieldName, resolverLogicalId, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString((0, resolvers_1.generateSubscriptionRequestTemplate)(), `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString((0, resolvers_1.generateSubscriptionResponseTemplate)(), `${typeName}.${fieldName}.res.vtl`));
@@ -340,7 +330,7 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
340
330
  }
341
331
  return this.resolverMap[resolverKey];
342
332
  };
343
- this.getQueryFieldNames = (ctx, type) => {
333
+ this.getQueryFieldNames = (type) => {
344
334
  var _a, _b, _c;
345
335
  const typeName = type.name.value;
346
336
  const fields = new Set();
@@ -371,11 +361,11 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
371
361
  }
372
362
  return fields;
373
363
  };
374
- this.getMutationFieldNames = (ctx, type) => {
364
+ this.getMutationFieldNames = (type) => {
375
365
  const typeName = type.name.value;
376
366
  const modelDirectiveConfig = this.modelDirectiveConfig.get(typeName);
377
- const getMutationType = (type) => {
378
- switch (type) {
367
+ const getMutationType = (mutationType) => {
368
+ switch (mutationType) {
379
369
  case 'create':
380
370
  return graphql_transformer_interfaces_1.MutationFieldType.CREATE;
381
371
  case 'update':
@@ -386,8 +376,8 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
386
376
  throw new Error('Unknown mutation type');
387
377
  }
388
378
  };
389
- const getMutationResolverLogicalId = (type) => {
390
- switch (type) {
379
+ const getMutationResolverLogicalId = (mutationType) => {
380
+ switch (mutationType) {
391
381
  case 'create':
392
382
  return graphql_transformer_common_1.ResolverResourceIDs.DynamoDBCreateResolverResourceID(typeName);
393
383
  case 'update':
@@ -399,7 +389,7 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
399
389
  }
400
390
  };
401
391
  const fieldNames = new Set();
402
- for (let [mutationType, mutationName] of Object.entries((modelDirectiveConfig === null || modelDirectiveConfig === void 0 ? void 0 : modelDirectiveConfig.mutations) || {})) {
392
+ Object.entries((modelDirectiveConfig === null || modelDirectiveConfig === void 0 ? void 0 : modelDirectiveConfig.mutations) || {}).forEach(([mutationType, mutationName]) => {
403
393
  if (mutationName) {
404
394
  fieldNames.add({
405
395
  typeName: 'Mutation',
@@ -408,7 +398,7 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
408
398
  resolverLogicalId: getMutationResolverLogicalId(mutationType),
409
399
  });
410
400
  }
411
- }
401
+ });
412
402
  return fieldNames;
413
403
  };
414
404
  this.getMutationName = (subscriptionType, mutationMap) => {
@@ -417,7 +407,7 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
417
407
  [graphql_transformer_interfaces_1.SubscriptionFieldType.ON_UPDATE]: graphql_transformer_interfaces_1.MutationFieldType.UPDATE,
418
408
  [graphql_transformer_interfaces_1.SubscriptionFieldType.ON_DELETE]: graphql_transformer_interfaces_1.MutationFieldType.DELETE,
419
409
  };
420
- const mutation = Array.from(mutationMap).find(m => m.type == mutationToSubscriptionTypeMap[subscriptionType]);
410
+ const mutation = Array.from(mutationMap).find(m => m.type === mutationToSubscriptionTypeMap[subscriptionType]);
421
411
  if (mutation) {
422
412
  return mutation.fieldName;
423
413
  }
@@ -425,8 +415,8 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
425
415
  };
426
416
  this.createQueryFields = (ctx, def) => {
427
417
  const queryFields = [];
428
- const queryFieldNames = this.getQueryFieldNames(ctx, def);
429
- for (const queryField of queryFieldNames.values()) {
418
+ const queryFieldNames = this.getQueryFieldNames(def);
419
+ queryFieldNames.forEach(queryField => {
430
420
  const outputType = this.getOutputType(ctx, def, queryField);
431
421
  const args = this.getInputs(ctx, def, {
432
422
  fieldName: queryField.fieldName,
@@ -434,27 +424,27 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
434
424
  type: queryField.type,
435
425
  });
436
426
  queryFields.push((0, graphql_transformer_common_1.makeField)(queryField.fieldName, args, (0, graphql_transformer_common_1.makeNamedType)(outputType.name.value)));
437
- }
427
+ });
438
428
  return queryFields;
439
429
  };
440
430
  this.createMutationFields = (ctx, def) => {
441
431
  const mutationFields = [];
442
- const mutationFieldNames = this.getMutationFieldNames(ctx, def);
443
- for (const mutationField of mutationFieldNames) {
432
+ const mutationFieldNames = this.getMutationFieldNames(def);
433
+ mutationFieldNames.forEach(mutationField => {
444
434
  const args = this.getInputs(ctx, def, {
445
435
  fieldName: mutationField.fieldName,
446
436
  typeName: mutationField.typeName,
447
437
  type: mutationField.type,
448
438
  });
449
439
  mutationFields.push((0, graphql_transformer_common_1.makeField)(mutationField.fieldName, args, (0, graphql_transformer_common_1.makeNamedType)(def.name.value)));
450
- }
440
+ });
451
441
  return mutationFields;
452
442
  };
453
443
  this.createSubscriptionFields = (ctx, def) => {
454
- const subscriptionToMutationsMap = this.getSubscriptionToMutationsReverseMap(ctx, def);
455
- const mutationFields = this.getMutationFieldNames(ctx, def);
444
+ const subscriptionToMutationsMap = this.getSubscriptionToMutationsReverseMap(def);
445
+ const mutationFields = this.getMutationFieldNames(def);
456
446
  const subscriptionFields = [];
457
- for (const subscriptionFieldName of Object.keys(subscriptionToMutationsMap)) {
447
+ Object.keys(subscriptionToMutationsMap).forEach(subscriptionFieldName => {
458
448
  const maps = subscriptionToMutationsMap[subscriptionFieldName];
459
449
  const args = [];
460
450
  maps.map(it => args.concat(this.getInputs(ctx, def, {
@@ -466,61 +456,58 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
466
456
  const directive = (0, graphql_transformer_common_1.makeDirective)('aws_subscribe', [(0, graphql_transformer_common_1.makeArgument)('mutations', (0, graphql_transformer_common_1.makeValueNode)(mutationNames))]);
467
457
  const field = (0, graphql_transformer_common_1.makeField)(subscriptionFieldName, args, (0, graphql_transformer_common_1.makeNamedType)(def.name.value), [directive]);
468
458
  subscriptionFields.push(field);
469
- }
459
+ });
470
460
  return subscriptionFields;
471
461
  };
472
- this.getSubscriptionFieldNames = (ctx, type) => {
462
+ this.getSubscriptionFieldNames = (type) => {
473
463
  var _a, _b, _c, _d, _e, _f, _g;
474
464
  const fields = new Set();
475
465
  const modelDirectiveConfig = this.modelDirectiveConfig.get(type.name.value);
476
- if (((_a = modelDirectiveConfig === null || modelDirectiveConfig === void 0 ? void 0 : modelDirectiveConfig.subscriptions) === null || _a === void 0 ? void 0 : _a.level) !== SubscriptionLevel.off) {
466
+ if (((_a = modelDirectiveConfig === null || modelDirectiveConfig === void 0 ? void 0 : modelDirectiveConfig.subscriptions) === null || _a === void 0 ? void 0 : _a.level) !== directive_1.SubscriptionLevel.off) {
477
467
  if (((_b = modelDirectiveConfig === null || modelDirectiveConfig === void 0 ? void 0 : modelDirectiveConfig.subscriptions) === null || _b === void 0 ? void 0 : _b.onCreate) && ((_c = modelDirectiveConfig.mutations) === null || _c === void 0 ? void 0 : _c.create)) {
478
- for (const fieldName of modelDirectiveConfig.subscriptions.onCreate) {
468
+ modelDirectiveConfig.subscriptions.onCreate.forEach((fieldName) => {
479
469
  fields.add({
480
470
  typeName: 'Subscription',
481
- fieldName: fieldName,
471
+ fieldName,
482
472
  type: graphql_transformer_interfaces_1.SubscriptionFieldType.ON_CREATE,
483
473
  resolverLogicalId: graphql_transformer_common_1.ResolverResourceIDs.ResolverResourceID('Subscription', fieldName),
484
474
  });
485
- }
475
+ });
486
476
  }
487
477
  if (((_d = modelDirectiveConfig === null || modelDirectiveConfig === void 0 ? void 0 : modelDirectiveConfig.subscriptions) === null || _d === void 0 ? void 0 : _d.onUpdate) && ((_e = modelDirectiveConfig.mutations) === null || _e === void 0 ? void 0 : _e.update)) {
488
- for (const fieldName of modelDirectiveConfig.subscriptions.onUpdate) {
478
+ modelDirectiveConfig.subscriptions.onUpdate.forEach((fieldName) => {
489
479
  fields.add({
490
480
  typeName: 'Subscription',
491
- fieldName: fieldName,
481
+ fieldName,
492
482
  type: graphql_transformer_interfaces_1.SubscriptionFieldType.ON_UPDATE,
493
483
  resolverLogicalId: graphql_transformer_common_1.ResolverResourceIDs.ResolverResourceID('Subscription', fieldName),
494
484
  });
495
- }
485
+ });
496
486
  }
497
487
  if (((_f = modelDirectiveConfig === null || modelDirectiveConfig === void 0 ? void 0 : modelDirectiveConfig.subscriptions) === null || _f === void 0 ? void 0 : _f.onDelete) && ((_g = modelDirectiveConfig.mutations) === null || _g === void 0 ? void 0 : _g.delete)) {
498
- for (const fieldName of modelDirectiveConfig.subscriptions.onDelete) {
488
+ modelDirectiveConfig.subscriptions.onDelete.forEach((fieldName) => {
499
489
  fields.add({
500
490
  typeName: 'Subscription',
501
- fieldName: fieldName,
491
+ fieldName,
502
492
  type: graphql_transformer_interfaces_1.SubscriptionFieldType.ON_DELETE,
503
493
  resolverLogicalId: graphql_transformer_common_1.ResolverResourceIDs.ResolverResourceID('Subscription', fieldName),
504
494
  });
505
- }
495
+ });
506
496
  }
507
497
  }
508
498
  return fields;
509
499
  };
510
- this.getDataSourceResource = (ctx, type) => {
511
- return this.ddbTableMap[type.name.value];
512
- };
513
- this.getDataSourceType = () => {
514
- return graphql_transformer_interfaces_1.AppSyncDataSourceType.AMAZON_DYNAMODB;
515
- };
500
+ this.getDataSourceResource = (type) => this.ddbTableMap[type.name.value];
501
+ this.getDataSourceType = () => graphql_transformer_interfaces_1.AppSyncDataSourceType.AMAZON_DYNAMODB;
516
502
  this.generateCreateResolver = (ctx, type, typeName, fieldName, resolverLogicalId) => {
517
503
  const isSyncEnabled = ctx.isProjectUsingDataStore();
518
504
  const dataSource = this.datasourceMap[type.name.value];
519
505
  const resolverKey = `Create${(0, resolvers_1.generateResolverKey)(typeName, fieldName)}`;
506
+ const modelIndexFields = type.fields.filter(field => { var _a; return (_a = field.directives) === null || _a === void 0 ? void 0 : _a.some(it => it.name.value === 'index'); }).map(it => it.name.value);
520
507
  if (!this.resolverMap[resolverKey]) {
521
- const resolver = ctx.resolvers.generateMutationResolver(typeName, fieldName, resolverLogicalId, dataSource, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString((0, resolvers_1.generateCreateRequestTemplate)(type.name.value), `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString((0, resolvers_1.generateDefaultResponseMappingTemplate)(isSyncEnabled, true), `${typeName}.${fieldName}.res.vtl`));
508
+ const resolver = ctx.resolvers.generateMutationResolver(typeName, fieldName, resolverLogicalId, dataSource, graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString((0, resolvers_1.generateCreateRequestTemplate)(type.name.value, modelIndexFields), `${typeName}.${fieldName}.req.vtl`), graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString((0, resolvers_1.generateDefaultResponseMappingTemplate)(isSyncEnabled, true), `${typeName}.${fieldName}.res.vtl`));
522
509
  this.resolverMap[resolverKey] = resolver;
523
- resolver.addToSlot('init', graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString((0, resolvers_1.generateCreateInitSlotTemplate)(type.name.value, this.modelDirectiveConfig.get(type.name.value)), `${typeName}.${fieldName}.{slotName}.{slotIndex}.req.vtl`));
510
+ resolver.addToSlot('init', graphql_transformer_core_1.MappingTemplate.s3MappingTemplateFromString((0, resolvers_1.generateCreateInitSlotTemplate)(this.modelDirectiveConfig.get(type.name.value)), `${typeName}.${fieldName}.{slotName}.{slotIndex}.req.vtl`));
524
511
  }
525
512
  return this.resolverMap[resolverKey];
526
513
  };
@@ -533,32 +520,33 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
533
520
  const filterInputs = (0, graphql_types_1.createEnumModelFilters)(ctx, type);
534
521
  conditionInput = (0, graphql_types_1.makeMutationConditionInput)(ctx, conditionTypeName, type);
535
522
  filterInputs.push(conditionInput);
536
- for (let input of filterInputs) {
523
+ filterInputs.forEach(input => {
537
524
  const conditionInputName = input.name.value;
538
525
  if (!ctx.output.getType(conditionInputName)) {
539
526
  ctx.output.addInput(input);
540
527
  }
541
- }
528
+ });
542
529
  }
543
530
  switch (operation.type) {
544
531
  case graphql_transformer_interfaces_1.QueryFieldType.GET:
545
532
  return [(0, graphql_transformer_common_1.makeInputValueDefinition)('id', (0, graphql_transformer_common_1.makeNonNullType)((0, graphql_transformer_common_1.makeNamedType)('ID')))];
546
- case graphql_transformer_interfaces_1.QueryFieldType.LIST:
533
+ case graphql_transformer_interfaces_1.QueryFieldType.LIST: {
547
534
  const filterInputName = (0, graphql_transformer_common_1.toPascalCase)(['Model', type.name.value, 'FilterInput']);
548
535
  const filterInputs = (0, graphql_types_1.createEnumModelFilters)(ctx, type);
549
536
  filterInputs.push((0, graphql_types_1.makeListQueryFilterInput)(ctx, filterInputName, type));
550
- for (let input of filterInputs) {
537
+ filterInputs.forEach(input => {
551
538
  const conditionInputName = input.name.value;
552
539
  if (!ctx.output.getType(conditionInputName)) {
553
540
  ctx.output.addInput(input);
554
541
  }
555
- }
542
+ });
556
543
  return [
557
544
  (0, graphql_transformer_common_1.makeInputValueDefinition)('filter', (0, graphql_transformer_common_1.makeNamedType)(filterInputName)),
558
545
  (0, graphql_transformer_common_1.makeInputValueDefinition)('limit', (0, graphql_transformer_common_1.makeNamedType)('Int')),
559
546
  (0, graphql_transformer_common_1.makeInputValueDefinition)('nextToken', (0, graphql_transformer_common_1.makeNamedType)('String')),
560
547
  ];
561
- case graphql_transformer_interfaces_1.QueryFieldType.SYNC:
548
+ }
549
+ case graphql_transformer_interfaces_1.QueryFieldType.SYNC: {
562
550
  const syncFilterInputName = (0, graphql_transformer_common_1.toPascalCase)(['Model', type.name.value, 'FilterInput']);
563
551
  const syncFilterInputs = (0, graphql_types_1.makeListQueryFilterInput)(ctx, syncFilterInputName, type);
564
552
  const conditionInputName = syncFilterInputs.name.value;
@@ -571,7 +559,8 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
571
559
  (0, graphql_transformer_common_1.makeInputValueDefinition)('nextToken', (0, graphql_transformer_common_1.makeNamedType)('String')),
572
560
  (0, graphql_transformer_common_1.makeInputValueDefinition)('lastSync', (0, graphql_transformer_common_1.makeNamedType)('AWSTimestamp')),
573
561
  ];
574
- case graphql_transformer_interfaces_1.MutationFieldType.CREATE:
562
+ }
563
+ case graphql_transformer_interfaces_1.MutationFieldType.CREATE: {
575
564
  const createInputField = (0, graphql_types_1.makeCreateInputField)(type, this.modelDirectiveConfig.get(type.name.value), knownModels, ctx.inputDocument, isSyncEnabled);
576
565
  const createInputTypeName = createInputField.name.value;
577
566
  if (!ctx.output.getType(createInputField.name.value)) {
@@ -581,7 +570,8 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
581
570
  (0, graphql_transformer_common_1.makeInputValueDefinition)('input', (0, graphql_transformer_common_1.makeNonNullType)((0, graphql_transformer_common_1.makeNamedType)(createInputTypeName))),
582
571
  (0, graphql_transformer_common_1.makeInputValueDefinition)('condition', (0, graphql_transformer_common_1.makeNamedType)(conditionInput.name.value)),
583
572
  ];
584
- case graphql_transformer_interfaces_1.MutationFieldType.DELETE:
573
+ }
574
+ case graphql_transformer_interfaces_1.MutationFieldType.DELETE: {
585
575
  const deleteInputField = (0, graphql_types_1.makeDeleteInputField)(type, isSyncEnabled);
586
576
  const deleteInputTypeName = deleteInputField.name.value;
587
577
  if (!ctx.output.getType(deleteInputField.name.value)) {
@@ -591,7 +581,8 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
591
581
  (0, graphql_transformer_common_1.makeInputValueDefinition)('input', (0, graphql_transformer_common_1.makeNonNullType)((0, graphql_transformer_common_1.makeNamedType)(deleteInputTypeName))),
592
582
  (0, graphql_transformer_common_1.makeInputValueDefinition)('condition', (0, graphql_transformer_common_1.makeNamedType)(conditionInput.name.value)),
593
583
  ];
594
- case graphql_transformer_interfaces_1.MutationFieldType.UPDATE:
584
+ }
585
+ case graphql_transformer_interfaces_1.MutationFieldType.UPDATE: {
595
586
  const updateInputField = (0, graphql_types_1.makeUpdateInputField)(type, this.modelDirectiveConfig.get(type.name.value), knownModels, ctx.inputDocument, isSyncEnabled);
596
587
  const updateInputTypeName = updateInputField.name.value;
597
588
  if (!ctx.output.getType(updateInputField.name.value)) {
@@ -601,15 +592,14 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
601
592
  (0, graphql_transformer_common_1.makeInputValueDefinition)('input', (0, graphql_transformer_common_1.makeNonNullType)((0, graphql_transformer_common_1.makeNamedType)(updateInputTypeName))),
602
593
  (0, graphql_transformer_common_1.makeInputValueDefinition)('condition', (0, graphql_transformer_common_1.makeNamedType)(conditionInput.name.value)),
603
594
  ];
595
+ }
604
596
  case graphql_transformer_interfaces_1.SubscriptionFieldType.ON_CREATE:
605
597
  case graphql_transformer_interfaces_1.SubscriptionFieldType.ON_DELETE:
606
598
  case graphql_transformer_interfaces_1.SubscriptionFieldType.ON_UPDATE:
607
599
  return [];
608
- break;
609
600
  default:
610
601
  throw new Error('Unknown operation type');
611
602
  }
612
- return [];
613
603
  };
614
604
  this.getOutputType = (ctx, type, operation) => {
615
605
  let outputType;
@@ -624,11 +614,12 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
624
614
  outputType = type;
625
615
  break;
626
616
  case graphql_transformer_interfaces_1.QueryFieldType.SYNC:
627
- case graphql_transformer_interfaces_1.QueryFieldType.LIST:
617
+ case graphql_transformer_interfaces_1.QueryFieldType.LIST: {
628
618
  const isSyncEnabled = ctx.isProjectUsingDataStore();
629
619
  const connectionFieldName = (0, graphql_transformer_common_1.toPascalCase)(['Model', type.name.value, 'Connection']);
630
620
  outputType = (0, graphql_types_1.makeListQueryModel)(type, connectionFieldName, isSyncEnabled);
631
621
  break;
622
+ }
632
623
  default:
633
624
  throw new Error(`${operation.type} not supported for ${type.name.value}`);
634
625
  }
@@ -638,10 +629,11 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
638
629
  return outputType;
639
630
  };
640
631
  this.createNonModelInputs = (ctx, obj) => {
641
- for (let field of obj.fields || []) {
632
+ var _a;
633
+ ((_a = obj.fields) !== null && _a !== void 0 ? _a : []).forEach(field => {
642
634
  if (!(0, graphql_transformer_common_1.isScalar)(field.type)) {
643
635
  const def = ctx.output.getType((0, graphql_transformer_common_1.getBaseType)(field.type));
644
- if (def && def.kind == 'ObjectTypeDefinition' && !this.isModelField(def.name.value)) {
636
+ if (def && def.kind === 'ObjectTypeDefinition' && !this.isModelField(def.name.value)) {
645
637
  const name = this.getNonModelInputObjectName(def.name.value);
646
638
  if (!ctx.output.getType(name)) {
647
639
  const inputObj = graphql_transformer_core_1.InputObjectDefinitionWrapper.fromObject(name, def, ctx.inputDocument);
@@ -650,14 +642,10 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
650
642
  }
651
643
  }
652
644
  }
653
- }
654
- };
655
- this.isModelField = (name) => {
656
- return this.typesWithModelDirective.has(name) ? true : false;
657
- };
658
- this.getNonModelInputObjectName = (name) => {
659
- return `${name}Input`;
645
+ });
660
646
  };
647
+ this.isModelField = (name) => (!!this.typesWithModelDirective.has(name));
648
+ this.getNonModelInputObjectName = (name) => `${name}Input`;
661
649
  this.addAutoGeneratableFields = (ctx, name) => {
662
650
  var _a, _b;
663
651
  const modelDirectiveConfig = this.modelDirectiveConfig.get(name);
@@ -679,7 +667,7 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
679
667
  timestamps.push((_b = modelDirectiveConfig.timestamps.updatedAt) !== null && _b !== void 0 ? _b : 'updatedAt');
680
668
  }
681
669
  }
682
- for (let fieldName of timestamps) {
670
+ timestamps.forEach(fieldName => {
683
671
  if (typeWrapper.hasField(fieldName)) {
684
672
  const field = typeWrapper.getField(fieldName);
685
673
  if (!['String', 'AWSDateTime'].includes(field.getTypeName())) {
@@ -690,7 +678,7 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
690
678
  const field = graphql_transformer_core_1.FieldWrapper.create(fieldName, 'AWSDateTime');
691
679
  typeWrapper.addField(field);
692
680
  }
693
- }
681
+ });
694
682
  ctx.output.updateObject(typeWrapper.serialize());
695
683
  };
696
684
  this.addModelSyncFields = (ctx, name) => {
@@ -704,28 +692,75 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
704
692
  typeWrapper.addField(graphql_transformer_core_1.FieldWrapper.create('_lastChangedAt', 'AWSTimestamp'));
705
693
  ctx.output.updateObject(typeWrapper.serialize());
706
694
  };
707
- this.getSubscriptionToMutationsReverseMap = (ctx, def) => {
695
+ this.getSubscriptionToMutationsReverseMap = (def) => {
708
696
  const subscriptionToMutationsMap = {};
709
- const subscriptionFieldNames = this.getSubscriptionFieldNames(ctx, def);
710
- for (const subscriptionFieldName of subscriptionFieldNames) {
697
+ const subscriptionFieldNames = this.getSubscriptionFieldNames(def);
698
+ subscriptionFieldNames.forEach(subscriptionFieldName => {
711
699
  if (!subscriptionToMutationsMap[subscriptionFieldName.fieldName]) {
712
700
  subscriptionToMutationsMap[subscriptionFieldName.fieldName] = [];
713
701
  }
714
702
  subscriptionToMutationsMap[subscriptionFieldName.fieldName].push(subscriptionFieldName);
715
- }
703
+ });
716
704
  return subscriptionToMutationsMap;
717
705
  };
718
- this.getOptions = (options) => {
719
- return {
720
- EnableDeletionProtection: false,
721
- ...options,
722
- };
723
- };
724
- this.ensureValidSubscriptionName = (name) => {
725
- if (name.length <= 50)
726
- return name;
727
- return name.slice(0, 45) + (0, md5_1.default)(name).slice(0, 5);
728
- };
706
+ this.createIAMRole = (context, def, stack, tableName) => {
707
+ const roleName = context.resourceHelper.generateIAMRoleName(graphql_transformer_common_1.ModelResourceIDs.ModelTableIAMRoleID(def.name.value));
708
+ const role = new iam.Role(stack, graphql_transformer_common_1.ModelResourceIDs.ModelTableIAMRoleID(def.name.value), {
709
+ roleName,
710
+ assumedBy: new iam.ServicePrincipal('appsync.amazonaws.com'),
711
+ });
712
+ const amplifyDataStoreTableName = context.resourceHelper.generateTableName(graphql_transformer_common_1.SyncResourceIDs.syncTableName);
713
+ role.attachInlinePolicy(new iam.Policy(stack, 'DynamoDBAccess', {
714
+ statements: [
715
+ new iam.PolicyStatement({
716
+ effect: iam.Effect.ALLOW,
717
+ actions: [
718
+ 'dynamodb:BatchGetItem',
719
+ 'dynamodb:BatchWriteItem',
720
+ 'dynamodb:PutItem',
721
+ 'dynamodb:DeleteItem',
722
+ 'dynamodb:GetItem',
723
+ 'dynamodb:Scan',
724
+ 'dynamodb:Query',
725
+ 'dynamodb:UpdateItem',
726
+ ],
727
+ resources: [
728
+ cdk.Fn.sub('arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/${tablename}', {
729
+ tablename: tableName,
730
+ }),
731
+ cdk.Fn.sub('arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/${tablename}/*', {
732
+ tablename: tableName,
733
+ }),
734
+ ...(context.isProjectUsingDataStore()
735
+ ? [
736
+ cdk.Fn.sub('arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/${tablename}', {
737
+ tablename: amplifyDataStoreTableName,
738
+ }),
739
+ cdk.Fn.sub('arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/${tablename}/*', {
740
+ tablename: amplifyDataStoreTableName,
741
+ }),
742
+ ]
743
+ : []),
744
+ ],
745
+ }),
746
+ ],
747
+ }));
748
+ const syncConfig = graphql_transformer_core_1.SyncUtils.getSyncConfig(context, def.name.value);
749
+ if (syncConfig && graphql_transformer_core_1.SyncUtils.isLambdaSyncConfig(syncConfig)) {
750
+ role.attachInlinePolicy(graphql_transformer_core_1.SyncUtils.createSyncLambdaIAMPolicy(stack, syncConfig.LambdaConflictHandler.name, syncConfig.LambdaConflictHandler.region));
751
+ }
752
+ return role;
753
+ };
754
+ this.ensureModelSortDirectionEnum = (ctx) => {
755
+ if (!ctx.output.hasType('ModelSortDirection')) {
756
+ const modelSortDirection = (0, graphql_types_1.makeModelSortDirectionEnumObject)();
757
+ ctx.output.addEnum(modelSortDirection);
758
+ }
759
+ };
760
+ this.getOptions = (options) => ({
761
+ EnableDeletionProtection: false,
762
+ ...options,
763
+ });
729
764
  this.options = this.getOptions(options);
730
765
  }
731
766
  createModelTable(stack, def, context) {
@@ -786,7 +821,7 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
786
821
  },
787
822
  stream: aws_dynamodb_1.StreamViewType.NEW_AND_OLD_IMAGES,
788
823
  encryption: aws_dynamodb_1.TableEncryption.DEFAULT,
789
- removalPolicy: removalPolicy,
824
+ removalPolicy,
790
825
  ...(context.isProjectUsingDataStore() ? { timeToLiveAttribute: '_ttl' } : undefined),
791
826
  });
792
827
  const cfnTable = table.node.defaultChild;
@@ -838,60 +873,6 @@ class ModelTransformer extends graphql_transformer_core_1.TransformerModelBase {
838
873
  context.dataSources.add(def, dataSource);
839
874
  this.datasourceMap[def.name.value] = dataSource;
840
875
  }
841
- createIAMRole(context, def, stack, tableName) {
842
- const roleName = context.resourceHelper.generateIAMRoleName(graphql_transformer_common_1.ModelResourceIDs.ModelTableIAMRoleID(def.name.value));
843
- const role = new iam.Role(stack, graphql_transformer_common_1.ModelResourceIDs.ModelTableIAMRoleID(def.name.value), {
844
- roleName: roleName,
845
- assumedBy: new iam.ServicePrincipal('appsync.amazonaws.com'),
846
- });
847
- const amplifyDataStoreTableName = context.resourceHelper.generateTableName(graphql_transformer_common_1.SyncResourceIDs.syncTableName);
848
- role.attachInlinePolicy(new iam.Policy(stack, 'DynamoDBAccess', {
849
- statements: [
850
- new iam.PolicyStatement({
851
- effect: iam.Effect.ALLOW,
852
- actions: [
853
- 'dynamodb:BatchGetItem',
854
- 'dynamodb:BatchWriteItem',
855
- 'dynamodb:PutItem',
856
- 'dynamodb:DeleteItem',
857
- 'dynamodb:GetItem',
858
- 'dynamodb:Scan',
859
- 'dynamodb:Query',
860
- 'dynamodb:UpdateItem',
861
- ],
862
- resources: [
863
- cdk.Fn.sub('arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/${tablename}', {
864
- tablename: tableName,
865
- }),
866
- cdk.Fn.sub('arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/${tablename}/*', {
867
- tablename: tableName,
868
- }),
869
- ...(context.isProjectUsingDataStore()
870
- ? [
871
- cdk.Fn.sub('arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/${tablename}', {
872
- tablename: amplifyDataStoreTableName,
873
- }),
874
- cdk.Fn.sub('arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/${tablename}/*', {
875
- tablename: amplifyDataStoreTableName,
876
- }),
877
- ]
878
- : []),
879
- ],
880
- }),
881
- ],
882
- }));
883
- const syncConfig = graphql_transformer_core_1.SyncUtils.getSyncConfig(context, def.name.value);
884
- if (syncConfig && graphql_transformer_core_1.SyncUtils.isLambdaSyncConfig(syncConfig)) {
885
- role.attachInlinePolicy(graphql_transformer_core_1.SyncUtils.createSyncLambdaIAMPolicy(stack, syncConfig.LambdaConflictHandler.name, syncConfig.LambdaConflictHandler.region));
886
- }
887
- return role;
888
- }
889
- ensureModelSortDirectionEnum(ctx) {
890
- if (!ctx.output.hasType('ModelSortDirection')) {
891
- const modelSortDirection = (0, graphql_types_1.makeModelSortDirectionEnumObject)();
892
- ctx.output.addEnum(modelSortDirection);
893
- }
894
- }
895
876
  }
896
877
  exports.ModelTransformer = ModelTransformer;
897
878
  //# sourceMappingURL=graphql-model-transformer.js.map