@aws-amplify/graphql-model-transformer 1.3.6 → 1.3.8

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 (155) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/lib/definitions.d.ts.map +1 -1
  3. package/lib/definitions.js +28 -2
  4. package/lib/definitions.js.map +1 -1
  5. package/lib/graphql-model-transformer.d.ts.map +1 -1
  6. package/lib/graphql-model-transformer.js +37 -35
  7. package/lib/graphql-model-transformer.js.map +1 -1
  8. package/lib/graphql-types/common.d.ts.map +1 -1
  9. package/lib/graphql-types/common.js +16 -18
  10. package/lib/graphql-types/common.js.map +1 -1
  11. package/lib/graphql-types/mutation.js +12 -12
  12. package/lib/graphql-types/mutation.js.map +1 -1
  13. package/lib/rds-lambda.zip +0 -0
  14. package/lib/resolvers/common.d.ts.map +1 -1
  15. package/lib/resolvers/common.js.map +1 -1
  16. package/lib/resolvers/dynamodb/mutation.d.ts.map +1 -1
  17. package/lib/resolvers/dynamodb/mutation.js +10 -8
  18. package/lib/resolvers/dynamodb/mutation.js.map +1 -1
  19. package/lib/resolvers/dynamodb/query.d.ts.map +1 -1
  20. package/lib/resolvers/dynamodb/query.js +1 -4
  21. package/lib/resolvers/dynamodb/query.js.map +1 -1
  22. package/lib/resolvers/dynamodb/subscriptions.d.ts.map +1 -1
  23. package/lib/resolvers/dynamodb/subscriptions.js.map +1 -1
  24. package/lib/resolvers/generators/rds-vtl-generator.d.ts.map +1 -1
  25. package/lib/resolvers/generators/rds-vtl-generator.js.map +1 -1
  26. package/lib/resolvers/generators/vtl-generator.d.ts.map +1 -1
  27. package/lib/resolvers/index.d.ts.map +1 -1
  28. package/lib/resolvers/index.js.map +1 -1
  29. package/lib/resolvers/rds/mutation.d.ts.map +1 -1
  30. package/lib/resolvers/rds/mutation.js.map +1 -1
  31. package/lib/resolvers/rds/query.d.ts.map +1 -1
  32. package/lib/resolvers/rds/query.js.map +1 -1
  33. package/lib/resolvers/rds/resolver.d.ts.map +1 -1
  34. package/lib/resolvers/rds/resolver.js +1 -1
  35. package/lib/resolvers/rds/resolver.js.map +1 -1
  36. package/lib/resources/dynamo-model-resource-generator.d.ts.map +1 -1
  37. package/lib/resources/dynamo-model-resource-generator.js.map +1 -1
  38. package/lib/resources/model-resource-generator.d.ts.map +1 -1
  39. package/lib/resources/model-resource-generator.js +12 -4
  40. package/lib/resources/model-resource-generator.js.map +1 -1
  41. package/lib/resources/rds-model-resource-generator.d.ts.map +1 -1
  42. package/lib/resources/rds-model-resource-generator.js +1 -1
  43. package/lib/resources/rds-model-resource-generator.js.map +1 -1
  44. package/package.json +7 -7
  45. package/rds-lambda/node_modules/.package-lock.json +215 -227
  46. package/rds-lambda/node_modules/@aws-sdk/client-ssm/package.json +17 -18
  47. package/rds-lambda/node_modules/@aws-sdk/client-sso/package.json +14 -15
  48. package/rds-lambda/node_modules/@aws-sdk/client-sso-oidc/package.json +14 -15
  49. package/rds-lambda/node_modules/@aws-sdk/client-sts/package.json +17 -18
  50. package/rds-lambda/node_modules/@aws-sdk/credential-provider-env/package.json +2 -2
  51. package/rds-lambda/node_modules/@aws-sdk/credential-provider-ini/package.json +6 -6
  52. package/rds-lambda/node_modules/@aws-sdk/credential-provider-node/package.json +7 -7
  53. package/rds-lambda/node_modules/@aws-sdk/credential-provider-process/package.json +2 -2
  54. package/rds-lambda/node_modules/@aws-sdk/credential-provider-sso/package.json +4 -4
  55. package/rds-lambda/node_modules/@aws-sdk/credential-provider-web-identity/package.json +2 -2
  56. package/rds-lambda/node_modules/@aws-sdk/middleware-host-header/package.json +2 -2
  57. package/rds-lambda/node_modules/@aws-sdk/middleware-logger/package.json +2 -2
  58. package/rds-lambda/node_modules/@aws-sdk/middleware-recursion-detection/package.json +2 -2
  59. package/rds-lambda/node_modules/@aws-sdk/middleware-sdk-sts/package.json +3 -3
  60. package/rds-lambda/node_modules/@aws-sdk/middleware-signing/package.json +2 -2
  61. package/rds-lambda/node_modules/@aws-sdk/middleware-user-agent/package.json +3 -3
  62. package/rds-lambda/node_modules/@aws-sdk/token-providers/package.json +3 -3
  63. package/rds-lambda/node_modules/@aws-sdk/types/package.json +2 -1
  64. package/rds-lambda/node_modules/@aws-sdk/util-endpoints/package.json +2 -2
  65. package/rds-lambda/node_modules/@aws-sdk/util-user-agent-browser/package.json +2 -2
  66. package/rds-lambda/node_modules/@aws-sdk/util-user-agent-node/package.json +2 -2
  67. package/rds-lambda/node_modules/@babel/compat-data/data/plugin-bugfixes.json +2 -0
  68. package/rds-lambda/node_modules/@babel/compat-data/data/plugins.json +8 -0
  69. package/rds-lambda/node_modules/@babel/compat-data/package.json +1 -1
  70. package/rds-lambda/node_modules/@babel/core/package.json +7 -7
  71. package/rds-lambda/node_modules/@babel/generator/package.json +2 -2
  72. package/rds-lambda/node_modules/@babel/helper-compilation-targets/package.json +5 -5
  73. package/rds-lambda/node_modules/@babel/helper-module-transforms/README.md +1 -1
  74. package/rds-lambda/node_modules/@babel/helper-module-transforms/package.json +10 -6
  75. package/rds-lambda/node_modules/@types/jest/README.md +1 -1
  76. package/rds-lambda/node_modules/@types/jest/package.json +2 -2
  77. package/rds-lambda/node_modules/@types/node/README.md +1 -1
  78. package/rds-lambda/node_modules/@types/node/package.json +2 -2
  79. package/rds-lambda/node_modules/caniuse-lite/package.json +1 -1
  80. package/rds-lambda/node_modules/commander/Readme.md +7 -2
  81. package/rds-lambda/node_modules/commander/package.json +17 -17
  82. package/rds-lambda/node_modules/electron-to-chromium/full-chromium-versions.json +1 -1
  83. package/rds-lambda/node_modules/electron-to-chromium/full-versions.json +1 -1
  84. package/rds-lambda/node_modules/electron-to-chromium/package.json +1 -1
  85. package/rds-lambda/node_modules/electron-to-chromium/versions.json +1 -1
  86. package/rds-lambda/node_modules/jest-snapshot/node_modules/semver/package.json +3 -3
  87. package/rds-lambda/node_modules/knex/CHANGELOG.md +63 -21
  88. package/rds-lambda/node_modules/knex/CONTRIBUTING.md +1 -1
  89. package/rds-lambda/node_modules/knex/LICENSE +22 -22
  90. package/rds-lambda/node_modules/knex/README.md +32 -31
  91. package/rds-lambda/node_modules/knex/UPGRADING.md +94 -82
  92. package/rds-lambda/node_modules/knex/knex.mjs +11 -0
  93. package/rds-lambda/node_modules/knex/lib/dialects/oracle/DEAD_CODE.md +3 -3
  94. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/cjs.stub +15 -15
  95. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/coffee.stub +13 -13
  96. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/eg.stub +14 -14
  97. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/js-schema.stub +22 -22
  98. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/js.stub +22 -22
  99. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/knexfile-coffee.stub +34 -34
  100. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/knexfile-eg.stub +43 -43
  101. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/knexfile-js.stub +47 -47
  102. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/knexfile-ls.stub +35 -35
  103. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/knexfile-ts.stub +47 -47
  104. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/ls.stub +14 -14
  105. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/mjs.stub +23 -23
  106. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/ts-schema.stub +21 -21
  107. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/ts.stub +21 -21
  108. package/rds-lambda/node_modules/knex/lib/migrations/seed/stub/coffee.stub +9 -9
  109. package/rds-lambda/node_modules/knex/lib/migrations/seed/stub/eg.stub +11 -11
  110. package/rds-lambda/node_modules/knex/lib/migrations/seed/stub/js.stub +13 -13
  111. package/rds-lambda/node_modules/knex/lib/migrations/seed/stub/ls.stub +11 -11
  112. package/rds-lambda/node_modules/knex/lib/migrations/seed/stub/mjs.stub +12 -12
  113. package/rds-lambda/node_modules/knex/lib/migrations/seed/stub/ts.stub +13 -13
  114. package/rds-lambda/node_modules/knex/package.json +21 -18
  115. package/rds-lambda/node_modules/knex/scripts/docker-compose.yml +2 -2
  116. package/rds-lambda/node_modules/knex/scripts/next-release-howto.md +1 -1
  117. package/rds-lambda/node_modules/knex/scripts/oracledb-install-driver-libs.sh +82 -82
  118. package/rds-lambda/node_modules/knex/scripts/release.sh +36 -34
  119. package/rds-lambda/node_modules/knex/scripts/stress-test/README.txt +18 -18
  120. package/rds-lambda/node_modules/knex/scripts/stress-test/docker-compose.yml +16 -16
  121. package/rds-lambda/node_modules/pg-connection-string/package.json +2 -2
  122. package/rds-lambda/node_modules/semver/package.json +19 -9
  123. package/rds-lambda/node_modules/ts-jest/node_modules/semver/package.json +3 -3
  124. package/rds-lambda/package-lock.json +215 -227
  125. package/src/__tests__/model-transformer.test.ts +130 -139
  126. package/src/__tests__/test-utils/helpers.ts +1 -1
  127. package/src/__tests__/test-utils/rds_utils.test.ts +29 -68
  128. package/src/definitions.ts +28 -2
  129. package/src/graphql-model-transformer.ts +72 -74
  130. package/src/graphql-types/common.ts +41 -41
  131. package/src/graphql-types/mutation.ts +12 -12
  132. package/src/resolvers/common.ts +1 -12
  133. package/src/resolvers/dynamodb/mutation.ts +16 -13
  134. package/src/resolvers/dynamodb/query.ts +6 -12
  135. package/src/resolvers/dynamodb/subscriptions.ts +1 -3
  136. package/src/resolvers/generators/rds-vtl-generator.ts +1 -4
  137. package/src/resolvers/generators/vtl-generator.ts +5 -5
  138. package/src/resolvers/index.ts +1 -3
  139. package/src/resolvers/rds/mutation.ts +17 -6
  140. package/src/resolvers/rds/query.ts +4 -12
  141. package/src/resolvers/rds/resolver.ts +8 -13
  142. package/src/resources/dynamo-model-resource-generator.ts +12 -22
  143. package/src/resources/model-resource-generator.ts +54 -24
  144. package/src/resources/rds-model-resource-generator.ts +9 -23
  145. package/tsconfig.json +4 -4
  146. package/tsconfig.tsbuildinfo +1 -1
  147. package/rds-lambda/node_modules/@nicolo-ribaudo/semver-v6/CHANGELOG.md +0 -70
  148. package/rds-lambda/node_modules/@nicolo-ribaudo/semver-v6/LICENSE +0 -15
  149. package/rds-lambda/node_modules/@nicolo-ribaudo/semver-v6/README.md +0 -454
  150. package/rds-lambda/node_modules/@nicolo-ribaudo/semver-v6/package.json +0 -28
  151. package/rds-lambda/node_modules/@nicolo-ribaudo/semver-v6/range.bnf +0 -16
  152. package/rds-lambda/node_modules/pg/node_modules/pg-connection-string/LICENSE +0 -21
  153. package/rds-lambda/node_modules/pg/node_modules/pg-connection-string/README.md +0 -77
  154. package/rds-lambda/node_modules/pg/node_modules/pg-connection-string/package.json +0 -40
  155. package/rds-lambda/node_modules/semver/CHANGELOG.md +0 -70
