@sylvesterllc/aws-constructs 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/.github/workflows/publish.yml +36 -0
  2. package/dist/config/AppConfig.d.ts +24 -0
  3. package/dist/config/AppConfig.js +62 -0
  4. package/dist/config/Constants.d.ts +26 -0
  5. package/dist/config/Constants.js +30 -0
  6. package/dist/config/Environments.d.ts +2 -0
  7. package/dist/config/Environments.js +3 -0
  8. package/dist/config/MicroserviceAppConfig.d.ts +5 -0
  9. package/dist/config/MicroserviceAppConfig.js +11 -0
  10. package/dist/config/bishopConfig.d.ts +2 -0
  11. package/dist/config/bishopConfig.js +81 -0
  12. package/dist/config/customConfigs/ApiAppConfig.d.ts +5 -0
  13. package/dist/config/customConfigs/ApiAppConfig.js +4 -0
  14. package/dist/config/customConfigs/GlobalAppConfig.d.ts +8 -0
  15. package/dist/config/customConfigs/GlobalAppConfig.js +3 -0
  16. package/dist/config/customConfigs/IAppConfig.d.ts +10 -0
  17. package/dist/config/customConfigs/IAppConfig.js +3 -0
  18. package/dist/config/customConfigs/ResourceAppConfig.d.ts +8 -0
  19. package/dist/config/customConfigs/ResourceAppConfig.js +3 -0
  20. package/dist/config/microServiceConfig.d.ts +2 -0
  21. package/dist/config/microServiceConfig.js +82 -0
  22. package/dist/config/types/TsgCdkConfigType.d.ts +3 -0
  23. package/dist/config/types/TsgCdkConfigType.js +3 -0
  24. package/dist/config/types/TsgCognitoConfig.d.ts +5 -0
  25. package/dist/config/types/TsgCognitoConfig.js +3 -0
  26. package/dist/config/types/TsgDnsConfig.d.ts +9 -0
  27. package/dist/config/types/TsgDnsConfig.js +3 -0
  28. package/dist/config/types/TsgDynamoDbProp.d.ts +6 -0
  29. package/dist/config/types/TsgDynamoDbProp.js +3 -0
  30. package/dist/config/types/TsgDynamoIndex.d.ts +13 -0
  31. package/dist/config/types/TsgDynamoIndex.js +3 -0
  32. package/dist/config/types/TsgDynamoProp.d.ts +15 -0
  33. package/dist/config/types/TsgDynamoProp.js +3 -0
  34. package/dist/config/types/TsgDynamoTable.d.ts +4 -0
  35. package/dist/config/types/TsgDynamoTable.js +3 -0
  36. package/dist/config/types/TsgDynamoTableRef.d.ts +4 -0
  37. package/dist/config/types/TsgDynamoTableRef.js +3 -0
  38. package/dist/config/types/TsgLambda.d.ts +4 -0
  39. package/dist/config/types/TsgLambda.js +3 -0
  40. package/dist/config/types/TsgLambdaLayerProp.d.ts +5 -0
  41. package/dist/config/types/TsgLambdaLayerProp.js +3 -0
  42. package/dist/config/types/TsgLambdaMap.d.ts +3 -0
  43. package/dist/config/types/TsgLambdaMap.js +3 -0
  44. package/dist/config/types/TsgLambdaName.d.ts +1 -0
  45. package/dist/config/types/TsgLambdaName.js +3 -0
  46. package/dist/config/types/TsgLambdaNode.d.ts +3 -0
  47. package/dist/config/types/TsgLambdaNode.js +3 -0
  48. package/dist/config/types/TsgLambdaProp.d.ts +16 -0
  49. package/dist/config/types/TsgLambdaProp.js +3 -0
  50. package/dist/config/types/TsgLambdaProps.d.ts +16 -0
  51. package/dist/config/types/TsgLambdaProps.js +3 -0
  52. package/dist/config/types/TsgLambdaRoutable.d.ts +6 -0
  53. package/dist/config/types/TsgLambdaRoutable.js +3 -0
  54. package/dist/config/types/index.d.ts +8 -0
  55. package/dist/config/types/index.js +25 -0
  56. package/dist/constructs/MicroService.d.ts +12 -0
  57. package/dist/constructs/MicroService.js +47 -0
  58. package/dist/constructs/index.d.ts +1 -0
  59. package/dist/constructs/index.js +6 -0
  60. package/dist/index.d.ts +4 -0
  61. package/dist/index.js +8 -0
  62. package/dist/interfaces/CreateLambdaFunctionInput.d.ts +10 -0
  63. package/dist/interfaces/CreateLambdaFunctionInput.js +3 -0
  64. package/dist/interfaces/MicroserviceProps.d.ts +10 -0
  65. package/dist/interfaces/MicroserviceProps.js +3 -0
  66. package/dist/resources/base/baseResource.d.ts +10 -0
  67. package/dist/resources/base/baseResource.js +11 -0
  68. package/dist/resources/certificate/createCertificate.d.ts +9 -0
  69. package/dist/resources/certificate/createCertificate.js +29 -0
  70. package/dist/resources/cognito/createCognito.d.ts +7 -0
  71. package/dist/resources/cognito/createCognito.js +35 -0
  72. package/dist/resources/cognito/createCognitoProps.d.ts +2 -0
  73. package/dist/resources/cognito/createCognitoProps.js +47 -0
  74. package/dist/resources/dynamodb/CreateDynamo.d.ts +15 -0
  75. package/dist/resources/dynamodb/CreateDynamo.js +87 -0
  76. package/dist/resources/gateway/createApi.d.ts +19 -0
  77. package/dist/resources/gateway/createApi.js +104 -0
  78. package/dist/resources/gateway/createMicroServiceBundle.d.ts +25 -0
  79. package/dist/resources/gateway/createMicroServiceBundle.js +126 -0
  80. package/dist/resources/helpers/createAuthorizer.d.ts +15 -0
  81. package/dist/resources/helpers/createAuthorizer.js +80 -0
  82. package/dist/resources/helpers/createCommonLayer.d.ts +3 -0
  83. package/dist/resources/helpers/createCommonLayer.js +15 -0
  84. package/dist/resources/helpers/createRoutes.d.ts +8 -0
  85. package/dist/resources/helpers/createRoutes.js +30 -0
  86. package/dist/resources/lambda/createLambda.d.ts +20 -0
  87. package/dist/resources/lambda/createLambda.js +135 -0
  88. package/dist/resources/lambda-layer/createLambdaLayer.d.ts +5 -0
  89. package/dist/resources/lambda-layer/createLambdaLayer.js +31 -0
  90. package/dist/resources/layers/common/src/nodejs/api-response/index.d.ts +1 -0
  91. package/dist/resources/layers/common/src/nodejs/api-response/index.js +18 -0
  92. package/dist/resources/layers/common/src/nodejs/api-response/responses.d.ts +24 -0
  93. package/dist/resources/layers/common/src/nodejs/api-response/responses.js +43 -0
  94. package/dist/resources/layers/common/src/nodejs/index.d.ts +2 -0
  95. package/dist/resources/layers/common/src/nodejs/index.js +19 -0
  96. package/dist/resources/layers/common/src/nodejs/logger/IContext.d.ts +5 -0
  97. package/dist/resources/layers/common/src/nodejs/logger/IContext.js +3 -0
  98. package/dist/resources/layers/common/src/nodejs/logger/index.d.ts +2 -0
  99. package/dist/resources/layers/common/src/nodejs/logger/index.js +19 -0
  100. package/dist/resources/layers/common/src/nodejs/logger/logger.d.ts +2 -0
  101. package/dist/resources/layers/common/src/nodejs/logger/logger.js +12 -0
  102. package/dist/resources/resources/iam/policyDocuments/cognitoPolicy.d.ts +4 -0
  103. package/dist/resources/resources/iam/policyDocuments/cognitoPolicy.js +52 -0
  104. package/dist/resources/resources/iam/roles/createRole.d.ts +4 -0
  105. package/dist/resources/resources/iam/roles/createRole.js +22 -0
  106. package/dist/resources/route53/CreateZone.d.ts +0 -0
  107. package/dist/resources/route53/CreateZone.js +47 -0
  108. package/dist/resources/route53/create-zones.d.ts +0 -0
  109. package/dist/resources/route53/create-zones.js +30 -0
  110. package/dist/resources/securityManager/index.d.ts +4 -0
  111. package/dist/resources/securityManager/index.js +18 -0
  112. package/docs/lambda-config.md +1 -0
  113. package/package.json +48 -0
  114. package/readme.md +147 -0
  115. package/src/config/AppConfig.ts +93 -0
  116. package/src/config/Constants.ts +27 -0
  117. package/src/config/Environments.ts +2 -0
  118. package/src/config/MicroserviceAppConfig.ts +9 -0
  119. package/src/config/bishopConfig.ts +83 -0
  120. package/src/config/customConfigs/ApiAppConfig.ts +6 -0
  121. package/src/config/customConfigs/GlobalAppConfig.ts +11 -0
  122. package/src/config/customConfigs/IAppConfig.ts +13 -0
  123. package/src/config/customConfigs/ResourceAppConfig.ts +12 -0
  124. package/src/config/microServiceConfig.ts +85 -0
  125. package/src/config/types/TsgCdkConfigType.ts +3 -0
  126. package/src/config/types/TsgCognitoConfig.ts +6 -0
  127. package/src/config/types/TsgDnsConfig.ts +9 -0
  128. package/src/config/types/TsgDynamoDbProp.ts +7 -0
  129. package/src/config/types/TsgDynamoIndex.ts +16 -0
  130. package/src/config/types/TsgDynamoProp.ts +17 -0
  131. package/src/config/types/TsgDynamoTable.ts +5 -0
  132. package/src/config/types/TsgDynamoTableRef.ts +4 -0
  133. package/src/config/types/TsgLambda.ts +6 -0
  134. package/src/config/types/TsgLambdaLayerProp.ts +5 -0
  135. package/src/config/types/TsgLambdaMap.ts +4 -0
  136. package/src/config/types/TsgLambdaName.ts +4 -0
  137. package/src/config/types/TsgLambdaNode.ts +4 -0
  138. package/src/config/types/TsgLambdaProp.ts +16 -0
  139. package/src/config/types/TsgLambdaProps.ts +19 -0
  140. package/src/config/types/TsgLambdaRoutable.ts +6 -0
  141. package/src/config/types/index.ts +9 -0
  142. package/src/constructs/MicroService.ts +68 -0
  143. package/src/constructs/index.ts +1 -0
  144. package/src/index.ts +4 -0
  145. package/src/interfaces/CreateLambdaFunctionInput.ts +11 -0
  146. package/src/interfaces/MicroserviceProps.ts +11 -0
  147. package/src/resources/.gitkeep +0 -0
  148. package/src/resources/base/baseResource.ts +15 -0
  149. package/src/resources/certificate/createCertificate.ts +40 -0
  150. package/src/resources/cicd/.gitkeep +0 -0
  151. package/src/resources/cognito/.gitkeep +0 -0
  152. package/src/resources/cognito/createCognito.ts +47 -0
  153. package/src/resources/cognito/createCognitoProps.ts +46 -0
  154. package/src/resources/dynamodb/CreateDynamo.ts +111 -0
  155. package/src/resources/gateway/createApi.ts +138 -0
  156. package/src/resources/gateway/createMicroServiceBundle.ts +183 -0
  157. package/src/resources/helpers/createAuthorizer.ts +106 -0
  158. package/src/resources/helpers/createCommonLayer.ts +18 -0
  159. package/src/resources/helpers/createRoutes.ts +43 -0
  160. package/src/resources/lambda/createLambda.ts +184 -0
  161. package/src/resources/lambda-layer/createLambdaLayer.ts +40 -0
  162. package/src/resources/layers/common/package.json +22 -0
  163. package/src/resources/layers/common/src/nodejs/api-response/index.ts +1 -0
  164. package/src/resources/layers/common/src/nodejs/api-response/responses.ts +41 -0
  165. package/src/resources/layers/common/src/nodejs/index.ts +3 -0
  166. package/src/resources/layers/common/src/nodejs/logger/IContext.ts +7 -0
  167. package/src/resources/layers/common/src/nodejs/logger/index.ts +2 -0
  168. package/src/resources/layers/common/src/nodejs/logger/logger.ts +11 -0
  169. package/src/resources/layers/common/tsconfig.json +7 -0
  170. package/src/resources/resources/iam/policyDocuments/cognitoPolicy.ts +55 -0
  171. package/src/resources/resources/iam/roles/createRole.ts +30 -0
  172. package/src/resources/route53/CreateZone.ts +62 -0
  173. package/src/resources/route53/create-zones.ts +41 -0
  174. package/src/resources/securityManager/index.ts +24 -0
  175. package/tsconfig.json +40 -0
