@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,135 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateLambda = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
6
+ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
7
+ const aws_lambda_nodejs_1 = require("aws-cdk-lib/aws-lambda-nodejs");
8
+ const path = require("path");
9
+ const baseResource_1 = require("../base/baseResource");
10
+ class CreateLambda extends baseResource_1.BaseResource {
11
+ constructor(props, config) {
12
+ super(props.scope, config);
13
+ this.props = props;
14
+ this.Lambdas = [];
15
+ const resources = this.createResource(props.scope);
16
+ this.Lambdas = [...resources];
17
+ this.createAlarmsForLambdas(this.Lambdas);
18
+ this.createOutput(props.scope, resources);
19
+ }
20
+ createResource(scope) {
21
+ const result = this.createLambdas(this.props);
22
+ return result;
23
+ }
24
+ createOutput(scope, createdAssets) {
25
+ createdAssets.forEach((x, idx) => {
26
+ new aws_cdk_lib_1.CfnOutput(scope, `lambda-${idx}`, {
27
+ // @ts-ignore
28
+ value: x.functionName
29
+ });
30
+ });
31
+ }
32
+ createLambdas(props) {
33
+ const createdLambdas = this.createLambdaFunctions(this.scope, props.role, props.layers);
34
+ return createdLambdas;
35
+ }
36
+ createLambdaFunctions(scope, role, layers) {
37
+ //console.log("ENTER createLambdaFunctions");
38
+ const createdLambdas = this.props.prop.RESOURCES.LAMBDA.map((config) => {
39
+ //console.log("ENTER createLambdaFunctions.map for " + config.name);
40
+ let lambdaProps = this.createLambdaProps(config, role, layers);
41
+ const lambdaId = CreateLambda.getIdForLambda(config);
42
+ let fctn = new aws_lambda_nodejs_1.NodejsFunction(scope, lambdaId, lambdaProps);
43
+ // If we have managed policies, we add them.
44
+ if (config.managedPolicies && config.managedPolicies?.length > 0) {
45
+ this.assignManagedPolicies(fctn, config.managedPolicies);
46
+ }
47
+ return fctn;
48
+ });
49
+ return createdLambdas || [];
50
+ }
51
+ createLambdaProps(prop, role, layers, props) {
52
+ return this.createLambdaFunctionProps({
53
+ prop,
54
+ role,
55
+ layers,
56
+ props
57
+ });
58
+ }
59
+ createLambdaFunctionProps(props) {
60
+ const { prop, role, layers } = props;
61
+ const lambdaProp = {
62
+ entry: path.join(prop.codePath),
63
+ functionName: `${this.props.appConfig.AppPrefix}-${prop.name}`,
64
+ handler: prop.handler,
65
+ runtime: prop.runtime || this.config.GLOBALS.stackRuntime,
66
+ timeout: prop.duration || aws_cdk_lib_1.Duration.minutes(2),
67
+ memorySize: prop.memory || 512,
68
+ environment: {
69
+ "VERBOSE_LOGGING": "true",
70
+ ...prop.environment
71
+ },
72
+ bundling: {
73
+ minify: false,
74
+ target: 'es2020',
75
+ sourceMap: true,
76
+ sourceMapMode: aws_lambda_nodejs_1.SourceMapMode.INLINE,
77
+ environment: prop.environment || prop.environment,
78
+ },
79
+ role,
80
+ layers
81
+ };
82
+ return lambdaProp;
83
+ }
84
+ ;
85
+ assignManagedPolicies(lambda, managedPolicyNames) {
86
+ managedPolicyNames.forEach((managedPolicyName) => {
87
+ let policy = aws_iam_1.ManagedPolicy.fromAwsManagedPolicyName(managedPolicyName);
88
+ lambda.role?.addManagedPolicy(policy);
89
+ });
90
+ }
91
+ createAlarmsForLambdas(lambdas) {
92
+ lambdas.forEach((lambda, idx) => {
93
+ const errorMetric = lambda.metricErrors({
94
+ period: aws_cdk_lib_1.Duration.minutes(3),
95
+ });
96
+ const durationMetric = lambda.metricDuration({
97
+ period: aws_cdk_lib_1.Duration.minutes(3),
98
+ });
99
+ const invocationMetric = lambda.metricInvocations({
100
+ period: aws_cdk_lib_1.Duration.minutes(3),
101
+ });
102
+ new aws_cloudwatch_1.Alarm(this.props.scope, `${this.config.AppPrefix}-${idx}-error-alarm`, {
103
+ metric: errorMetric,
104
+ threshold: 5,
105
+ comparisonOperator: aws_cloudwatch_1.ComparisonOperator.GREATER_THAN_OR_EQUAL_TO_THRESHOLD,
106
+ evaluationPeriods: 3,
107
+ alarmDescription: `${this.config.AppPrefix}-${idx} errors over 3 min period`,
108
+ alarmName: `${this.config.AppPrefix}-${idx}-error-alarm`
109
+ });
110
+ new aws_cloudwatch_1.Alarm(this.props.scope, `${this.config.AppPrefix}-${idx}-duration-alarm`, {
111
+ metric: durationMetric,
112
+ threshold: 1,
113
+ comparisonOperator: aws_cloudwatch_1.ComparisonOperator.GREATER_THAN_OR_EQUAL_TO_THRESHOLD,
114
+ evaluationPeriods: 3,
115
+ alarmDescription: `${this.config.AppPrefix}-${idx} duration errors over 3 min period`,
116
+ alarmName: `${this.config.AppPrefix}-${idx}-duration-alarm`
117
+ });
118
+ const invocationAlarm = new aws_cloudwatch_1.Alarm(this.props.scope, `${this.config.AppPrefix}-${idx}-invocation-alarm`, {
119
+ metric: errorMetric,
120
+ threshold: 1000,
121
+ comparisonOperator: aws_cloudwatch_1.ComparisonOperator.GREATER_THAN_OR_EQUAL_TO_THRESHOLD,
122
+ evaluationPeriods: 3,
123
+ alarmDescription: `${this.config.AppPrefix}-${idx} errors over 3 min period`,
124
+ alarmName: `${this.config.AppPrefix}-${idx}-invocation-Metric-alarm`
125
+ });
126
+ // const alarmAction: IAlarmAction = {};
127
+ // invocationAlarm.addAlarmAction(alarmAction);
128
+ });
129
+ }
130
+ static getIdForLambda(lambdaProp) {
131
+ return `${lambdaProp.name}`.toLowerCase();
132
+ }
133
+ }
134
+ exports.CreateLambda = CreateLambda;
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlTGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc291cmNlcy9sYW1iZGEvY3JlYXRlTGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFrRDtBQUVsRCwrREFBcUY7QUFDckYsaURBQTJEO0FBRTNELHFFQUFtRztBQUVuRyw2QkFBNkI7QUFNN0IsdURBQW9EO0FBR3BELE1BQWEsWUFBYSxTQUFRLDJCQUE0QjtJQUsxRCxZQUFvQixLQUFxQixFQUFFLE1BQWlCO1FBQ3hELEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRFgsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFIbEMsWUFBTyxHQUFxQixFQUFFLENBQUM7UUFNbEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFFOUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUxQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVTLGNBQWMsQ0FBQyxLQUFnQjtRQUVyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU5QyxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRVMsWUFBWSxDQUFJLEtBQWdCLEVBQUUsYUFBa0I7UUFDMUQsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUU3QixJQUFJLHVCQUFTLENBQUMsS0FBSyxFQUFFLFVBQVUsR0FBRyxFQUFFLEVBQUU7Z0JBQ2xDLGFBQWE7Z0JBQ2IsS0FB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Q0FBQztJQUM5QyxDQUFDO0NBQ0o7QUF2S0Qsb0NBdUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0LCBEdXJhdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgVG9rZW5BdXRob3JpemVyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XCI7XG5pbXBvcnQgeyBBbGFybSwgQ29tcGFyaXNvbk9wZXJhdG9yLCBJQWxhcm1BY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2hcIjtcbmltcG9ydCB7IElSb2xlLCBNYW5hZ2VkUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IExheWVyVmVyc2lvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBOb2RlanNGdW5jdGlvbiwgTm9kZWpzRnVuY3Rpb25Qcm9wcywgU291cmNlTWFwTW9kZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBBcHBDb25maWcgfSBmcm9tIFwiLi4vLi4vY29uZmlnL0FwcENvbmZpZ1wiO1xuaW1wb3J0IHsgVHNnTGFtYmRhUHJvcCB9IGZyb20gXCIuLi8uLi9jb25maWcvdHlwZXNcIjtcblxuaW1wb3J0IHsgVHNnTGFtYmRhUHJvcHMgfSBmcm9tIFwiLi4vLi4vY29uZmlnL3R5cGVzL1RzZ0xhbWJkYVByb3BzXCI7XG5pbXBvcnQgeyBDcmVhdGVMYW1iZGFGdW5jdGlvbklucHV0IH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvQ3JlYXRlTGFtYmRhRnVuY3Rpb25JbnB1dFwiO1xuaW1wb3J0IHsgQmFzZVJlc291cmNlIH0gZnJvbSBcIi4uL2Jhc2UvYmFzZVJlc291cmNlXCI7XG5cblxuZXhwb3J0IGNsYXNzIENyZWF0ZUxhbWJkYSBleHRlbmRzIEJhc2VSZXNvdXJjZTxOb2RlanNGdW5jdGlvbj4ge1xuXG4gICAgcHVibGljIExhbWJkYXM6IE5vZGVqc0Z1bmN0aW9uW10gPSBbXTtcbiAgICBcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcHJvcHM6IFRzZ0xhbWJkYVByb3BzLCBjb25maWc6IEFwcENvbmZpZykge1xuICAgICAgICBzdXBlcihwcm9wcy5zY29wZSwgY29uZmlnKTtcblxuICAgICAgICBjb25zdCByZXNvdXJjZXMgPSB0aGlzLmNyZWF0ZVJlc291cmNlKHByb3BzLnNjb3BlKTtcblxuICAgICAgICB0aGlzLkxhbWJkYXMgPSBbLi4ucmVzb3VyY2VzXTtcblxuICAgICAgICB0aGlzLmNyZWF0ZUFsYXJtc0ZvckxhbWJkYXModGhpcy5MYW1iZGFzKTtcbiAgICAgICAgXG4gICAgICAgIHRoaXMuY3JlYXRlT3V0cHV0KHByb3BzLnNjb3BlLCByZXNvdXJjZXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVSZXNvdXJjZShzY29wZTogQ29uc3RydWN0KTogTm9kZWpzRnVuY3Rpb25bXSB7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jcmVhdGVMYW1iZGFzKHRoaXMucHJvcHMpO1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlT3V0cHV0PFQ+KHNjb3BlOiBDb25zdHJ1Y3QsIGNyZWF0ZWRBc3NldHM6IFRbXSk6IHZvaWQge1xuICAgICAgICBjcmVhdGVkQXNzZXRzLmZvckVhY2goKHgsIGlkeCkgPT4ge1xuXG4gICAgICAgICAgICBuZXcgQ2ZuT3V0cHV0KHNjb3BlLCBgbGFtYmRhLSR7aWR4fWAsIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgdmFsdWU6IHguZnVuY3Rpb25OYW1lXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVMYW1iZGFzKHByb3BzOiBUc2dMYW1iZGFQcm9wcyk6IE5vZGVqc0Z1bmN0aW9uW10ge1xuICAgICAgICBcbiAgICAgICAgY29uc3QgY3JlYXRlZExhbWJkYXM6IE5vZGVqc0Z1bmN0aW9uW10gPSB0aGlzLmNyZWF0ZUxhbWJkYUZ1bmN0aW9ucyh0aGlzLnNjb3BlLCBwcm9wcy5yb2xlLCBwcm9wcy5sYXllcnMpO1xuXG4gICAgICAgIHJldHVybiBjcmVhdGVkTGFtYmRhcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUxhbWJkYUZ1bmN0aW9ucyhzY29wZTogQ29uc3RydWN0LCByb2xlPzogSVJvbGUsIGxheWVycz86IExheWVyVmVyc2lvbltdKSB7XG5cbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIkVOVEVSIGNyZWF0ZUxhbWJkYUZ1bmN0aW9uc1wiKTtcbiAgICAgICAgY29uc3QgY3JlYXRlZExhbWJkYXMgPSB0aGlzLnByb3BzLnByb3AuUkVTT1VSQ0VTLkxBTUJEQS5tYXAoKGNvbmZpZzpUc2dMYW1iZGFQcm9wKSA9PiB7XG5cbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJFTlRFUiBjcmVhdGVMYW1iZGFGdW5jdGlvbnMubWFwIGZvciBcIiArIGNvbmZpZy5uYW1lKTtcbiAgICAgICAgICAgIGxldCBsYW1iZGFQcm9wcyA9IHRoaXMuY3JlYXRlTGFtYmRhUHJvcHMoY29uZmlnLCByb2xlLCBsYXllcnMpO1xuXG4gICAgICAgICAgICBjb25zdCBsYW1iZGFJZCA9IENyZWF0ZUxhbWJkYS5nZXRJZEZvckxhbWJkYShjb25maWcpO1xuICAgICAgICAgICAgbGV0IGZjdG4gPSBuZXcgTm9kZWpzRnVuY3Rpb24oc2NvcGUsIGxhbWJkYUlkLCBsYW1iZGFQcm9wcyk7XG5cbiAgICAgICAgICAgIC8vICBJZiB3ZSBoYXZlIG1hbmFnZWQgcG9saWNpZXMsIHdlIGFkZCB0aGVtLlxuICAgICAgICAgICAgaWYgKGNvbmZpZy5tYW5hZ2VkUG9saWNpZXMgJiYgY29uZmlnLm1hbmFnZWRQb2xpY2llcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHRoaXMuYXNzaWduTWFuYWdlZFBvbGljaWVzKGZjdG4sIGNvbmZpZy5tYW5hZ2VkUG9saWNpZXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmN0bjtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGNyZWF0ZWRMYW1iZGFzIHx8IFtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlTGFtYmRhUHJvcHMocHJvcDogVHNnTGFtYmRhUHJvcCwgcm9sZT86IElSb2xlLCBsYXllcnM/OiBMYXllclZlcnNpb25bXSwgcHJvcHM/OiBUc2dMYW1iZGFQcm9wcykge1xuXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUxhbWJkYUZ1bmN0aW9uUHJvcHMoe1xuICAgICAgICAgICAgcHJvcCwgXG4gICAgICAgICAgICByb2xlLFxuICAgICAgICAgICAgbGF5ZXJzLCBcbiAgICAgICAgICAgIHByb3BzXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlTGFtYmRhRnVuY3Rpb25Qcm9wcyhwcm9wczogQ3JlYXRlTGFtYmRhRnVuY3Rpb25JbnB1dCkge1xuICAgICAgICBjb25zdCB7IHByb3AsIHJvbGUsIGxheWVycyB9ID0gcHJvcHM7XG5cbiAgICAgICAgY29uc3QgbGFtYmRhUHJvcDogTm9kZWpzRnVuY3Rpb25Qcm9wcyA9IHtcbiAgICAgICAgICAgIGVudHJ5OiBwYXRoLmpvaW4ocHJvcC5jb2RlUGF0aCksXG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IGAke3RoaXMucHJvcHMuYXBwQ29uZmlnLkFwcFByZWZpeH0tJHtwcm9wLm5hbWV9YCxcbiAgICAgICAgICAgIGhhbmRsZXI6IHByb3AuaGFuZGxlcixcbiAgICAgICAgICAgIHJ1bnRpbWU6IHByb3AucnVudGltZSB8fCB0aGlzLmNvbmZpZy5HTE9CQUxTLnN0YWNrUnVudGltZSxcbiAgICAgICAgICAgIHRpbWVvdXQ6IHByb3AuZHVyYXRpb24gfHwgRHVyYXRpb24ubWludXRlcygyKSxcbiAgICAgICAgICAgIG1lbW9yeVNpemU6IHByb3AubWVtb3J5IHx8IDUxMixcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgXCJWRVJCT1NFX0xPR0dJTkdcIjogXCJ0cnVlXCIsICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC4uLnByb3AuZW52aXJvbm1lbnRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidW5kbGluZzoge1xuICAgICAgICAgICAgICAgIG1pbmlmeTogZmFsc2UsXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiAnZXMyMDIwJyxcbiAgICAgICAgICAgICAgICBzb3VyY2VNYXA6IHRydWUsXG4gICAgICAgICAgICAgICAgc291cmNlTWFwTW9kZTogU291cmNlTWFwTW9kZS5JTkxJTkUsXG4gICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ6IHByb3AuZW52aXJvbm1lbnQgfHwgcHJvcC5lbnZpcm9ubWVudCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByb2xlLFxuICAgICAgICAgICAgbGF5ZXJzXG5cbiAgICAgICAgfVxuXG4gICAgICAgIFxuICAgICAgICByZXR1cm4gbGFtYmRhUHJvcDtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBhc3NpZ25NYW5hZ2VkUG9saWNpZXMobGFtYmRhOiBOb2RlanNGdW5jdGlvbiwgbWFuYWdlZFBvbGljeU5hbWVzOiBzdHJpbmdbXSkge1xuXG4gICAgICAgIG1hbmFnZWRQb2xpY3lOYW1lcy5mb3JFYWNoKChtYW5hZ2VkUG9saWN5TmFtZTogc3RyaW5nKSA9PiB7XG5cbiAgICAgICAgICAgIGxldCBwb2xpY3kgPSBNYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShtYW5hZ2VkUG9saWN5TmFtZSk7XG5cbiAgICAgICAgICAgIGxhbWJkYS5yb2xlPy5hZGRNYW5hZ2VkUG9saWN5KHBvbGljeSk7XG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVBbGFybXNGb3JMYW1iZGFzKGxhbWJkYXM6IE5vZGVqc0Z1bmN0aW9uW10pIHsgICAgICAgIFxuXG4gICAgICAgIGxhbWJkYXMuZm9yRWFjaCgobGFtYmRhLCBpZHgpID0+IHtcblxuICAgICAgICAgICAgY29uc3QgZXJyb3JNZXRyaWMgPSBsYW1iZGEubWV0cmljRXJyb3JzKHtcbiAgICAgICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMyksXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgZHVyYXRpb25NZXRyaWMgPSBsYW1iZGEubWV0cmljRHVyYXRpb24oe1xuICAgICAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygzKSwgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgaW52b2NhdGlvbk1ldHJpYyA9IGxhbWJkYS5tZXRyaWNJbnZvY2F0aW9ucyh7XG4gICAgICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDMpLCAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBuZXcgQWxhcm0odGhpcy5wcm9wcy5zY29wZSwgYCR7dGhpcy5jb25maWcuQXBwUHJlZml4fS0ke2lkeH0tZXJyb3ItYWxhcm1gLCB7XG4gICAgICAgICAgICAgICAgbWV0cmljOiBlcnJvck1ldHJpYywgXG4gICAgICAgICAgICAgICAgdGhyZXNob2xkOiA1LFxuICAgICAgICAgICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgICAgICAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDMsXG4gICAgICAgICAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogYCR7dGhpcy5jb25maWcuQXBwUHJlZml4fS0ke2lkeH0gZXJyb3JzIG92ZXIgMyBtaW4gcGVyaW9kYCxcbiAgICAgICAgICAgICAgICBhbGFybU5hbWU6IGAke3RoaXMuY29uZmlnLkFwcFByZWZpeH0tJHtpZHh9LWVycm9yLWFsYXJtYFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIG5ldyBBbGFybSh0aGlzLnByb3BzLnNjb3BlLCBgJHt0aGlzLmNvbmZpZy5BcHBQcmVmaXh9LSR7aWR4fS1kdXJhdGlvbi1hbGFybWAsIHtcbiAgICAgICAgICAgICAgICBtZXRyaWM6IGR1cmF0aW9uTWV0cmljLCBcbiAgICAgICAgICAgICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICAgICAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgICAgICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMyxcbiAgICAgICAgICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBgJHt0aGlzLmNvbmZpZy5BcHBQcmVmaXh9LSR7aWR4fSBkdXJhdGlvbiBlcnJvcnMgb3ZlciAzIG1pbiBwZXJpb2RgLFxuICAgICAgICAgICAgICAgIGFsYXJtTmFtZTogYCR7dGhpcy5jb25maWcuQXBwUHJlZml4fS0ke2lkeH0tZHVyYXRpb24tYWxhcm1gXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgaW52b2NhdGlvbkFsYXJtID0gbmV3IEFsYXJtKHRoaXMucHJvcHMuc2NvcGUsIGAke3RoaXMuY29uZmlnLkFwcFByZWZpeH0tJHtpZHh9LWludm9jYXRpb24tYWxhcm1gLCB7XG4gICAgICAgICAgICAgICAgbWV0cmljOiBlcnJvck1ldHJpYywgXG4gICAgICAgICAgICAgICAgdGhyZXNob2xkOiAxMDAwLFxuICAgICAgICAgICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgICAgICAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDMsXG4gICAgICAgICAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogYCR7dGhpcy5jb25maWcuQXBwUHJlZml4fS0ke2lkeH0gZXJyb3JzIG92ZXIgMyBtaW4gcGVyaW9kYCxcbiAgICAgICAgICAgICAgICBhbGFybU5hbWU6IGAke3RoaXMuY29uZmlnLkFwcFByZWZpeH0tJHtpZHh9LWludm9jYXRpb24tTWV0cmljLWFsYXJtYFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGFsYXJtQWN0aW9uOiBJQWxhcm1BY3Rpb24gPSB7fTtcbiAgICAgICAgICAgIC8vIGludm9jYXRpb25BbGFybS5hZGRBbGFybUFjdGlvbihhbGFybUFjdGlvbik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SWRGb3JMYW1iZGEobGFtYmRhUHJvcDogVHNnTGFtYmRhUHJvcCkgeyAgICAgICBcbiAgICAgICAgcmV0dXJuIGAke2xhbWJkYVByb3AubmFtZX1gLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxufSJdfQ==
@@ -0,0 +1,5 @@
1
+ import { LayerVersion } from "aws-cdk-lib/aws-lambda";
2
+ import { Construct } from "constructs";
3
+ import { TsgLambdaLayerProp } from "../../config/types/TsgLambdaLayerProp";
4
+ import { MicroserviceProps } from "../../interfaces/MicroserviceProps";
5
+ export declare const createLambdaLayer: (scope: Construct, globalProps: MicroserviceProps, prop: TsgLambdaLayerProp) => LayerVersion;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createLambdaLayer = void 0;
4
+ const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
5
+ const path = require("path");
6
+ const createLambdaLayer = (scope, globalProps, prop) => {
7
+ const propResult = createLambdaLayerProps(prop, globalProps);
8
+ const layer = new aws_lambda_1.LayerVersion(scope, `${globalProps.GLOBALS.name}-common-layer`, propResult);
9
+ return layer;
10
+ };
11
+ exports.createLambdaLayer = createLambdaLayer;
12
+ const createLambdaLayerProps = (prop, props) => {
13
+ const baseProps = baseLayerProps(props, prop.description);
14
+ const baseLayer = {
15
+ ...baseProps,
16
+ code: aws_lambda_1.Code.fromAsset(path.join(prop.codePath)),
17
+ description: prop.description,
18
+ layerVersionName: `${prop.name}`
19
+ };
20
+ return baseLayer;
21
+ };
22
+ const baseLayerProps = (prop, desc) => {
23
+ const baseLayerProps = {
24
+ code: aws_lambda_1.Code.fromAsset(path.join('')),
25
+ compatibleRuntimes: [prop.GLOBALS.stackRuntime],
26
+ license: 'Apache-2.0',
27
+ description: desc,
28
+ };
29
+ return baseLayerProps;
30
+ };
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlTGFtYmRhTGF5ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVzb3VyY2VzL2xhbWJkYS1sYXllci9jcmVhdGVMYW1iZGFMYXllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1REFBd0Y7QUFJeEYsNkJBQTZCO0FBRXRCLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFnQixFQUFFLFdBQThCLEVBQUUsSUFBd0IsRUFBRSxFQUFFO0lBRTVHLE1BQU0sVUFBVSxHQUFHLHNCQUFzQixDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUU3RCxNQUFNLEtBQUssR0FBRyxJQUFJLHlCQUFZLENBQUMsS0FBSyxFQUFFLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUU5RixPQUFPLEtBQUssQ0FBQztBQUVqQixDQUFDLENBQUM7QUFSVyxRQUFBLGlCQUFpQixxQkFRNUI7QUFFRixNQUFNLHNCQUFzQixHQUFHLENBQUMsSUFBd0IsRUFBRSxLQUF3QixFQUFFLEVBQUU7SUFFbEYsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFMUQsTUFBTSxTQUFTLEdBQXNCO1FBQ2pDLEdBQUcsU0FBUztRQUNaLElBQUksRUFBRSxpQkFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBRTtRQUMvQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7UUFDN0IsZ0JBQWdCLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFO0tBQ25DLENBQUM7SUFDRixPQUFPLFNBQVMsQ0FBQztBQUNyQixDQUFDLENBQUM7QUFFRixNQUFNLGNBQWMsR0FBRyxDQUFDLElBQXVCLEVBQUUsSUFBWSxFQUFFLEVBQUU7SUFFN0QsTUFBTSxjQUFjLEdBQXNCO1FBQ3RDLElBQUksRUFBRSxpQkFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFFO1FBQ3BDLGtCQUFrQixFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDL0MsT0FBTyxFQUFFLFlBQVk7UUFDckIsV0FBVyxFQUFFLElBQUk7S0FDcEIsQ0FBQztJQUVGLE9BQU8sY0FBYyxDQUFDO0FBQzFCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvZGUsIExheWVyVmVyc2lvbiwgTGF5ZXJWZXJzaW9uUHJvcHMsIFJ1bnRpbWUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFRzZ0xhbWJkYUxheWVyUHJvcCB9IGZyb20gXCIuLi8uLi9jb25maWcvdHlwZXMvVHNnTGFtYmRhTGF5ZXJQcm9wXCI7XG5pbXBvcnQgeyBNaWNyb3NlcnZpY2VQcm9wcyB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL01pY3Jvc2VydmljZVByb3BzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVMYW1iZGFMYXllciA9IChzY29wZTogQ29uc3RydWN0LCBnbG9iYWxQcm9wczogTWljcm9zZXJ2aWNlUHJvcHMsIHByb3A6IFRzZ0xhbWJkYUxheWVyUHJvcCkgPT4ge1xuXG4gICAgY29uc3QgcHJvcFJlc3VsdCA9IGNyZWF0ZUxhbWJkYUxheWVyUHJvcHMocHJvcCwgZ2xvYmFsUHJvcHMpO1xuXG4gICAgY29uc3QgbGF5ZXIgPSBuZXcgTGF5ZXJWZXJzaW9uKHNjb3BlLCBgJHtnbG9iYWxQcm9wcy5HTE9CQUxTLm5hbWV9LWNvbW1vbi1sYXllcmAsIHByb3BSZXN1bHQpO1xuXG4gICAgcmV0dXJuIGxheWVyO1xuXG59O1xuXG5jb25zdCBjcmVhdGVMYW1iZGFMYXllclByb3BzID0gKHByb3A6IFRzZ0xhbWJkYUxheWVyUHJvcCwgcHJvcHM6IE1pY3Jvc2VydmljZVByb3BzKSA9PiB7XG5cbiAgICBjb25zdCBiYXNlUHJvcHMgPSBiYXNlTGF5ZXJQcm9wcyhwcm9wcywgcHJvcC5kZXNjcmlwdGlvbik7XG5cbiAgICBjb25zdCBiYXNlTGF5ZXI6IExheWVyVmVyc2lvblByb3BzID0ge1xuICAgICAgICAuLi5iYXNlUHJvcHMsXG4gICAgICAgIGNvZGU6IENvZGUuZnJvbUFzc2V0KHBhdGguam9pbihwcm9wLmNvZGVQYXRoKSwpLFxuICAgICAgICBkZXNjcmlwdGlvbjogcHJvcC5kZXNjcmlwdGlvbixcbiAgICAgICAgbGF5ZXJWZXJzaW9uTmFtZTogYCR7cHJvcC5uYW1lfWBcbiAgICB9O1xuICAgIHJldHVybiBiYXNlTGF5ZXI7XG59O1xuXG5jb25zdCBiYXNlTGF5ZXJQcm9wcyA9IChwcm9wOiBNaWNyb3NlcnZpY2VQcm9wcywgZGVzYzogc3RyaW5nKSA9PiB7XG5cbiAgICBjb25zdCBiYXNlTGF5ZXJQcm9wczogTGF5ZXJWZXJzaW9uUHJvcHMgPSB7XG4gICAgICAgIGNvZGU6IENvZGUuZnJvbUFzc2V0KHBhdGguam9pbignJyksKSxcbiAgICAgICAgY29tcGF0aWJsZVJ1bnRpbWVzOiBbcHJvcC5HTE9CQUxTLnN0YWNrUnVudGltZV0sXG4gICAgICAgIGxpY2Vuc2U6ICdBcGFjaGUtMi4wJyxcbiAgICAgICAgZGVzY3JpcHRpb246IGRlc2MsXG4gICAgfTtcblxuICAgIHJldHVybiBiYXNlTGF5ZXJQcm9wcztcbn07Il19
@@ -0,0 +1 @@
1
+ export * from "./responses";
@@ -0,0 +1,18 @@
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("./responses"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvcmVzb3VyY2VzL2xheWVycy9jb21tb24vc3JjL25vZGVqcy9hcGktcmVzcG9uc2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3Jlc3BvbnNlc1wiOyJdfQ==
@@ -0,0 +1,24 @@
1
+ export declare const badResponse: (errorMessage: string) => {
2
+ statusCode: number;
3
+ body: string;
4
+ headers: {
5
+ "Access-Control-Allow-Origin": string;
6
+ "Access-Control-Allow-Credentials": boolean;
7
+ };
8
+ };
9
+ export declare const okResponse: (data: Object) => {
10
+ statusCode: number;
11
+ body: string;
12
+ headers: {
13
+ "Access-Control-Allow-Origin": string;
14
+ "Access-Control-Allow-Credentials": boolean;
15
+ };
16
+ };
17
+ export declare const unauthorizedResponse: (data: object) => {
18
+ statusCode: number;
19
+ body: string;
20
+ headers: {
21
+ "Access-Control-Allow-Origin": string;
22
+ "Access-Control-Allow-Credentials": boolean;
23
+ };
24
+ };
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.unauthorizedResponse = exports.okResponse = exports.badResponse = void 0;
4
+ const badResponse = (errorMessage) => {
5
+ return {
6
+ statusCode: 400,
7
+ body: JSON.stringify({
8
+ message: errorMessage
9
+ }),
10
+ headers: {
11
+ "Access-Control-Allow-Origin": "*",
12
+ "Access-Control-Allow-Credentials": true,
13
+ },
14
+ };
15
+ };
16
+ exports.badResponse = badResponse;
17
+ const okResponse = (data) => {
18
+ return {
19
+ statusCode: 200,
20
+ body: JSON.stringify({
21
+ data
22
+ }),
23
+ headers: {
24
+ "Access-Control-Allow-Origin": "*",
25
+ "Access-Control-Allow-Credentials": true,
26
+ },
27
+ };
28
+ };
29
+ exports.okResponse = okResponse;
30
+ const unauthorizedResponse = (data) => {
31
+ return {
32
+ statusCode: 401,
33
+ body: JSON.stringify({
34
+ data
35
+ }),
36
+ headers: {
37
+ "Access-Control-Allow-Origin": "*",
38
+ "Access-Control-Allow-Credentials": true,
39
+ },
40
+ };
41
+ };
42
+ exports.unauthorizedResponse = unauthorizedResponse;
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3Jlc291cmNlcy9sYXllcnMvY29tbW9uL3NyYy9ub2RlanMvYXBpLXJlc3BvbnNlL3Jlc3BvbnNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBTyxNQUFNLFdBQVcsR0FBRyxDQUFDLFlBQW9CLEVBQUUsRUFBRTtJQUNoRCxPQUFPO1FBQ0gsVUFBVSxFQUFFLEdBQUc7UUFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNqQixPQUFPLEVBQUUsWUFBWTtTQUN4QixDQUFDO1FBQ0YsT0FBTyxFQUFFO1lBQ0wsNkJBQTZCLEVBQUUsR0FBRztZQUNsQyxrQ0FBa0MsRUFBRSxJQUFJO1NBQzNDO0tBQ0osQ0FBQztBQUVOLENBQUMsQ0FBQztBQVpXLFFBQUEsV0FBVyxlQVl0QjtBQUVLLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUU7SUFDdkMsT0FBTztRQUNILFVBQVUsRUFBRSxHQUFHO1FBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDakIsSUFBSTtTQUNQLENBQUM7UUFDRixPQUFPLEVBQUU7WUFDTCw2QkFBNkIsRUFBRSxHQUFHO1lBQ2xDLGtDQUFrQyxFQUFFLElBQUk7U0FDM0M7S0FDSixDQUFDO0FBRU4sQ0FBQyxDQUFDO0FBWlcsUUFBQSxVQUFVLGNBWXJCO0FBRUssTUFBTSxvQkFBb0IsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO0lBQ2pELE9BQU87UUFDSCxVQUFVLEVBQUUsR0FBRztRQUNmLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2pCLElBQUk7U0FDUCxDQUFDO1FBQ0YsT0FBTyxFQUFFO1lBQ0wsNkJBQTZCLEVBQUUsR0FBRztZQUNsQyxrQ0FBa0MsRUFBRSxJQUFJO1NBQzNDO0tBQ0osQ0FBQztBQUVOLENBQUMsQ0FBQztBQVpXLFFBQUEsb0JBQW9CLHdCQVkvQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBiYWRSZXNwb25zZSA9IChlcnJvck1lc3NhZ2U6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAgIHN0YXR1c0NvZGU6IDQwMCxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JNZXNzYWdlXG4gICAgICAgIH0pLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBcIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpblwiOiBcIipcIixcbiAgICAgICAgICAgIFwiQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHNcIjogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9O1xuXG59O1xuXG5leHBvcnQgY29uc3Qgb2tSZXNwb25zZSA9IChkYXRhOiBPYmplY3QpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICBzdGF0dXNDb2RlOiAyMDAsXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIGRhdGFcbiAgICAgICAgfSksXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIFwiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luXCI6IFwiKlwiLFxuICAgICAgICAgICAgXCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFsc1wiOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH07XG5cbn07XG5cbmV4cG9ydCBjb25zdCB1bmF1dGhvcml6ZWRSZXNwb25zZSA9IChkYXRhOiBvYmplY3QpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICBzdGF0dXNDb2RlOiA0MDEsXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIGRhdGFcbiAgICAgICAgfSksXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIFwiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luXCI6IFwiKlwiLFxuICAgICAgICAgICAgXCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFsc1wiOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH07XG5cbn07XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from "./logger/index";
2
+ export * from "./api-response/index";
@@ -0,0 +1,19 @@
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("./logger/index"), exports);
18
+ __exportStar(require("./api-response/index"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcmVzb3VyY2VzL2xheWVycy9jb21tb24vc3JjL25vZGVqcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQStCO0FBQy9CLHVEQUFxQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2xvZ2dlci9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXBpLXJlc3BvbnNlL2luZGV4XCI7XG5cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ export interface ILoggerContext {
2
+ functionName?: string;
3
+ name: string;
4
+ message: string;
5
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvcmVzb3VyY2VzL2xheWVycy9jb21tb24vc3JjL25vZGVqcy9sb2dnZXIvSUNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSUxvZ2dlckNvbnRleHQge1xuXG4gICAgZnVuY3Rpb25OYW1lPzogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG5cbn0iXX0=
@@ -0,0 +1,2 @@
1
+ export * from "./IContext";
2
+ export * from "./logger";
@@ -0,0 +1,19 @@
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("./IContext"), exports);
18
+ __exportStar(require("./logger"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvcmVzb3VyY2VzL2xheWVycy9jb21tb24vc3JjL25vZGVqcy9sb2dnZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUEyQjtBQUMzQiwyQ0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9JQ29udGV4dFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbG9nZ2VyXCI7Il19
@@ -0,0 +1,2 @@
1
+ import { ILoggerContext } from "./IContext";
2
+ export declare function logger(context: ILoggerContext): void;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logger = void 0;
4
+ function logger(context) {
5
+ const showLogs = Boolean(process.env.VERBOSE_LOGGING || false);
6
+ if (showLogs) {
7
+ console.log(`### ${(context.functionName) ? `${context.functionName} :: ` : ''} ${(context.name) ? `${context.name} :: ` : ''} ${(context.message) ? `${context.message} :: ` : ''}`);
8
+ }
9
+ // ### run() ::
10
+ }
11
+ exports.logger = logger;
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3Jlc291cmNlcy9sYXllcnMvY29tbW9uL3NyYy9ub2RlanMvbG9nZ2VyL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxTQUFnQixNQUFNLENBQUMsT0FBdUI7SUFFMUMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBRS9ELElBQUksUUFBUSxFQUFFO1FBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxZQUFZLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztLQUM3TDtJQUNELGdCQUFnQjtBQUNwQixDQUFDO0FBUkQsd0JBUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJTG9nZ2VyQ29udGV4dCB9IGZyb20gXCIuL0lDb250ZXh0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2dnZXIoY29udGV4dDogSUxvZ2dlckNvbnRleHQpIHtcblxuICAgIGNvbnN0IHNob3dMb2dzID0gQm9vbGVhbihwcm9jZXNzLmVudi5WRVJCT1NFX0xPR0dJTkcgfHwgZmFsc2UpO1xuXG4gICAgaWYgKHNob3dMb2dzKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGAjIyMgJHsoY29udGV4dC5mdW5jdGlvbk5hbWUpID8gYCR7Y29udGV4dC5mdW5jdGlvbk5hbWV9IDo6ICBgIDogJyd9ICR7KGNvbnRleHQubmFtZSkgPyBgJHtjb250ZXh0Lm5hbWV9IDo6ICBgIDogJyd9ICAkeyhjb250ZXh0Lm1lc3NhZ2UpID8gYCR7Y29udGV4dC5tZXNzYWdlfSA6OiAgYCA6ICcnfWApO1xuICAgIH1cbiAgICAvLyAjIyMgcnVuKCkgOjogXG59Il19
@@ -0,0 +1,4 @@
1
+ import { IUserPool } from "aws-cdk-lib/aws-cognito";
2
+ import { PolicyDocument } from "aws-cdk-lib/aws-iam";
3
+ import { MicroserviceProps } from "../../../../interfaces/MicroserviceProps";
4
+ export declare const cognitoPolicyDocument: (userPool: IUserPool, config: MicroserviceProps) => PolicyDocument;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cognitoPolicyDocument = void 0;
4
+ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
5
+ const cognitoPolicyDocument = (userPool, config) => {
6
+ const cpd = new aws_iam_1.PolicyDocument({
7
+ statements: [
8
+ new aws_iam_1.PolicyStatement({
9
+ resources: [userPool.userPoolArn],
10
+ actions: [
11
+ "cognito:*",
12
+ "cognito-idp:ListUsers"
13
+ ],
14
+ effect: aws_iam_1.Effect.ALLOW,
15
+ }),
16
+ new aws_iam_1.PolicyStatement({
17
+ effect: aws_iam_1.Effect.ALLOW,
18
+ actions: [
19
+ "logs:CreateLogGroup",
20
+ "logs:CreateLogStream",
21
+ "logs:DescribeLogGroups",
22
+ "logs:DescribeLogStreams",
23
+ "logs:PutLogEvents",
24
+ "logs:GetLogEvents",
25
+ "logs:FilterLogEvents"
26
+ ],
27
+ resources: ["*"]
28
+ }),
29
+ new aws_iam_1.PolicyStatement({
30
+ resources: [`arn:aws:dynamodb:${config.GLOBALS.region}:${config.GLOBALS.accountNumber}:table/*`],
31
+ actions: [
32
+ "dynamodb:BatchGetItem",
33
+ "dynamodb:BatchWriteItem",
34
+ "dynamodb:ConditionCheckItem",
35
+ "dynamodb:DeleteItem",
36
+ "dynamodb:DescribeTable",
37
+ "dynamodb:GetItem",
38
+ "dynamodb:GetRecords",
39
+ "dynamodb:GetShardIterator",
40
+ "dynamodb:PutItem",
41
+ "dynamodb:Query",
42
+ "dynamodb:Scan",
43
+ "dynamodb:UpdateItem",
44
+ ],
45
+ effect: aws_iam_1.Effect.ALLOW,
46
+ }),
47
+ ],
48
+ });
49
+ return cpd;
50
+ };
51
+ exports.cognitoPolicyDocument = cognitoPolicyDocument;
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nbml0b1BvbGljeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9yZXNvdXJjZXMvcmVzb3VyY2VzL2lhbS9wb2xpY3lEb2N1bWVudHMvY29nbml0b1BvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxpREFBOEU7QUFJdkUsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFFBQW1CLEVBQUUsTUFBeUIsRUFBRSxFQUFFO0lBRXRGLE1BQU0sR0FBRyxHQUFtQixJQUFJLHdCQUFjLENBQUM7UUFFN0MsVUFBVSxFQUFFO1lBQ1YsSUFBSSx5QkFBZSxDQUFDO2dCQUNsQixTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO2dCQUNqQyxPQUFPLEVBQUU7b0JBQ1AsV0FBVztvQkFDWCx1QkFBdUI7aUJBQ3hCO2dCQUNELE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7YUFDckIsQ0FBQztZQUNGLElBQUkseUJBQWUsQ0FBQztnQkFDbEIsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztnQkFDcEIsT0FBTyxFQUFFO29CQUNQLHFCQUFxQjtvQkFDckIsc0JBQXNCO29CQUN0Qix3QkFBd0I7b0JBQ3hCLHlCQUF5QjtvQkFDekIsbUJBQW1CO29CQUNuQixtQkFBbUI7b0JBQ25CLHNCQUFzQjtpQkFDdkI7Z0JBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO2FBQ2pCLENBQUM7WUFDRixJQUFJLHlCQUFlLENBQUM7Z0JBQ2xCLFNBQVMsRUFBRSxDQUFDLG9CQUFvQixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsVUFBVSxDQUFDO2dCQUNoRyxPQUFPLEVBQUU7b0JBQ1AsdUJBQXVCO29CQUN2Qix5QkFBeUI7b0JBQ3pCLDZCQUE2QjtvQkFDN0IscUJBQXFCO29CQUNyQix3QkFBd0I7b0JBQ3hCLGtCQUFrQjtvQkFDbEIscUJBQXFCO29CQUNyQiwyQkFBMkI7b0JBQzNCLGtCQUFrQjtvQkFDbEIsZ0JBQWdCO29CQUNoQixlQUFlO29CQUNmLHFCQUFxQjtpQkFFdEI7Z0JBQ0QsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSzthQUNyQixDQUFDO1NBQ0g7S0FDRixDQUFDLENBQUM7SUFFSCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQztBQWpEVyxRQUFBLHFCQUFxQix5QkFpRGhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVVzZXJQb29sIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jb2duaXRvXCI7XG5pbXBvcnQgeyBFZmZlY3QsIFBvbGljeURvY3VtZW50LCBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgTWljcm9zZXJ2aWNlUHJvcHMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9NaWNyb3NlcnZpY2VQcm9wc1wiO1xuXG5cbmV4cG9ydCBjb25zdCBjb2duaXRvUG9saWN5RG9jdW1lbnQgPSAodXNlclBvb2w6IElVc2VyUG9vbCwgY29uZmlnOiBNaWNyb3NlcnZpY2VQcm9wcykgPT4ge1xuXG4gIGNvbnN0IGNwZDogUG9saWN5RG9jdW1lbnQgPSBuZXcgUG9saWN5RG9jdW1lbnQoe1xuXG4gICAgc3RhdGVtZW50czogW1xuICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIHJlc291cmNlczogW3VzZXJQb29sLnVzZXJQb29sQXJuXSxcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIFwiY29nbml0bzoqXCIsXG4gICAgICAgICAgXCJjb2duaXRvLWlkcDpMaXN0VXNlcnNcIlxuICAgICAgICBdLFxuICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgIH0pLFxuICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgXCJsb2dzOkNyZWF0ZUxvZ0dyb3VwXCIsXG4gICAgICAgICAgXCJsb2dzOkNyZWF0ZUxvZ1N0cmVhbVwiLFxuICAgICAgICAgIFwibG9nczpEZXNjcmliZUxvZ0dyb3Vwc1wiLFxuICAgICAgICAgIFwibG9nczpEZXNjcmliZUxvZ1N0cmVhbXNcIixcbiAgICAgICAgICBcImxvZ3M6UHV0TG9nRXZlbnRzXCIsXG4gICAgICAgICAgXCJsb2dzOkdldExvZ0V2ZW50c1wiLFxuICAgICAgICAgIFwibG9nczpGaWx0ZXJMb2dFdmVudHNcIlxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgIH0pLFxuICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOmR5bmFtb2RiOiR7Y29uZmlnLkdMT0JBTFMucmVnaW9ufToke2NvbmZpZy5HTE9CQUxTLmFjY291bnROdW1iZXJ9OnRhYmxlLypgXSxcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIFwiZHluYW1vZGI6QmF0Y2hHZXRJdGVtXCIsXG4gICAgICAgICAgXCJkeW5hbW9kYjpCYXRjaFdyaXRlSXRlbVwiLFxuICAgICAgICAgIFwiZHluYW1vZGI6Q29uZGl0aW9uQ2hlY2tJdGVtXCIsXG4gICAgICAgICAgXCJkeW5hbW9kYjpEZWxldGVJdGVtXCIsXG4gICAgICAgICAgXCJkeW5hbW9kYjpEZXNjcmliZVRhYmxlXCIsXG4gICAgICAgICAgXCJkeW5hbW9kYjpHZXRJdGVtXCIsXG4gICAgICAgICAgXCJkeW5hbW9kYjpHZXRSZWNvcmRzXCIsXG4gICAgICAgICAgXCJkeW5hbW9kYjpHZXRTaGFyZEl0ZXJhdG9yXCIsXG4gICAgICAgICAgXCJkeW5hbW9kYjpQdXRJdGVtXCIsXG4gICAgICAgICAgXCJkeW5hbW9kYjpRdWVyeVwiLFxuICAgICAgICAgIFwiZHluYW1vZGI6U2NhblwiLFxuICAgICAgICAgIFwiZHluYW1vZGI6VXBkYXRlSXRlbVwiLFxuXG4gICAgICAgIF0sXG4gICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgfSksXG4gICAgXSxcbiAgfSk7XG5cbiAgcmV0dXJuIGNwZDtcbn07Il19
@@ -0,0 +1,4 @@
1
+ import { PolicyDocument, Role, RoleProps, ServicePrincipal } from "aws-cdk-lib/aws-iam";
2
+ import { Construct } from "constructs";
3
+ export declare const createRole: (scope: Construct, roleName: string, desc: string, policyDocument: PolicyDocument, servicePrincipal: ServicePrincipal) => Role;
4
+ export declare const createRoleProps: (roleName: string, desc: string, policyDocument: PolicyDocument, servicePrincipal: ServicePrincipal) => RoleProps;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createRoleProps = exports.createRole = void 0;
4
+ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
5
+ const createRole = (scope, roleName, desc, policyDocument, servicePrincipal) => {
6
+ const role = new aws_iam_1.Role(scope, `${roleName}-role`, (0, exports.createRoleProps)(roleName, desc, policyDocument, servicePrincipal));
7
+ return role;
8
+ };
9
+ exports.createRole = createRole;
10
+ const createRoleProps = (roleName, desc, policyDocument, servicePrincipal) => {
11
+ const roleProp = {
12
+ roleName,
13
+ description: 'Allows access to DynamoDb Client Table',
14
+ inlinePolicies: {
15
+ policyDocument
16
+ },
17
+ assumedBy: new aws_iam_1.CompositePrincipal(servicePrincipal)
18
+ };
19
+ return roleProp;
20
+ };
21
+ exports.createRoleProps = createRoleProps;
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUm9sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9yZXNvdXJjZXMvcmVzb3VyY2VzL2lhbS9yb2xlcy9jcmVhdGVSb2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUE0RztBQUlyRyxNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQWdCLEVBQUUsUUFBZ0IsRUFBRSxJQUFZLEVBQUUsY0FBOEIsRUFDdkcsZ0JBQWtDLEVBQUUsRUFBRTtJQUV0QyxNQUFNLElBQUksR0FBRyxJQUFJLGNBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxRQUFRLE9BQU8sRUFBRSxJQUFBLHVCQUFlLEVBQUMsUUFBUSxFQUFFLElBQUksRUFDM0UsY0FBYyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUV2QyxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUM7QUFQVyxRQUFBLFVBQVUsY0FPckI7QUFFSyxNQUFNLGVBQWUsR0FBRyxDQUFDLFFBQWdCLEVBQUUsSUFBWSxFQUFFLGNBQThCLEVBQzFGLGdCQUFrQyxFQUFFLEVBQUU7SUFFdEMsTUFBTSxRQUFRLEdBQWM7UUFDeEIsUUFBUTtRQUNSLFdBQVcsRUFBRSx3Q0FBd0M7UUFDckQsY0FBYyxFQUFFO1lBQ2QsY0FBYztTQUNmO1FBQ0QsU0FBUyxFQUFFLElBQUksNEJBQWtCLENBQy9CLGdCQUFnQixDQUNqQjtLQUVGLENBQUM7SUFFTCxPQUFPLFFBQVEsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFoQlcsUUFBQSxlQUFlLG1CQWdCMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb3NpdGVQcmluY2lwYWwsIFBvbGljeURvY3VtZW50LCBSb2xlLCBSb2xlUHJvcHMsIFNlcnZpY2VQcmluY2lwYWwgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuXG5leHBvcnQgY29uc3QgY3JlYXRlUm9sZSA9IChzY29wZTogQ29uc3RydWN0LCByb2xlTmFtZTogc3RyaW5nLCBkZXNjOiBzdHJpbmcsIHBvbGljeURvY3VtZW50OiBQb2xpY3lEb2N1bWVudCwgXG4gICAgc2VydmljZVByaW5jaXBhbDogU2VydmljZVByaW5jaXBhbCkgPT4ge1xuXG4gICAgY29uc3Qgcm9sZSA9IG5ldyBSb2xlKHNjb3BlLCBgJHtyb2xlTmFtZX0tcm9sZWAsIGNyZWF0ZVJvbGVQcm9wcyhyb2xlTmFtZSwgZGVzYywgXG4gICAgICAgIHBvbGljeURvY3VtZW50LCBzZXJ2aWNlUHJpbmNpcGFsKSk7XG4gICAgXG4gICAgcmV0dXJuIHJvbGU7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlUm9sZVByb3BzID0gKHJvbGVOYW1lOiBzdHJpbmcsIGRlc2M6IHN0cmluZywgcG9saWN5RG9jdW1lbnQ6IFBvbGljeURvY3VtZW50LCBcbiAgICBzZXJ2aWNlUHJpbmNpcGFsOiBTZXJ2aWNlUHJpbmNpcGFsKSA9PiB7XG5cbiAgICBjb25zdCByb2xlUHJvcDogUm9sZVByb3BzID0ge1xuICAgICAgICByb2xlTmFtZSxcbiAgICAgICAgZGVzY3JpcHRpb246ICdBbGxvd3MgYWNjZXNzIHRvIER5bmFtb0RiIENsaWVudCBUYWJsZScsXG4gICAgICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICAgICAgcG9saWN5RG9jdW1lbnRcbiAgICAgICAgfSxcbiAgICAgICAgYXNzdW1lZEJ5OiBuZXcgQ29tcG9zaXRlUHJpbmNpcGFsKFxuICAgICAgICAgIHNlcnZpY2VQcmluY2lwYWwsXG4gICAgICAgIClcbiAgXG4gICAgICB9O1xuICBcbiAgIHJldHVybiByb2xlUHJvcDtcbn07Il19
File without changes
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ // import { CfnOutput } from "aws-cdk-lib";
3
+ // import { HostedZoneProps, IHostedZone, IPublicHostedZone, PublicHostedZone } from "aws-cdk-lib/aws-route53";
4
+ // import { Construct } from "constructs";
5
+ // import { BaseResource } from "../base/BaseResource";
6
+ // export class CreateHostedZone extends BaseResource {
7
+ // public createdPublicZones: IPublicHostedZone[] = [];
8
+ // constructor(scope: Construct) {
9
+ // super(scope);
10
+ // this.createZone();
11
+ // }
12
+ // public createZone() {
13
+ // const props: HostedZoneProps = {
14
+ // zoneName: this.appConfig.DNS.ZoneName
15
+ // };
16
+ // let zone: IPublicHostedZone;
17
+ // if (!this.appConfig.DNS.ZoneExist) {
18
+ // zone = new PublicHostedZone(this.scope, `${this.appConfig.DNS.ZoneNameWithoutPeriod}-hosted-zone`, props);
19
+ // } else {
20
+ // if (!this.appConfig.DNS.ZoneName || !this.appConfig.DNS.ZoneId) {
21
+ // throw new Error("You must provide a Zone Name and Zone Id");
22
+ // }
23
+ // zone = PublicHostedZone.fromHostedZoneAttributes(this.scope, `${this.appConfig.DNS.ZoneNameWithoutPeriod}-hosted-zone`, {
24
+ // zoneName: this.appConfig.DNS.ZoneName,
25
+ // hostedZoneId: this.appConfig.DNS.ZoneId
26
+ // });
27
+ // }
28
+ // this.createdPublicZones.push(zone);
29
+ // this.createOutput(this.scope, this.createdPublicZones);
30
+ // }
31
+ // protected createOutput<HostedZone>(scope: Construct, createdAssets: HostedZone[]): void {
32
+ // let nameServers = '';
33
+ // this.createdPublicZones.forEach((zone, index) => {
34
+ // console.log('Name Servers:', zone.hostedZoneNameServers);
35
+ // zone.hostedZoneNameServers?.forEach((server, idx) => {
36
+ // console.log(nameServers);
37
+ // nameServers = `${nameServers} - ${idx}: ${server}`;
38
+ // }, '');
39
+ // new CfnOutput(scope, `zone-output-${index}`, {
40
+ // value: zone.hostedZoneId,
41
+ // exportName: 'hosted-zone-id'
42
+ // });
43
+ // nameServers = '';
44
+ // });
45
+ // }
46
+ // }
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3JlYXRlWm9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZXNvdXJjZXMvcm91dGU1My9DcmVhdGVab25lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwyQ0FBMkM7QUFDM0MsK0dBQStHO0FBQy9HLDBDQUEwQztBQUMxQyx1REFBdUQ7QUFFdkQsd0RBQXdEO0FBRXhELDJEQUEyRDtBQUUzRCxzQ0FBc0M7QUFDdEMsd0JBQXdCO0FBRXhCLDZCQUE2QjtBQUU3QixRQUFRO0FBRVIsNEJBQTRCO0FBQzVCLDJDQUEyQztBQUMzQyxvREFBb0Q7QUFDcEQsYUFBYTtBQUViLHVDQUF1QztBQUV2QywrQ0FBK0M7QUFDL0MseUhBQXlIO0FBQ3pILG1CQUFtQjtBQUNuQixnRkFBZ0Y7QUFDaEYsK0ZBQStGO0FBQy9GLGdCQUFnQjtBQUNoQix3SUFBd0k7QUFDeEkseURBQXlEO0FBQ3pELDBEQUEwRDtBQUMxRCxrQkFBa0I7QUFDbEIsWUFBWTtBQUVaLDhDQUE4QztBQUU5QyxrRUFBa0U7QUFDbEUsUUFBUTtBQUVSLGdHQUFnRztBQUVoRyxnQ0FBZ0M7QUFFaEMsNkRBQTZEO0FBQzdELDRFQUE0RTtBQUU1RSxzRUFBc0U7QUFDdEUsNENBQTRDO0FBQzVDLHNFQUFzRTtBQUN0RSxzQkFBc0I7QUFFdEIsNkRBQTZEO0FBQzdELDRDQUE0QztBQUM1QywrQ0FBK0M7QUFDL0Msa0JBQWtCO0FBRWxCLGdDQUFnQztBQUNoQyxjQUFjO0FBQ2QsUUFBUTtBQUVSLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgeyBDZm5PdXRwdXQgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbi8vIGltcG9ydCB7IEhvc3RlZFpvbmVQcm9wcywgSUhvc3RlZFpvbmUsIElQdWJsaWNIb3N0ZWRab25lLCBQdWJsaWNIb3N0ZWRab25lIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG4vLyBpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuLy8gaW1wb3J0IHsgQmFzZVJlc291cmNlIH0gZnJvbSBcIi4uL2Jhc2UvQmFzZVJlc291cmNlXCI7XG5cbi8vIGV4cG9ydCBjbGFzcyBDcmVhdGVIb3N0ZWRab25lIGV4dGVuZHMgQmFzZVJlc291cmNlICB7XG4gICAgXG4vLyAgICAgcHVibGljIGNyZWF0ZWRQdWJsaWNab25lczogSVB1YmxpY0hvc3RlZFpvbmVbXSA9IFtdO1xuICAgIFxuLy8gICAgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QpIHtcbi8vICAgICAgICAgc3VwZXIoc2NvcGUpO1xuXG4vLyAgICAgICAgIHRoaXMuY3JlYXRlWm9uZSgpO1xuICAgICAgICBcbi8vICAgICB9XG5cbi8vICAgICBwdWJsaWMgY3JlYXRlWm9uZSgpIHtcbi8vICAgICAgICAgY29uc3QgcHJvcHM6IEhvc3RlZFpvbmVQcm9wcyA9IHtcbi8vICAgICAgICAgICAgIHpvbmVOYW1lOiB0aGlzLmFwcENvbmZpZy5ETlMuWm9uZU5hbWVcbi8vICAgICAgICAgfTtcbiAgICBcbi8vICAgICAgICAgbGV0IHpvbmU6IElQdWJsaWNIb3N0ZWRab25lO1xuXG4vLyAgICAgICAgIGlmICghdGhpcy5hcHBDb25maWcuRE5TLlpvbmVFeGlzdCkge1xuLy8gICAgICAgICAgICAgem9uZSA9IG5ldyBQdWJsaWNIb3N0ZWRab25lKHRoaXMuc2NvcGUsIGAke3RoaXMuYXBwQ29uZmlnLkROUy5ab25lTmFtZVdpdGhvdXRQZXJpb2R9LWhvc3RlZC16b25lYCwgcHJvcHMpO1xuLy8gICAgICAgICB9IGVsc2Uge1xuLy8gICAgICAgICAgICAgaWYgKCF0aGlzLmFwcENvbmZpZy5ETlMuWm9uZU5hbWUgfHwgIXRoaXMuYXBwQ29uZmlnLkROUy5ab25lSWQpIHtcbi8vICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJZb3UgbXVzdCBwcm92aWRlIGEgWm9uZSBOYW1lIGFuZCBab25lIElkXCIpOyAgICAgICAgICAgICAgICBcbi8vICAgICAgICAgICAgIH1cbi8vICAgICAgICAgICAgIHpvbmUgPSBQdWJsaWNIb3N0ZWRab25lLmZyb21Ib3N0ZWRab25lQXR0cmlidXRlcyh0aGlzLnNjb3BlLCBgJHt0aGlzLmFwcENvbmZpZy5ETlMuWm9uZU5hbWVXaXRob3V0UGVyaW9kfS1ob3N0ZWQtem9uZWAsIHtcbi8vICAgICAgICAgICAgICAgICB6b25lTmFtZTogdGhpcy5hcHBDb25maWcuRE5TLlpvbmVOYW1lLFxuLy8gICAgICAgICAgICAgICAgIGhvc3RlZFpvbmVJZDogdGhpcy5hcHBDb25maWcuRE5TLlpvbmVJZFxuLy8gICAgICAgICAgICAgfSk7XG4vLyAgICAgICAgIH1cblxuLy8gICAgICAgICB0aGlzLmNyZWF0ZWRQdWJsaWNab25lcy5wdXNoKHpvbmUpO1xuICAgIFxuLy8gICAgICAgICB0aGlzLmNyZWF0ZU91dHB1dCh0aGlzLnNjb3BlLCB0aGlzLmNyZWF0ZWRQdWJsaWNab25lcyk7XG4vLyAgICAgfVxuXG4vLyAgICAgcHJvdGVjdGVkIGNyZWF0ZU91dHB1dDxIb3N0ZWRab25lPihzY29wZTogQ29uc3RydWN0LCBjcmVhdGVkQXNzZXRzOiBIb3N0ZWRab25lW10pOiB2b2lkIHtcbiAgICAgICAgXG4vLyAgICAgICAgIGxldCBuYW1lU2VydmVycyA9ICcnO1xuICAgICAgICBcbi8vICAgICAgICAgdGhpcy5jcmVhdGVkUHVibGljWm9uZXMuZm9yRWFjaCgoem9uZSwgaW5kZXgpID0+IHtcbi8vICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdOYW1lIFNlcnZlcnM6Jywgem9uZS5ob3N0ZWRab25lTmFtZVNlcnZlcnMpOyAgICBcbiAgICAgICAgICAgIFxuLy8gICAgICAgICAgICAgem9uZS5ob3N0ZWRab25lTmFtZVNlcnZlcnM/LmZvckVhY2goKHNlcnZlciwgaWR4KSA9PiB7IFxuLy8gICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG5hbWVTZXJ2ZXJzKTtcbi8vICAgICAgICAgICAgICAgICBuYW1lU2VydmVycyA9IGAke25hbWVTZXJ2ZXJzfSAtICR7aWR4fTogJHtzZXJ2ZXJ9YDtcbi8vICAgICAgICAgICAgIH0sICcnKTtcbiAgICBcbi8vICAgICAgICAgICAgIG5ldyBDZm5PdXRwdXQoc2NvcGUsIGB6b25lLW91dHB1dC0ke2luZGV4fWAsIHtcbi8vICAgICAgICAgICAgICAgICB2YWx1ZTogem9uZS5ob3N0ZWRab25lSWQsXG4vLyAgICAgICAgICAgICAgICAgZXhwb3J0TmFtZTogJ2hvc3RlZC16b25lLWlkJ1xuLy8gICAgICAgICAgICAgfSk7XG4gICAgXG4vLyAgICAgICAgICAgICBuYW1lU2VydmVycyA9ICcnO1xuLy8gICAgICAgICB9KTtcbi8vICAgICB9XG5cbi8vIH0iXX0=
File without changes
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ // import { CfnOutput, Token } from "aws-cdk-lib";
3
+ // import { HostedZoneProps, PublicHostedZone, ZoneDelegationRecord } from "aws-cdk-lib/aws-route53";
4
+ // import { Construct } from "constructs";
5
+ // import { MicroserviceProps } from "../../interfaces/MicroserviceProps";
6
+ // export const createZones = (scope: Construct, appConfig: MicroserviceProps) => {
7
+ // const createdPublicZones: PublicHostedZone[] = [];
8
+ // const props: HostedZoneProps = {
9
+ // zoneName: appConfig.DNS.ZoneName
10
+ // };
11
+ // const createdZone = new PublicHostedZone(scope, `${appConfig.DNS.ZoneNameWithoutPeriod}-hosted-zone`, props);
12
+ // createdPublicZones.push(createdZone);
13
+ // zoneOutput(scope, createdPublicZones);
14
+ // };
15
+ // const zoneOutput = (scope: Construct, publicZones: PublicHostedZone[]) => {
16
+ // let nameServers = '';
17
+ // publicZones.forEach((zone, index) => {
18
+ // console.log('Name Servers:', zone.hostedZoneNameServers);
19
+ // zone.hostedZoneNameServers?.forEach((server, idx) => {
20
+ // console.log(nameServers);
21
+ // nameServers = `${nameServers} - ${idx}: ${server}`;
22
+ // }, '');
23
+ // new CfnOutput(scope, `zone-output-${index}`, {
24
+ // value: zone.hostedZoneId,
25
+ // exportName: 'hosted-zone-id'
26
+ // });
27
+ // nameServers = '';
28
+ // });
29
+ // };
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXpvbmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc291cmNlcy9yb3V0ZTUzL2NyZWF0ZS16b25lcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsa0RBQWtEO0FBQ2xELHFHQUFxRztBQUNyRywwQ0FBMEM7QUFDMUMsMEVBQTBFO0FBRzFFLG1GQUFtRjtBQUVuRix5REFBeUQ7QUFFekQsdUNBQXVDO0FBQ3ZDLDJDQUEyQztBQUMzQyxTQUFTO0FBRVQsb0hBQW9IO0FBRXBILDRDQUE0QztBQUU1Qyw2Q0FBNkM7QUFDN0MsS0FBSztBQUVMLDhFQUE4RTtBQUc5RSw0QkFBNEI7QUFDNUIsNkNBQTZDO0FBQzdDLHdFQUF3RTtBQUN4RSxrRUFBa0U7QUFDbEUsd0NBQXdDO0FBQ3hDLGtFQUFrRTtBQUNsRSxrQkFBa0I7QUFFbEIseURBQXlEO0FBQ3pELHdDQUF3QztBQUN4QywyQ0FBMkM7QUFDM0MsY0FBYztBQUVkLDRCQUE0QjtBQUM1QixVQUFVO0FBRVYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGltcG9ydCB7IENmbk91dHB1dCwgVG9rZW4gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbi8vIGltcG9ydCB7IEhvc3RlZFpvbmVQcm9wcywgUHVibGljSG9zdGVkWm9uZSwgWm9uZURlbGVnYXRpb25SZWNvcmQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcbi8vIGltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG4vLyBpbXBvcnQgeyBNaWNyb3NlcnZpY2VQcm9wcyB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL01pY3Jvc2VydmljZVByb3BzXCI7XG5cblxuLy8gZXhwb3J0IGNvbnN0IGNyZWF0ZVpvbmVzID0gKHNjb3BlOiBDb25zdHJ1Y3QsIGFwcENvbmZpZzogTWljcm9zZXJ2aWNlUHJvcHMpID0+IHtcblxuLy8gICAgIGNvbnN0IGNyZWF0ZWRQdWJsaWNab25lczogUHVibGljSG9zdGVkWm9uZVtdID0gW107XG5cbi8vICAgICBjb25zdCBwcm9wczogSG9zdGVkWm9uZVByb3BzID0ge1xuLy8gICAgICAgICB6b25lTmFtZTogYXBwQ29uZmlnLkROUy5ab25lTmFtZVxuLy8gICAgIH07XG5cbi8vICAgICBjb25zdCBjcmVhdGVkWm9uZSA9IG5ldyBQdWJsaWNIb3N0ZWRab25lKHNjb3BlLCBgJHthcHBDb25maWcuRE5TLlpvbmVOYW1lV2l0aG91dFBlcmlvZH0taG9zdGVkLXpvbmVgLCBwcm9wcyk7XG5cbi8vICAgICBjcmVhdGVkUHVibGljWm9uZXMucHVzaChjcmVhdGVkWm9uZSk7XG5cbi8vICAgICB6b25lT3V0cHV0KHNjb3BlLCBjcmVhdGVkUHVibGljWm9uZXMpO1xuLy8gfTtcblxuLy8gY29uc3Qgem9uZU91dHB1dCA9IChzY29wZTogQ29uc3RydWN0LCBwdWJsaWNab25lczogUHVibGljSG9zdGVkWm9uZVtdKSA9PiB7XG5cbiAgICBcbi8vICAgICBsZXQgbmFtZVNlcnZlcnMgPSAnJztcbi8vICAgICBwdWJsaWNab25lcy5mb3JFYWNoKCh6b25lLCBpbmRleCkgPT4ge1xuLy8gICAgICAgICBjb25zb2xlLmxvZygnTmFtZSBTZXJ2ZXJzOicsIHpvbmUuaG9zdGVkWm9uZU5hbWVTZXJ2ZXJzKTsgICAgXG4vLyAgICAgICAgIHpvbmUuaG9zdGVkWm9uZU5hbWVTZXJ2ZXJzPy5mb3JFYWNoKChzZXJ2ZXIsIGlkeCkgPT4geyBcbi8vICAgICAgICAgICAgIGNvbnNvbGUubG9nKG5hbWVTZXJ2ZXJzKTtcbi8vICAgICAgICAgICAgIG5hbWVTZXJ2ZXJzID0gYCR7bmFtZVNlcnZlcnN9IC0gJHtpZHh9OiAke3NlcnZlcn1gO1xuLy8gICAgICAgICB9LCAnJyk7XG5cbi8vICAgICAgICAgbmV3IENmbk91dHB1dChzY29wZSwgYHpvbmUtb3V0cHV0LSR7aW5kZXh9YCwge1xuLy8gICAgICAgICAgICAgdmFsdWU6IHpvbmUuaG9zdGVkWm9uZUlkLFxuLy8gICAgICAgICAgICAgZXhwb3J0TmFtZTogJ2hvc3RlZC16b25lLWlkJ1xuLy8gICAgICAgICB9KTtcblxuLy8gICAgICAgICBuYW1lU2VydmVycyA9ICcnO1xuLy8gICAgIH0pO1xuXG4vLyB9OyJdfQ==
@@ -0,0 +1,4 @@
1
+ import { Construct } from "constructs";
2
+ import { MicroserviceProps } from "../../interfaces/MicroserviceProps";
3
+ export declare const createSecretManager: (scope: Construct) => void;
4
+ export declare const getSecretManager: (scope: Construct, prop: MicroserviceProps, secretManagerARN: string) => import("aws-cdk-lib/aws-secretsmanager").ISecret;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSecretManager = exports.createSecretManager = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const aws_secretsmanager_1 = require("aws-cdk-lib/aws-secretsmanager");
6
+ const createSecretManager = (scope) => {
7
+ const secureMgr = new aws_secretsmanager_1.Secret(scope, 'TemplatedSecret', {
8
+ secretName: 'GITHUB_TOKEN',
9
+ secretStringValue: aws_cdk_lib_1.SecretValue.unsafePlainText(process.env.GITHUB_TOKEN),
10
+ });
11
+ };
12
+ exports.createSecretManager = createSecretManager;
13
+ const getSecretManager = (scope, prop, secretManagerARN) => {
14
+ const secretMgr = aws_secretsmanager_1.Secret.fromSecretCompleteArn(scope, `${prop.GLOBALS.name}-secret-manager`, secretManagerARN);
15
+ return secretMgr;
16
+ };
17
+ exports.getSecretManager = getSecretManager;
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVzb3VyY2VzL3NlY3VyaXR5TWFuYWdlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBMEM7QUFDMUMsdUVBQXdEO0FBSWpELE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFnQixFQUFFLEVBQUU7SUFFdEQsTUFBTSxTQUFTLEdBQUcsSUFBSSwyQkFBTSxDQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRTtRQUNyRCxVQUFVLEVBQUUsY0FBYztRQUMxQixpQkFBaUIsRUFBRSx5QkFBVyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQWEsQ0FBQztLQUMxRSxDQUFDLENBQUM7QUFJTCxDQUFDLENBQUM7QUFUVyxRQUFBLG1CQUFtQix1QkFTOUI7QUFFSyxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBZ0IsRUFBRSxJQUF1QixFQUN4RSxnQkFBd0IsRUFBRSxFQUFFO0lBRTVCLE1BQU0sU0FBUyxHQUFHLDJCQUFNLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLGlCQUFpQixFQUN6RixnQkFBZ0IsQ0FBQyxDQUFDO0lBRXBCLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQVBXLFFBQUEsZ0JBQWdCLG9CQU8zQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlY3JldFZhbHVlIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBTZWNyZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgTWljcm9zZXJ2aWNlUHJvcHMgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9NaWNyb3NlcnZpY2VQcm9wc1wiO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlU2VjcmV0TWFuYWdlciA9IChzY29wZTogQ29uc3RydWN0KSA9PiB7XG5cbiAgY29uc3Qgc2VjdXJlTWdyID0gbmV3IFNlY3JldChzY29wZSwgJ1RlbXBsYXRlZFNlY3JldCcsIHtcbiAgICBzZWNyZXROYW1lOiAnR0lUSFVCX1RPS0VOJyxcbiAgICBzZWNyZXRTdHJpbmdWYWx1ZTogU2VjcmV0VmFsdWUudW5zYWZlUGxhaW5UZXh0KHByb2Nlc3MuZW52LkdJVEhVQl9UT0tFTiEpLFxuICB9KTtcblxuXG5cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTZWNyZXRNYW5hZ2VyID0gKHNjb3BlOiBDb25zdHJ1Y3QsIHByb3A6IE1pY3Jvc2VydmljZVByb3BzLFxuICBzZWNyZXRNYW5hZ2VyQVJOOiBzdHJpbmcpID0+IHtcblxuICBjb25zdCBzZWNyZXRNZ3IgPSBTZWNyZXQuZnJvbVNlY3JldENvbXBsZXRlQXJuKHNjb3BlLCBgJHtwcm9wLkdMT0JBTFMubmFtZX0tc2VjcmV0LW1hbmFnZXJgLFxuICAgIHNlY3JldE1hbmFnZXJBUk4pO1xuXG4gIHJldHVybiBzZWNyZXRNZ3I7XG59OyJdfQ==
@@ -0,0 +1 @@
1
+ #