@@ -5,8 +5,34 @@ export const FLOAT_CONDITIONS = ['ne', 'eq', 'le', 'lt', 'ge', 'gt', 'between'];
5
5
  export const BOOLEAN_CONDITIONS = ['ne', 'eq'];
6
6
  export const SIZE_CONDITIONS = ['ne', 'eq', 'le', 'lt', 'ge', 'gt', 'between'];
7
7
 
8
- export const SUBSCRIPTION_STRING_CONDITIONS = ['ne', 'eq', 'le', 'lt', 'ge', 'gt', 'contains', 'notContains', 'between', 'beginsWith', 'in', 'notIn'];
9
- export const SUBSCRIPTION_ID_CONDITIONS = ['ne', 'eq', 'le', 'lt', 'ge', 'gt', 'contains', 'notContains', 'between', 'beginsWith', 'in', 'notIn'];
8
+ export const SUBSCRIPTION_STRING_CONDITIONS = [
9
+ 'ne',
10
+ 'eq',
11
+ 'le',
12
+ 'lt',
13
+ 'ge',
14
+ 'gt',
15
+ 'contains',
16
+ 'notContains',
17
+ 'between',
18
+ 'beginsWith',
19
+ 'in',
20
+ 'notIn',
21
+ ];
22
+ export const SUBSCRIPTION_ID_CONDITIONS = [
23
+ 'ne',
24
+ 'eq',
25
+ 'le',
26
+ 'lt',
27
+ 'ge',
28
+ 'gt',
29
+ 'contains',
30
+ 'notContains',
31
+ 'between',
32
+ 'beginsWith',
33
+ 'in',
34
+ 'notIn',
35
+ ];
10
36
  export const SUBSCRIPTION_INT_CONDITIONS = ['ne', 'eq', 'le', 'lt', 'ge', 'gt', 'between', 'in', 'notIn'];
