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

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 (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":"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"}
1
+ {"version":3,"file":"ResourceConstants.js","sourceRoot":"","sources":["../src/ResourceConstants.ts"],"names":[],"mappings":";;;AAAA,MAAa,iBAAiB;;AAA9B,8CAgKC;AA/Je,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;CACpE,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,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