@aws-amplify/graphql-api-construct 1.5.7 → 1.6.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 (67) hide show
  1. package/.jsii +273 -212
  2. package/API.md +13 -5
  3. package/CHANGELOG.md +7 -0
  4. package/lib/amplify-dynamodb-table-wrapper.d.ts +6 -1
  5. package/lib/amplify-dynamodb-table-wrapper.js +9 -2
  6. package/lib/amplify-graphql-api.d.ts +2 -2
  7. package/lib/amplify-graphql-api.js +10 -7
  8. package/lib/amplify-graphql-definition.js +1 -1
  9. package/lib/index.d.ts +1 -1
  10. package/lib/index.js +1 -1
  11. package/lib/internal/construct-exports.js +13 -3
  12. package/lib/sql-model-datasource-strategy.js +1 -1
  13. package/lib/types.d.ts +17 -5
  14. package/lib/types.js +1 -1
  15. package/node_modules/@aws-amplify/graphql-auth-transformer/CHANGELOG.md +6 -0
  16. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/validations.d.ts.map +1 -1
  17. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/validations.js +0 -3
  18. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/validations.js.map +1 -1
  19. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/query.d.ts.map +1 -1
  20. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/query.js +3 -2
  21. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/query.js.map +1 -1
  22. package/node_modules/@aws-amplify/graphql-auth-transformer/package.json +7 -7
  23. package/node_modules/@aws-amplify/graphql-default-value-transformer/CHANGELOG.md +4 -0
  24. package/node_modules/@aws-amplify/graphql-default-value-transformer/package.json +3 -3
  25. package/node_modules/@aws-amplify/graphql-function-transformer/package.json +1 -2
  26. package/node_modules/@aws-amplify/graphql-http-transformer/package.json +1 -2
  27. package/node_modules/@aws-amplify/graphql-index-transformer/CHANGELOG.md +4 -0
  28. package/node_modules/@aws-amplify/graphql-index-transformer/package.json +3 -3
  29. package/node_modules/@aws-amplify/graphql-maps-to-transformer/CHANGELOG.md +4 -0
  30. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/assets/mapping-lambda.zip +0 -0
  31. package/node_modules/@aws-amplify/graphql-maps-to-transformer/package.json +6 -6
  32. package/node_modules/@aws-amplify/graphql-model-transformer/CHANGELOG.md +6 -0
  33. package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-lambda.zip +0 -0
  34. package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-notification-lambda.zip +0 -0
  35. package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-patching-lambda.zip +0 -0
  36. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamo-model-resource-generator.d.ts.map +1 -1
  37. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamo-model-resource-generator.js +1 -0
  38. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamo-model-resource-generator.js.map +1 -1
  39. package/node_modules/@aws-amplify/graphql-model-transformer/package.json +2 -2
  40. package/node_modules/@aws-amplify/graphql-predictions-transformer/lib/predictionsLambdaFunction.zip +0 -0
  41. package/node_modules/@aws-amplify/graphql-predictions-transformer/package.json +1 -2
  42. package/node_modules/@aws-amplify/graphql-relational-transformer/CHANGELOG.md +4 -0
  43. package/node_modules/@aws-amplify/graphql-relational-transformer/package.json +4 -4
  44. package/node_modules/@aws-amplify/graphql-searchable-transformer/CHANGELOG.md +4 -0
  45. package/node_modules/@aws-amplify/graphql-searchable-transformer/lib/streaming-lambda.zip +0 -0
  46. package/node_modules/@aws-amplify/graphql-searchable-transformer/package.json +3 -3
  47. package/node_modules/@aws-amplify/graphql-sql-transformer/CHANGELOG.md +4 -0
  48. package/node_modules/@aws-amplify/graphql-sql-transformer/package.json +3 -3
  49. package/node_modules/@aws-amplify/graphql-transformer/CHANGELOG.md +4 -0
  50. package/node_modules/@aws-amplify/graphql-transformer/package.json +10 -10
  51. package/node_modules/@aws-amplify/graphql-transformer-core/package.json +1 -2
  52. package/node_modules/@aws-amplify/graphql-transformer-interfaces/package.json +1 -2
  53. package/node_modules/graphql-mapping-template/package.json +1 -2
  54. package/node_modules/graphql-transformer-common/package.json +1 -2
  55. package/package.json +11 -11
  56. package/src/amplify-dynamodb-table-wrapper.ts +9 -1
  57. package/src/amplify-graphql-api.ts +15 -7
  58. package/src/index.ts +1 -0
  59. package/src/internal/construct-exports.ts +14 -4
  60. package/src/types.ts +19 -6
  61. package/node_modules/@aws-amplify/graphql-function-transformer/LICENSE +0 -201
  62. package/node_modules/@aws-amplify/graphql-http-transformer/LICENSE +0 -201
  63. package/node_modules/@aws-amplify/graphql-predictions-transformer/LICENSE +0 -201
  64. package/node_modules/@aws-amplify/graphql-transformer-core/LICENSE +0 -201
  65. package/node_modules/@aws-amplify/graphql-transformer-interfaces/LICENSE +0 -201
  66. package/node_modules/graphql-mapping-template/LICENSE +0 -201
  67. package/node_modules/graphql-transformer-common/LICENSE +0 -201