@@ -0,0 +1,3 @@
1
+ import { NodejsFunction } from "aws-cdk-lib/aws-lambda-nodejs";
2
+ import { TsgLambdaNode } from "./TsgLambdaNode";
3
+ export type TsgLambdaMap = [NodejsFunction[], Map<string, TsgLambdaNode>];
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHNnTGFtYmRhTWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbmZpZy90eXBlcy9Uc2dMYW1iZGFNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vZGVqc0Z1bmN0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzXCI7XG5pbXBvcnQgeyBUc2dMYW1iZGFOb2RlIH0gZnJvbSBcIi4vVHNnTGFtYmRhTm9kZVwiO1xuXG5leHBvcnQgdHlwZSBUc2dMYW1iZGFNYXAgPSBbTm9kZWpzRnVuY3Rpb25bXSwgTWFwPHN0cmluZywgVHNnTGFtYmRhTm9kZT5dIl19
@@ -0,0 +1 @@
1
+ export type TsgLambdaName = 'create-account' | 'verify-code' | 'change-password' | 'check-login' | 'get-users' | 'resend-confirmation-code';
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHNnTGFtYmRhTmFtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb25maWcvdHlwZXMvVHNnTGFtYmRhTmFtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gRE8gTk9UIEZPUkdFVCBUTyBVUERBVEUgVHNnTGFtYmRhTmFtZUhlbHBlciBcbi8vIFdJVEggTkVXIExBTUJEQSBOQU1FU1xuZXhwb3J0IHR5cGUgVHNnTGFtYmRhTmFtZSA9ICdjcmVhdGUtYWNjb3VudCcgfCAndmVyaWZ5LWNvZGUnIHwgJ2NoYW5nZS1wYXNzd29yZCcgfCAnY2hlY2stbG9naW4nIHxcbiAnZ2V0LXVzZXJzJyB8ICdyZXNlbmQtY29uZmlybWF0aW9uLWNvZGUnOyJdfQ==
@@ -0,0 +1,3 @@
1
+ import { NodejsFunction, NodejsFunctionProps } from "aws-cdk-lib/aws-lambda-nodejs";
2
+ import { TsgLambdaProp } from "./TsgLambdaProp";
3
+ export type TsgLambdaNode = [TsgLambdaProp, NodejsFunction, NodejsFunctionProps];
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHNnTGFtYmRhTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb25maWcvdHlwZXMvVHNnTGFtYmRhTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm9kZWpzRnVuY3Rpb24sIE5vZGVqc0Z1bmN0aW9uUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanNcIjtcbmltcG9ydCB7IFRzZ0xhbWJkYVByb3AgfSBmcm9tIFwiLi9Uc2dMYW1iZGFQcm9wXCI7XG5cbmV4cG9ydCB0eXBlIFRzZ0xhbWJkYU5vZGUgPSBbVHNnTGFtYmRhUHJvcCwgTm9kZWpzRnVuY3Rpb24sIE5vZGVqc0Z1bmN0aW9uUHJvcHNdOyJdfQ==
@@ -0,0 +1,16 @@
1
+ import { Duration } from "aws-cdk-lib";
2
+ import { Runtime } from "aws-cdk-lib/aws-lambda";
3
+ import { TsgLambdaRoutable } from "./TsgLambdaRoutable";
4
+ export interface TsgLambdaProp {
5
+ name: string;
6
+ codePath: string;
7
+ handler: string;
8
+ duration?: Duration;
9
+ environment?: {
10
+ [name: string]: string;
11
+ };
12
+ runtime?: Runtime;
13
+ memory?: number;
14
+ apiGateway?: TsgLambdaRoutable;
15
+ managedPolicies?: string[];
16
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHNnTGFtYmRhUHJvcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb25maWcvdHlwZXMvVHNnTGFtYmRhUHJvcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IFJ1bnRpbWUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHsgVHNnTGFtYmRhUm91dGFibGUgfSBmcm9tIFwiLi9Uc2dMYW1iZGFSb3V0YWJsZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRzZ0xhbWJkYVByb3Age1xuXG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGNvZGVQYXRoOiBzdHJpbmc7XG4gICAgaGFuZGxlcjogc3RyaW5nO1xuICAgIGR1cmF0aW9uPzogRHVyYXRpb247XG4gICAgZW52aXJvbm1lbnQ/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICBydW50aW1lPzogUnVudGltZTtcbiAgICBtZW1vcnk/OiBudW1iZXI7ICAgIFxuICAgIGFwaUdhdGV3YXk/OiBUc2dMYW1iZGFSb3V0YWJsZTtcbiAgICBtYW5hZ2VkUG9saWNpZXM/OiBzdHJpbmdbXTtcbn0gIl19
@@ -0,0 +1,16 @@
1
+ import { IUserPool } from "aws-cdk-lib/aws-cognito";
2
+ import { IRole } from "aws-cdk-lib/aws-iam";
3
+ import { LayerVersion } from "aws-cdk-lib/aws-lambda";
4
+ import { Construct } from "constructs";
5
+ import { MicroserviceProps } from "../../interfaces/MicroserviceProps";
6
+ import { TsgCognitoConfig } from "./TsgCognitoConfig";
7
+ import { AppConfig } from "../AppConfig";
8
+ export interface TsgLambdaProps {
9
+ scope: Construct;
10
+ prop: MicroserviceProps;
11
+ appConfig: AppConfig;
12
+ role?: IRole;
13
+ poolArn?: IUserPool;
14
+ layers?: LayerVersion[];
15
+ tsgCognito?: TsgCognitoConfig;
16
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHNnTGFtYmRhUHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uZmlnL3R5cGVzL1RzZ0xhbWJkYVByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJVXNlclBvb2wgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZ25pdG9cIjtcbmltcG9ydCB7IElSb2xlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IExheWVyVmVyc2lvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgTWljcm9zZXJ2aWNlUHJvcHMgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9NaWNyb3NlcnZpY2VQcm9wc1wiO1xuaW1wb3J0IHsgVHNnQ29nbml0b0NvbmZpZyB9IGZyb20gXCIuL1RzZ0NvZ25pdG9Db25maWdcIjtcbmltcG9ydCB7IEFwcENvbmZpZyB9IGZyb20gXCIuLi9BcHBDb25maWdcIjtcblxuZXhwb3J0IGludGVyZmFjZSBUc2dMYW1iZGFQcm9wcyB7XG5cbiAgICBzY29wZTogQ29uc3RydWN0O1xuICAgIHByb3A6IE1pY3Jvc2VydmljZVByb3BzO1xuICAgIGFwcENvbmZpZzogQXBwQ29uZmlnO1xuICAgIHJvbGU/OiBJUm9sZTtcbiAgICBwb29sQXJuPzogSVVzZXJQb29sO1xuICAgIGxheWVycz86IExheWVyVmVyc2lvbltdO1xuICAgIHRzZ0NvZ25pdG8/OiBUc2dDb2duaXRvQ29uZmlnO1xuICAgIFxufSJdfQ==
@@ -0,0 +1,6 @@
1
+ export interface TsgLambdaRoutable {
2
+ route: string;
3
+ secure?: boolean;
4
+ method?: "get" | "post" | "delete" | "put" | "patch";
5
+ version?: number;
6
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHNnTGFtYmRhUm91dGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uZmlnL3R5cGVzL1RzZ0xhbWJkYVJvdXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFRzZ0xhbWJkYVJvdXRhYmxlIHtcbiAgICByb3V0ZTogc3RyaW5nO1xuICAgIHNlY3VyZT86IGJvb2xlYW47XG4gICAgbWV0aG9kPzogXCJnZXRcIiB8IFwicG9zdFwiIHwgXCJkZWxldGVcIiB8IFwicHV0XCIgfCBcInBhdGNoXCI7XG4gICAgdmVyc2lvbj86IG51bWJlcjtcbn0iXX0=
@@ -0,0 +1,8 @@
1
+ export * from "./TsgLambdaProp";
2
+ export * from "./TsgCognitoConfig";
3
+ export * from "./TsgLambdaMap";
4
+ export * from "./TsgLambdaName";
5
+ export * from "./TsgLambdaNode";
6
+ export * from "./TsgDynamoProp";
7
+ export * from "./TsgDynamoTableRef";
8
+ export * from "./TsgDynamoDbProp";
@@ -0,0 +1,25 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./TsgLambdaProp"), exports);
18
+ __exportStar(require("./TsgCognitoConfig"), exports);
19
+ __exportStar(require("./TsgLambdaMap"), exports);
20
+ __exportStar(require("./TsgLambdaName"), exports);
21
+ __exportStar(require("./TsgLambdaNode"), exports);
22
+ __exportStar(require("./TsgDynamoProp"), exports);
23
+ __exportStar(require("./TsgDynamoTableRef"), exports);
24
+ __exportStar(require("./TsgDynamoDbProp"), exports);
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uZmlnL3R5cGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBZ0M7QUFDaEMscURBQW1DO0FBQ25DLGlEQUErQjtBQUMvQixrREFBZ0M7QUFDaEMsa0RBQWdDO0FBQ2hDLGtEQUFnQztBQUNoQyxzREFBb0M7QUFDcEMsb0RBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vVHNnTGFtYmRhUHJvcFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vVHNnQ29nbml0b0NvbmZpZ1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vVHNnTGFtYmRhTWFwXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9Uc2dMYW1iZGFOYW1lXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9Uc2dMYW1iZGFOb2RlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9Uc2dEeW5hbW9Qcm9wXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9Uc2dEeW5hbW9UYWJsZVJlZlwiO1xuZXhwb3J0ICogZnJvbSBcIi4vVHNnRHluYW1vRGJQcm9wXCI7XG5cbiJdfQ==
@@ -0,0 +1,12 @@
1
+ import { Construct } from "constructs";
2
+ import { MicroserviceProps } from "../interfaces/MicroserviceProps";
3
+ import { CreateMicroServiceBundle } from "../resources/gateway/createMicroServiceBundle";
4
+ import { AppConfig } from "../config/AppConfig";
5
+ export declare class MicroService extends Construct {
6
+ protected readonly requireDynamoTables: boolean;
7
+ protected bundleByVersion: Record<string, CreateMicroServiceBundle>;
8
+ protected appConfig: AppConfig;
9
+ constructor(scope: Construct, id: string, props: MicroserviceProps);
10
+ private onInit;
11
+ protected createTag(scope: Construct): void;
12
+ }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MicroService = void 0;
4
+ const constructs_1 = require("constructs");
5
+ const createMicroServiceBundle_1 = require("../resources/gateway/createMicroServiceBundle");
6
+ const CreateDynamo_1 = require("../resources/dynamodb/CreateDynamo");
7
+ const createApi_1 = require("../resources/gateway/createApi");
8
+ const securityManager_1 = require("../resources/securityManager");
9
+ const createCommonLayer_1 = require("../resources/helpers/createCommonLayer");
10
+ const AppConfig_1 = require("../config/AppConfig");
11
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
12
+ class MicroService extends constructs_1.Construct {
13
+ constructor(scope, id, props) {
14
+ super(scope, id);
15
+ this.bundleByVersion = {};
16
+ this.appConfig = new AppConfig_1.AppConfig(props);
17
+ this.requireDynamoTables = (props.RESOURCES.DYNAMO?.TABLES &&
18
+ props.RESOURCES.DYNAMO.TABLES.length > 0) ? true : false;
19
+ this.onInit(scope, this.appConfig);
20
+ this.createTag(scope);
21
+ }
22
+ onInit(scope, props) {
23
+ let tables = undefined;
24
+ if (!process.env.SECRET_MANAGER_ARN) {
25
+ throw new Error(`You must provide the ARN for the your Configuration Secret
26
+ Manager`);
27
+ }
28
+ const secretMgr = (0, securityManager_1.getSecretManager)(scope, props, process.env.SECRET_MANAGER_ARN);
29
+ const commonLayer = (0, createCommonLayer_1.createCommonLayer)(scope, props);
30
+ const gateway = new createApi_1.Api(scope, this.appConfig).APIs;
31
+ const layers = [commonLayer];
32
+ // Creates DynamoDb Tables if required
33
+ if (this.requireDynamoTables) {
34
+ const dynamo = new CreateDynamo_1.CreateDynamoDb(scope, this.appConfig);
35
+ tables = dynamo.CreatedTables;
36
+ }
37
+ props.RESOURCES.LAMBDA.forEach((bundleProps) => {
38
+ new createMicroServiceBundle_1.CreateMicroServiceBundle(scope, gateway[0], props, this.appConfig, tables, secretMgr, layers);
39
+ });
40
+ }
41
+ createTag(scope) {
42
+ aws_cdk_lib_1.Tags.of(scope).add('App', this.appConfig.AppName);
43
+ aws_cdk_lib_1.Tags.of(scope).add('ResoucePrefix', this.appConfig.AppPrefix);
44
+ }
45
+ }
46
+ exports.MicroService = MicroService;
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWljcm9TZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0cnVjdHMvTWljcm9TZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDJDQUF1QztBQUV2Qyw0RkFBeUY7QUFDekYscUVBQW9FO0FBQ3BFLDhEQUFxRDtBQUNyRCxrRUFBZ0U7QUFDaEUsOEVBQTJFO0FBQzNFLG1EQUFnRDtBQUNoRCw2Q0FBbUM7QUFJbkMsTUFBYSxZQUFhLFNBQVEsc0JBQVM7SUFNdkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF3QjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBSlgsb0JBQWUsR0FBNkMsRUFBRSxDQUFDO1FBTXJFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxxQkFBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXRDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLE1BQU07WUFDdEQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFFN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRW5DLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDekIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxLQUFnQixFQUFFLEtBQWdCO1FBRTdDLElBQUksTUFBTSxHQUF3QixTQUFTLENBQUM7UUFFNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUU7WUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQzt3QkFDSixDQUFDLENBQUM7U0FDakI7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFBLGtDQUFnQixFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRWpGLE1BQU0sV0FBVyxHQUFHLElBQUEscUNBQWlCLEVBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXBELE1BQU0sT0FBTyxHQUFHLElBQUksZUFBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRXBELE1BQU0sTUFBTSxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFN0Isc0NBQXNDO1FBQ3RDLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzFCLE1BQU0sTUFBTSxHQUFHLElBQUksNkJBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXpELE1BQU0sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO1NBQ2pDO1FBRUQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBMEIsRUFBRSxFQUFFO1lBRTFELElBQUksbURBQXdCLENBQUMsS0FBSyxFQUM5QixPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0RSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFUyxTQUFTLENBQUMsS0FBZ0I7UUFDaEMsa0JBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELGtCQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBQ0o7QUF0REQsb0NBc0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGFibGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWR5bmFtb2RiXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgTWljcm9zZXJ2aWNlUHJvcHMgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9NaWNyb3NlcnZpY2VQcm9wc1wiO1xuaW1wb3J0IHsgQ3JlYXRlTWljcm9TZXJ2aWNlQnVuZGxlIH0gZnJvbSBcIi4uL3Jlc291cmNlcy9nYXRld2F5L2NyZWF0ZU1pY3JvU2VydmljZUJ1bmRsZVwiO1xuaW1wb3J0IHsgQ3JlYXRlRHluYW1vRGIgfSBmcm9tIFwiLi4vcmVzb3VyY2VzL2R5bmFtb2RiL0NyZWF0ZUR5bmFtb1wiO1xuaW1wb3J0IHsgQXBpIH0gZnJvbSBcIi4uL3Jlc291cmNlcy9nYXRld2F5L2NyZWF0ZUFwaVwiO1xuaW1wb3J0IHsgZ2V0U2VjcmV0TWFuYWdlciB9IGZyb20gXCIuLi9yZXNvdXJjZXMvc2VjdXJpdHlNYW5hZ2VyXCI7XG5pbXBvcnQgeyBjcmVhdGVDb21tb25MYXllciB9IGZyb20gXCIuLi9yZXNvdXJjZXMvaGVscGVycy9jcmVhdGVDb21tb25MYXllclwiO1xuaW1wb3J0IHsgQXBwQ29uZmlnIH0gZnJvbSBcIi4uL2NvbmZpZy9BcHBDb25maWdcIjtcbmltcG9ydCB7IFRhZ3MgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IFRzZ0xhbWJkYVByb3BzIH0gZnJvbSBcIi4uL2NvbmZpZy90eXBlcy9Uc2dMYW1iZGFQcm9wc1wiO1xuaW1wb3J0IHsgVHNnTGFtYmRhUHJvcCB9IGZyb20gXCIuLi9jb25maWcvdHlwZXNcIjtcblxuZXhwb3J0IGNsYXNzIE1pY3JvU2VydmljZSBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVxdWlyZUR5bmFtb1RhYmxlczogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgYnVuZGxlQnlWZXJzaW9uOiBSZWNvcmQ8c3RyaW5nLCBDcmVhdGVNaWNyb1NlcnZpY2VCdW5kbGU+ID0ge307XG4gICAgcHJvdGVjdGVkIGFwcENvbmZpZzogQXBwQ29uZmlnO1xuXG4gICAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE1pY3Jvc2VydmljZVByb3BzKSB7XG4gICAgICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAgICAgdGhpcy5hcHBDb25maWcgPSBuZXcgQXBwQ29uZmlnKHByb3BzKTtcblxuICAgICAgICB0aGlzLnJlcXVpcmVEeW5hbW9UYWJsZXMgPSAocHJvcHMuUkVTT1VSQ0VTLkRZTkFNTz8uVEFCTEVTICYmXG4gICAgICAgICAgICBwcm9wcy5SRVNPVVJDRVMuRFlOQU1PLlRBQkxFUy5sZW5ndGggPiAwKSA/IHRydWUgOiBmYWxzZTtcblxuICAgICAgICB0aGlzLm9uSW5pdChzY29wZSwgdGhpcy5hcHBDb25maWcpO1xuXG4gICAgICAgIHRoaXMuY3JlYXRlVGFnKHNjb3BlKVxuICAgIH1cblxuICAgIHByaXZhdGUgb25Jbml0KHNjb3BlOiBDb25zdHJ1Y3QsIHByb3BzOiBBcHBDb25maWcpIHtcblxuICAgICAgICBsZXQgdGFibGVzOiBUYWJsZVtdIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmICghcHJvY2Vzcy5lbnYuU0VDUkVUX01BTkFHRVJfQVJOKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFlvdSBtdXN0IHByb3ZpZGUgdGhlIEFSTiBmb3IgdGhlIHlvdXIgQ29uZmlndXJhdGlvbiBTZWNyZXQgXG4gICAgICAgICAgICAgICAgTWFuYWdlcmApOyAgICAgICAgICAgIFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VjcmV0TWdyID0gZ2V0U2VjcmV0TWFuYWdlcihzY29wZSwgcHJvcHMsIHByb2Nlc3MuZW52LlNFQ1JFVF9NQU5BR0VSX0FSTik7XG5cbiAgICAgICAgY29uc3QgY29tbW9uTGF5ZXIgPSBjcmVhdGVDb21tb25MYXllcihzY29wZSwgcHJvcHMpO1xuXG4gICAgICAgIGNvbnN0IGdhdGV3YXkgPSBuZXcgQXBpKHNjb3BlLCB0aGlzLmFwcENvbmZpZykuQVBJcztcblxuICAgICAgICBjb25zdCBsYXllcnMgPSBbY29tbW9uTGF5ZXJdO1xuXG4gICAgICAgIC8vIENyZWF0ZXMgRHluYW1vRGIgVGFibGVzIGlmIHJlcXVpcmVkXG4gICAgICAgIGlmICh0aGlzLnJlcXVpcmVEeW5hbW9UYWJsZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGR5bmFtbyA9IG5ldyBDcmVhdGVEeW5hbW9EYihzY29wZSwgdGhpcy5hcHBDb25maWcpO1xuXG4gICAgICAgICAgICB0YWJsZXMgPSBkeW5hbW8uQ3JlYXRlZFRhYmxlcztcbiAgICAgICAgfVxuXG4gICAgICAgIHByb3BzLlJFU09VUkNFUy5MQU1CREEuZm9yRWFjaCgoYnVuZGxlUHJvcHM6IFRzZ0xhbWJkYVByb3ApID0+IHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgbmV3IENyZWF0ZU1pY3JvU2VydmljZUJ1bmRsZShzY29wZSwgXG4gICAgICAgICAgICAgICAgZ2F0ZXdheVswXSwgcHJvcHMsIHRoaXMuYXBwQ29uZmlnLCB0YWJsZXMsIHNlY3JldE1nciwgbGF5ZXJzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZVRhZyhzY29wZTogQ29uc3RydWN0KSB7XG4gICAgICAgIFRhZ3Mub2Yoc2NvcGUpLmFkZCgnQXBwJywgdGhpcy5hcHBDb25maWcuQXBwTmFtZSk7XG4gICAgICAgIFRhZ3Mub2Yoc2NvcGUpLmFkZCgnUmVzb3VjZVByZWZpeCcsIHRoaXMuYXBwQ29uZmlnLkFwcFByZWZpeCk7XG4gICAgfVxufSJdfQ==
@@ -0,0 +1 @@
1
+ export { MicroService } from "./MicroService";
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MicroService = void 0;
4
+ var MicroService_1 = require("./MicroService");
5
+ Object.defineProperty(exports, "MicroService", { enumerable: true, get: function () { return MicroService_1.MicroService; } });
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3RydWN0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FBOEM7QUFBckMsNEdBQUEsWUFBWSxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgTWljcm9TZXJ2aWNlIH0gZnJvbSBcIi4vTWljcm9TZXJ2aWNlXCI7Il19
@@ -0,0 +1,4 @@
1
+ export { MicroService } from "./constructs/MicroService";
2
+ export { MicroserviceProps } from "./interfaces/MicroserviceProps";
3
+ export { IAppConfig } from "./config/customConfigs/IAppConfig";
4
+ export { MicroServiceAppConfig } from "./config/MicroserviceAppConfig";
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MicroServiceAppConfig = exports.MicroService = void 0;
4
+ var MicroService_1 = require("./constructs/MicroService");
5
+ Object.defineProperty(exports, "MicroService", { enumerable: true, get: function () { return MicroService_1.MicroService; } });
6
+ var MicroserviceAppConfig_1 = require("./config/MicroserviceAppConfig");
7
+ Object.defineProperty(exports, "MicroServiceAppConfig", { enumerable: true, get: function () { return MicroserviceAppConfig_1.MicroServiceAppConfig; } });
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMERBQXlEO0FBQWhELDRHQUFBLFlBQVksT0FBQTtBQUdyQix3RUFBdUU7QUFBOUQsOEhBQUEscUJBQXFCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBNaWNyb1NlcnZpY2UgfSBmcm9tIFwiLi9jb25zdHJ1Y3RzL01pY3JvU2VydmljZVwiO1xuZXhwb3J0IHsgTWljcm9zZXJ2aWNlUHJvcHMgfSBmcm9tIFwiLi9pbnRlcmZhY2VzL01pY3Jvc2VydmljZVByb3BzXCI7XG5leHBvcnQgeyBJQXBwQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnL2N1c3RvbUNvbmZpZ3MvSUFwcENvbmZpZ1wiO1xuZXhwb3J0IHsgTWljcm9TZXJ2aWNlQXBwQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnL01pY3Jvc2VydmljZUFwcENvbmZpZ1wiOyJdfQ==
@@ -0,0 +1,10 @@
1
+ import { IRole } from "aws-cdk-lib/aws-iam";
2
+ import { LayerVersion } from "aws-cdk-lib/aws-lambda";
3
+ import { TsgLambdaProp } from "../config/types";
4
+ import { TsgLambdaProps } from "../config/types/TsgLambdaProps";
5
+ export interface CreateLambdaFunctionInput {
6
+ prop: TsgLambdaProp;
7
+ role?: IRole;
8
+ layers?: LayerVersion[];
9
+ props?: TsgLambdaProps;
10
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3JlYXRlTGFtYmRhRnVuY3Rpb25JbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcmZhY2VzL0NyZWF0ZUxhbWJkYUZ1bmN0aW9uSW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElSb2xlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IExheWVyVmVyc2lvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBUc2dMYW1iZGFQcm9wIH0gZnJvbSBcIi4uL2NvbmZpZy90eXBlc1wiO1xuaW1wb3J0IHsgVHNnTGFtYmRhUHJvcHMgfSBmcm9tIFwiLi4vY29uZmlnL3R5cGVzL1RzZ0xhbWJkYVByb3BzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlTGFtYmRhRnVuY3Rpb25JbnB1dCB7XG4gICAgcHJvcDogVHNnTGFtYmRhUHJvcDtcbiAgICByb2xlPzogSVJvbGU7XG4gICAgbGF5ZXJzPzogTGF5ZXJWZXJzaW9uW10sXG4gICAgcHJvcHM/OiBUc2dMYW1iZGFQcm9wc1xufSJdfQ==
@@ -0,0 +1,10 @@
1
+ import { ApiAppConfig } from "../config/customConfigs/ApiAppConfig";
2
+ import { GlobalAppConfig } from "../config/customConfigs/GlobalAppConfig";
3
+ import { ResourceAppConfig } from "../config/customConfigs/ResourceAppConfig";
4
+ import { TsgDnsAppConfig } from "../config/types/TsgDnsConfig";
5
+ export interface MicroserviceProps {
6
+ API: ApiAppConfig;
7
+ GLOBALS: GlobalAppConfig;
8
+ RESOURCES: ResourceAppConfig;
9
+ DNS: TsgDnsAppConfig;
10
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWljcm9zZXJ2aWNlUHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9NaWNyb3NlcnZpY2VQcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBpQXBwQ29uZmlnIH0gZnJvbSBcIi4uL2NvbmZpZy9jdXN0b21Db25maWdzL0FwaUFwcENvbmZpZ1wiO1xuaW1wb3J0IHsgR2xvYmFsQXBwQ29uZmlnIH0gZnJvbSBcIi4uL2NvbmZpZy9jdXN0b21Db25maWdzL0dsb2JhbEFwcENvbmZpZ1wiO1xuaW1wb3J0IHsgUmVzb3VyY2VBcHBDb25maWcgfSBmcm9tIFwiLi4vY29uZmlnL2N1c3RvbUNvbmZpZ3MvUmVzb3VyY2VBcHBDb25maWdcIjtcbmltcG9ydCB7IFRzZ0Ruc0FwcENvbmZpZyB9IGZyb20gXCIuLi9jb25maWcvdHlwZXMvVHNnRG5zQ29uZmlnXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWljcm9zZXJ2aWNlUHJvcHMge1xuICAgIEFQSTogQXBpQXBwQ29uZmlnO1xuICAgIEdMT0JBTFM6IEdsb2JhbEFwcENvbmZpZztcbiAgICBSRVNPVVJDRVM6IFJlc291cmNlQXBwQ29uZmlnO1xuICAgIEROUzogVHNnRG5zQXBwQ29uZmlnO1xufSJdfQ==
@@ -0,0 +1,10 @@
1
+ import { Construct } from "constructs";
2
+ import { AppConfig } from "../../config/AppConfig";
3
+ export declare abstract class BaseResource<T> {
4
+ protected scope: Construct;
5
+ protected config: AppConfig;
6
+ protected createdResources: T[];
7
+ constructor(scope: Construct, config: AppConfig);
8
+ protected abstract createResource(scope: Construct): T[] | null;
9
+ protected abstract createOutput<T>(scope: Construct, createdAssets: T[]): void;
10
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseResource = void 0;
4
+ class BaseResource {
5
+ constructor(scope, config) {
6
+ this.scope = scope;
7
+ this.config = config;
8
+ }
9
+ }
10
+ exports.BaseResource = BaseResource;
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZVJlc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc291cmNlcy9iYXNlL2Jhc2VSZXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSxNQUFzQixZQUFZO0lBSTlCLFlBQXNCLEtBQWdCLEVBQVksTUFBaUI7UUFBN0MsVUFBSyxHQUFMLEtBQUssQ0FBVztRQUFZLFdBQU0sR0FBTixNQUFNLENBQVc7SUFBSSxDQUFDO0NBTTNFO0FBVkQsb0NBVUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYWdzIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQXBwQ29uZmlnIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9BcHBDb25maWdcIjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VSZXNvdXJjZTxUPiB7XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlZFJlc291cmNlczogVFtdO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIHNjb3BlOiBDb25zdHJ1Y3QsIHByb3RlY3RlZCBjb25maWc6IEFwcENvbmZpZykgeyB9XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlUmVzb3VyY2Uoc2NvcGU6IENvbnN0cnVjdCk6IFRbXSB8IG51bGw7XG4gICAgXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGNyZWF0ZU91dHB1dDxUPihzY29wZTogQ29uc3RydWN0LCBjcmVhdGVkQXNzZXRzOiBUW10pOiB2b2lkO1xuICAgIFxufSJdfQ==
@@ -0,0 +1,9 @@
1
+ import { Certificate, ICertificate } from "aws-cdk-lib/aws-certificatemanager";
2
+ import { IHostedZone } from "aws-cdk-lib/aws-route53";
3
+ import { Construct } from "constructs";
4
+ import { MicroserviceProps } from "../../interfaces/MicroserviceProps";
5
+ export declare class CreateCertificate {
6
+ certificate: ICertificate;
7
+ constructor(scope: Construct, props: MicroserviceProps, hostedZone: IHostedZone);
8
+ generateCertificate(scope: Construct, props: MicroserviceProps, hostedZone: IHostedZone): Certificate;
9
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateCertificate = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const aws_certificatemanager_1 = require("aws-cdk-lib/aws-certificatemanager");
6
+ class CreateCertificate {
7
+ constructor(scope, props, hostedZone) {
8
+ this.certificate = this.generateCertificate(scope, props, hostedZone);
9
+ this.certificate.applyRemovalPolicy(aws_cdk_lib_1.RemovalPolicy.DESTROY);
10
+ }
11
+ generateCertificate(scope, props, hostedZone) {
12
+ // const cert = new DnsValidatedCertificate(scope, `${props.DNS.ZoneNameWithoutPeriod}-spa-app-certificate`, {
13
+ // domainName: `${props.API.DomainPrefix}.${props.DNS.ZoneName}`,
14
+ // hostedZone,
15
+ // region: props.GLOBALS.region || "us-east-1"
16
+ // });
17
+ const appType = "spa-app";
18
+ const cert = new aws_certificatemanager_1.Certificate(scope, `${props.DNS.ZoneNameWithoutPeriod}-${appType}-certificate`, {
19
+ domainName: `${props.API.DomainPrefix}.${props.DNS.ZoneName}`,
20
+ subjectAlternativeNames: [`${props.API.DomainPrefix}.${props.DNS.ZoneName}`],
21
+ validation: aws_certificatemanager_1.CertificateValidation.fromDnsMultiZone({
22
+ [`${props.API.DomainPrefix}.${props.DNS.ZoneName}`]: hostedZone,
23
+ }),
24
+ });
25
+ return cert;
26
+ }
27
+ }
28
+ exports.CreateCertificate = CreateCertificate;
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQ2VydGlmaWNhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVzb3VyY2VzL2NlcnRpZmljYXRlL2NyZWF0ZUNlcnRpZmljYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUE0QztBQUM1QywrRUFBK0g7QUFNL0gsTUFBYSxpQkFBaUI7SUFJMUIsWUFBWSxLQUFnQixFQUFFLEtBQXdCLEVBQUUsVUFBdUI7UUFFM0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztRQUV0RSxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLDJCQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFL0QsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQWdCLEVBQUUsS0FBd0IsRUFBRSxVQUF1QjtRQUVuRiw4R0FBOEc7UUFDOUcscUVBQXFFO1FBQ3JFLGtCQUFrQjtRQUNsQixrREFBa0Q7UUFDbEQsU0FBUztRQUVQLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUUxQixNQUFNLElBQUksR0FBRyxJQUFJLG9DQUFXLENBQUMsS0FBSyxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsSUFBSSxPQUFPLGNBQWMsRUFBRTtZQUMvRixVQUFVLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRTtZQUM3RCx1QkFBdUIsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM1RSxVQUFVLEVBQUUsOENBQXFCLENBQUMsZ0JBQWdCLENBQUM7Z0JBQzNDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUcsVUFBVTthQUN2RSxDQUFDO1NBQ0gsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUM7SUFDbEIsQ0FBQztDQUNKO0FBaENELDhDQWdDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENlcnRpZmljYXRlLCBDZXJ0aWZpY2F0ZVZhbGlkYXRpb24sIERuc1ZhbGlkYXRlZENlcnRpZmljYXRlLCBJQ2VydGlmaWNhdGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNlcnRpZmljYXRlbWFuYWdlclwiO1xuaW1wb3J0IHsgSUhvc3RlZFpvbmUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBNaWNyb3NlcnZpY2VQcm9wcyB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL01pY3Jvc2VydmljZVByb3BzXCI7XG5cblxuZXhwb3J0IGNsYXNzIENyZWF0ZUNlcnRpZmljYXRlIHtcblxuICAgIHB1YmxpYyBjZXJ0aWZpY2F0ZTogSUNlcnRpZmljYXRlO1xuXG4gICAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgcHJvcHM6IE1pY3Jvc2VydmljZVByb3BzLCBob3N0ZWRab25lOiBJSG9zdGVkWm9uZSkge1xuXG4gICAgICAgIHRoaXMuY2VydGlmaWNhdGUgPSB0aGlzLmdlbmVyYXRlQ2VydGlmaWNhdGUoc2NvcGUsIHByb3BzLCBob3N0ZWRab25lKTtcblxuICAgICAgICB0aGlzLmNlcnRpZmljYXRlLmFwcGx5UmVtb3ZhbFBvbGljeShSZW1vdmFsUG9saWN5LkRFU1RST1kpO1xuICAgICAgICBcbiAgICB9XG5cbiAgICBnZW5lcmF0ZUNlcnRpZmljYXRlKHNjb3BlOiBDb25zdHJ1Y3QsIHByb3BzOiBNaWNyb3NlcnZpY2VQcm9wcywgaG9zdGVkWm9uZTogSUhvc3RlZFpvbmUpIHtcblxuICAgICAgICAvLyBjb25zdCBjZXJ0ID0gbmV3IERuc1ZhbGlkYXRlZENlcnRpZmljYXRlKHNjb3BlLCBgJHtwcm9wcy5ETlMuWm9uZU5hbWVXaXRob3V0UGVyaW9kfS1zcGEtYXBwLWNlcnRpZmljYXRlYCwge1xuICAgICAgICAvLyAgICAgZG9tYWluTmFtZTogYCR7cHJvcHMuQVBJLkRvbWFpblByZWZpeH0uJHtwcm9wcy5ETlMuWm9uZU5hbWV9YCxcbiAgICAgICAgLy8gICAgIGhvc3RlZFpvbmUsXG4gICAgICAgIC8vICAgICByZWdpb246IHByb3BzLkdMT0JBTFMucmVnaW9uIHx8IFwidXMtZWFzdC0xXCJcbiAgICAgICAgLy8gICB9KTsgXG5cbiAgICAgICAgICBjb25zdCBhcHBUeXBlID0gXCJzcGEtYXBwXCI7XG5cbiAgICAgICAgICBjb25zdCBjZXJ0ID0gbmV3IENlcnRpZmljYXRlKHNjb3BlLCBgJHtwcm9wcy5ETlMuWm9uZU5hbWVXaXRob3V0UGVyaW9kfS0ke2FwcFR5cGV9LWNlcnRpZmljYXRlYCwge1xuICAgICAgICAgICAgZG9tYWluTmFtZTogYCR7cHJvcHMuQVBJLkRvbWFpblByZWZpeH0uJHtwcm9wcy5ETlMuWm9uZU5hbWV9YCxcbiAgICAgICAgICAgIHN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzOiBbYCR7cHJvcHMuQVBJLkRvbWFpblByZWZpeH0uJHtwcm9wcy5ETlMuWm9uZU5hbWV9YF0sXG4gICAgICAgICAgICB2YWxpZGF0aW9uOiBDZXJ0aWZpY2F0ZVZhbGlkYXRpb24uZnJvbURuc011bHRpWm9uZSh7ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBbYCR7cHJvcHMuQVBJLkRvbWFpblByZWZpeH0uJHtwcm9wcy5ETlMuWm9uZU5hbWV9YF0gOiBob3N0ZWRab25lICwgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiBjZXJ0O1xuICAgIH1cbn0iXX0=
@@ -0,0 +1,7 @@
1
+ import { UserPool, UserPoolClient } from "aws-cdk-lib/aws-cognito";
2
+ import { Construct } from "constructs";
3
+ import { AppConfig } from "../../config/AppConfig";
4
+ export declare const createCognito: (scope: Construct, appConfig: AppConfig) => {
5
+ userPool: UserPool;
6
+ clientPool: UserPoolClient;
7
+ };
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createCognito = void 0;
4
+ const aws_cognito_1 = require("aws-cdk-lib/aws-cognito");
5
+ const createCognitoProps_1 = require("./createCognitoProps");
6
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
7
+ const createCognito = (scope, appConfig) => {
8
+ const userPool = createUserPool(scope, appConfig);
9
+ const clientPool = createUserPoolClient(scope, userPool, "mobile", appConfig);
10
+ return {
11
+ userPool,
12
+ clientPool
13
+ };
14
+ };
15
+ exports.createCognito = createCognito;
16
+ const createUserPool = (scope, appConfig, userPoolName) => {
17
+ return new aws_cognito_1.UserPool(scope, `${appConfig.AppName}-user-pool`, (0, createCognitoProps_1.createUserPoolProps)(`${appConfig.AppName}-user-pool`));
18
+ };
19
+ const createUserPoolClient = (scope, userPool, appType, appConfig) => {
20
+ const client = new aws_cognito_1.UserPoolClient(scope, `${appConfig.AppName}-user-pool-client`, createUserPoolClientProps(userPool, appConfig, appType));
21
+ return client;
22
+ };
23
+ const createUserPoolClientProps = (userpool, config, appType) => {
24
+ const props = {
25
+ userPool: userpool,
26
+ accessTokenValidity: aws_cdk_lib_1.Duration.hours(3),
27
+ refreshTokenValidity: aws_cdk_lib_1.Duration.days(3),
28
+ userPoolClientName: `${config.AppName}-${appType}`,
29
+ authFlows: {
30
+ userPassword: true,
31
+ }
32
+ };
33
+ return props;
34
+ };
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQ29nbml0by5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZXNvdXJjZXMvY29nbml0by9jcmVhdGVDb2duaXRvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlEQUFnUDtBQUdoUCw2REFBMkQ7QUFDM0QsNkNBQXVDO0FBR2hDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBZ0IsRUFBRSxTQUFvQixFQUFFLEVBQUU7SUFHcEUsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNsRCxNQUFNLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUU5RSxPQUFPO1FBQ0gsUUFBUTtRQUNSLFVBQVU7S0FDYixDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBVlcsUUFBQSxhQUFhLGlCQVV4QjtBQUVGLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBZ0IsRUFBRSxTQUFvQixFQUFFLFlBQXFCLEVBQUUsRUFBRTtJQUVyRixPQUFPLElBQUksc0JBQVEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUMsT0FBTyxZQUFZLEVBQ3ZELElBQUEsd0NBQW1CLEVBQUMsR0FBRyxTQUFTLENBQUMsT0FBTyxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBRS9ELENBQUMsQ0FBQztBQUVGLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFnQixFQUFFLFFBQW1CLEVBQUUsT0FBc0IsRUFDdkYsU0FBb0IsRUFBRSxFQUFFO0lBRXhCLE1BQU0sTUFBTSxHQUFHLElBQUksNEJBQWMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUMsT0FBTyxtQkFBbUIsRUFDNUUseUJBQXlCLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRTdELE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxRQUFtQixFQUFFLE1BQWlCLEVBQUUsT0FBc0IsRUFBdUIsRUFBRTtJQUN0SCxNQUFNLEtBQUssR0FBd0I7UUFDL0IsUUFBUSxFQUFFLFFBQVE7UUFDbEIsbUJBQW1CLEVBQUUsc0JBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLG9CQUFvQixFQUFFLHNCQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN0QyxrQkFBa0IsRUFBRSxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksT0FBTyxFQUFFO1FBQ2xELFNBQVMsRUFBRTtZQUNQLFlBQVksRUFBRSxJQUFJO1NBQ3JCO0tBQ0osQ0FBQztJQUNGLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElVc2VyUG9vbCwgVXNlclBvb2wsIFVzZXJQb29sQ2xpZW50LCBVc2VyUG9vbENsaWVudFByb3BzLCBVc2VyUG9vbElkZW50aXR5UHJvdmlkZXJBbWF6b24sIFVzZXJQb29sSWRlbnRpdHlQcm92aWRlckFtYXpvblByb3BzLCBVc2VyUG9vbElkZW50aXR5UHJvdmlkZXJTYW1sLCBVc2VyUG9vbElkZW50aXR5UHJvdmlkZXJTYW1sTWV0YWRhdGFUeXBlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jb2duaXRvXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQXBwQ29uZmlnIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9BcHBDb25maWdcIjtcbmltcG9ydCB7IGNyZWF0ZVVzZXJQb29sUHJvcHMgfSBmcm9tIFwiLi9jcmVhdGVDb2duaXRvUHJvcHNcIjtcbmltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDbGllbnRBcHBUeXBlIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9FbnZpcm9ubWVudHNcIjtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNvZ25pdG8gPSAoc2NvcGU6IENvbnN0cnVjdCwgYXBwQ29uZmlnOiBBcHBDb25maWcpID0+IHtcblxuXG4gICAgY29uc3QgdXNlclBvb2wgPSBjcmVhdGVVc2VyUG9vbChzY29wZSwgYXBwQ29uZmlnKTtcbiAgICBjb25zdCBjbGllbnRQb29sID0gY3JlYXRlVXNlclBvb2xDbGllbnQoc2NvcGUsIHVzZXJQb29sLCBcIm1vYmlsZVwiLCBhcHBDb25maWcpOyAgICBcbiAgICBcbiAgICByZXR1cm4ge1xuICAgICAgICB1c2VyUG9vbCxcbiAgICAgICAgY2xpZW50UG9vbFxuICAgIH07XG59O1xuXG5jb25zdCBjcmVhdGVVc2VyUG9vbCA9IChzY29wZTogQ29uc3RydWN0LCBhcHBDb25maWc6IEFwcENvbmZpZywgdXNlclBvb2xOYW1lPzogc3RyaW5nKSA9PiB7XG5cbiAgICByZXR1cm4gbmV3IFVzZXJQb29sKHNjb3BlLCBgJHthcHBDb25maWcuQXBwTmFtZX0tdXNlci1wb29sYCxcbiAgICAgICAgY3JlYXRlVXNlclBvb2xQcm9wcyhgJHthcHBDb25maWcuQXBwTmFtZX0tdXNlci1wb29sYCkpO1xuXG59O1xuXG5jb25zdCBjcmVhdGVVc2VyUG9vbENsaWVudCA9IChzY29wZTogQ29uc3RydWN0LCB1c2VyUG9vbDogSVVzZXJQb29sLCBhcHBUeXBlOiBDbGllbnRBcHBUeXBlLFxuICAgIGFwcENvbmZpZzogQXBwQ29uZmlnKSA9PiB7XG5cbiAgICBjb25zdCBjbGllbnQgPSBuZXcgVXNlclBvb2xDbGllbnQoc2NvcGUsIGAke2FwcENvbmZpZy5BcHBOYW1lfS11c2VyLXBvb2wtY2xpZW50YCxcbiAgICAgICAgY3JlYXRlVXNlclBvb2xDbGllbnRQcm9wcyh1c2VyUG9vbCwgYXBwQ29uZmlnLCBhcHBUeXBlKSk7XG5cbiAgICByZXR1cm4gY2xpZW50O1xufTtcblxuY29uc3QgY3JlYXRlVXNlclBvb2xDbGllbnRQcm9wcyA9ICh1c2VycG9vbDogSVVzZXJQb29sLCBjb25maWc6IEFwcENvbmZpZywgYXBwVHlwZTogQ2xpZW50QXBwVHlwZSk6IFVzZXJQb29sQ2xpZW50UHJvcHMgPT4ge1xuICAgIGNvbnN0IHByb3BzOiBVc2VyUG9vbENsaWVudFByb3BzID0ge1xuICAgICAgICB1c2VyUG9vbDogdXNlcnBvb2wsXG4gICAgICAgIGFjY2Vzc1Rva2VuVmFsaWRpdHk6IER1cmF0aW9uLmhvdXJzKDMpLFxuICAgICAgICByZWZyZXNoVG9rZW5WYWxpZGl0eTogRHVyYXRpb24uZGF5cygzKSxcbiAgICAgICAgdXNlclBvb2xDbGllbnROYW1lOiBgJHtjb25maWcuQXBwTmFtZX0tJHthcHBUeXBlfWAsXG4gICAgICAgIGF1dGhGbG93czoge1xuICAgICAgICAgICAgdXNlclBhc3N3b3JkOiB0cnVlLFxuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gcHJvcHM7XG59O1xuIl19
@@ -0,0 +1,2 @@
1
+ import { UserPoolProps } from "aws-cdk-lib/aws-cognito";
2
+ export declare const createUserPoolProps: (securityUserPool: string) => UserPoolProps;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createUserPoolProps = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const aws_cognito_1 = require("aws-cdk-lib/aws-cognito");
6
+ const createUserPoolProps = (securityUserPool) => {
7
+ const cognitoProps = {
8
+ userPoolName: securityUserPool.toLowerCase(),
9
+ selfSignUpEnabled: true,
10
+ userVerification: {
11
+ emailSubject: 'Verify your email for Bishop CDK Constructs!',
12
+ emailBody: 'Thanks for creating an account with Bishop CDK Constructs! Your verification code is {####}',
13
+ emailStyle: aws_cognito_1.VerificationEmailStyle.CODE,
14
+ smsMessage: 'Thanks for signing up {username} with Bishop CDK Constructs! Your verification code is {####}',
15
+ },
16
+ userInvitation: {
17
+ emailSubject: 'Invite to join Bishop CDK Constructs!',
18
+ emailBody: 'Hello {username}, you have been invited to join Bishop CDK Constructs! Your temporary password is {####}',
19
+ smsMessage: 'Your temporary password for {username} with Bishop CDK Constructs is {####}'
20
+ },
21
+ signInAliases: {
22
+ username: true,
23
+ email: true,
24
+ phone: true
25
+ },
26
+ customAttributes: {
27
+ 'firstName': new aws_cognito_1.StringAttribute({ minLen: 3, maxLen: 30, mutable: true }),
28
+ 'lastName': new aws_cognito_1.StringAttribute({ minLen: 3, maxLen: 30, mutable: true }),
29
+ 'phoneNumber': new aws_cognito_1.StringAttribute({ minLen: 3, maxLen: 30, mutable: true }),
30
+ 'acccountType': new aws_cognito_1.NumberAttribute({ mutable: true }),
31
+ 'joinedOn': new aws_cognito_1.DateTimeAttribute(),
32
+ },
33
+ passwordPolicy: {
34
+ minLength: 8,
35
+ requireLowercase: true,
36
+ requireUppercase: true,
37
+ requireDigits: true,
38
+ requireSymbols: true,
39
+ tempPasswordValidity: aws_cdk_lib_1.Duration.days(1),
40
+ },
41
+ accountRecovery: aws_cognito_1.AccountRecovery.PHONE_AND_EMAIL,
42
+ removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
43
+ };
44
+ return cognitoProps;
45
+ };
46
+ exports.createUserPoolProps = createUserPoolProps;
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQ29nbml0b1Byb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc291cmNlcy9jb2duaXRvL2NyZWF0ZUNvZ25pdG9Qcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBc0Q7QUFDdEQseURBQzREO0FBRXJELE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxnQkFBd0IsRUFBRSxFQUFFO0lBRTVELE1BQU0sWUFBWSxHQUFrQjtRQUNoQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUMsV0FBVyxFQUFFO1FBQzVDLGlCQUFpQixFQUFFLElBQUk7UUFDdkIsZ0JBQWdCLEVBQUU7WUFDZCxZQUFZLEVBQUUsOENBQThDO1lBQzVELFNBQVMsRUFBRSw2RkFBNkY7WUFDeEcsVUFBVSxFQUFFLG9DQUFzQixDQUFDLElBQUk7WUFDdkMsVUFBVSxFQUFFLCtGQUErRjtTQUM5RztRQUNELGNBQWMsRUFBRTtZQUNaLFlBQVksRUFBRSx1Q0FBdUM7WUFDckQsU0FBUyxFQUFFLDBHQUEwRztZQUNySCxVQUFVLEVBQUUsNkVBQTZFO1NBQzVGO1FBQ0QsYUFBYSxFQUFFO1lBQ1gsUUFBUSxFQUFFLElBQUk7WUFDZCxLQUFLLEVBQUUsSUFBSTtZQUNYLEtBQUssRUFBRSxJQUFJO1NBQ2Q7UUFDRCxnQkFBZ0IsRUFBRTtZQUNkLFdBQVcsRUFBRSxJQUFJLDZCQUFlLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQzFFLFVBQVUsRUFBRSxJQUFJLDZCQUFlLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3pFLGFBQWEsRUFBRSxJQUFJLDZCQUFlLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQzVFLGNBQWMsRUFBRSxJQUFJLDZCQUFlLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDdEQsVUFBVSxFQUFFLElBQUksK0JBQWlCLEVBQUU7U0FDdEM7UUFDRCxjQUFjLEVBQUU7WUFDWixTQUFTLEVBQUUsQ0FBQztZQUNaLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsZ0JBQWdCLEVBQUUsSUFBSTtZQUN0QixhQUFhLEVBQUUsSUFBSTtZQUNuQixjQUFjLEVBQUUsSUFBSTtZQUNwQixvQkFBb0IsRUFBRSxzQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDekM7UUFDRCxlQUFlLEVBQUUsNkJBQWUsQ0FBQyxlQUFlO1FBQ2hELGFBQWEsRUFBRSwyQkFBYSxDQUFDLE9BQU87S0FDdkMsQ0FBQTtJQUNELE9BQU8sWUFBWSxDQUFDO0FBQ3hCLENBQUMsQ0FBQztBQXhDVyxRQUFBLG1CQUFtQix1QkF3QzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHVyYXRpb24sIFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IEFjY291bnRSZWNvdmVyeSwgRGF0ZVRpbWVBdHRyaWJ1dGUsIE51bWJlckF0dHJpYnV0ZSwgU3RyaW5nQXR0cmlidXRlLCBVc2VyUG9vbFByb3BzLCBcbiAgICBWZXJpZmljYXRpb25FbWFpbFN0eWxlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jb2duaXRvXCI7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVVc2VyUG9vbFByb3BzID0gKHNlY3VyaXR5VXNlclBvb2w6IHN0cmluZykgPT4ge1xuICAgXG4gICAgY29uc3QgY29nbml0b1Byb3BzOiBVc2VyUG9vbFByb3BzID0ge1xuICAgICAgICB1c2VyUG9vbE5hbWU6IHNlY3VyaXR5VXNlclBvb2wudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgc2VsZlNpZ25VcEVuYWJsZWQ6IHRydWUsXG4gICAgICAgIHVzZXJWZXJpZmljYXRpb246IHtcbiAgICAgICAgICAgIGVtYWlsU3ViamVjdDogJ1ZlcmlmeSB5b3VyIGVtYWlsIGZvciBCaXNob3AgQ0RLIENvbnN0cnVjdHMhJyxcbiAgICAgICAgICAgIGVtYWlsQm9keTogJ1RoYW5rcyBmb3IgY3JlYXRpbmcgYW4gYWNjb3VudCB3aXRoIEJpc2hvcCBDREsgQ29uc3RydWN0cyEgWW91ciB2ZXJpZmljYXRpb24gY29kZSBpcyB7IyMjI30nLFxuICAgICAgICAgICAgZW1haWxTdHlsZTogVmVyaWZpY2F0aW9uRW1haWxTdHlsZS5DT0RFLFxuICAgICAgICAgICAgc21zTWVzc2FnZTogJ1RoYW5rcyBmb3Igc2lnbmluZyB1cCB7dXNlcm5hbWV9IHdpdGggQmlzaG9wIENESyBDb25zdHJ1Y3RzISBZb3VyIHZlcmlmaWNhdGlvbiBjb2RlIGlzIHsjIyMjfScsXG4gICAgICAgIH0sXG4gICAgICAgIHVzZXJJbnZpdGF0aW9uOiB7XG4gICAgICAgICAgICBlbWFpbFN1YmplY3Q6ICdJbnZpdGUgdG8gam9pbiBCaXNob3AgQ0RLIENvbnN0cnVjdHMhJyxcbiAgICAgICAgICAgIGVtYWlsQm9keTogJ0hlbGxvIHt1c2VybmFtZX0sIHlvdSBoYXZlIGJlZW4gaW52aXRlZCB0byBqb2luIEJpc2hvcCBDREsgQ29uc3RydWN0cyEgWW91ciB0ZW1wb3JhcnkgcGFzc3dvcmQgaXMgeyMjIyN9JyxcbiAgICAgICAgICAgIHNtc01lc3NhZ2U6ICdZb3VyIHRlbXBvcmFyeSBwYXNzd29yZCBmb3Ige3VzZXJuYW1lfSB3aXRoIEJpc2hvcCBDREsgQ29uc3RydWN0cyBpcyB7IyMjI30nXG4gICAgICAgIH0sXG4gICAgICAgIHNpZ25JbkFsaWFzZXM6IHtcbiAgICAgICAgICAgIHVzZXJuYW1lOiB0cnVlLFxuICAgICAgICAgICAgZW1haWw6IHRydWUsXG4gICAgICAgICAgICBwaG9uZTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBjdXN0b21BdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAnZmlyc3ROYW1lJzogbmV3IFN0cmluZ0F0dHJpYnV0ZSh7IG1pbkxlbjogMywgbWF4TGVuOiAzMCwgbXV0YWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgICAgICdsYXN0TmFtZSc6IG5ldyBTdHJpbmdBdHRyaWJ1dGUoeyBtaW5MZW46IDMsIG1heExlbjogMzAsIG11dGFibGU6IHRydWUgfSksXG4gICAgICAgICAgICAncGhvbmVOdW1iZXInOiBuZXcgU3RyaW5nQXR0cmlidXRlKHsgbWluTGVuOiAzLCBtYXhMZW46IDMwLCBtdXRhYmxlOiB0cnVlIH0pLFxuICAgICAgICAgICAgJ2FjY2NvdW50VHlwZSc6IG5ldyBOdW1iZXJBdHRyaWJ1dGUoeyBtdXRhYmxlOiB0cnVlIH0pLFxuICAgICAgICAgICAgJ2pvaW5lZE9uJzogbmV3IERhdGVUaW1lQXR0cmlidXRlKCksXG4gICAgICAgIH0sXG4gICAgICAgIHBhc3N3b3JkUG9saWN5OiB7XG4gICAgICAgICAgICBtaW5MZW5ndGg6IDgsXG4gICAgICAgICAgICByZXF1aXJlTG93ZXJjYXNlOiB0cnVlLFxuICAgICAgICAgICAgcmVxdWlyZVVwcGVyY2FzZTogdHJ1ZSxcbiAgICAgICAgICAgIHJlcXVpcmVEaWdpdHM6IHRydWUsXG4gICAgICAgICAgICByZXF1aXJlU3ltYm9sczogdHJ1ZSxcbiAgICAgICAgICAgIHRlbXBQYXNzd29yZFZhbGlkaXR5OiBEdXJhdGlvbi5kYXlzKDEpLFxuICAgICAgICB9LFxuICAgICAgICBhY2NvdW50UmVjb3Zlcnk6IEFjY291bnRSZWNvdmVyeS5QSE9ORV9BTkRfRU1BSUwsXG4gICAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICB9XG4gICAgcmV0dXJuIGNvZ25pdG9Qcm9wcztcbn07XG5cbiJdfQ==
@@ -0,0 +1,15 @@
1
+ import { Table } from "aws-cdk-lib/aws-dynamodb";
2
+ import { Construct } from "constructs";
3
+ import { AppConfig } from "../../config/AppConfig";
4
+ import { BaseResource } from "../base/baseResource";
5
+ export declare class CreateDynamoDb extends BaseResource<Table> {
6
+ protected scope: Construct;
7
+ protected config: AppConfig;
8
+ static ReadWriteActions: string[];
9
+ get CreatedTables(): Table[];
10
+ constructor(scope: Construct, config: AppConfig);
11
+ protected createResource(scope: Construct): Table[];
12
+ protected createOutput<T>(scope: Construct, createdAssets: T[]): void;
13
+ private createProps;
14
+ private generateDbName;
15
+ }
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateDynamoDb = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const aws_dynamodb_1 = require("aws-cdk-lib/aws-dynamodb");
6
+ const baseResource_1 = require("../base/baseResource");
7
+ class CreateDynamoDb extends baseResource_1.BaseResource {
8
+ get CreatedTables() {
9
+ return this.createdResources;
10
+ }
11
+ constructor(scope, config) {
12
+ super(scope, config);
13
+ this.scope = scope;
14
+ this.config = config;
15
+ this.createdResources = this.createResource(scope);
16
+ if (this.createdResources) {
17
+ this.createOutput(scope, this.createdResources);
18
+ }
19
+ }
20
+ createResource(scope) {
21
+ const props = this.createProps();
22
+ const tables = props?.map((prop, idx) => {
23
+ const dbTable = new aws_dynamodb_1.Table(scope, `${prop.tableName}`, {
24
+ ...prop,
25
+ removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY
26
+ });
27
+ this.config.RESOURCES.DYNAMO?.TABLES?.[idx].indexes.map((gsi) => {
28
+ const gsiProps = {
29
+ indexName: this.generateDbName(gsi.indexName),
30
+ partitionKey: gsi.partitionKey,
31
+ sortKey: gsi.sortKey,
32
+ projectionType: gsi.projectionType
33
+ };
34
+ dbTable.addGlobalSecondaryIndex(gsiProps);
35
+ });
36
+ return dbTable;
37
+ });
38
+ return tables ?? [];
39
+ }
40
+ createOutput(scope, createdAssets) {
41
+ this.createdResources.forEach((x, idx) => {
42
+ new aws_cdk_lib_1.CfnOutput(scope, `dynamoTable${idx}`, {
43
+ value: x.tableName
44
+ });
45
+ });
46
+ }
47
+ createProps() {
48
+ const props = this.config.RESOURCES?.DYNAMO?.TABLES?.map((x) => {
49
+ const prop = {};
50
+ prop.tableName = this.generateDbName(x.tableName);
51
+ prop.partitionKey = {
52
+ name: x.primaryKey.name,
53
+ type: x.primaryKey.type
54
+ };
55
+ prop.billingMode = x.billingMode;
56
+ if (x.sortKey) {
57
+ prop.sortKey = {
58
+ name: x.sortKey.name,
59
+ type: x.sortKey.type,
60
+ };
61
+ }
62
+ return prop;
63
+ });
64
+ return props;
65
+ }
66
+ generateDbName(tableName) {
67
+ // TODO: Remove this later table names should have appPrefix
68
+ return `${tableName}`;
69
+ // return `${this.config.AppPrefix}-${tableName}`;
70
+ }
71
+ }
72
+ CreateDynamoDb.ReadWriteActions = [
73
+ "dynamodb:BatchGetItem",
74
+ "dynamodb:BatchWriteItem",
75
+ "dynamodb:ConditionCheckItem",
76
+ "dynamodb:DeleteItem",
77
+ "dynamodb:DescribeTable",
78
+ "dynamodb:GetItem",
79
+ "dynamodb:GetRecords",
80
+ "dynamodb:GetShardIterator",
81
+ "dynamodb:PutItem",
82
+ "dynamodb:Query",
83
+ "dynamodb:Scan",
84
+ "dynamodb:UpdateItem",
85
+ ];
86
+ exports.CreateDynamoDb = CreateDynamoDb;
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3JlYXRlRHluYW1vLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc291cmNlcy9keW5hbW9kYi9DcmVhdGVEeW5hbW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXVEO0FBQ3ZELDJEQUF1RjtBQUd2Rix1REFBb0Q7QUFHcEQsTUFBYSxjQUFlLFNBQVEsMkJBQW1CO0lBaUJuRCxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsWUFBc0IsS0FBZ0IsRUFBWSxNQUFpQjtRQUMvRCxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBREgsVUFBSyxHQUFMLEtBQUssQ0FBVztRQUFZLFdBQU0sR0FBTixNQUFNLENBQVc7UUFHL0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbkQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDbkQ7SUFDTCxDQUFDO0lBRVMsY0FBYyxDQUFDLEtBQWdCO1FBRWpDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVqQyxNQUFNLE1BQU0sR0FBRyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEdBQVcsRUFBRSxFQUFFO1lBQ2pELE1BQU0sT0FBTyxHQUFHLElBQUksb0JBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQ2xELEdBQUcsSUFBSTtnQkFDUCxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO2FBQ3ZDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBRTVELE1BQU0sUUFBUSxHQUE4QjtvQkFDeEMsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztvQkFDN0MsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZO29CQUM5QixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87b0JBQ3BCLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYztpQkFFckMsQ0FBQztnQkFFRixPQUFPLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUMsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLE9BQU8sQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUk1QixDQUFDO0lBR1MsWUFBWSxDQUFJLEtBQWdCLEVBQUUsYUFBa0I7UUFDMUQsSUFBSSxDQUFDLGdCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUN0QyxJQUFJLHVCQUFTLENBQUMsS0FBSyxFQUFFLGNBQWMsR0FBRyxFQUFFLEVBQUU7Z0JBQ3RDLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUzthQUNyQixDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxXQUFXO1FBQ2YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUUzRCxNQUFNLElBQUksR0FBUSxFQUFFLENBQUM7WUFFckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUVsRCxJQUFJLENBQUMsWUFBWSxHQUFHO2dCQUNoQixJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJO2dCQUN2QixJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJO2FBQzFCLENBQUM7WUFFRixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUM7WUFFakMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO2dCQUNYLElBQUksQ0FBQyxPQUFPLEdBQUc7b0JBQ1gsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSTtvQkFDcEIsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSTtpQkFDdkIsQ0FBQTthQUNKO1lBQ0QsT0FBTyxJQUFrQixDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVPLGNBQWMsQ0FBQyxTQUFpQjtRQUNwQyw4REFBOEQ7UUFDOUQsT0FBTyxHQUFHLFNBQVMsRUFBRSxDQUFDO1FBRXRCLGtEQUFrRDtJQUN0RCxDQUFDOztBQXBHTSwrQkFBZ0IsR0FBYTtJQUNoQyx1QkFBdUI7SUFDdkIseUJBQXlCO0lBQ3pCLDZCQUE2QjtJQUM3QixxQkFBcUI7SUFDckIsd0JBQXdCO0lBQ3hCLGtCQUFrQjtJQUNsQixxQkFBcUI7SUFDckIsMkJBQTJCO0lBQzNCLGtCQUFrQjtJQUNsQixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLHFCQUFxQjtDQUN4QixDQUFDO0FBZk8sd0NBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQsIFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IEdsb2JhbFNlY29uZGFyeUluZGV4UHJvcHMsVGFibGUsIFRhYmxlUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWR5bmFtb2RiXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQXBwQ29uZmlnIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9BcHBDb25maWdcIjtcbmltcG9ydCB7IEJhc2VSZXNvdXJjZSB9IGZyb20gXCIuLi9iYXNlL2Jhc2VSZXNvdXJjZVwiO1xuXG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVEeW5hbW9EYiBleHRlbmRzIEJhc2VSZXNvdXJjZTxUYWJsZT4ge1xuXG4gICAgc3RhdGljIFJlYWRXcml0ZUFjdGlvbnM6IHN0cmluZ1tdID0gW1xuICAgICAgICBcImR5bmFtb2RiOkJhdGNoR2V0SXRlbVwiLFxuICAgICAgICBcImR5bmFtb2RiOkJhdGNoV3JpdGVJdGVtXCIsXG4gICAgICAgIFwiZHluYW1vZGI6Q29uZGl0aW9uQ2hlY2tJdGVtXCIsXG4gICAgICAgIFwiZHluYW1vZGI6RGVsZXRlSXRlbVwiLFxuICAgICAgICBcImR5bmFtb2RiOkRlc2NyaWJlVGFibGVcIixcbiAgICAgICAgXCJkeW5hbW9kYjpHZXRJdGVtXCIsXG4gICAgICAgIFwiZHluYW1vZGI6R2V0UmVjb3Jkc1wiLFxuICAgICAgICBcImR5bmFtb2RiOkdldFNoYXJkSXRlcmF0b3JcIixcbiAgICAgICAgXCJkeW5hbW9kYjpQdXRJdGVtXCIsXG4gICAgICAgIFwiZHluYW1vZGI6UXVlcnlcIixcbiAgICAgICAgXCJkeW5hbW9kYjpTY2FuXCIsXG4gICAgICAgIFwiZHluYW1vZGI6VXBkYXRlSXRlbVwiLFxuICAgIF07XG5cbiAgICBnZXQgQ3JlYXRlZFRhYmxlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlZFJlc291cmNlcztcbiAgICB9XG4gICAgXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIHNjb3BlOiBDb25zdHJ1Y3QsIHByb3RlY3RlZCBjb25maWc6IEFwcENvbmZpZykge1xuICAgICAgICBzdXBlcihzY29wZSwgY29uZmlnKTtcblxuICAgICAgICB0aGlzLmNyZWF0ZWRSZXNvdXJjZXMgPSB0aGlzLmNyZWF0ZVJlc291cmNlKHNjb3BlKTtcblxuICAgICAgICBpZiAodGhpcy5jcmVhdGVkUmVzb3VyY2VzKSB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZU91dHB1dChzY29wZSwgdGhpcy5jcmVhdGVkUmVzb3VyY2VzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVSZXNvdXJjZShzY29wZTogQ29uc3RydWN0KTogVGFibGVbXSB7XG4gICAgICAgIFxuICAgICAgICAgICAgY29uc3QgcHJvcHMgPSB0aGlzLmNyZWF0ZVByb3BzKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHRhYmxlcyA9IHByb3BzPy5tYXAoKHByb3A6IGFueSwgaWR4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYlRhYmxlID0gbmV3IFRhYmxlKHNjb3BlLCBgJHtwcm9wLnRhYmxlTmFtZX1gLCB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnByb3AsXG4gICAgICAgICAgICAgICAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuUkVTT1VSQ0VTLkRZTkFNTz8uVEFCTEVTPy5baWR4XS5pbmRleGVzLm1hcCgoZ3NpKSA9PiB7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3NpUHJvcHM6IEdsb2JhbFNlY29uZGFyeUluZGV4UHJvcHMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleE5hbWU6IHRoaXMuZ2VuZXJhdGVEYk5hbWUoZ3NpLmluZGV4TmFtZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb25LZXk6IGdzaS5wYXJ0aXRpb25LZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0S2V5OiBnc2kuc29ydEtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Rpb25UeXBlOiBnc2kucHJvamVjdGlvblR5cGVcblxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIGRiVGFibGUuYWRkR2xvYmFsU2Vjb25kYXJ5SW5kZXgoZ3NpUHJvcHMpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBkYlRhYmxlO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiB0YWJsZXMgPz8gW107XG4gICAgICAgXG5cbiAgICAgICBcbiAgICB9XG5cblxuICAgIHByb3RlY3RlZCBjcmVhdGVPdXRwdXQ8VD4oc2NvcGU6IENvbnN0cnVjdCwgY3JlYXRlZEFzc2V0czogVFtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3JlYXRlZFJlc291cmNlcyEuZm9yRWFjaCgoeCwgaWR4KSA9PiB7XG4gICAgICAgICAgICBuZXcgQ2ZuT3V0cHV0KHNjb3BlLCBgZHluYW1vVGFibGUke2lkeH1gLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHgudGFibGVOYW1lXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVQcm9wcygpIHtcbiAgICAgICAgY29uc3QgcHJvcHMgPSB0aGlzLmNvbmZpZy5SRVNPVVJDRVM/LkRZTkFNTz8uVEFCTEVTPy5tYXAoKHgpID0+IHtcblxuICAgICAgICAgICAgY29uc3QgcHJvcDogYW55ID0ge307XG5cbiAgICAgICAgICAgIHByb3AudGFibGVOYW1lID0gdGhpcy5nZW5lcmF0ZURiTmFtZSh4LnRhYmxlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIHByb3AucGFydGl0aW9uS2V5ID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IHgucHJpbWFyeUtleS5uYW1lLFxuICAgICAgICAgICAgICAgIHR5cGU6IHgucHJpbWFyeUtleS50eXBlXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBwcm9wLmJpbGxpbmdNb2RlID0geC5iaWxsaW5nTW9kZTtcblxuICAgICAgICAgICAgaWYgKHguc29ydEtleSkge1xuICAgICAgICAgICAgICAgIHByb3Auc29ydEtleSA9IHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogeC5zb3J0S2V5Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IHguc29ydEtleS50eXBlLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwcm9wIGFzIFRhYmxlUHJvcHM7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBwcm9wcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlRGJOYW1lKHRhYmxlTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIC8vIFRPRE86ICBSZW1vdmUgdGhpcyBsYXRlciAgdGFibGUgbmFtZXMgc2hvdWxkIGhhdmUgYXBwUHJlZml4XG4gICAgICAgIHJldHVybiBgJHt0YWJsZU5hbWV9YDtcbiAgICAgICAgXG4gICAgICAgIC8vIHJldHVybiBgJHt0aGlzLmNvbmZpZy5BcHBQcmVmaXh9LSR7dGFibGVOYW1lfWA7XG4gICAgfVxufSJdfQ==
@@ -0,0 +1,19 @@
1
+ import { IRestApi, RestApi } from "aws-cdk-lib/aws-apigateway";
2
+ import { Construct } from "constructs";
3
+ import { AppConfig } from "../../config/AppConfig";
4
+ import { BaseResource } from "../base/baseResource";
5
+ export declare class Api extends BaseResource<IRestApi> {
6
+ private corsOptions;
7
+ get APIs(): IRestApi[];
8
+ constructor(scope: Construct, config: AppConfig);
9
+ private createApi;
10
+ private createApiProps;
11
+ private createDefaultCorsOptions;
12
+ private createCustomDomain;
13
+ private attachDomainToApi;
14
+ private getZone;
15
+ private createCertificate;
16
+ private createARecord;
17
+ protected createResource(scope: Construct): RestApi[];
18
+ protected createOutput<T>(scope: Construct, createdAssets: T[]): void;
19
+ }