@aws-amplify/graphql-api-construct 1.2.0-amplify-table-preview.1 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (134) hide show
  1. package/.jsii +114 -151
  2. package/API.md +1 -4
  3. package/CHANGELOG.md +9 -6
  4. package/README.md +17 -0
  5. package/lib/amplify-graphql-api.d.ts +4 -0
  6. package/lib/amplify-graphql-api.js +23 -6
  7. package/lib/amplify-graphql-definition.js +1 -1
  8. package/lib/internal/amplify-metadata.js +3 -14
  9. package/lib/internal/authorization-modes.d.ts +2 -10
  10. package/lib/internal/authorization-modes.js +11 -4
  11. package/lib/internal/construct-exports.js +3 -12
  12. package/lib/internal/construct-tree.d.ts +14 -0
  13. package/lib/internal/construct-tree.js +28 -0
  14. package/lib/internal/default-parameters.js +1 -2
  15. package/lib/types.d.ts +4 -15
  16. package/lib/types.js +1 -1
  17. package/node_modules/@aws-amplify/graphql-auth-transformer/API.md +3 -12
  18. package/node_modules/@aws-amplify/graphql-auth-transformer/CHANGELOG.md +2 -2
  19. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.d.ts +2 -4
  20. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.d.ts.map +1 -1
  21. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.js +5 -10
  22. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.js.map +1 -1
  23. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/definitions.d.ts +1 -6
  24. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/definitions.d.ts.map +1 -1
  25. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/definitions.js.map +1 -1
  26. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/index.d.ts +3 -3
  27. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/index.d.ts.map +1 -1
  28. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/index.js +12 -8
  29. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/index.js.map +1 -1
  30. package/node_modules/@aws-amplify/graphql-auth-transformer/package.json +10 -10
  31. package/node_modules/@aws-amplify/graphql-default-value-transformer/CHANGELOG.md +1 -5
  32. package/node_modules/@aws-amplify/graphql-default-value-transformer/package.json +7 -7
  33. package/node_modules/@aws-amplify/graphql-function-transformer/CHANGELOG.md +1 -1
  34. package/node_modules/@aws-amplify/graphql-function-transformer/LICENSE +201 -0
  35. package/node_modules/@aws-amplify/graphql-function-transformer/package.json +7 -6
  36. package/node_modules/@aws-amplify/graphql-http-transformer/CHANGELOG.md +1 -1
  37. package/node_modules/@aws-amplify/graphql-http-transformer/LICENSE +201 -0
  38. package/node_modules/@aws-amplify/graphql-http-transformer/package.json +7 -6
  39. package/node_modules/@aws-amplify/graphql-index-transformer/API.md +0 -3
  40. package/node_modules/@aws-amplify/graphql-index-transformer/CHANGELOG.md +1 -8
  41. package/node_modules/@aws-amplify/graphql-index-transformer/lib/index.d.ts +1 -1
  42. package/node_modules/@aws-amplify/graphql-index-transformer/lib/index.d.ts.map +1 -1
  43. package/node_modules/@aws-amplify/graphql-index-transformer/lib/index.js +1 -2
  44. package/node_modules/@aws-amplify/graphql-index-transformer/lib/index.js.map +1 -1
  45. package/node_modules/@aws-amplify/graphql-index-transformer/lib/resolvers/resolvers.d.ts +0 -1
  46. package/node_modules/@aws-amplify/graphql-index-transformer/lib/resolvers/resolvers.d.ts.map +1 -1
  47. package/node_modules/@aws-amplify/graphql-index-transformer/lib/resolvers/resolvers.js +7 -26
  48. package/node_modules/@aws-amplify/graphql-index-transformer/lib/resolvers/resolvers.js.map +1 -1
  49. package/node_modules/@aws-amplify/graphql-index-transformer/package.json +7 -7
  50. package/node_modules/@aws-amplify/graphql-maps-to-transformer/CHANGELOG.md +1 -5
  51. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/assets/mapping-lambda.zip +0 -0
  52. package/node_modules/@aws-amplify/graphql-maps-to-transformer/package.json +10 -10
  53. package/node_modules/@aws-amplify/graphql-model-transformer/CHANGELOG.md +2 -12
  54. package/node_modules/@aws-amplify/graphql-model-transformer/lib/graphql-model-transformer.d.ts.map +1 -1
  55. package/node_modules/@aws-amplify/graphql-model-transformer/lib/graphql-model-transformer.js +0 -4
  56. package/node_modules/@aws-amplify/graphql-model-transformer/lib/graphql-model-transformer.js.map +1 -1
  57. package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-lambda.zip +0 -0
  58. package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-notification-lambda.zip +0 -0
  59. package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-patching-lambda.zip +0 -0
  60. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/dynamo-model-resource-generator.d.ts +2 -5
  61. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/dynamo-model-resource-generator.d.ts.map +1 -1
  62. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/dynamo-model-resource-generator.js +60 -46
  63. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/dynamo-model-resource-generator.js.map +1 -1
  64. package/node_modules/@aws-amplify/graphql-model-transformer/package.json +6 -7
  65. package/node_modules/@aws-amplify/graphql-predictions-transformer/CHANGELOG.md +1 -1
  66. package/node_modules/@aws-amplify/graphql-predictions-transformer/LICENSE +201 -0
  67. package/node_modules/@aws-amplify/graphql-predictions-transformer/lib/predictionsLambdaFunction.zip +0 -0
  68. package/node_modules/@aws-amplify/graphql-predictions-transformer/package.json +7 -6
  69. package/node_modules/@aws-amplify/graphql-relational-transformer/CHANGELOG.md +1 -8
  70. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolvers.d.ts.map +1 -1
  71. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolvers.js +10 -3
  72. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolvers.js.map +1 -1
  73. package/node_modules/@aws-amplify/graphql-relational-transformer/package.json +8 -8
  74. package/node_modules/@aws-amplify/graphql-searchable-transformer/CHANGELOG.md +1 -5
  75. package/node_modules/@aws-amplify/graphql-searchable-transformer/lib/streaming-lambda.zip +0 -0
  76. package/node_modules/@aws-amplify/graphql-searchable-transformer/package.json +7 -7
  77. package/node_modules/@aws-amplify/graphql-transformer/API.md +0 -3
  78. package/node_modules/@aws-amplify/graphql-transformer/CHANGELOG.md +4 -4
  79. package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.d.ts +0 -3
  80. package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.d.ts.map +1 -1
  81. package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.js +3 -11
  82. package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.js.map +1 -1
  83. package/node_modules/@aws-amplify/graphql-transformer/package.json +14 -14
  84. package/node_modules/@aws-amplify/graphql-transformer/src/graphql-transformer.ts +2 -15
  85. package/node_modules/@aws-amplify/graphql-transformer-core/CHANGELOG.md +3 -3
  86. package/node_modules/@aws-amplify/graphql-transformer-core/LICENSE +201 -0
  87. package/node_modules/@aws-amplify/graphql-transformer-core/lib/graphql-api.js +2 -1
  88. package/node_modules/@aws-amplify/graphql-transformer-core/lib/graphql-api.js.map +1 -1
  89. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/transform-parameters.d.ts.map +1 -1
  90. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/transform-parameters.js +0 -1
  91. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/transform-parameters.js.map +1 -1
  92. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/authType.d.ts.map +1 -1
  93. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/authType.js +1 -0
  94. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/authType.js.map +1 -1
  95. package/node_modules/@aws-amplify/graphql-transformer-core/package.json +5 -4
  96. package/node_modules/@aws-amplify/graphql-transformer-interfaces/API.md +0 -1
  97. package/node_modules/@aws-amplify/graphql-transformer-interfaces/CHANGELOG.md +3 -3
  98. package/node_modules/@aws-amplify/graphql-transformer-interfaces/LICENSE +201 -0
  99. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/graphql-api-provider.d.ts +1 -0
  100. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/graphql-api-provider.d.ts.map +1 -1
  101. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/graphql-api-provider.js.map +1 -1
  102. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/transform-parameters.d.ts +0 -1
  103. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/transform-parameters.d.ts.map +1 -1
  104. package/node_modules/@aws-amplify/graphql-transformer-interfaces/package.json +3 -2
  105. package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/graphql-api-provider.ts +13 -0
  106. package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/transformer-context/transform-parameters.ts +0 -1
  107. package/node_modules/@aws-amplify/graphql-transformer-interfaces/tsconfig.tsbuildinfo +1 -1
  108. package/node_modules/graphql-transformer-common/API.md +0 -3
  109. package/node_modules/graphql-transformer-common/CHANGELOG.md +0 -6
  110. package/node_modules/graphql-transformer-common/lib/ResourceConstants.d.ts +0 -3
  111. package/node_modules/graphql-transformer-common/lib/ResourceConstants.d.ts.map +1 -1
  112. package/node_modules/graphql-transformer-common/lib/ResourceConstants.js +0 -3
  113. package/node_modules/graphql-transformer-common/lib/ResourceConstants.js.map +1 -1
  114. package/node_modules/graphql-transformer-common/package.json +1 -1
  115. package/package.json +16 -16
  116. package/src/amplify-graphql-api.ts +30 -5
  117. package/src/internal/amplify-metadata.ts +1 -13
  118. package/src/internal/authorization-modes.ts +17 -16
  119. package/src/internal/construct-exports.ts +2 -12
  120. package/src/internal/construct-tree.ts +26 -0
  121. package/src/internal/default-parameters.ts +0 -1
  122. package/src/types.ts +4 -18
  123. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamo-model-resource-generator.d.ts +0 -15
  124. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamo-model-resource-generator.d.ts.map +0 -1
  125. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamo-model-resource-generator.js +0 -169
  126. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamo-model-resource-generator.js.map +0 -1
  127. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamodb-table-construct/index.d.ts +0 -40
  128. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamodb-table-construct/index.d.ts.map +0 -1
  129. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamodb-table-construct/index.js +0 -242
  130. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamodb-table-construct/index.js.map +0 -1
  131. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/amplify-table-manager-handler.d.ts +0 -13
  132. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/amplify-table-manager-handler.d.ts.map +0 -1
  133. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/amplify-table-manager-handler.js +0 -665
  134. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/amplify-table-manager-handler.js.map +0 -1