@@ -78,6 +78,5 @@
78
78
  "coveragePathIgnorePatterns": [
79
79
  "/__tests__/"
80
80
  ]
81
- },
82
- "gitHead": "a60eb2036ba0ba43bf469b4e5687b0cfa0a2e301"
81
+ }
83
82
  }
@@ -3,6 +3,10 @@
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
+ ## [2.4.1](https://github.com/aws-amplify/amplify-category-api/compare/@aws-amplify/graphql-relational-transformer@2.4.0...@aws-amplify/graphql-relational-transformer@2.4.1) (2024-03-13)
7
+
8
+ **Note:** Version bump only for package @aws-amplify/graphql-relational-transformer
9
+
6
10
  # [2.4.0](https://github.com/aws-amplify/amplify-category-api/compare/@aws-amplify/graphql-relational-transformer@2.3.6...@aws-amplify/graphql-relational-transformer@2.4.0) (2024-02-28)
7
11
 
8
12
  ### Features
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-amplify/graphql-relational-transformer",
3
- "version": "2.4.0",
3
+ "version": "2.4.1",
4
4
  "description": "Amplify GraphQL relational modeling transformers",
5
5
  "repository": {
6
6
  "type": "git",
@@ -28,8 +28,8 @@
28
28
  "extract-api": "ts-node ../../scripts/extract-api.ts"
29
29
  },
30
30
  "dependencies": {
31
- "@aws-amplify/graphql-index-transformer": "2.3.6",
32
- "@aws-amplify/graphql-model-transformer": "2.5.0",
31
+ "@aws-amplify/graphql-index-transformer": "2.3.7",
32
+ "@aws-amplify/graphql-model-transformer": "2.6.0",
33
33
  "@aws-amplify/graphql-transformer-core": "2.5.0",
34
34
  "@aws-amplify/graphql-transformer-interfaces": "3.4.0",
35
35
  "graphql": "^15.5.0",
@@ -78,5 +78,5 @@
78
78
  "/__tests__/"
79
79
  ]
80
80
  },
81
- "gitHead": "a60eb2036ba0ba43bf469b4e5687b0cfa0a2e301"
81
+ "gitHead": "9a0fb53d5df94e76811cbbdc4f3fc98fc6278c41"
82
82
  }
@@ -3,6 +3,10 @@
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
+ ## [2.6.1](https://github.com/aws-amplify/amplify-category-api/compare/@aws-amplify/graphql-searchable-transformer@2.6.0...@aws-amplify/graphql-searchable-transformer@2.6.1) (2024-03-13)
7
+
8
+ **Note:** Version bump only for package @aws-amplify/graphql-searchable-transformer
9
+
6
10
  # [2.6.0](https://github.com/aws-amplify/amplify-category-api/compare/@aws-amplify/graphql-searchable-transformer@2.5.2...@aws-amplify/graphql-searchable-transformer@2.6.0) (2024-02-28)
7
11
 
8
12
  ### Features
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-amplify/graphql-searchable-transformer",
3
- "version": "2.6.0",
3
+ "version": "2.6.1",
4
4
  "description": "Amplfy GraphQL @searchable transformer",