11
37
  export const SUBSCRIPTION_FLOAT_CONDITIONS = ['ne', 'eq', 'le', 'lt', 'ge', 'gt', 'between', 'in', 'notIn'];
12
38
  export const SUBSCRIPTION_BOOLEAN_CONDITIONS = ['ne', 'eq'];
@@ -28,12 +28,7 @@ import {
28
28
  TransformerTransformSchemaStepContextProvider,
29
29
  TransformerValidationStepContextProvider,
30
30
  } from '@aws-amplify/graphql-transformer-interfaces';
31
- import {
32
- ITable,
33
- StreamViewType,
34
- Table,
35
- TableEncryption,
36
- } from 'aws-cdk-lib/aws-dynamodb';
31
+ import { ITable, StreamViewType, Table, TableEncryption } from 'aws-cdk-lib/aws-dynamodb';
37
32
  import * as iam from 'aws-cdk-lib/aws-iam';
38
33
  import * as cdk from 'aws-cdk-lib';
39
34
  import {
@@ -128,7 +123,7 @@ export class ModelTransformer extends TransformerModelBase implements Transforme
128
123
  private resolverMap: Record<string, TransformerResolverProvider> = {};
129
124
  private typesWithModelDirective: Set<string> = new Set();
130
125
  private resourceGeneratorMap: Map<string, ModelResourceGenerator> = new Map<string, ModelResourceGenerator>();
131
- private modelToDatasourceMap: Map<string, DatasourceType> = new Map<string, DatasourceType>()
126
+ private modelToDatasourceMap: Map<string, DatasourceType> = new Map<string, DatasourceType>();
132
127
  /**
133
128
  * A Map to hold the directive configuration
134
129
  */
@@ -162,9 +157,10 @@ export class ModelTransformer extends TransformerModelBase implements Transforme
162
157
  };
163
158
 
164
159
  object = (definition: ObjectTypeDefinitionNode, directive: DirectiveNode, ctx: TransformerSchemaVisitStepContextProvider): void => {
165
- const isTypeNameReserved = definition.name.value === ctx.output.getQueryTypeName()
166
- || definition.name.value === ctx.output.getMutationTypeName()
167
- || definition.name.value === ctx.output.getSubscriptionTypeName();
160
+ const isTypeNameReserved =
161
+ definition.name.value === ctx.output.getQueryTypeName() ||
162
+ definition.name.value === ctx.output.getMutationTypeName() ||
163
+ definition.name.value === ctx.output.getSubscriptionTypeName();
168
164
 
169
165
  const isDynamoDB = (ctx.modelToDatasourceMap.get(definition.name.value) ?? DDB_DATASOURCE_TYPE).dbType === DDB_DB_TYPE;
170
166
  if (isTypeNameReserved) {
@@ -180,31 +176,36 @@ export class ModelTransformer extends TransformerModelBase implements Transforme
180
176
  }
181
177
 
182
178
  const directiveWrapped: DirectiveWrapper = new DirectiveWrapper(directive);
183
- const options = directiveWrapped.getArguments({
184
- queries: {
185
- get: getFieldNameFor('get', typeName),
186
- list: getFieldNameFor('list', typeName),
187
- ...(ctx.isProjectUsingDataStore() ? { sync: getFieldNameFor('sync', typeName) } : undefined),
188
- },
189
- mutations: {
190
- create: getFieldNameFor('create', typeName),
191
- update: getFieldNameFor('update', typeName),
192
- delete: getFieldNameFor('delete', typeName),
193
- },
194
- subscriptions: {
195
- level: SubscriptionLevel.on,
196
- onCreate: [getFieldNameFor('onCreate', typeName)],
197
- onDelete: [getFieldNameFor('onDelete', typeName)],
198
- onUpdate: [getFieldNameFor('onUpdate', typeName)],
199
- },
200
- timestamps: isDynamoDB ? {
201
- createdAt: 'createdAt',
202
- updatedAt: 'updatedAt',
203
- } : {
204
- createdAt: undefined,
205
- updatedAt: undefined,
179
+ const options = directiveWrapped.getArguments(
180
+ {
181
+ queries: {
182
+ get: getFieldNameFor('get', typeName),
183
+ list: getFieldNameFor('list', typeName),
184
+ ...(ctx.isProjectUsingDataStore() ? { sync: getFieldNameFor('sync', typeName) } : undefined),
185
+ },
186
+ mutations: {
187
+ create: getFieldNameFor('create', typeName),
188
+ update: getFieldNameFor('update', typeName),
189
+ delete: getFieldNameFor('delete', typeName),
190
+ },
191
+ subscriptions: {
192
+ level: SubscriptionLevel.on,
193
+ onCreate: [getFieldNameFor('onCreate', typeName)],
194
+ onDelete: [getFieldNameFor('onDelete', typeName)],
195
+ onUpdate: [getFieldNameFor('onUpdate', typeName)],
196
+ },
197
+ timestamps: isDynamoDB
198
+ ? {
199
+ createdAt: 'createdAt',
200
+ updatedAt: 'updatedAt',
201
+ }
202
+ : {
203
+ createdAt: undefined,
204
+ updatedAt: undefined,
205
+ },
206
206
  },
207
- }, generateGetArgumentsInput(ctx.transformParameters));
207
+ generateGetArgumentsInput(ctx.transformParameters),
208
+ );
208
209
 
209
210
  // This property override is specifically to address parity between V1 and V2 when the FF is disabled
210
211
  // If one subscription is defined, just let the others go to null without FF. But if public and none defined, default all subs
@@ -224,8 +225,10 @@ export class ModelTransformer extends TransformerModelBase implements Transforme
224
225
  },
225
226
  generateGetArgumentsInput(ctx.transformParameters),
226
227
  );