@@ -399,9 +399,6 @@ export class ResourceConstants {
399
399
  AuthCognitoUserPoolLogicalID: string;
400
400
  AuthCognitoUserPoolNativeClientLogicalID: string;
401
401
  AuthCognitoUserPoolJSClientLogicalID: string;
402
- TableManagerOnEventHandlerLogicalID: string;
403
- TableManagerIsCompleteHandlerLogicalID: string;
404
- TableManagerCustomProviderLogicalID: string;
405
402
  };
406
403
  // (undocumented)
407
404
  static readonly SNIPPETS: {
@@ -3,12 +3,6 @@
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
- # [4.26.0-amplify-table-preview.0](https://github.com/aws-amplify/amplify-category-api/compare/graphql-transformer-common@4.25.1...graphql-transformer-common@4.26.0-amplify-table-preview.0) (2023-10-12)
7
-
8
- ### Features
9
-
10
- - bootstrap for adding amplify managed table ([#1849](https://github.com/aws-amplify/amplify-category-api/issues/1849)) ([d7d6740](https://github.com/aws-amplify/amplify-category-api/commit/d7d6740e7bc5291bc42eaefe208c0a5886b8a718))
11
-
12
6
  ## [4.25.1](https://github.com/aws-amplify/amplify-category-api/compare/graphql-transformer-common@4.25.0...graphql-transformer-common@4.25.1) (2023-08-30)
13
7
 
14
8
  **Note:** Version bump only for package graphql-transformer-common
@@ -32,9 +32,6 @@ export declare class ResourceConstants {
32
32
  AuthCognitoUserPoolLogicalID: string;
33
33
  AuthCognitoUserPoolNativeClientLogicalID: string;
34
34
  AuthCognitoUserPoolJSClientLogicalID: string;
35
- TableManagerOnEventHandlerLogicalID: string;
36
- TableManagerIsCompleteHandlerLogicalID: string;
37
- TableManagerCustomProviderLogicalID: string;
38
35
  };
39
36
  static PARAMETERS: {
40
37
  Env: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceConstants.d.ts","sourceRoot":"","sources":["../src/ResourceConstants.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAiB;IAC5B,OAAc,IAAI,SAAU;IAE5B,OAAc,kBAAkB,SAAO;IAEvC,OAAc,6BAA6B,SAAO;IAElD,OAAc,6BAA6B,SAAO;IAElD,gBAAuB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6C9B;IAEF,OAAc,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAiDtB;IAEF,OAAc,QAAQ,KAAM;IAE5B,OAAc,UAAU;;;;;;;MAYtB;IAEF,OAAc,OAAO;;;;;;;;;;;;;;;MAsBnB;IAEF,OAAc,QAAQ,KAAM;IAE5B,gBAAuB,QAAQ;;;;;;;;;;;;;;;MAe7B;CACH"}
1
+ {"version":3,"file":"ResourceConstants.d.ts","sourceRoot":"","sources":["../src/ResourceConstants.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAiB;IAC5B,OAAc,IAAI,SAAU;IAE5B,OAAc,kBAAkB,SAAO;IAEvC,OAAc,6BAA6B,SAAO;IAElD,OAAc,6BAA6B,SAAO;IAElD,gBAAuB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAwC9B;IAEF,OAAc,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAiDtB;IAEF,OAAc,QAAQ,KAAM;IAE5B,OAAc,UAAU;;;;;;;MAYtB;IAEF,OAAc,OAAO;;;;;;;;;;;;;;;MAsBnB;IAEF,OAAc,QAAQ,KAAM;IAE5B,gBAAuB,QAAQ;;;;;;;;;;;;;;;MAe7B;CACH"}
@@ -37,9 +37,6 @@ ResourceConstants.RESOURCES = {
37
37
  AuthCognitoUserPoolLogicalID: 'AuthCognitoUserPool',
38
38
  AuthCognitoUserPoolNativeClientLogicalID: 'AuthCognitoUserPoolNativeClient',
39
39
  AuthCognitoUserPoolJSClientLogicalID: 'AuthCognitoUserPoolJSClient',
40
- TableManagerOnEventHandlerLogicalID: 'TableManagerOnEventHandler',
41
- TableManagerIsCompleteHandlerLogicalID: 'TableManagerIsCompleteHandler',
42
- TableManagerCustomProviderLogicalID: 'TableManagerCustomProvider',
43
40
  };
44
41
  ResourceConstants.PARAMETERS = {
45
42
  Env: 'env',
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceConstants.js","sourceRoot":"","sources":["../src/ResourceConstants.ts"],"names":[],"mappings":";;;AAAA,MAAa,iBAAiB;;AAA9B,8CAqKC;AApKe,sBAAI,GAAG,MAAM,CAAC;AAEd,oCAAkB,GAAG,GAAG,CAAC;AAEzB,+CAA6B,GAAG,GAAG,CAAC;AAEpC,+CAA6B,GAAG,GAAG,CAAC;AAE3B,2BAAS,GAAG;IAEjC,mBAAmB,EAAE,YAAY;IACjC,sBAAsB,EAAE,eAAe;IACvC,eAAe,EAAE,eAAe;IAChC,cAAc,EAAE,gBAAgB;IAChC,gBAAgB,EAAE,kBAAkB;IAGpC,mCAAmC,EAAE,4BAA4B;IACjE,4BAA4B,EAAE,qBAAqB;IACnD,4CAA4C,EAAE,qCAAqC;IACnF,6CAA6C,EAAE,sCAAsC;IACrF,gCAAgC,EAAE,yBAAyB;IAG3D,gCAAgC,EAAE,yBAAyB;IAC3D,yBAAyB,EAAE,kBAAkB;IAC7C,yCAAyC,EAAE,kCAAkC;IAC7E,0CAA0C,EAAE,mCAAmC;IAC/E,6BAA6B,EAAE,sBAAsB;IAGrD,yBAAyB,EAAE,kBAAkB;IAC7C,wBAAwB,EAAE,0BAA0B;IACpD,iCAAiC,EAAE,0BAA0B;IAC7D,kBAAkB,EAAE,oBAAoB;IACxC,gCAAgC,EAAE,kCAAkC;IACpE,0BAA0B,EAAE,4BAA4B;IACxD,4BAA4B,EAAE,qBAAqB;IACnD,8BAA8B,EAAE,mBAAmB;IACnD,gCAAgC,EAAE,kCAAkC;IAGpE,cAAc,EAAE,gBAAgB;IAGhC,4BAA4B,EAAE,qBAAqB;IACnD,wCAAwC,EAAE,iCAAiC;IAC3E,oCAAoC,EAAE,6BAA6B;IAGnE,mCAAmC,EAAE,4BAA4B;IACjE,sCAAsC,EAAE,+BAA+B;IACvE,mCAAmC,EAAE,4BAA4B;CAClE,CAAC;AAEY,4BAAU,GAAG;IAEzB,GAAG,EAAE,KAAK;IACV,kBAAkB,EAAE,oBAAoB;IACxC,mBAAmB,EAAE,qBAAqB;IAG1C,cAAc,EAAE,gBAAgB;IAChC,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,gBAAgB;IAChC,qBAAqB,EAAE,uBAAuB;IAG9C,mBAAmB,EAAE,qBAAqB;IAC1C,0BAA0B,EAAE,4BAA4B;IACxD,2BAA2B,EAAE,6BAA6B;IAC1D,iCAAiC,EAAE,mCAAmC;IACtE,kCAAkC,EAAE,oCAAoC;IAGxE,8BAA8B,EAAE,gCAAgC;IAChE,iCAAiC,EAAE,mCAAmC;IACtE,iCAAiC,EAAE,mCAAmC;IACtE,kCAAkC,EAAE,oCAAoC;IACxE,4BAA4B,EAAE,8BAA8B;IAC5D,iDAAiD,EAAE,mDAAmD;IACtG,0BAA0B,EAAE,4BAA4B;IACxD,yBAAyB,EAAE,2BAA2B;IACtD,wBAAwB,EAAE,0BAA0B;IACpD,uCAAuC,EAAE,yCAAyC;IAClF,mCAAmC,EAAE,qCAAqC;IAG1E,2BAA2B,EAAE,6BAA6B;IAC1D,8BAA8B,EAAE,gCAAgC;IAChE,8BAA8B,EAAE,gCAAgC;IAChE,+BAA+B,EAAE,iCAAiC;IAClE,yBAAyB,EAAE,2BAA2B;IACtD,8CAA8C,EAAE,gDAAgD;IAChG,uBAAuB,EAAE,yBAAyB;IAClD,sBAAsB,EAAE,wBAAwB;IAChD,qBAAqB,EAAE,uBAAuB;IAC9C,oCAAoC,EAAE,sCAAsC;IAC5E,gCAAgC,EAAE,kCAAkC;IAGpE,qBAAqB,EAAE,uBAAuB;CAC/C,CAAC;AAEY,0BAAQ,GAAG,EAAE,CAAC;AAEd,4BAAU,GAAG;IAEzB,uBAAuB,EAAE,yBAAyB;IAGlD,6BAA6B,EAAE,+BAA+B;IAC9D,4BAA4B,EAAE,8BAA8B;IAC5D,6BAA6B,EAAE,+BAA+B;IAG9D,kBAAkB,EAAE,oBAAoB;IACxC,+BAA+B,EAAE,iCAAiC;CACnE,CAAC;AAEY,yBAAO,GAAG;IAEtB,wBAAwB,EAAE,0BAA0B;IACpD,sBAAsB,EAAE,qBAAqB;IAC7C,kBAAkB,EAAE,oBAAoB;IAGxC,sCAAsC,EAAE,wCAAwC;IAChF,6BAA6B,EAAE,+BAA+B;IAC9D,sBAAsB,EAAE,wBAAwB;IAChD,2BAA2B,EAAE,6BAA6B;IAG1D,mCAAmC,EAAE,qCAAqC;IAC1E,0BAA0B,EAAE,4BAA4B;IACxD,mBAAmB,EAAE,qBAAqB;IAC1C,wBAAwB,EAAE,0BAA0B;IAGpD,2BAA2B,EAAE,6BAA6B;IAC1D,qCAAqC,EAAE,mCAAmC;IAC1E,iCAAiC,EAAE,+BAA+B;CACnE,CAAC;AAEY,0BAAQ,GAAG,EAAE,CAAC;AAEL,0BAAQ,GAAG;IAChC,aAAa,EAAE,eAAe;IAC9B,QAAQ,EAAE,UAAU;IACpB,kBAAkB,EAAE,oBAAoB;IACxC,cAAc,EAAE,gBAAgB;IAChC,uBAAuB,EAAE,yBAAyB;IAClD,oBAAoB,EAAE,sBAAsB;IAC5C,eAAe,EAAE,iBAAiB;IAClC,gCAAgC,EAAE,0BAA0B;IAC5D,qCAAqC,EAAE,+BAA+B;IACtE,+BAA+B,EAAE,yBAAyB;IAC1D,yBAAyB,EAAE,mBAAmB;IAC9C,8BAA8B,EAAE,wBAAwB;IACxD,eAAe,EAAE,iBAAiB;IAClC,iBAAiB,EAAE,mBAAmB;CACvC,CAAC"}
1
+ {"version":3,"file":"ResourceConstants.js","sourceRoot":"","sources":["../src/ResourceConstants.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "graphql-transformer-common",
3
- "version": "4.26.0-amplify-table-preview.0",
3
+ "version": "4.25.1",
4
4
  "description": "Common code and constants for AppSync Transformers",
5
5
  "repository": {
6
6
  "type": "git",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-amplify/graphql-api-construct",
3
- "version": "1.2.0-amplify-table-preview.1",
3
+ "version": "1.2.1",
4
4
  "description": "AppSync GraphQL Api Construct using Amplify GraphQL Transformer.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -76,26 +76,26 @@
76
76
  "dependencies": {
77
77
  "@aws-amplify/backend-output-schemas": "^0.2.0-alpha.6",
78
78
  "@aws-amplify/backend-output-storage": "^0.1.1-alpha.2",
79
- "@aws-amplify/graphql-auth-transformer": "3.1.9-amplify-table-preview.1",
80
- "@aws-amplify/graphql-default-value-transformer": "2.1.8-amplify-table-preview.1",
81
- "@aws-amplify/graphql-function-transformer": "2.1.7-amplify-table-preview.0",
82
- "@aws-amplify/graphql-http-transformer": "2.1.7-amplify-table-preview.0",
83
- "@aws-amplify/graphql-index-transformer": "2.2.0-amplify-table-preview.1",
84
- "@aws-amplify/graphql-maps-to-transformer": "3.2.5-amplify-table-preview.1",
85
- "@aws-amplify/graphql-model-transformer": "2.3.0-amplify-table-preview.1",
86
- "@aws-amplify/graphql-predictions-transformer": "2.1.7-amplify-table-preview.0",
87
- "@aws-amplify/graphql-relational-transformer": "2.2.0-amplify-table-preview.1",
88
- "@aws-amplify/graphql-searchable-transformer": "2.2.4-amplify-table-preview.1",
89
- "@aws-amplify/graphql-transformer": "1.3.0-amplify-table-preview.1",
90
- "@aws-amplify/graphql-transformer-core": "2.3.0-amplify-table-preview.0",
91
- "@aws-amplify/graphql-transformer-interfaces": "3.3.0-amplify-table-preview.0",
79
+ "@aws-amplify/graphql-auth-transformer": "3.1.10",
80
+ "@aws-amplify/graphql-default-value-transformer": "2.1.8",
81
+ "@aws-amplify/graphql-function-transformer": "2.1.7",
82
+ "@aws-amplify/graphql-http-transformer": "2.1.7",
83
+ "@aws-amplify/graphql-index-transformer": "2.1.8",
84
+ "@aws-amplify/graphql-maps-to-transformer": "3.2.5",
85
+ "@aws-amplify/graphql-model-transformer": "2.2.4",
86
+ "@aws-amplify/graphql-predictions-transformer": "2.1.7",
87
+ "@aws-amplify/graphql-relational-transformer": "2.1.8",
88
+ "@aws-amplify/graphql-searchable-transformer": "2.2.4",
89
+ "@aws-amplify/graphql-transformer": "1.2.6",
90
+ "@aws-amplify/graphql-transformer-core": "2.2.4",
91
+ "@aws-amplify/graphql-transformer-interfaces": "3.2.2",
92
92
  "charenc": "^0.0.2",
93
93
  "crypt": "^0.0.2",
94
94
  "fs-extra": "^8.1.0",
95
95
  "graceful-fs": "^4.2.11",
96
96
  "graphql": "^15.5.0",
97
97
  "graphql-mapping-template": "4.20.12",
98
- "graphql-transformer-common": "4.26.0-amplify-table-preview.0",
98
+ "graphql-transformer-common": "4.25.1",
99
99
  "hjson": "^3.2.2",
100
100
  "immer": "^9.0.12",
101
101
  "is-buffer": "^2.0.5",
@@ -162,5 +162,5 @@
162
162
  }
163
163
  }
164
164
  },
165
- "gitHead": "52aaca8c166bebf7166fe4b165c9584b4337f31a"
165
+ "gitHead": "bd0e1b983962b9e2d15544295f8312ae379ea427"
166
166
  }
@@ -48,6 +48,7 @@ import {
48
48
  addAmplifyMetadataToStackDescription,
49
49
  getAdditionalAuthenticationTypes,
50
50
  } from './internal';
51
+ import { getStackForScope, walkAndProcessNodes } from './internal/construct-tree';
51
52
 
52
53
  /**
53
54
  * L3 Construct which invokes the Amplify Transformer Pattern over an input Graphql Schema.
@@ -111,6 +112,11 @@ export class AmplifyGraphqlApi extends Construct {
111
112
  */
112
113
  public readonly apiKey: string | undefined;
113
114
 
115
+ /**
116
+ * Generated Api Id. May be a CDK Token.
117
+ */
118
+ public readonly apiId: string;
119
+
114
120
  /**
115
121
  * Conflict resolution setting
116
122
  */
@@ -126,6 +132,8 @@ export class AmplifyGraphqlApi extends Construct {
126
132
  constructor(scope: Construct, id: string, props: AmplifyGraphqlApiProps) {
127
133
  super(scope, id);
128
134
 
135
+ validateNoOtherAmplifyGraphqlApiInStack(this);
136
+
129
137
  const {
130
138
  definition,
131
139
  authorizationModes,
@@ -141,8 +149,7 @@ export class AmplifyGraphqlApi extends Construct {
141
149
 
142
150
  addAmplifyMetadataToStackDescription(scope);
143
151
 
144
- const { authConfig, identityPoolId, adminRoles, authSynthParameters } =
145
- convertAuthorizationModesToTransformerAuthConfig(authorizationModes);
152
+ const { authConfig, authSynthParameters } = convertAuthorizationModesToTransformerAuthConfig(authorizationModes);
146
153
 
147
154
  validateFunctionSlots(functionSlots ?? []);
148
155
  const separatedFunctionSlots = separateSlots([...(functionSlots ?? []), ...definition.functionSlots]);
@@ -174,9 +181,6 @@ export class AmplifyGraphqlApi extends Construct {
174
181
  schema: definition.schema,
175
182
  userDefinedSlots: parseUserDefinedSlots(separatedFunctionSlots),
176
183
  transformersFactoryArgs: {
177
- authConfig,
178
- identityPoolId,
179
- adminRoles,
180
184
  customTransformers: transformerPlugins ?? [],
181
185
  ...(predictionsBucket ? { storageConfig: { bucketName: predictionsBucket.bucketName } } : {}),
182
186
  functionNameMap,
@@ -197,6 +201,7 @@ export class AmplifyGraphqlApi extends Construct {
197
201
  this.generatedFunctionSlots = getGeneratedFunctionSlots(assetManager.resolverAssets);
198
202
  this.storeOutput(outputStorageStrategy);
199
203
 
204
+ this.apiId = this.resources.cfnResources.cfnGraphqlApi.attrApiId;
200
205
  this.graphqlUrl = this.resources.cfnResources.cfnGraphqlApi.attrGraphQlUrl;
201
206
  this.realtimeUrl = this.resources.cfnResources.cfnGraphqlApi.attrRealtimeUrl;
202
207
  this.apiKey = this.resources.cfnResources.cfnApiKey?.attrApiKey;
@@ -360,3 +365,23 @@ export class AmplifyGraphqlApi extends Construct {
360
365
  });
361
366
  }
362
367
  }
368
+
369
+ /**
370
+ * Given the provided scope, walk the node tree, and throw an exception if any other AmplifyGraphqlApi constructs
371
+ * are found in the stack.
372
+ * @param scope the scope this construct is created in.
373
+ */
374
+ const validateNoOtherAmplifyGraphqlApiInStack = (scope: Construct): void => {
375
+ const rootStack = getStackForScope(scope, true);
376
+
377
+ let wasOtherAmplifyGraphlApiFound = false;
378
+ walkAndProcessNodes(rootStack, (node: Construct) => {
379
+ if (node instanceof AmplifyGraphqlApi && scope !== node) {
380
+ wasOtherAmplifyGraphlApiFound = true;
381
+ }
382
+ });
383
+
384
+ if (wasOtherAmplifyGraphlApiFound) {
385
+ throw new Error('Only one AmplifyGraphqlApi is expected in a stack');
386
+ }
387
+ };
@@ -1,20 +1,8 @@
1
1
  import * as os from 'os';
2
2
  import * as fs from 'fs';
3
3
  import * as path from 'path';
4
- import { Stack } from 'aws-cdk-lib';
5
4
  import { Construct } from 'constructs';
6
- /**
7
- * Given a scope, search up for the parent stack. This should be the nearest stack object.
8
- * @param scope the scope to search up against.
9
- * @returns the stack, if one can be found, else throws an error.
10
- */
11
- const getStackForScope = (scope: Construct): Stack => {
12
- const stacksInHierarchy = scope.node.scopes.filter((parentScope) => 'templateOptions' in parentScope);
13
- if (stacksInHierarchy.length === 0) {
14
- throw new Error('No Stack Found in Construct Scope');
15
- }
16
- return stacksInHierarchy.reverse()[0] as Stack;
17
- };
5
+ import { getStackForScope } from './construct-tree';
18
6
 
19
7
  /**
20
8
  * Compute the platform string, based on
@@ -1,4 +1,6 @@
1
1
  import { AppSyncAuthConfiguration, AppSyncAuthConfigurationEntry, SynthParameters } from '@aws-amplify/graphql-transformer-interfaces';
2
+ import { CfnGraphQLApi } from 'aws-cdk-lib/aws-appsync';
3
+ import { isArray } from 'lodash';
2
4
  import {
3
5
  AuthorizationModes,
4
6
  ApiKeyAuthorizationConfig,
@@ -7,8 +9,7 @@ import {
7
9
  OIDCAuthorizationConfig,
8
10
  UserPoolAuthorizationConfig,
9
11
  } from '../types';
10
- import { CfnGraphQLApi } from 'aws-cdk-lib/aws-appsync';
11
- import { isArray } from 'lodash';
12
+ import { ServicePrincipal } from 'aws-cdk-lib/aws-iam';
12
13
 
13
14
  type AuthorizationConfigMode =
14
15
  | (IAMAuthorizationConfig & { type: 'AWS_IAM' })
@@ -56,6 +57,7 @@ const convertAuthModeToAuthProvider = (authMode: AuthorizationConfigMode): AppSy
56
57
  return {
57
58
  authenticationType,
58
59
  lambdaAuthorizerConfig: {
60
+ lambdaArn: authMode.function.functionArn,
59
61
  lambdaFunction: authMode.function.functionName,
60
62
  ttlSeconds: authMode.ttl.toSeconds(),
61
63
  },
@@ -89,6 +91,12 @@ const convertAuthConfigToAppSyncAuth = (authModes: AuthorizationModes): AppSyncA
89
91
  throw new Error('A defaultAuthorizationMode is required if multiple authorization modes are configured.');
90
92
  }
91
93
 
94
+ // Enable appsync to invoke a provided lambda authorizer function
95
+ authModes.lambdaConfig?.function.addPermission('appsync-auth-invoke', {
96
+ principal: new ServicePrincipal('appsync.amazonaws.com'),
97
+ action: 'lambda:InvokeFunction',
98
+ });
99
+
92
100
  // In the case of a single mode, defaultAuthorizationMode is not required, just use the provided value.
93
101
  if (authProviders.length === 1) {
94
102
  return {
@@ -106,7 +114,10 @@ const convertAuthConfigToAppSyncAuth = (authModes: AuthorizationModes): AppSyncA
106
114
  };
107
115
  };
108
116
 
109
- type AuthSynthParameters = Pick<SynthParameters, 'userPoolId' | 'authenticatedUserRoleName' | 'unauthenticatedUserRoleName'>;
117
+ type AuthSynthParameters = Pick<
118
+ SynthParameters,
119
+ 'userPoolId' | 'authenticatedUserRoleName' | 'unauthenticatedUserRoleName' | 'identityPoolId' | 'adminRoles'
120
+ >;
110
121
 
111
122
  interface AuthConfig {
112
123
  /**
@@ -114,16 +125,6 @@ interface AuthConfig {
114
125
  */
115
126
  authConfig?: AppSyncAuthConfiguration;
116
127
 
117
- /**
118
- * using the iam provider the resolvers checks will lets the roles in this list pass through the acm
119
- */
120
- adminRoles?: Array<string>;
121
-
122
- /**
123
- * when authorizing private/public @auth can also check authenticated/unauthenticated status for a given identityPoolId
124
- */
125
- identityPoolId?: string;
126
-
127
128
  /**
128
129
  * Params to include the transformer.
129
130
  */
@@ -135,7 +136,7 @@ interface AuthConfig {
135
136
  */
136
137
  export const getAdditionalAuthenticationTypes = (cfnGraphqlApi: CfnGraphQLApi): string | undefined => {
137
138
  if (!isArray(cfnGraphqlApi.additionalAuthenticationProviders)) {
138
- return;
139
+ return undefined;
139
140
  }
140
141
 
141
142
  return (cfnGraphqlApi.additionalAuthenticationProviders as CfnGraphQLApi.AdditionalAuthenticationProviderProperty[])
@@ -153,8 +154,6 @@ export const getAdditionalAuthenticationTypes = (cfnGraphqlApi: CfnGraphQLApi):
153
154
  */
154
155
  export const convertAuthorizationModesToTransformerAuthConfig = (authModes: AuthorizationModes): AuthConfig => ({
155
156
  authConfig: convertAuthConfigToAppSyncAuth(authModes),
156
- adminRoles: authModes.adminRoles?.map((role) => role.roleName) ?? [],
157
- identityPoolId: authModes.iamConfig?.identityPoolId,
158
157
  authSynthParameters: getSynthParameters(authModes),
159
158
  });
160
159
 
@@ -164,6 +163,8 @@ export const convertAuthorizationModesToTransformerAuthConfig = (authModes: Auth
164
163
  * @returns a record of params to be consumed by the transformer.
165
164
  */
166
165
  const getSynthParameters = (authModes: AuthorizationModes): AuthSynthParameters => ({
166
+ adminRoles: authModes.adminRoles?.map((role) => role.roleName) ?? [],
167
+ identityPoolId: authModes.iamConfig?.identityPoolId,
167
168
  ...(authModes.userPoolConfig ? { userPoolId: authModes.userPoolConfig.userPool.userPoolId } : {}),
168
169
  ...(authModes?.iamConfig
169
170
  ? {
@@ -14,6 +14,7 @@ import { CfnResource, NestedStack } from 'aws-cdk-lib';
14
14
  import { getResourceName } from '@aws-amplify/graphql-transformer-core';
15
15
  import { CfnFunction, Function as LambdaFunction } from 'aws-cdk-lib/aws-lambda';
16
16
  import { AmplifyGraphqlApiResources, FunctionSlot } from '../types';
17
+ import { walkAndProcessNodes } from './construct-tree';
17
18
 
18
19
  /**
19
20
  * Everything below here is intended to help us gather the
@@ -33,7 +34,6 @@ export const getGeneratedResources = (scope: Construct): AmplifyGraphqlApiResour
33
34
  const cfnDataSources: Record<string, CfnDataSource> = {};
34
35
  const tables: Record<string, Table> = {};
35
36
  const cfnTables: Record<string, CfnTable> = {};
36
- const cfnAmplifyTables: Record<string, CfnResource> = {};
37
37
  const roles: Record<string, Role> = {};
38
38
  const cfnRoles: Record<string, CfnRole> = {};
39
39
  const functions: Record<string, LambdaFunction> = {};
@@ -78,10 +78,6 @@ export const getGeneratedResources = (scope: Construct): AmplifyGraphqlApiResour
78
78
  cfnTables[resourceName] = currentScope;
79
79
  return;
80
80
  }
81
- if (currentScope instanceof CfnResource && currentScope.cfnResourceType === 'Custom::AmplifyDynamoDBTable') {
82
- cfnAmplifyTables[resourceName] = currentScope;
83
- return;
84
- }
85
81
  if (currentScope instanceof Role) {
86
82
  roles[resourceName] = currentScope;
87
83
  return;
@@ -104,12 +100,7 @@ export const getGeneratedResources = (scope: Construct): AmplifyGraphqlApiResour
104
100
  }
105
101
  };
106
102
 
107
- const walkAndClassifyConstructTree = (currentScope: Construct): void => {
108
- classifyConstruct(currentScope);
109
- currentScope.node.children.forEach(walkAndClassifyConstructTree);
110
- };
111
-
112
- scope.node.children.forEach(walkAndClassifyConstructTree);
103
+ scope.node.children.forEach((child) => walkAndProcessNodes(child, classifyConstruct));
113
104
 
114
105
  if (!cfnGraphqlApi) {
115
106
  throw new Error('Expected to find AWS::AppSync::GraphQLApi in the generated resource scope.');
@@ -137,7 +128,6 @@ export const getGeneratedResources = (scope: Construct): AmplifyGraphqlApiResour
137
128
  cfnFunctionConfigurations,
138
129
  cfnDataSources,
139
130
  cfnTables,
140
- cfnAmplifyTables,
141
131
  cfnRoles,
142
132
  cfnFunctions,
143
133
  additionalCfnResources,
@@ -0,0 +1,26 @@
1
+ import { Stack } from 'aws-cdk-lib';
2
+ import { Construct } from 'constructs';
3
+
4
+ /**
5
+ * Given a scope, search up for the parent stack. This should be the nearest stack object.
6
+ * @param scope the scope to search up against.
7
+ * @returns the stack, if one can be found, else throws an error.
8
+ */
9
+ export const getStackForScope = (scope: Construct, getRootStack = false): Stack => {
10
+ const stacksInHierarchy = scope.node.scopes.filter((parentScope) => 'templateOptions' in parentScope);
11
+ if (stacksInHierarchy.length === 0) {
12
+ throw new Error('No Stack Found in Construct Scope');
13
+ }
14
+ const stacks = getRootStack ? stacksInHierarchy : stacksInHierarchy.reverse();
15
+ return stacks[0] as Stack;
16
+ };
17
+
18
+ /**
19
+ * Utility to iteratively walk the construct tree starting at a particular node, executing a node processor at each step.
20
+ * @param currentScope the scope to process.
21
+ * @param processNode the fn to invoke on walk.
22
+ */
23
+ export const walkAndProcessNodes = (currentScope: Construct, processNode: (scope: Construct) => void): void => {
24
+ processNode(currentScope);
25
+ currentScope.node.children.forEach((child) => walkAndProcessNodes(child, processNode));
26
+ };
@@ -16,6 +16,5 @@ export const defaultTranslationBehavior: TranslationBehavior = {
16
16
  enableAutoIndexQueryNames: true,
17
17
  respectPrimaryKeyAttributesOnConnectionField: true,
18
18
  enableSearchNodeToNodeEncryption: false,
19
- useAmplifyManagedTableResources: false, // TODO: flip to true once all implementations are finished
20
19
  enableTransformerCfnOutputs: false,
21
20
  };
package/src/types.ts CHANGED
@@ -393,14 +393,12 @@ export interface TranslationBehavior {
393
393
  readonly respectPrimaryKeyAttributesOnConnectionField: boolean;
394
394
 
395
395
  /**
396
- * Used for AmplifyGrapqhlApi construct ONLY
397
- * If enabled, the table resources will be generated under custom resource provider,
398
- * which enables the multiple GSI updates within one deployment phase
396
+ * If enabled, set nodeToNodeEncryption on the searchable domain (if one exists). Not recommended for use, prefer
397
+ * to use `Object.values(resources.additionalResources['AWS::Elasticsearch::Domain']).forEach((domain: CfnDomain) => {
398
+ * domain.NodeToNodeEncryptionOptions = { Enabled: True };
399
+ * });
399
400
  * @default false
400
- * @experimental
401
401
  */
402
- readonly useAmplifyManagedTableResources: boolean;
403
-
404
402
  readonly enableSearchNodeToNodeEncryption: boolean;
405
403
 
406
404
  /**
@@ -486,13 +484,6 @@ export interface PartialTranslationBehavior {
486
484
  * @default false
487
485
  */
488
486
  readonly enableTransformerCfnOutputs?: boolean;
489
-
490
- /**
491
- * When enabled, amplify DynamoDB table will be generated instead of CFN pre-defined DynamoDB table
492
- * @default false
493
- * @experimental
494
- */
495
- readonly useAmplifyManagedTableResources?: boolean;
496
487
  }
497
488
 
498
489
  /**
@@ -656,11 +647,6 @@ export interface AmplifyGraphqlApiCfnResources {
656
647
  */
657
648
  readonly cfnTables: Record<string, CfnTable>;
658
649
 
659
- /**
660
- * The Generated Amplify DynamoDB Table L1 Resources, keyed by model name.
661
- */
662
- readonly cfnAmplifyTables: Record<string, CfnResource>;
663
-
664
650
  /**
665
651
  * The Generated IAM Role L1 Resources, keyed by logicalId.
666
652
  */
@@ -1,15 +0,0 @@
1
- import { TransformerContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
2
- import { ObjectTypeDefinitionNode } from 'graphql';
3
- import { Construct } from 'constructs';
4
- import { DynamoModelResourceGenerator } from '../dynamo-model-resource-generator';
5
- export declare const ITERATIVE_TABLE_STACK_NAME = "AmplifyTableManager";
6
- export declare class AmplifyDynamoModelResourceGenerator extends DynamoModelResourceGenerator {
7
- private customResourceServiceToken;
8
- private amplifyTableArns;
9
- private ddbManagerPolicy?;
10
- private customResourceProvider?;
11
- generateResources(ctx: TransformerContextProvider): void;
12
- protected createCustomProviderResource(scope: Construct, context: TransformerContextProvider): void;
13
- protected createModelTable(scope: Construct, def: ObjectTypeDefinitionNode, context: TransformerContextProvider): void;
14
- }
15
- //# sourceMappingURL=amplify-dynamo-model-resource-generator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"amplify-dynamo-model-resource-generator.d.ts","sourceRoot":"","sources":["../../../src/resources/amplify-dynamodb-table/amplify-dynamo-model-resource-generator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AAEzF,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAGnD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AASlF,eAAO,MAAM,0BAA0B,wBAAwB,CAAC;AAChE,qBAAa,mCAAoC,SAAQ,4BAA4B;IACnF,OAAO,CAAC,0BAA0B,CAAc;IAChD,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,gBAAgB,CAAC,CAAiB;IAC1C,OAAO,CAAC,sBAAsB,CAAC,CAA4B;IAE3D,iBAAiB,CAAC,GAAG,EAAE,0BAA0B,GAAG,IAAI;IA4CxD,SAAS,CAAC,4BAA4B,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,0BAA0B,GAAG,IAAI;IAoCnG,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,wBAAwB,EAAE,OAAO,EAAE,0BAA0B,GAAG,IAAI;CA0FvH"}
@@ -1,169 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.AmplifyDynamoModelResourceGenerator = exports.ITERATIVE_TABLE_STACK_NAME = void 0;
27
- const cdk = __importStar(require("aws-cdk-lib"));
28
- const graphql_transformer_common_1 = require("graphql-transformer-common");
29
- const graphql_transformer_core_1 = require("@aws-amplify/graphql-transformer-core");
30
- const aws_dynamodb_1 = require("aws-cdk-lib/aws-dynamodb");
31
- const aws_cdk_lib_1 = require("aws-cdk-lib");
32
- const dynamo_model_resource_generator_1 = require("../dynamo-model-resource-generator");
33
- const path = __importStar(require("path"));
34
- const amplify_dynamodb_table_construct_1 = require("./amplify-dynamodb-table-construct");
35
- exports.ITERATIVE_TABLE_STACK_NAME = 'AmplifyTableManager';
36
- class AmplifyDynamoModelResourceGenerator extends dynamo_model_resource_generator_1.DynamoModelResourceGenerator {
37
- constructor() {
38
- super(...arguments);
39
- this.customResourceServiceToken = '';
40
- this.amplifyTableArns = [];
41
- }
42
- generateResources(ctx) {
43
- var _a;
44
- if (!this.isEnabled()) {
45
- return;
46
- }
47
- if (this.isProvisioned()) {
48
- const rootStack = cdk.Stack.of(ctx.stackManager.scope);
49
- this.createDynamoDBParameters(rootStack, false);
50
- const tableManagerStack = ctx.stackManager.getScopeFor('AmplifyTableCustomProvider', exports.ITERATIVE_TABLE_STACK_NAME);
51
- this.createCustomProviderResource(tableManagerStack, ctx);
52
- }
53
- this.models.forEach((model) => {
54
- const tableBaseName = ctx.resourceHelper.getModelNameMapping(model.name.value);
55
- const tableLogicalName = graphql_transformer_common_1.ModelResourceIDs.ModelTableResourceID(tableBaseName);
56
- const scope = ctx.stackManager.getScopeFor(tableLogicalName, tableBaseName);
57
- this.createModelTable(scope, model, ctx);
58
- });
59
- if (this.ddbManagerPolicy) {
60
- (_a = this.ddbManagerPolicy) === null || _a === void 0 ? void 0 : _a.addStatements(new aws_cdk_lib_1.aws_iam.PolicyStatement({
61
- actions: [
62
- 'dynamodb:CreateTable',
63
- 'dynamodb:UpdateTable',
64
- 'dynamodb:DeleteTable',
65
- 'dynamodb:DescribeTable',
66
- 'dynamodb:DescribeContinuousBackups',
67
- 'dynamodb:DescribeTimeToLive',
68
- 'dynamodb:UpdateContinuousBackups',
69
- 'dynamodb:UpdateTimeToLive',
70
- ],
71
- resources: this.amplifyTableArns,
72
- }));
73
- }
74
- this.generateResolvers(ctx);
75
- }
76
- createCustomProviderResource(scope, context) {
77
- this.ddbManagerPolicy = new aws_cdk_lib_1.aws_iam.Policy(scope, 'CreateUpdateDeleteTablesPolicy');
78
- const lambdaCode = aws_cdk_lib_1.aws_lambda.Code.fromAsset(path.join(__dirname, '..', '..', '..', 'lib', 'resources', 'amplify-dynamodb-table', 'amplify-table-manager-lambda'));
79
- const gsiOnEventHandler = new aws_cdk_lib_1.aws_lambda.Function(scope, graphql_transformer_common_1.ResourceConstants.RESOURCES.TableManagerOnEventHandlerLogicalID, {
80
- runtime: aws_cdk_lib_1.aws_lambda.Runtime.NODEJS_16_X,
81
- code: lambdaCode,
82
- handler: 'amplify-table-manager-handler.onEvent',
83
- timeout: aws_cdk_lib_1.Duration.minutes(14),
84
- });
85
- const gsiIsCompleteHandler = new aws_cdk_lib_1.aws_lambda.Function(scope, graphql_transformer_common_1.ResourceConstants.RESOURCES.TableManagerIsCompleteHandlerLogicalID, {
86
- runtime: aws_cdk_lib_1.aws_lambda.Runtime.NODEJS_16_X,
87
- code: lambdaCode,
88
- handler: 'amplify-table-manager-handler.isComplete',
89
- timeout: aws_cdk_lib_1.Duration.minutes(14),
90
- });
91
- this.ddbManagerPolicy.attachToRole(gsiOnEventHandler.role);
92
- this.ddbManagerPolicy.attachToRole(gsiIsCompleteHandler.role);
93
- this.customResourceProvider = new aws_cdk_lib_1.custom_resources.Provider(scope, graphql_transformer_common_1.ResourceConstants.RESOURCES.TableManagerCustomProviderLogicalID, {
94
- onEventHandler: gsiOnEventHandler,
95
- isCompleteHandler: gsiIsCompleteHandler,
96
- logRetention: aws_cdk_lib_1.aws_logs.RetentionDays.ONE_MONTH,
97
- queryInterval: aws_cdk_lib_1.Duration.seconds(30),
98
- totalTimeout: aws_cdk_lib_1.Duration.hours(2),
99
- });
100
- this.customResourceServiceToken = this.customResourceProvider.serviceToken;
101
- }
102
- createModelTable(scope, def, context) {
103
- var _a;
104
- const modelName = def.name.value;
105
- const tableLogicalName = graphql_transformer_common_1.ModelResourceIDs.ModelTableResourceID(modelName);
106
- const tableName = context.resourceHelper.generateTableName(modelName);
107
- const { readIops, writeIops, billingMode, pointInTimeRecovery, enableSSE } = this.createDynamoDBParameters(scope, true);
108
- new cdk.CfnCondition(scope, graphql_transformer_common_1.ResourceConstants.CONDITIONS.HasEnvironmentParameter, {
109
- expression: cdk.Fn.conditionNot(cdk.Fn.conditionEquals(context.synthParameters.amplifyEnvironmentName, graphql_transformer_common_1.ResourceConstants.NONE)),
110
- });
111
- const useSSE = new cdk.CfnCondition(scope, graphql_transformer_common_1.ResourceConstants.CONDITIONS.ShouldUseServerSideEncryption, {
112
- expression: cdk.Fn.conditionEquals(enableSSE, 'true'),
113
- });
114
- const usePayPerRequestBilling = new cdk.CfnCondition(scope, graphql_transformer_common_1.ResourceConstants.CONDITIONS.ShouldUsePayPerRequestBilling, {
115
- expression: cdk.Fn.conditionEquals(billingMode, 'PAY_PER_REQUEST'),
116
- });
117
- const usePointInTimeRecovery = new cdk.CfnCondition(scope, graphql_transformer_common_1.ResourceConstants.CONDITIONS.ShouldUsePointInTimeRecovery, {
118
- expression: cdk.Fn.conditionEquals(pointInTimeRecovery, 'true'),
119
- });
120
- const removalPolicy = this.options.EnableDeletionProtection ? cdk.RemovalPolicy.RETAIN : cdk.RemovalPolicy.DESTROY;
121
- const table = new amplify_dynamodb_table_construct_1.AmplifyDynamoDBTable(scope, `${tableLogicalName}`, {
122
- customResourceServiceToken: this.customResourceServiceToken,
123
- tableName,
124
- partitionKey: {
125
- name: 'id',
126
- type: aws_dynamodb_1.AttributeType.STRING,
127
- },
128
- stream: aws_dynamodb_1.StreamViewType.NEW_AND_OLD_IMAGES,
129
- encryption: aws_dynamodb_1.TableEncryption.DEFAULT,
130
- removalPolicy,
131
- ...(context.isProjectUsingDataStore() ? { timeToLiveAttribute: '_ttl' } : undefined),
132
- });
133
- (0, graphql_transformer_core_1.setResourceName)(table, { name: modelName, setOnDefaultChild: false });
134
- const tableRepresentative = table.tableFromAttr;
135
- this.amplifyTableArns.push(cdk.Fn.sub('arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/${tablename}', {
136
- tablename: tableName,
137
- }));
138
- const cfnTable = (_a = table.node.defaultChild) === null || _a === void 0 ? void 0 : _a.node.defaultChild;
139
- (0, graphql_transformer_core_1.setResourceName)(cfnTable, { name: modelName, setOnDefaultChild: false });
140
- cfnTable.addPropertyOverride('provisionedThroughput', cdk.Fn.conditionIf(usePayPerRequestBilling.logicalId, cdk.Fn.ref('AWS::NoValue'), {
141
- ReadCapacityUnits: readIops,
142
- WriteCapacityUnits: writeIops,
143
- }));
144
- cfnTable.addPropertyOverride('pointInTimeRecoverySpecification', cdk.Fn.conditionIf(usePointInTimeRecovery.logicalId, { PointInTimeRecoveryEnabled: true }, cdk.Fn.ref('AWS::NoValue')));
145
- cfnTable.addPropertyOverride('billingMode', cdk.Fn.conditionIf(usePayPerRequestBilling.logicalId, 'PAY_PER_REQUEST', cdk.Fn.ref('AWS::NoValue')).toString());
146
- cfnTable.addPropertyOverride('sseSpecification', {
147
- sseEnabled: cdk.Fn.conditionIf(useSSE.logicalId, true, false),
148
- });
149
- const streamArnOutputId = `GetAtt${graphql_transformer_common_1.ModelResourceIDs.ModelTableStreamArn(def.name.value)}`;
150
- if (table.tableStreamArn) {
151
- new cdk.CfnOutput(cdk.Stack.of(scope), streamArnOutputId, {
152
- value: table.tableStreamArn,
153
- description: 'Your DynamoDB table StreamArn.',
154
- exportName: cdk.Fn.join(':', [context.api.apiId, 'GetAtt', tableLogicalName, 'StreamArn']),
155
- });
156
- }
157
- const tableNameOutputId = `GetAtt${tableLogicalName}Name`;
158
- new cdk.CfnOutput(cdk.Stack.of(scope), tableNameOutputId, {
159
- value: table.tableName,
160
- description: 'Your DynamoDB table name.',
161
- exportName: cdk.Fn.join(':', [context.api.apiId, 'GetAtt', tableLogicalName, 'Name']),
162
- });
163
- const role = this.createIAMRole(context, def, scope, tableName);
164
- const tableDataSourceLogicalName = `${def.name.value}Table`;
165
- this.createModelTableDataSource(def, context, tableRepresentative, scope, role, tableDataSourceLogicalName);
166
- }
167
- }
168
- exports.AmplifyDynamoModelResourceGenerator = AmplifyDynamoModelResourceGenerator;
169
- //# sourceMappingURL=amplify-dynamo-model-resource-generator.js.map