5
5
  "repository": {
6
6
  "type": "git",
@@ -28,7 +28,7 @@
28
28
  "extract-api": "ts-node ../../scripts/extract-api.ts"
29
29
  },
30
30
  "dependencies": {
31
- "@aws-amplify/graphql-model-transformer": "2.5.0",
31
+ "@aws-amplify/graphql-model-transformer": "2.6.0",
32
32
  "@aws-amplify/graphql-transformer-core": "2.5.0",
33
33
  "@aws-amplify/graphql-transformer-interfaces": "3.4.0",
34
34
  "graphql": "^15.5.0",
@@ -81,5 +81,5 @@
81
81
  "/__tests__/"
82
82
  ]
83
83
  },
84
- "gitHead": "a60eb2036ba0ba43bf469b4e5687b0cfa0a2e301"
84
+ "gitHead": "9a0fb53d5df94e76811cbbdc4f3fc98fc6278c41"
85
85
  }
@@ -3,6 +3,10 @@
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.2.7](https://github.com/aws-amplify/amplify-category-api/compare/@aws-amplify/graphql-sql-transformer@0.2.6...@aws-amplify/graphql-sql-transformer@0.2.7) (2024-03-13)
7
+
8
+ **Note:** Version bump only for package @aws-amplify/graphql-sql-transformer
9
+
6
10
  ## [0.2.6](https://github.com/aws-amplify/amplify-category-api/compare/@aws-amplify/graphql-sql-transformer@0.2.5...@aws-amplify/graphql-sql-transformer@0.2.6) (2024-02-28)
7
11
 
8
12
  **Note:** Version bump only for package @aws-amplify/graphql-sql-transformer
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-amplify/graphql-sql-transformer",
3
- "version": "0.2.6",
3
+ "version": "0.2.7",
4
4
  "description": "Amplify GraphQL @sql transformer",
5
5
  "repository": {
6
6
  "type": "git",
@@ -28,7 +28,7 @@
28
28
  "extract-api": "ts-node ../../scripts/extract-api.ts"
29
29
  },
30
30
  "dependencies": {
31
- "@aws-amplify/graphql-model-transformer": "2.5.0",
31
+ "@aws-amplify/graphql-model-transformer": "2.6.0",
32
32
  "@aws-amplify/graphql-transformer-core": "2.5.0",
33
33
  "@aws-amplify/graphql-transformer-interfaces": "3.4.0",
34
34
  "graphql": "^15.5.0",
@@ -79,5 +79,5 @@
79
79
  "/__tests__/"
80
80
  ]
81
81
  },
82
- "gitHead": "a60eb2036ba0ba43bf469b4e5687b0cfa0a2e301"
82
+ "gitHead": "9a0fb53d5df94e76811cbbdc4f3fc98fc6278c41"
83
83
  }
@@ -3,6 +3,10 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [1.3.12](https://github.com/aws-amplify/amplify-category-api/compare/@aws-amplify/graphql-transformer@1.3.11...@aws-amplify/graphql-transformer@1.3.12) (2024-03-13)
7
+
8
+ **Note:** Version bump only for package @aws-amplify/graphql-transformer
9
+
6
10
  ## [1.3.11](https://github.com/aws-amplify/amplify-category-api/compare/@aws-amplify/graphql-transformer@1.3.10...@aws-amplify/graphql-transformer@1.3.11) (2024-02-28)
7
11
 
8
12
  **Note:** Version bump only for package @aws-amplify/graphql-transformer
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-amplify/graphql-transformer",
3
- "version": "1.3.11",
3
+ "version": "1.3.12",
4
4
  "description": "Amplify GraphQL Transformer Root Package",
5
5
  "repository": {
6
6
  "type": "git",
@@ -28,17 +28,17 @@
28
28
  "access": "public"
29
29
  },
30
30
  "dependencies": {
31
- "@aws-amplify/graphql-auth-transformer": "3.4.0",
32
- "@aws-amplify/graphql-default-value-transformer": "2.3.0",
31
+ "@aws-amplify/graphql-auth-transformer": "3.4.1",
32
+ "@aws-amplify/graphql-default-value-transformer": "2.3.1",
33
33
  "@aws-amplify/graphql-function-transformer": "2.1.18",
34
34
  "@aws-amplify/graphql-http-transformer": "2.1.18",
35
- "@aws-amplify/graphql-index-transformer": "2.3.6",
36
- "@aws-amplify/graphql-maps-to-transformer": "3.4.7",
37
- "@aws-amplify/graphql-model-transformer": "2.5.0",
35
+ "@aws-amplify/graphql-index-transformer": "2.3.7",
36
+ "@aws-amplify/graphql-maps-to-transformer": "3.4.8",
37
+ "@aws-amplify/graphql-model-transformer": "2.6.0",
38
38
  "@aws-amplify/graphql-predictions-transformer": "2.1.18",
39
- "@aws-amplify/graphql-relational-transformer": "2.4.0",
40
- "@aws-amplify/graphql-searchable-transformer": "2.6.0",
41
- "@aws-amplify/graphql-sql-transformer": "0.2.6",
39
+ "@aws-amplify/graphql-relational-transformer": "2.4.1",
40
+ "@aws-amplify/graphql-searchable-transformer": "2.6.1",
41
+ "@aws-amplify/graphql-sql-transformer": "0.2.7",
42
42
  "@aws-amplify/graphql-transformer-core": "2.5.0",
43
43
  "@aws-amplify/graphql-transformer-interfaces": "3.4.0"
44
44
  },
@@ -87,5 +87,5 @@
87
87
  "/__tests__/"
88
88
  ]