227
- if (baseArgs?.subscriptions?.level === SubscriptionLevel.public
228
- && !(baseArgs?.subscriptions?.onCreate || baseArgs?.subscriptions?.onDelete || baseArgs?.subscriptions?.onUpdate)) {
228
+ if (
229
+ baseArgs?.subscriptions?.level === SubscriptionLevel.public &&
230
+ !(baseArgs?.subscriptions?.onCreate || baseArgs?.subscriptions?.onDelete || baseArgs?.subscriptions?.onUpdate)
231
+ ) {
229
232
  options.subscriptions = { level: SubscriptionLevel.public, ...publicSubscriptionDefaults };
230
233
  }
231
234
  }
@@ -255,7 +258,7 @@ export class ModelTransformer extends TransformerModelBase implements Transforme
255
258
  };
256
259
 
257
260
  prepare = (context: TransformerPrepareStepContextProvider): void => {
258
- this.typesWithModelDirective.forEach(modelTypeName => {
261
+ this.typesWithModelDirective.forEach((modelTypeName) => {
259
262
  const type = context.output.getObject(modelTypeName);
260
263
  context.providerRegistry.registerDataSourceProvider(type!, this);
261
264
  });
@@ -266,9 +269,9 @@ export class ModelTransformer extends TransformerModelBase implements Transforme
266
269
  addModelConditionInputs(ctx);
267
270
 
268
271
  this.ensureModelSortDirectionEnum(ctx);
269
- this.typesWithModelDirective.forEach(type => {
272
+ this.typesWithModelDirective.forEach((type) => {
270
273
  const def = ctx.output.getObject(type)!;
271
- const hasAuth = def.directives!.some(dir => dir.name.value === 'auth');
274
+ const hasAuth = def.directives!.some((dir) => dir.name.value === 'auth');
272
275
 
273
276
  // add Non Model type inputs
274
277
  this.createNonModelInputs(ctx, def);
@@ -295,15 +298,15 @@ export class ModelTransformer extends TransformerModelBase implements Transforme
295
298
  const apiKeyDirArray = [makeDirective(API_KEY_DIRECTIVE, [])];
296
299
  extendTypeWithDirectives(ctx, def.name.value, apiKeyDirArray);
297
300
  propagateApiKeyToNestedTypes(ctx as TransformerContextProvider, def, new Set<string>());
298
- queryFields.forEach(operationField => {
301
+ queryFields.forEach((operationField) => {
299
302
  const operationName = operationField.name.value;
300
303
  addDirectivesToOperation(ctx, ctx.output.getQueryTypeName()!, operationName, apiKeyDirArray);
301
304
  });
302
- mutationFields.forEach(operationField => {
305
+ mutationFields.forEach((operationField) => {
303
306
  const operationName = operationField.name.value;
304
307
  addDirectivesToOperation(ctx, ctx.output.getMutationTypeName()!, operationName, apiKeyDirArray);
305
308
  });
306
- subscriptionsFields.forEach(operationField => {
309
+ subscriptionsFields.forEach((operationField) => {
307
310
  const operationName = operationField.name.value;
308
311
  addDirectivesToOperation(ctx, ctx.output.getSubscriptionTypeName()!, operationName, apiKeyDirArray);
309
312
  });
@@ -373,14 +376,9 @@ export class ModelTransformer extends TransformerModelBase implements Transforme
373
376
  const dbInfo = ctx.modelToDatasourceMap.get(type.name.value) ?? DDB_DATASOURCE_TYPE;
374
377
  if (dbInfo?.dbType && this.resourceGeneratorMap.has(dbInfo.dbType)) {
375
378
  // Coercing this into being defined as we're running a check on it first
376
- return this.resourceGeneratorMap.get(dbInfo.dbType)!.generateUpdateResolver(
377
- ctx,
378
- type,
379
- modelDirectiveConfig,
380
- typeName,
381
- fieldName,
382
- resolverLogicalId,
383
- );
379
+ return this.resourceGeneratorMap
380
+ .get(dbInfo.dbType)!
381
+ .generateUpdateResolver(ctx, type, modelDirectiveConfig, typeName, fieldName, resolverLogicalId);
384
382
  }
385
383
  throw new Error(`DB Type undefined or resource generator not provided for ${type.name.value}`);
386
384
  };
@@ -468,7 +466,7 @@ export class ModelTransformer extends TransformerModelBase implements Transforme
468
466
  [SubscriptionFieldType.ON_UPDATE]: MutationFieldType.UPDATE,
469
467
  [SubscriptionFieldType.ON_DELETE]: MutationFieldType.DELETE,
470
468
  };
471
- const mutation = Array.from(mutationMap).find(m => m.type === mutationToSubscriptionTypeMap[subscriptionType]);
469
+ const mutation = Array.from(mutationMap).find((m) => m.type === mutationToSubscriptionTypeMap[subscriptionType]);
472
470
  if (mutation) {
473
471
  return mutation.fieldName;
474
472
  }
@@ -478,7 +476,7 @@ export class ModelTransformer extends TransformerModelBase implements Transforme
478
476
  private createQueryFields = (ctx: TransformerValidationStepContextProvider, def: ObjectTypeDefinitionNode): FieldDefinitionNode[] => {
479
477
  const queryFields: FieldDefinitionNode[] = [];
480
478
  const queryFieldNames = this.getQueryFieldNames(def!);
481
- queryFieldNames.forEach(queryField => {
479
+ queryFieldNames.forEach((queryField) => {
482
480
  const outputType = this.getOutputType(ctx, def, queryField);
483
481
  const args = this.getInputs(ctx, def!, {
484
482
  fieldName: queryField.fieldName,
@@ -494,7 +492,7 @@ export class ModelTransformer extends TransformerModelBase implements Transforme
494
492
  private createMutationFields = (ctx: TransformerValidationStepContextProvider, def: ObjectTypeDefinitionNode): FieldDefinitionNode[] => {
495
493
  const mutationFields: FieldDefinitionNode[] = [];
496
494
  const mutationFieldNames = this.getMutationFieldNames(def!);
497
- mutationFieldNames.forEach(mutationField => {
495
+ mutationFieldNames.forEach((mutationField) => {
498
496
  const args = this.getInputs(ctx, def!, {
499
497
  fieldName: mutationField.fieldName,
500
498
  typeName: mutationField.typeName,
@@ -516,19 +514,21 @@ export class ModelTransformer extends TransformerModelBase implements Transforme
516
514
 
517
515
  const subscriptionFields: FieldDefinitionNode[] = [];
518
516
 
519
- Object.keys(subscriptionToMutationsMap).forEach(subscriptionFieldName => {
517
+ Object.keys(subscriptionToMutationsMap).forEach((subscriptionFieldName) => {
520
518
  const maps = subscriptionToMutationsMap[subscriptionFieldName];
521
519
 
522
520
  const args: InputValueDefinitionNode[] = [];
523
- maps.map(it => args.push(
524
- ...this.getInputs(ctx, def!, {
525
- fieldName: it.fieldName,
526
- typeName: it.typeName,
527
- type: it.type,
528
- }),
529
- ));
521
+ maps.map((it) =>
522
+ args.push(
523
+ ...this.getInputs(ctx, def!, {
524
+ fieldName: it.fieldName,
525
+ typeName: it.typeName,
526
+ type: it.type,
527
+ }),
528
+ ),
529
+ );
530
530
 
531
- const mutationNames = maps.map(it => this.getMutationName(it.type, mutationFields));
531
+ const mutationNames = maps.map((it) => this.getMutationName(it.type, mutationFields));
532
532
 
533
533
  // Todo use directive wrapper to build the directive node
534
534
  const directive = makeDirective('aws_subscribe', [makeArgument('mutations', makeValueNode(mutationNames))]);
@@ -601,7 +601,7 @@ export class ModelTransformer extends TransformerModelBase implements Transforme
601
601
  const filterInputs = createEnumModelFilters(ctx, type);
602
602
  conditionInput = makeMutationConditionInput(ctx, conditionTypeName, type);
603
603
  filterInputs.push(conditionInput);
604
- filterInputs.forEach(input => {
604
+ filterInputs.forEach((input) => {
605
605
  const conditionInputName = input.name.value;
606
606
  if (!ctx.output.getType(conditionInputName)) {
607
607
  ctx.output.addInput(input);
@@ -616,7 +616,7 @@ export class ModelTransformer extends TransformerModelBase implements Transforme
616
616
  const filterInputName = toPascalCase(['Model', type.name.value, 'FilterInput']);
617
617
  const filterInputs = createEnumModelFilters(ctx, type);
618
618
  filterInputs.push(makeListQueryFilterInput(ctx, filterInputName, type));
619
- filterInputs.forEach(input => {
619
+ filterInputs.forEach((input) => {
620
620
  const conditionInputName = input.name.value;
621
621
  if (!ctx.output.getType(conditionInputName)) {
622
622
  ctx.output.addInput(input);
@@ -694,16 +694,14 @@ export class ModelTransformer extends TransformerModelBase implements Transforme
694
694
  const filterInputName = toPascalCase(['ModelSubscription', type.name.value, 'FilterInput']);
695
695
  const filterInputs = createEnumModelFilters(ctx, type);
696
696
  filterInputs.push(makeSubscriptionQueryFilterInput(ctx, filterInputName, type));
697
- filterInputs.forEach(input => {
697
+ filterInputs.forEach((input) => {
698
698
  const conditionInputName = input.name.value;
699
699
  if (!ctx.output.getType(conditionInputName)) {
700
700
  ctx.output.addInput(input);
701
701
  }
702
702
  });
703
703
 
704
- return [
705
- makeInputValueDefinition('filter', makeNamedType(filterInputName)),
706
- ];
704
+ return [makeInputValueDefinition('filter', makeNamedType(filterInputName))];
707
705
 
708
706
  default:
709
707
  throw new Error('Unknown operation type');
@@ -752,10 +750,10 @@ export class ModelTransformer extends TransformerModelBase implements Transforme
752
750
  createIAMRole = (context: TransformerContextProvider, def: ObjectTypeDefinitionNode, stack: cdk.Stack, tableName: string): iam.Role => {
753
751
  const ddbGenerator = this.resourceGeneratorMap.get(DDB_DB_TYPE) as DynamoModelResourceGenerator;
754
752
  return ddbGenerator.createIAMRole(context, def, stack, tableName);
755
- }
753
+ };
756
754
 
757
755
  private createNonModelInputs = (ctx: TransformerTransformSchemaStepContextProvider, obj: ObjectTypeDefinitionNode): void => {
758
- (obj.fields ?? []).forEach(field => {
756
+ (obj.fields ?? []).forEach((field) => {
759
757
  if (!isScalar(field.type)) {
760
758
  const def = ctx.output.getType(getBaseType(field.type));
761
759
  if (def && def.kind === 'ObjectTypeDefinition' && !this.isModelField(def.name.value)) {
@@ -770,7 +768,7 @@ export class ModelTransformer extends TransformerModelBase implements Transforme
770
768
  });
771
769
  };
772
770
 
773
- private isModelField = (name: string): boolean => (!!this.typesWithModelDirective.has(name));
771
+ private isModelField = (name: string): boolean => !!this.typesWithModelDirective.has(name);
774
772
 
775
773
  private getNonModelInputObjectName = (name: string): string => `${toUpper(name)}Input`;
776
774
 
@@ -803,7 +801,7 @@ export class ModelTransformer extends TransformerModelBase implements Transforme
803
801
  }
804
802
  }
805
803
 
806
- timestamps.forEach(fieldName => {
804
+ timestamps.forEach((fieldName) => {
807
805
  if (typeWrapper.hasField(fieldName)) {
808
806
  const field = typeWrapper.getField(fieldName);
809
807
  if (!['String', 'AWSDateTime'].includes(field.getTypeName())) {
@@ -838,7 +836,7 @@ export class ModelTransformer extends TransformerModelBase implements Transforme
838
836
  const subscriptionToMutationsMap: { [subField: string]: { fieldName: string; typeName: string; type: SubscriptionFieldType }[] } = {};
839
837
  const subscriptionFieldNames = this.getSubscriptionFieldNames(def);
840
838
 
841
- subscriptionFieldNames.forEach(subscriptionFieldName => {
839
+ subscriptionFieldNames.forEach((subscriptionFieldName) => {
842
840
  if (!subscriptionToMutationsMap[subscriptionFieldName.fieldName]) {
843
841
  subscriptionToMutationsMap[subscriptionFieldName.fieldName] = [];
844
842
  }
@@ -854,7 +852,7 @@ export class ModelTransformer extends TransformerModelBase implements Transforme
854
852
 
855
853
  ctx.output.addEnum(modelSortDirection);
856
854
  }
857
- }
855
+ };
858
856
 
859
857
  private getOptions = (options: ModelTransformerOptions): ModelTransformerOptions => ({
860
858
  EnableDeletionProtection: false,
@@ -64,11 +64,11 @@ export const makeConditionFilterInput = (
64
64
  object: ObjectTypeDefinitionNode,
65
65
  ): InputObjectDefinitionWrapper => {
66
66
  const input = InputObjectDefinitionWrapper.create(name);
67
-
68
- addSimpleFieldsConditionsForListing(input, object, ctx)
67
+
68
+ addSimpleFieldsConditionsForListing(input, object, ctx);
69
69
  addListTypeConditions(input, name);
70
- addNonListTypeConditions(input, name)
71
- addDatastoreConditions(input, ctx)
70
+ addNonListTypeConditions(input, name);
71
+ addDatastoreConditions(input, ctx);
72
72
 
73
73
  return input;
74
74
  };
@@ -91,7 +91,7 @@ export const makeSubscriptionFilterInput = (
91
91
  const conditionTypeName = ModelResourceIDs.ModelFilterScalarInputTypeName(
92
92
  isEnumType ? 'String' : field.getTypeName(),
93
93
  !supportsConditions,
94
- true
94
+ true,
95
95
  );
96
96
  const inputField = InputFieldWrapper.create(field.name, conditionTypeName, true);
97
97
  input.addField(inputField);
@@ -99,7 +99,7 @@ export const makeSubscriptionFilterInput = (
99
99
  }
100
100
 
101
101
  addListTypeConditions(input, name);
102
- addDatastoreConditions(input, ctx)
102
+ addDatastoreConditions(input, ctx);
103
103
 
104
104
  return input;
105
105
  };
@@ -113,7 +113,7 @@ export const makeSubscriptionFilterInput = (
113
113
  const addSimpleFieldsConditionsForListing = (
114
114
  input: InputObjectDefinitionWrapper,
115
115
  object: ObjectTypeDefinitionNode,
116
- ctx: TransformerTransformSchemaStepContextProvider
116
+ ctx: TransformerTransformSchemaStepContextProvider,
117
117
  ) => {
118
118
  const supportsConditions = true;
119
119
  const wrappedObject = new ObjectDefinitionWrapper(object);
@@ -121,16 +121,17 @@ const addSimpleFieldsConditionsForListing = (
121
121
  for (const field of wrappedObject.fields) {
122
122
  const fieldType = ctx.output.getType(field.getTypeName());
123
123
  const isEnumType = fieldType && fieldType.kind === Kind.ENUM_TYPE_DEFINITION;
124
-
124
+
125
125
  if (field.isScalar() || isEnumType) {
126
- const conditionTypeName = isEnumType && field.isList()
127
- ? ModelResourceIDs.ModelFilterListInputTypeName(field.getTypeName(), !supportsConditions)
128
- : ModelResourceIDs.ModelFilterScalarInputTypeName(field.getTypeName(), !supportsConditions);
126
+ const conditionTypeName =
127
+ isEnumType && field.isList()
128
+ ? ModelResourceIDs.ModelFilterListInputTypeName(field.getTypeName(), !supportsConditions)
129
+ : ModelResourceIDs.ModelFilterScalarInputTypeName(field.getTypeName(), !supportsConditions);
129
130
  const inputField = InputFieldWrapper.create(field.name, conditionTypeName, true);
130
131
  input.addField(inputField);
131
132
  }
132
133
  }
133
- }
134
+ };
134
135
 
135
136
  /**
136
137
  * Make additional conditions of non-list type
@@ -139,10 +140,10 @@ const addSimpleFieldsConditionsForListing = (
139
140
  */
140
141
  const addNonListTypeConditions = (input: InputObjectDefinitionWrapper, name: string) => {
141
142
  for (const additionalField of ['not']) {
142
- const inputField = InputFieldWrapper.create(additionalField, name, true, false);
143
- input.addField(inputField);
143
+ const inputField = InputFieldWrapper.create(additionalField, name, true, false);
144
+ input.addField(inputField);
144
145
  }
145
- }
146
+ };
146
147
 
147
148
  /**
148
149
  * Make additional conditions of list type
@@ -154,29 +155,24 @@ const addListTypeConditions = (input: InputObjectDefinitionWrapper, name: string
154
155
  const inputField = InputFieldWrapper.create(additionalField, name, true, true);
155
156
  input.addField(inputField);
156
157
  }
157
- }
158
+ };
158
159
 
159
160
  /**
160
161
  * Make additional conditions for datastore-enabled apps
161
162
  * @param input output object
162
163
  * @param ctx TransformerContext
163
164
  */
164
- const addDatastoreConditions = (
165
- input: InputObjectDefinitionWrapper,
166
- ctx: TransformerTransformSchemaStepContextProvider
167
- ) => {
165
+ const addDatastoreConditions = (input: InputObjectDefinitionWrapper, ctx: TransformerTransformSchemaStepContextProvider) => {
168
166
  if (ctx.isProjectUsingDataStore()) {
169
- const datastoreFields = [
170
- {fieldName: '_deleted', typeName: STANDARD_SCALARS.Boolean}
171
- ]
167
+ const datastoreFields = [{ fieldName: '_deleted', typeName: STANDARD_SCALARS.Boolean }];
172
168
 
173
- for (const {fieldName, typeName} of datastoreFields) {
174
- const type = ModelResourceIDs.ModelScalarFilterInputTypeName(typeName, false)
169
+ for (const { fieldName, typeName } of datastoreFields) {
170
+ const type = ModelResourceIDs.ModelScalarFilterInputTypeName(typeName, false);
175
171
  const inputField = InputFieldWrapper.create(fieldName, type, true, false);
176
172
  input.addField(inputField);
177
173
  }
178
174
  }
179
- }
175
+ };
180
176
 
181
177
  /**
182
178
  * Generates the Subscription filter input type name
@@ -198,7 +194,7 @@ export const removeSubscriptionFilterInputAttribute = (
198
194
  }
199
195
  const newFilterType: InputObjectTypeDefinitionNode = {
200
196
  ...filterType,
201
- fields: filterType.fields?.filter(field => field.name.value !== fieldName),
197
+ fields: filterType.fields?.filter((field) => field.name.value !== fieldName),
202
198
  };
203
199
  ctx.output.putType(newFilterType);
204
200
  };
@@ -207,11 +203,15 @@ export const removeSubscriptionFilterInputAttribute = (
207
203
  * Generates model condition input type
208
204
  */
209
205
  export const addModelConditionInputs = (ctx: TransformerTransformSchemaStepContextProvider): void => {
210
- const conditionsInput: TypeDefinitionNode[] = ['String', 'Int', 'Float', 'Boolean', 'ID'].map(scalarName => makeModelScalarFilterInputObject(scalarName, true));
211
- ['String', 'Int', 'Float', 'Boolean', 'ID'].map(scalarName => conditionsInput.push(makeModelScalarFilterInputObject(scalarName, true, true)));
206
+ const conditionsInput: TypeDefinitionNode[] = ['String', 'Int', 'Float', 'Boolean', 'ID'].map((scalarName) =>
207
+ makeModelScalarFilterInputObject(scalarName, true),
208
+ );
209
+ ['String', 'Int', 'Float', 'Boolean', 'ID'].map((scalarName) =>
210
+ conditionsInput.push(makeModelScalarFilterInputObject(scalarName, true, true)),
211
+ );
212
212
  conditionsInput.push(makeAttributeTypeEnum());
213
213
  conditionsInput.push(makeSizeInputType());
214
- conditionsInput.forEach(input => {
214
+ conditionsInput.forEach((input) => {
215
215
  const inputName = input.name.value;
216
216
  if (!ctx.output.getType(inputName)) {
217
217
  ctx.output.addType(input);
@@ -241,13 +241,13 @@ export const createEnumModelFilters = (
241
241
  ): InputObjectTypeDefinitionNode[] => {
242
242
  // add enum type if present
243
243
  const typeWrapper = new ObjectDefinitionWrapper(type);
244
- const enumFields = typeWrapper.fields.filter(field => {
244
+ const enumFields = typeWrapper.fields.filter((field) => {
245
245
  const typeName = field.getTypeName();
246
246
  const typeObj = ctx.output.getType(typeName);
247
247
  return typeObj && typeObj.kind === 'EnumTypeDefinition';
248
248
  });
249
249
 
250
- return enumFields.map(field => makeEnumFilterInput(field));
250
+ return enumFields.map((field) => makeEnumFilterInput(field));
251
251
  };
252
252
 
253
253
  /**
@@ -281,7 +281,7 @@ export function makeModelScalarFilterInputObject(
281
281
  }
282
282
 
283
283
  if (!isSubscriptionFilter) {
284
- makeFunctionInputFields(type).map(f => scalarConditionInput.addField(f));
284
+ makeFunctionInputFields(type).map((f) => scalarConditionInput.addField(f));
285
285
  }
286
286
 
287
287
  return scalarConditionInput.serialize();
@@ -398,13 +398,13 @@ export function makeEnumFilterInput(fieldWrapper: FieldWrapper): InputObjectType
398
398
  : ModelResourceIDs.ModelFilterScalarInputTypeName(fieldWrapper.getTypeName(), !supportsConditions);
399
399
 
400
400
  const input = InputObjectDefinitionWrapper.create(conditionTypeName);
401
- ['eq', 'ne'].forEach(fieldName => {
401
+ ['eq', 'ne'].forEach((fieldName) => {
402
402
  const field = InputFieldWrapper.create(fieldName, fieldWrapper.getTypeName(), true, fieldWrapper.isList());
403
403
  input.addField(field);
404
404
  });
405
405
 
406
406
  if (fieldWrapper.isList()) {
407
- ['contains', 'notContains'].forEach(fieldName => {
407
+ ['contains', 'notContains'].forEach((fieldName) => {
408
408
  const field = InputFieldWrapper.create(fieldName, fieldWrapper.getTypeName(), true);
409
409
  input.addField(field);
410
410
  });
@@ -423,9 +423,9 @@ export const addDirectivesToField = (
423
423
  ): void => {
424
424
  const type = ctx.output.getType(typeName) as ObjectTypeDefinitionNode;
425
425
  if (type) {
426
- const field = type.fields?.find(f => f.name.value === fieldName);
426
+ const field = type.fields?.find((f) => f.name.value === fieldName);
427
427
  if (field) {
428
- const newFields = [...type.fields!.filter(f => f.name.value !== field.name.value), extendFieldWithDirectives(field, directives)];
428
+ const newFields = [...type.fields!.filter((f) => f.name.value !== field.name.value), extendFieldWithDirectives(field, directives)];
429
429
 
430
430
  const newType = {
431
431
  ...type,
@@ -452,7 +452,7 @@ export const addDirectivesToOperation = (
452
452
  // add the directives to the result type of the operation
453
453
  const type = ctx.output.getType(typeName) as ObjectTypeDefinitionNode;
454
454
  if (type) {
455
- const field = type.fields!.find(f => f.name.value === operationName);
455
+ const field = type.fields!.find((f) => f.name.value === operationName);
456
456
 
457
457
  if (field) {
458
458
  const returnFieldType = field.type as NamedTypeNode;
@@ -501,18 +501,18 @@ export const propagateApiKeyToNestedTypes = (
501
501
  if (fieldType.kind !== 'ObjectTypeDefinition') {
502
502
  return undefined;
503
503
  }
504
- const typeModel = fieldType.directives!.find(dir => dir.name.value === 'model');
504
+ const typeModel = fieldType.directives!.find((dir) => dir.name.value === 'model');
505
505
  return typeModel !== undefined ? undefined : fieldType;
506
506
  }
507
507
  return fieldType;
508
508
  };
509
509
  const nonModelFieldTypes = def
510
- .fields!.map(f => ctx.output.getType(getBaseType(f.type)) as TypeDefinitionNode)
510
+ .fields!.map((f) => ctx.output.getType(getBaseType(f.type)) as TypeDefinitionNode)
511
511
  .filter(nonModelTypePredicate);
512
512
  for (const nonModelFieldType of nonModelFieldTypes) {
513
513
  const nonModelName = nonModelFieldType.name.value;
514
514
  const hasSeenType = seenNonModelTypes.has(nonModelName);
515
- const hasApiKey = nonModelFieldType.directives?.some(dir => dir.name.value === API_KEY_DIRECTIVE) ?? false;
515
+ const hasApiKey = nonModelFieldType.directives?.some((dir) => dir.name.value === API_KEY_DIRECTIVE) ?? false;
516
516
  if (!hasSeenType && !hasApiKey) {
517
517
  seenNonModelTypes.add(nonModelName);
518
518
  extendTypeWithDirectives(ctx, nonModelName, [makeDirective(API_KEY_DIRECTIVE, [])]);
@@ -24,36 +24,36 @@ export const makeUpdateInputField = (
24
24
  const name = toPascalCase(['Update', typeName, 'Input']);
25
25
  const hasIdField = objectWrapped.hasField('id');
26
26
  const fieldsToRemove = objectWrapped
27
- .fields!.filter(field => {
27
+ .fields!.filter((field) => {
28
28
  if (knownModelTypes.has(field.getTypeName())) {
29
29
  return true;
30
30
  }
31
31
  return false;
32
32
  })
33
- .map(field => field.name);
33
+ .map((field) => field.name);
34
34
 
35
35
  const objectTypeDefinition: ObjectTypeDefinitionNode = {
36
36
  ...obj,
37
- fields: obj.fields?.filter(f => !fieldsToRemove.includes(f.name.value)),
37
+ fields: obj.fields?.filter((f) => !fieldsToRemove.includes(f.name.value)),
38
38
  };
39
39
 
40
40
  const input = InputObjectDefinitionWrapper.fromObject(name, objectTypeDefinition, document);
41
41
 
42
42
  // make all the fields optional
43
- input.fields.forEach(f => f.makeNullable());
43
+ input.fields.forEach((f) => f.makeNullable());
44
44
 
45
45
  if (!hasIdField) {
46
46
  // Add id field and make it optional
47
47
  input.addField(InputFieldWrapper.create('id', 'ID', false));
48
48
  } else {
49
- const idField = input.fields.find(f => f.name === 'id');
49
+ const idField = input.fields.find((f) => f.name === 'id');
50
50
  if (idField) {
51
51
  idField.makeNonNullable();
52
52
  }
53
53
  }
54
54
 
55
55
  // Make createdAt and updatedAt field Optionals if present
56
- Object.values(modelDirectiveConfig?.timestamps || {}).forEach(timeStampFieldName => {
56
+ Object.values(modelDirectiveConfig?.timestamps || {}).forEach((timeStampFieldName) => {
57
57
  if (input.hasField(timeStampFieldName!)) {
58
58
  const timestampField = input.getField(timeStampFieldName!);
59
59
  if (['String', 'AWSDateTime'].includes(timestampField.getTypeName())) {
@@ -106,17 +106,17 @@ export const makeCreateInputField = (
106
106
 
107
107
  const hasIdField = objectWrapped.hasField('id');
108
108
  const fieldsToRemove = objectWrapped
109
- .fields!.filter(field => {
109
+ .fields!.filter((field) => {
110
110
  if (knownModelTypes.has(field.getTypeName())) {
111
111
  return true;
112
112
  }
113
113
  return false;
114
114
  })
115
- .map(field => field.name);
115
+ .map((field) => field.name);
116
116
 
117
117
  const objectTypeDefinition: ObjectTypeDefinitionNode = {
118
118
  ...obj,
119
- fields: obj.fields?.filter(f => !fieldsToRemove.includes(f.name.value)),
119
+ fields: obj.fields?.filter((f) => !fieldsToRemove.includes(f.name.value)),
120
120
  };
121
121
 
122
122
  const input = InputObjectDefinitionWrapper.fromObject(name, objectTypeDefinition, document);
@@ -125,13 +125,13 @@ export const makeCreateInputField = (
125
125
  if (!hasIdField) {
126
126
  input.addField(InputFieldWrapper.create('id', 'ID', true));
127
127
  } else {
128
- const idField = input.fields.find(f => f.name === 'id');
128
+ const idField = input.fields.find((f) => f.name === 'id');
129
129
  if (idField) {
130
130
  idField.makeNullable();
131
131
  }
132
132
  }
133
133
  // Make createdAt and updatedAt field Optionals if present
134
- Object.values(modelDirectiveConfig?.timestamps || {}).forEach(timeStampFieldName => {
134
+ Object.values(modelDirectiveConfig?.timestamps || {}).forEach((timeStampFieldName) => {
135
135
  if (input.hasField(timeStampFieldName!)) {
136
136
  const timestampField = input.getField(timeStampFieldName!);
137
137
  if (['String', 'AWSDateTime'].includes(timestampField.getTypeName())) {
@@ -156,7 +156,7 @@ export const makeMutationConditionInput = (
156
156
  object: ObjectTypeDefinitionNode,
157
157
  ): InputObjectTypeDefinitionNode => {
158
158
  const input = makeConditionFilterInput(ctx, name, object);
159
- const idField = input.fields.find(f => f.name === 'id' && f.getTypeName() === 'ModelIDInput');
159
+ const idField = input.fields.find((f) => f.name === 'id' && f.getTypeName() === 'ModelIDInput');
160
160
  if (idField) {
161
161
  input.removeField(idField);
162
162
  }