89
89
  },
90
- "gitHead": "a60eb2036ba0ba43bf469b4e5687b0cfa0a2e301"
90
+ "gitHead": "9a0fb53d5df94e76811cbbdc4f3fc98fc6278c41"
91
91
  }
@@ -84,6 +84,5 @@
84
84
  "coveragePathIgnorePatterns": [
85
85
  "/__tests__/"
86
86
  ]
87
- },
88
- "gitHead": "a60eb2036ba0ba43bf469b4e5687b0cfa0a2e301"
87
+ }
89
88
  }
@@ -59,6 +59,5 @@
59
59
  "coveragePathIgnorePatterns": [
60
60
  "/__tests__/"
61
61
  ]
62
- },
63
- "gitHead": "a60eb2036ba0ba43bf469b4e5687b0cfa0a2e301"
62
+ }
64
63
  }
@@ -57,6 +57,5 @@
57
57
  "coveragePathIgnorePatterns": [
58
58
  "/__tests__/"
59
59
  ]
60
- },
61
- "gitHead": "a60eb2036ba0ba43bf469b4e5687b0cfa0a2e301"
60
+ }
62
61
  }
@@ -65,6 +65,5 @@
65
65
  "coveragePathIgnorePatterns": [
66
66
  "/__tests__/"
67
67
  ]
68
- },
69
- "gitHead": "a60eb2036ba0ba43bf469b4e5687b0cfa0a2e301"
68
+ }
70
69
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-amplify/graphql-api-construct",
3
- "version": "1.5.7",
3
+ "version": "1.6.0",
4
4
  "description": "AppSync GraphQL Api Construct using Amplify GraphQL Transformer.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -75,18 +75,18 @@
75
75
  "dependencies": {
76
76
  "@aws-amplify/backend-output-schemas": "^0.4.0",
77
77
  "@aws-amplify/backend-output-storage": "^0.2.2",
78
- "@aws-amplify/graphql-auth-transformer": "3.4.0",
79
- "@aws-amplify/graphql-default-value-transformer": "2.3.0",
78
+ "@aws-amplify/graphql-auth-transformer": "3.4.1",
79
+ "@aws-amplify/graphql-default-value-transformer": "2.3.1",
80
80
  "@aws-amplify/graphql-function-transformer": "2.1.18",
81
81
  "@aws-amplify/graphql-http-transformer": "2.1.18",
82
- "@aws-amplify/graphql-index-transformer": "2.3.6",
83
- "@aws-amplify/graphql-maps-to-transformer": "3.4.7",
84
- "@aws-amplify/graphql-model-transformer": "2.5.0",
82
+ "@aws-amplify/graphql-index-transformer": "2.3.7",
83
+ "@aws-amplify/graphql-maps-to-transformer": "3.4.8",
84
+ "@aws-amplify/graphql-model-transformer": "2.6.0",
85
85
  "@aws-amplify/graphql-predictions-transformer": "2.1.18",
86
- "@aws-amplify/graphql-relational-transformer": "2.4.0",
87
- "@aws-amplify/graphql-searchable-transformer": "2.6.0",
88
- "@aws-amplify/graphql-sql-transformer": "0.2.6",
89
- "@aws-amplify/graphql-transformer": "1.3.11",
86
+ "@aws-amplify/graphql-relational-transformer": "2.4.1",
87
+ "@aws-amplify/graphql-searchable-transformer": "2.6.1",
88
+ "@aws-amplify/graphql-sql-transformer": "0.2.7",
89
+ "@aws-amplify/graphql-transformer": "1.3.12",
90
90
  "@aws-amplify/graphql-transformer-core": "2.5.0",
91
91
  "@aws-amplify/graphql-transformer-interfaces": "3.4.0",
92
92
  "@aws-amplify/platform-core": "^0.2.0",
@@ -177,5 +177,5 @@
177
177
  "/__tests__/"
178
178
  ]
179
179
  },
180
- "gitHead": "a60eb2036ba0ba43bf469b4e5687b0cfa0a2e301"
180
+ "gitHead": "9a0fb53d5df94e76811cbbdc4f3fc98fc6278c41"
181
181
  }
@@ -1,4 +1,4 @@
1
- import { CfnResource } from 'aws-cdk-lib';
1
+ import { CfnResource, RemovalPolicy } from 'aws-cdk-lib';
2
2
  import { BillingMode, StreamViewType } from 'aws-cdk-lib/aws-dynamodb';
3
3
 
4
4
  const AMPLIFY_DYNAMODB_TABLE_RESOURCE_TYPE = 'Custom::AmplifyDynamoDBTable';
@@ -110,6 +110,14 @@ export class AmplifyDynamoDbTableWrapper {
110
110
  }
111
111
  }
112
112
 
113
+ /**
114
+ * Set the deletion policy of the resource based on the removal policy specified.
115
+ * @param policy removal policy to set
116
+ */
117
+ applyRemovalPolicy(policy: RemovalPolicy): void {
118
+ this.resource.applyRemovalPolicy(policy);
119
+ }
120
+
113
121
  /**
114
122
  * Specify how you are charged for read and write throughput and how you manage capacity.
115
123
  */
@@ -36,7 +36,7 @@ import type {
36
36
  FunctionSlot,
37
37
  IBackendOutputStorageStrategy,
38
38
  AddFunctionProps,
39
- ConflictResolution,
39
+ DataStoreConfiguration,
40
40
  IAmplifyGraphqlDefinition,
41
41
  } from './types';
42
42
  import {
@@ -120,9 +120,9 @@ export class AmplifyGraphqlApi extends Construct {
120
120
  public readonly apiId: string;
121
121
 
122
122
  /**
123
- * Conflict resolution setting
123
+ * DataStore conflict resolution setting
124
124
  */
125
- private readonly conflictResolution: ConflictResolution | undefined;
125
+ private readonly dataStoreConfiguration: DataStoreConfiguration | undefined;
126
126
 
127
127
  /**
128
128
  * Be very careful editing this value. This is the string that is used to identify graphql stacks in BI metrics
@@ -152,8 +152,17 @@ export class AmplifyGraphqlApi extends Construct {
152
152
  translationBehavior,
153
153
  functionNameMap,
154
154
  outputStorageStrategy,
155
+ dataStoreConfiguration,
155
156
  } = props;
156
157
 
158
+ if (conflictResolution && dataStoreConfiguration) {
159
+ throw new Error(
160
+ `conflictResolution is deprecated. conflictResolution and dataStoreConfiguration cannot be used together. Please use dataStoreConfiguration.`,
161
+ );
162
+ }
163
+
164
+ this.dataStoreConfiguration = dataStoreConfiguration || conflictResolution;
165
+
157
166
  const dataSources = getMetadataDataSources(definition);
158
167
 
159
168
  new AttributionMetadataStorage().storeAttributionMetadata(Stack.of(scope), this.stackType, path.join(__dirname, '..', 'package.json'), {
@@ -201,7 +210,7 @@ export class AmplifyGraphqlApi extends Construct {
201
210
  },
202
211
  authConfig,
203
212
  stackMapping: stackMappings ?? {},
204
- resolverConfig: conflictResolution ? convertToResolverConfig(conflictResolution) : undefined,
213
+ resolverConfig: this.dataStoreConfiguration ? convertToResolverConfig(this.dataStoreConfiguration) : undefined,
205
214
  transformParameters: {
206
215
  ...defaultTranslationBehavior,
207
216
  ...(translationBehavior ?? {}),
@@ -217,7 +226,6 @@ export class AmplifyGraphqlApi extends Construct {
217
226
  this.codegenAssets = new CodegenAssets(this, 'AmplifyCodegenAssets', { modelSchema: definition.schema });
218
227
 
219
228
  this.resources = getGeneratedResources(this);
220
- this.conflictResolution = conflictResolution;
221
229
  this.generatedFunctionSlots = getGeneratedFunctionSlots(assetManager.resolverAssets);
222
230
  this.storeOutput(outputStorageStrategy);
223
231
 
@@ -255,8 +263,8 @@ export class AmplifyGraphqlApi extends Construct {
255
263
  output.payload.awsAppsyncAdditionalAuthenticationTypes = additionalAuthTypes;
256
264
  }
257
265
 
258
- if (this.conflictResolution?.project?.handlerType) {
259
- output.payload.awsAppsyncConflictResolutionMode = this.conflictResolution?.project?.handlerType;
266
+ if (this.dataStoreConfiguration?.project?.handlerType) {
267
+ output.payload.awsAppsyncConflictResolutionMode = this.dataStoreConfiguration?.project?.handlerType;
260
268
  }
261
269
 
262
270
  outputStorageStrategy.addBackendOutputEntry(graphqlOutputKey, output);
package/src/index.ts CHANGED
@@ -20,6 +20,7 @@ export type {
20
20
  FunctionSlot,
21
21
  FunctionSlotOverride,
22
22
  ConflictResolution,
23
+ DataStoreConfiguration,
23
24
  ConflictDetectionType,
24
25
  OptimisticConflictResolutionStrategy,
25
26
  CustomConflictResolutionStrategy,
@@ -8,7 +8,7 @@ import {
8
8
  CfnDataSource,
9
9
  GraphqlApi,
10
10
  } from 'aws-cdk-lib/aws-appsync';
11
- import { CfnTable, Table } from 'aws-cdk-lib/aws-dynamodb';
11
+ import { CfnTable, Table, ITable } from 'aws-cdk-lib/aws-dynamodb';
12
12
  import { CfnRole, Role } from 'aws-cdk-lib/aws-iam';
13
13
  import { CfnResource, NestedStack } from 'aws-cdk-lib';
14
14
  import { getResourceName } from '@aws-amplify/graphql-transformer-core';
@@ -17,6 +17,16 @@ import { AmplifyGraphqlApiResources, FunctionSlot } from '../types';
17
17
  import { AmplifyDynamoDbTableWrapper } from '../amplify-dynamodb-table-wrapper';
18
18
  import { walkAndProcessNodes } from './construct-tree';
19
19
 
20
+ /**
21
+ * Check if a resource is implementing table interface
22
+ * The required properties need to be present in the input
23
+ * https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_dynamodb.ITable.html#properties
24
+ * @param table table resource
25
+ * @returns whether the resource is a ITable or not
26
+ */
27
+ function isITable(table: any): table is ITable {
28
+ return 'env' in table && 'node' in table && 'stack' in table && 'tableArn' in table && 'tableName' in table;
29
+ }
20
30
  /**
21
31
  * Everything below here is intended to help us gather the
22
32
  * output values and render out the L1 resources for access.
@@ -33,7 +43,7 @@ export const getGeneratedResources = (scope: Construct): AmplifyGraphqlApiResour
33
43
  const cfnResolvers: Record<string, CfnResolver> = {};
34
44
  const cfnFunctionConfigurations: Record<string, CfnFunctionConfiguration> = {};
35
45
  const cfnDataSources: Record<string, CfnDataSource> = {};
36
- const tables: Record<string, Table> = {};
46
+ const tables: Record<string, ITable> = {};
37
47
  const cfnTables: Record<string, CfnTable> = {};
38
48
  const amplifyDynamoDbTables: Record<string, AmplifyDynamoDbTableWrapper> = {};
39
49
  const roles: Record<string, Role> = {};
@@ -72,7 +82,7 @@ export const getGeneratedResources = (scope: Construct): AmplifyGraphqlApiResour
72
82
  cfnFunctionConfigurations[resourceName] = currentScope;
73
83
  return;
74
84
  }
75
- if (currentScope instanceof Table) {
85
+ if (currentScope instanceof Table || isITable(currentScope)) {
76
86
  tables[resourceName] = currentScope;
77
87
  return;
78
88
  }
@@ -123,7 +133,6 @@ export const getGeneratedResources = (scope: Construct): AmplifyGraphqlApiResour
123
133
  return {
124
134
  graphqlApi: GraphqlApi.fromGraphqlApiAttributes(scope, 'L2GraphqlApi', { graphqlApiId: cfnGraphqlApi.attrApiId }),
125
135
  tables,
126
- amplifyDynamoDbTables,
127
136
  roles,
128
137
  functions,
129
138
  nestedStacks,
@@ -135,6 +144,7 @@ export const getGeneratedResources = (scope: Construct): AmplifyGraphqlApiResour
135
144
  cfnFunctionConfigurations,
136
145
  cfnDataSources,
137
146
  cfnTables,
147
+ amplifyDynamoDbTables,
138
148
  cfnRoles,
139
149
  cfnFunctions,
140
150
  additionalCfnResources,
package/src/types.ts CHANGED
@@ -234,8 +234,14 @@ export type ConflictResolutionStrategy =
234
234
 
235
235
  /**
236
236
  * Project level configuration for conflict resolution.
237
+ * @deprecated use DataStoreConfiguration instead.
237
238
  */
238
- export interface ConflictResolution {
239
+ export interface ConflictResolution extends DataStoreConfiguration {}
240
+
241
+ /**
242
+ * Project level configuration for DataStore
243
+ */
244
+ export interface DataStoreConfiguration {
239
245
  /**
240
246
  * Project-wide config for conflict resolution. Applies to all non-overridden models.
241
247
  */
@@ -636,6 +642,7 @@ export interface AmplifyGraphqlApiProps {
636
642
  /**
637
643
  * Configure conflict resolution on the Api, which is required to enable DataStore Api functionality.
638
644
  * For more information, refer to https://docs.amplify.aws/lib/datastore/getting-started/q/platform/js/
645
+ * @deprecated use dataStoreConfiguration instead.
639
646
  */
640
647
  readonly conflictResolution?: ConflictResolution;
641
648
 
@@ -676,6 +683,12 @@ export interface AmplifyGraphqlApiProps {
676
683
  * Strategy to store construct outputs. If no outputStorageStrategey is provided a default strategy will be used.
677
684
  */
678
685
  readonly outputStorageStrategy?: IBackendOutputStorageStrategy;
686
+
687
+ /**
688
+ * Configure DataStore conflict resolution on the Api. Conflict resolution is required to enable DataStore Api functionality.
689
+ * For more information, refer to https://docs.amplify.aws/lib/datastore/getting-started/q/platform/js/
690
+ */
691
+ readonly dataStoreConfiguration?: DataStoreConfiguration;
679
692
  }
680
693
 
681
694
  /**
@@ -718,6 +731,11 @@ export interface AmplifyGraphqlApiCfnResources {
718
731
  */
719
732
  readonly cfnTables: Record<string, CfnTable>;
720
733
 
734
+ /**
735
+ * The Generated Amplify DynamoDb Table L1 resource wrapper, keyed by model type name.
736
+ */
737
+ readonly amplifyDynamoDbTables: Record<string, AmplifyDynamoDbTableWrapper>;
738
+
721
739
  /**
722
740
  * The Generated IAM Role L1 Resources, keyed by logicalId.
723
741
  */
@@ -749,11 +767,6 @@ export interface AmplifyGraphqlApiResources {
749
767
  */
750
768
  readonly tables: Record<string, ITable>;
751
769
 
752
- /**
753
- * The Generated Amplify DynamoDb Table wrapped if produced, keyed by name.
754
- */
755
- readonly amplifyDynamoDbTables: Record<string, AmplifyDynamoDbTableWrapper>;
756
-
757
770
  /**
758
771
  * The Generated IAM Role L2 Resources, keyed by logicalId.
759
772
  */