@incloodsolutions/devkit 0.0.3 → 0.0.4

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 (206) hide show
  1. package/README.md +150 -41
  2. package/dist/{aws/cdk/constructs/api-gateway-v2-construct.cjs → aws-cdk/api-gateway-v2.cjs} +2 -2
  3. package/dist/aws-cdk/api-gateway-v2.cjs.map +1 -0
  4. package/dist/{aws/cdk/constructs/api-gateway-v2-construct.d.ts → aws-cdk/api-gateway-v2.d.cts} +1 -1
  5. package/dist/{aws/cdk/constructs/api-gateway-v2-construct.d.cts → aws-cdk/api-gateway-v2.d.ts} +1 -1
  6. package/dist/{aws/cdk/constructs/api-gateway-v2-construct.js → aws-cdk/api-gateway-v2.js} +2 -2
  7. package/dist/aws-cdk/api-gateway-v2.js.map +1 -0
  8. package/dist/{aws/cdk/constructs/api-gateway-websocket-construct.cjs → aws-cdk/api-gateway-websocket.cjs} +18 -6
  9. package/dist/aws-cdk/api-gateway-websocket.cjs.map +1 -0
  10. package/dist/{aws/cdk/constructs/api-gateway-websocket-construct.d.ts → aws-cdk/api-gateway-websocket.d.cts} +1 -1
  11. package/dist/{aws/cdk/constructs/api-gateway-websocket-construct.d.cts → aws-cdk/api-gateway-websocket.d.ts} +1 -1
  12. package/dist/{aws/cdk/constructs/api-gateway-websocket-construct.js → aws-cdk/api-gateway-websocket.js} +18 -6
  13. package/dist/aws-cdk/api-gateway-websocket.js.map +1 -0
  14. package/dist/{aws/cdk/constructs/api-gateway-construct.cjs → aws-cdk/api-gateway.cjs} +6 -3
  15. package/dist/aws-cdk/api-gateway.cjs.map +1 -0
  16. package/dist/{aws/cdk/constructs/api-gateway-construct.d.ts → aws-cdk/api-gateway.d.cts} +1 -1
  17. package/dist/{aws/cdk/constructs/api-gateway-construct.d.cts → aws-cdk/api-gateway.d.ts} +1 -1
  18. package/dist/{aws/cdk/constructs/api-gateway-construct.js → aws-cdk/api-gateway.js} +6 -3
  19. package/dist/aws-cdk/api-gateway.js.map +1 -0
  20. package/dist/{aws/cdk/constructs/cloudfront-construct.cjs → aws-cdk/cloudfront.cjs} +2 -2
  21. package/dist/aws-cdk/cloudfront.cjs.map +1 -0
  22. package/dist/{aws/cdk/constructs/cloudfront-construct.d.ts → aws-cdk/cloudfront.d.cts} +1 -1
  23. package/dist/{aws/cdk/constructs/cloudfront-construct.d.cts → aws-cdk/cloudfront.d.ts} +1 -1
  24. package/dist/{aws/cdk/constructs/cloudfront-construct.js → aws-cdk/cloudfront.js} +2 -2
  25. package/dist/aws-cdk/cloudfront.js.map +1 -0
  26. package/dist/{aws/cdk/constructs/cloudwatch-construct.cjs → aws-cdk/cloudwatch.cjs} +2 -2
  27. package/dist/aws-cdk/cloudwatch.cjs.map +1 -0
  28. package/dist/{aws/cdk/constructs/cloudwatch-construct.d.ts → aws-cdk/cloudwatch.d.cts} +1 -1
  29. package/dist/{aws/cdk/constructs/cloudwatch-construct.d.cts → aws-cdk/cloudwatch.d.ts} +1 -1
  30. package/dist/{aws/cdk/constructs/cloudwatch-construct.js → aws-cdk/cloudwatch.js} +2 -2
  31. package/dist/aws-cdk/cloudwatch.js.map +1 -0
  32. package/dist/{aws/cdk/constructs/dynamo-db-construct.cjs → aws-cdk/dynamo-db.cjs} +2 -2
  33. package/dist/aws-cdk/dynamo-db.cjs.map +1 -0
  34. package/dist/{aws/cdk/constructs/dynamo-db-construct.d.ts → aws-cdk/dynamo-db.d.cts} +1 -1
  35. package/dist/{aws/cdk/constructs/dynamo-db-construct.d.cts → aws-cdk/dynamo-db.d.ts} +1 -1
  36. package/dist/{aws/cdk/constructs/dynamo-db-construct.js → aws-cdk/dynamo-db.js} +2 -2
  37. package/dist/aws-cdk/dynamo-db.js.map +1 -0
  38. package/dist/{aws/cdk/constructs/event-bridge-construct.cjs → aws-cdk/event-bridge.cjs} +2 -2
  39. package/dist/aws-cdk/event-bridge.cjs.map +1 -0
  40. package/dist/{aws/cdk/constructs/event-bridge-construct.d.ts → aws-cdk/event-bridge.d.cts} +1 -1
  41. package/dist/{aws/cdk/constructs/event-bridge-construct.d.cts → aws-cdk/event-bridge.d.ts} +1 -1
  42. package/dist/{aws/cdk/constructs/event-bridge-construct.js → aws-cdk/event-bridge.js} +2 -2
  43. package/dist/aws-cdk/event-bridge.js.map +1 -0
  44. package/dist/{aws/cdk/constructs/lambda-authorizer-v2-construct.cjs → aws-cdk/lambda-authorizer-v2.cjs} +6 -3
  45. package/dist/aws-cdk/lambda-authorizer-v2.cjs.map +1 -0
  46. package/dist/{aws/cdk/constructs/lambda-authorizer-v2-construct.d.ts → aws-cdk/lambda-authorizer-v2.d.cts} +1 -1
  47. package/dist/{aws/cdk/constructs/lambda-authorizer-v2-construct.d.cts → aws-cdk/lambda-authorizer-v2.d.ts} +1 -1
  48. package/dist/{aws/cdk/constructs/lambda-authorizer-v2-construct.js → aws-cdk/lambda-authorizer-v2.js} +6 -3
  49. package/dist/aws-cdk/lambda-authorizer-v2.js.map +1 -0
  50. package/dist/{aws/cdk/constructs/lambda-authorizer-construct.cjs → aws-cdk/lambda-authorizer.cjs} +2 -2
  51. package/dist/aws-cdk/lambda-authorizer.cjs.map +1 -0
  52. package/dist/{aws/cdk/constructs/lambda-authorizer-construct.d.ts → aws-cdk/lambda-authorizer.d.cts} +1 -1
  53. package/dist/{aws/cdk/constructs/lambda-authorizer-construct.d.cts → aws-cdk/lambda-authorizer.d.ts} +1 -1
  54. package/dist/{aws/cdk/constructs/lambda-authorizer-construct.js → aws-cdk/lambda-authorizer.js} +2 -2
  55. package/dist/aws-cdk/lambda-authorizer.js.map +1 -0
  56. package/dist/{aws/cdk/constructs/lambda-layer-construct.cjs → aws-cdk/lambda-layer.cjs} +3 -6
  57. package/dist/aws-cdk/lambda-layer.cjs.map +1 -0
  58. package/dist/{aws/cdk/constructs/lambda-layer-construct.d.ts → aws-cdk/lambda-layer.d.cts} +1 -1
  59. package/dist/{aws/cdk/constructs/lambda-layer-construct.d.cts → aws-cdk/lambda-layer.d.ts} +1 -1
  60. package/dist/{aws/cdk/constructs/lambda-layer-construct.js → aws-cdk/lambda-layer.js} +3 -6
  61. package/dist/aws-cdk/lambda-layer.js.map +1 -0
  62. package/dist/{aws/cdk/constructs/lambda-construct.cjs → aws-cdk/lambda.cjs} +2 -2
  63. package/dist/aws-cdk/lambda.cjs.map +1 -0
  64. package/dist/{aws/cdk/constructs/lambda-construct.d.ts → aws-cdk/lambda.d.cts} +1 -1
  65. package/dist/{aws/cdk/constructs/lambda-construct.d.cts → aws-cdk/lambda.d.ts} +1 -1
  66. package/dist/{aws/cdk/constructs/lambda-construct.js → aws-cdk/lambda.js} +2 -2
  67. package/dist/aws-cdk/lambda.js.map +1 -0
  68. package/dist/{aws/cdk/constructs/role-policy-construct.cjs → aws-cdk/role-policy.cjs} +2 -2
  69. package/dist/aws-cdk/role-policy.cjs.map +1 -0
  70. package/dist/{aws/cdk/constructs/role-policy-construct.d.ts → aws-cdk/role-policy.d.cts} +1 -1
  71. package/dist/{aws/cdk/constructs/role-policy-construct.d.cts → aws-cdk/role-policy.d.ts} +1 -1
  72. package/dist/{aws/cdk/constructs/role-policy-construct.js → aws-cdk/role-policy.js} +2 -2
  73. package/dist/aws-cdk/role-policy.js.map +1 -0
  74. package/dist/{aws/cdk/constructs/s3-deployment-construct.cjs → aws-cdk/s3-deployment.cjs} +20 -11
  75. package/dist/aws-cdk/s3-deployment.cjs.map +1 -0
  76. package/dist/{aws/cdk/constructs/s3-deployment-construct.d.ts → aws-cdk/s3-deployment.d.cts} +1 -1
  77. package/dist/{aws/cdk/constructs/s3-deployment-construct.d.cts → aws-cdk/s3-deployment.d.ts} +1 -1
  78. package/dist/{aws/cdk/constructs/s3-deployment-construct.js → aws-cdk/s3-deployment.js} +20 -11
  79. package/dist/aws-cdk/s3-deployment.js.map +1 -0
  80. package/dist/{aws/cdk/constructs/s3-construct.cjs → aws-cdk/s3.cjs} +2 -2
  81. package/dist/aws-cdk/s3.cjs.map +1 -0
  82. package/dist/{aws/cdk/constructs/s3-construct.d.ts → aws-cdk/s3.d.cts} +1 -1
  83. package/dist/{aws/cdk/constructs/s3-construct.d.cts → aws-cdk/s3.d.ts} +1 -1
  84. package/dist/{aws/cdk/constructs/s3-construct.js → aws-cdk/s3.js} +2 -2
  85. package/dist/aws-cdk/s3.js.map +1 -0
  86. package/dist/{aws/cdk/constructs/sns-construct.cjs → aws-cdk/sns.cjs} +2 -2
  87. package/dist/aws-cdk/sns.cjs.map +1 -0
  88. package/dist/{aws/cdk/constructs/sns-construct.d.ts → aws-cdk/sns.d.cts} +1 -1
  89. package/dist/{aws/cdk/constructs/sns-construct.d.cts → aws-cdk/sns.d.ts} +1 -1
  90. package/dist/{aws/cdk/constructs/sns-construct.js → aws-cdk/sns.js} +2 -2
  91. package/dist/aws-cdk/sns.js.map +1 -0
  92. package/dist/{aws/cdk/constructs/sqs-construct.cjs → aws-cdk/sqs.cjs} +2 -2
  93. package/dist/aws-cdk/sqs.cjs.map +1 -0
  94. package/dist/{aws/cdk/constructs/sqs-construct.d.ts → aws-cdk/sqs.d.cts} +1 -1
  95. package/dist/{aws/cdk/constructs/sqs-construct.d.cts → aws-cdk/sqs.d.ts} +1 -1
  96. package/dist/{aws/cdk/constructs/sqs-construct.js → aws-cdk/sqs.js} +2 -2
  97. package/dist/aws-cdk/sqs.js.map +1 -0
  98. package/dist/{aws/cdk/constructs/vpc-construct.cjs → aws-cdk/vpc.cjs} +2 -2
  99. package/dist/aws-cdk/vpc.cjs.map +1 -0
  100. package/dist/{aws/cdk/constructs/vpc-construct.d.ts → aws-cdk/vpc.d.cts} +1 -1
  101. package/dist/{aws/cdk/constructs/vpc-construct.d.cts → aws-cdk/vpc.d.ts} +1 -1
  102. package/dist/{aws/cdk/constructs/vpc-construct.js → aws-cdk/vpc.js} +2 -2
  103. package/dist/aws-cdk/vpc.js.map +1 -0
  104. package/dist/{aws/index.cjs → aws-cdk.cjs} +45 -21
  105. package/dist/aws-cdk.cjs.map +1 -0
  106. package/dist/aws-cdk.d.cts +34 -0
  107. package/dist/aws-cdk.d.ts +34 -0
  108. package/dist/{aws/cdk/constructs/index.js → aws-cdk.js} +45 -21
  109. package/dist/aws-cdk.js.map +1 -0
  110. package/dist/aws-types.cjs +4 -0
  111. package/dist/aws-types.cjs.map +1 -0
  112. package/dist/aws-types.d.cts +42 -0
  113. package/dist/aws-types.d.ts +42 -0
  114. package/dist/aws-types.js +3 -0
  115. package/dist/aws-types.js.map +1 -0
  116. package/dist/{aws/cdk/constructs/index.cjs → aws.cjs} +45 -21
  117. package/dist/aws.cjs.map +1 -0
  118. package/dist/aws.d.cts +34 -0
  119. package/dist/aws.d.ts +34 -0
  120. package/dist/{aws/index.js → aws.js} +45 -21
  121. package/dist/aws.js.map +1 -0
  122. package/dist/index.cjs +43 -19
  123. package/dist/index.cjs.map +1 -1
  124. package/dist/index.d.cts +18 -18
  125. package/dist/index.d.ts +18 -18
  126. package/dist/index.js +43 -19
  127. package/dist/index.js.map +1 -1
  128. package/package.json +180 -23
  129. package/dist/aws/cdk/constructs/api-gateway-construct.cjs.map +0 -1
  130. package/dist/aws/cdk/constructs/api-gateway-construct.js.map +0 -1
  131. package/dist/aws/cdk/constructs/api-gateway-v2-construct.cjs.map +0 -1
  132. package/dist/aws/cdk/constructs/api-gateway-v2-construct.js.map +0 -1
  133. package/dist/aws/cdk/constructs/api-gateway-websocket-construct.cjs.map +0 -1
  134. package/dist/aws/cdk/constructs/api-gateway-websocket-construct.js.map +0 -1
  135. package/dist/aws/cdk/constructs/cloudfront-construct.cjs.map +0 -1
  136. package/dist/aws/cdk/constructs/cloudfront-construct.js.map +0 -1
  137. package/dist/aws/cdk/constructs/cloudwatch-construct.cjs.map +0 -1
  138. package/dist/aws/cdk/constructs/cloudwatch-construct.js.map +0 -1
  139. package/dist/aws/cdk/constructs/dynamo-db-construct.cjs.map +0 -1
  140. package/dist/aws/cdk/constructs/dynamo-db-construct.js.map +0 -1
  141. package/dist/aws/cdk/constructs/event-bridge-construct.cjs.map +0 -1
  142. package/dist/aws/cdk/constructs/event-bridge-construct.js.map +0 -1
  143. package/dist/aws/cdk/constructs/index.cjs.map +0 -1
  144. package/dist/aws/cdk/constructs/index.d.cts +0 -34
  145. package/dist/aws/cdk/constructs/index.d.ts +0 -34
  146. package/dist/aws/cdk/constructs/index.js.map +0 -1
  147. package/dist/aws/cdk/constructs/lambda-authorizer-construct.cjs.map +0 -1
  148. package/dist/aws/cdk/constructs/lambda-authorizer-construct.js.map +0 -1
  149. package/dist/aws/cdk/constructs/lambda-authorizer-v2-construct.cjs.map +0 -1
  150. package/dist/aws/cdk/constructs/lambda-authorizer-v2-construct.js.map +0 -1
  151. package/dist/aws/cdk/constructs/lambda-construct.cjs.map +0 -1
  152. package/dist/aws/cdk/constructs/lambda-construct.js.map +0 -1
  153. package/dist/aws/cdk/constructs/lambda-layer-construct.cjs.map +0 -1
  154. package/dist/aws/cdk/constructs/lambda-layer-construct.js.map +0 -1
  155. package/dist/aws/cdk/constructs/role-policy-construct.cjs.map +0 -1
  156. package/dist/aws/cdk/constructs/role-policy-construct.js.map +0 -1
  157. package/dist/aws/cdk/constructs/s3-construct.cjs.map +0 -1
  158. package/dist/aws/cdk/constructs/s3-construct.js.map +0 -1
  159. package/dist/aws/cdk/constructs/s3-deployment-construct.cjs.map +0 -1
  160. package/dist/aws/cdk/constructs/s3-deployment-construct.js.map +0 -1
  161. package/dist/aws/cdk/constructs/sns-construct.cjs.map +0 -1
  162. package/dist/aws/cdk/constructs/sns-construct.js.map +0 -1
  163. package/dist/aws/cdk/constructs/sqs-construct.cjs.map +0 -1
  164. package/dist/aws/cdk/constructs/sqs-construct.js.map +0 -1
  165. package/dist/aws/cdk/constructs/vpc-construct.cjs.map +0 -1
  166. package/dist/aws/cdk/constructs/vpc-construct.js.map +0 -1
  167. package/dist/aws/cdk/index.cjs +0 -881
  168. package/dist/aws/cdk/index.cjs.map +0 -1
  169. package/dist/aws/cdk/index.d.cts +0 -34
  170. package/dist/aws/cdk/index.d.ts +0 -34
  171. package/dist/aws/cdk/index.js +0 -863
  172. package/dist/aws/cdk/index.js.map +0 -1
  173. package/dist/aws/cli/index.cjs +0 -4
  174. package/dist/aws/cli/index.cjs.map +0 -1
  175. package/dist/aws/cli/index.d.cts +0 -2
  176. package/dist/aws/cli/index.d.ts +0 -2
  177. package/dist/aws/cli/index.js +0 -3
  178. package/dist/aws/cli/index.js.map +0 -1
  179. package/dist/aws/index.cjs.map +0 -1
  180. package/dist/aws/index.d.cts +0 -34
  181. package/dist/aws/index.d.ts +0 -34
  182. package/dist/aws/index.js.map +0 -1
  183. package/dist/aws/types/index.cjs +0 -4
  184. package/dist/aws/types/index.cjs.map +0 -1
  185. package/dist/aws/types/index.d.cts +0 -18
  186. package/dist/aws/types/index.d.ts +0 -18
  187. package/dist/aws/types/index.js +0 -3
  188. package/dist/aws/types/index.js.map +0 -1
  189. package/dist/lint/index.cjs +0 -4
  190. package/dist/lint/index.cjs.map +0 -1
  191. package/dist/lint/index.d.cts +0 -2
  192. package/dist/lint/index.d.ts +0 -2
  193. package/dist/lint/index.js +0 -3
  194. package/dist/lint/index.js.map +0 -1
  195. package/dist/prettier/index.cjs +0 -4
  196. package/dist/prettier/index.cjs.map +0 -1
  197. package/dist/prettier/index.d.cts +0 -2
  198. package/dist/prettier/index.d.ts +0 -2
  199. package/dist/prettier/index.js +0 -3
  200. package/dist/prettier/index.js.map +0 -1
  201. package/dist/utility/index.cjs +0 -4
  202. package/dist/utility/index.cjs.map +0 -1
  203. package/dist/utility/index.d.cts +0 -2
  204. package/dist/utility/index.d.ts +0 -2
  205. package/dist/utility/index.js +0 -3
  206. package/dist/utility/index.js.map +0 -1
@@ -112,10 +112,14 @@ var BaseS3DeploymentConstruct = class extends constructs.Construct {
112
112
  constructor(scope, id, props) {
113
113
  super(scope, id);
114
114
  if (!props.options?.cloudfrontOptions?.defaultBehavior?.origin && !props?.withS3Bucket && props.withCloudfront) {
115
- throw new toolkit.CustomException("Cloudfront distribution S3_Bucket origins must be defined!");
115
+ throw new toolkit.CustomException(
116
+ "Cloudfront distribution S3_Bucket origins must be defined!"
117
+ );
116
118
  }
117
119
  if (!props.options?.bucketDeploymentOptions?.destinationBucket && !props?.withS3Bucket) {
118
- throw new toolkit.CustomException("Deployment S3_Bucket destination must be defined!");
120
+ throw new toolkit.CustomException(
121
+ "Deployment S3_Bucket destination must be defined!"
122
+ );
119
123
  }
120
124
  if (props?.withS3Bucket) {
121
125
  this.bucket = new BaseS3Construct(this, "bucket", {
@@ -133,13 +137,18 @@ var BaseS3DeploymentConstruct = class extends constructs.Construct {
133
137
  /**
134
138
  * Map additional behaviors and ensure origin is assigned
135
139
  */
136
- additionalBehaviors: Object.entries(props.options?.cloudfrontOptions?.additionalBehaviors || {}).reduce((behavior, [pattern, behaviorOptions]) => {
137
- behavior[pattern] = {
138
- ...behaviorOptions,
139
- origin: behaviorOptions.origin || s3Origin
140
- };
141
- return behavior;
142
- }, {}),
140
+ additionalBehaviors: Object.entries(
141
+ props.options?.cloudfrontOptions?.additionalBehaviors || {}
142
+ ).reduce(
143
+ (behavior, [pattern, behaviorOptions]) => {
144
+ behavior[pattern] = {
145
+ ...behaviorOptions,
146
+ origin: behaviorOptions.origin || s3Origin
147
+ };
148
+ return behavior;
149
+ },
150
+ {}
151
+ ),
143
152
  /**
144
153
  * Default behavior configuration
145
154
  */
@@ -164,5 +173,5 @@ var BaseS3DeploymentConstruct = class extends constructs.Construct {
164
173
  };
165
174
 
166
175
  exports.BaseS3DeploymentConstruct = BaseS3DeploymentConstruct;
167
- //# sourceMappingURL=s3-deployment-construct.cjs.map
168
- //# sourceMappingURL=s3-deployment-construct.cjs.map
176
+ //# sourceMappingURL=s3-deployment.cjs.map
177
+ //# sourceMappingURL=s3-deployment.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/aws/cdk/constructs/s3-construct.ts","../../src/aws/cdk/constructs/cloudfront-construct.ts","../../src/aws/cdk/constructs/s3-deployment-construct.ts"],"names":["Construct","Bucket","RemovalPolicy","CfnOutput","Distribution","ViewerProtocolPolicy","Duration","CustomException","S3BucketOrigin","BucketDeployment"],"mappings":"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","file":"s3-deployment.cjs","sourcesContent":["import { Construct } from 'constructs';\nimport { CfnOutput, RemovalPolicy } from 'aws-cdk-lib';\nimport { Bucket, BucketProps } from 'aws-cdk-lib/aws-s3';\n\nimport { IBaseCdkConstructProps } from '../../types';\n\n/**\n * Props for BaseS3Construct\n *\n * Provides configuration for creating an S3 bucket\n * with optional overrides for bucket properties.\n */\ninterface IS3DeploymentConstructProps extends Omit<\n\tIBaseCdkConstructProps<{\n\t\t/** Configuration options for the S3 bucket */\n\t\treadonly bucketOptions?: BucketProps;\n\t}>,\n\t'appName' | 'stackName'\n> {}\n\n/**\n * CDK construct for S3 bucket\n *\n * Responsibilities:\n * - Creates an S3 bucket with configurable options\n * - Applies a default removal policy if not provided\n * - Exposes the bucket ARN as a CloudFormation output\n */\nexport class BaseS3Construct extends Construct {\n\t/** The created S3 bucket instance */\n\treadonly bucket: Bucket;\n\n\t/**\n\t * @param scope Parent construct\n\t * @param id Unique construct identifier\n\t * @param props Configuration for S3 bucket\n\t */\n\tconstructor(\n\t\tscope: Construct,\n\t\tid: string,\n\t\tprops: IS3DeploymentConstructProps,\n\t) {\n\t\tsuper(scope, id);\n\n\t\tthis.bucket = new Bucket(this, id, {\n\t\t\t...props.options?.bucketOptions,\n\n\t\t\t/**\n\t\t\t * Removal policy applied to the bucket\n\t\t\t * Defaults to DESTROY if not explicitly defined\n\t\t\t */\n\t\t\tremovalPolicy:\n\t\t\t\tprops.options?.bucketOptions?.removalPolicy || RemovalPolicy.DESTROY,\n\t\t});\n\n\t\t/**\n\t\t * CloudFormation output exposing the S3 bucket ARN\n\t\t */\n\t\tnew CfnOutput(this, 'S3BucketArn', {\n\t\t\tvalue: this.bucket.bucketArn,\n\t\t});\n\t}\n}\n","import { Construct } from 'constructs';\nimport { Duration } from 'aws-cdk-lib';\nimport {\n\tDistribution,\n\tDistributionProps,\n\tViewerProtocolPolicy,\n} from 'aws-cdk-lib/aws-cloudfront';\n\nimport { IBaseCdkConstructProps } from '../../types';\n\n/**\n * Props for BaseCloudfrontConstruct\n *\n * Provides configuration for creating a CloudFront distribution\n * with optional overrides for default behaviour and error handling.\n */\ninterface ICloudfrontConstructProps extends Omit<\n\tIBaseCdkConstructProps<{\n\t\t/** Partial configuration for the CloudFront distribution */\n\t\treadonly cloudfrontOptions: Partial<DistributionProps>;\n\t}>,\n\t'appName' | 'stage' | 'stackName'\n> {}\n\n/**\n * CDK construct for CloudFront distribution\n *\n * Responsibilities:\n * - Creates a CloudFront distribution with configurable options\n * - Enforces HTTPS redirection by default\n * - Adds fallback error responses for SPA routing (400, 403, 404 → index.html)\n */\nexport class BaseCloudfrontConstruct extends Construct {\n\t/** The created CloudFront distribution instance */\n\treadonly distribution: Distribution;\n\n\t/**\n\t * @param scope Parent construct\n\t * @param id Unique construct identifier\n\t * @param props Configuration for CloudFront distribution\n\t */\n\tconstructor(scope: Construct, id: string, props: ICloudfrontConstructProps) {\n\t\tsuper(scope, id);\n\n\t\tthis.distribution = new Distribution(this, id, {\n\t\t\t...props.options?.cloudfrontOptions,\n\n\t\t\t/**\n\t\t\t * Default behaviour configuration\n\t\t\t * Enforces HTTPS if not explicitly defined\n\t\t\t */\n\t\t\tdefaultBehavior: {\n\t\t\t\t...props.options?.cloudfrontOptions?.defaultBehavior,\n\t\t\t\tviewerProtocolPolicy:\n\t\t\t\t\tprops.options?.cloudfrontOptions?.defaultBehavior\n\t\t\t\t\t\t?.viewerProtocolPolicy || ViewerProtocolPolicy.REDIRECT_TO_HTTPS,\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Error response configuration\n\t\t\t *\n\t\t\t * Adds SPA-friendly fallbacks:\n\t\t\t * - 400, 403, 404 responses are redirected to index.html\n\t\t\t */\n\t\t\terrorResponses: [\n\t\t\t\t...(props.options?.cloudfrontOptions?.errorResponses || []),\n\n\t\t\t\t/** Handle 400 errors */\n\t\t\t\t{\n\t\t\t\t\thttpStatus: 400,\n\t\t\t\t\tresponseHttpStatus: 200,\n\t\t\t\t\tresponsePagePath: '/index.html',\n\t\t\t\t\tttl: Duration.days(1),\n\t\t\t\t},\n\n\t\t\t\t/** Handle 403 errors */\n\t\t\t\t{\n\t\t\t\t\thttpStatus: 403,\n\t\t\t\t\tresponseHttpStatus: 200,\n\t\t\t\t\tresponsePagePath: '/index.html',\n\t\t\t\t\tttl: Duration.days(1),\n\t\t\t\t},\n\n\t\t\t\t/** Handle 404 errors */\n\t\t\t\t{\n\t\t\t\t\thttpStatus: 404,\n\t\t\t\t\tresponseHttpStatus: 200,\n\t\t\t\t\tresponsePagePath: '/index.html',\n\t\t\t\t\tttl: Duration.days(1),\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t}\n}\n","import { Construct } from 'constructs';\nimport { Bucket, BucketProps } from 'aws-cdk-lib/aws-s3';\nimport { S3BucketOrigin } from 'aws-cdk-lib/aws-cloudfront-origins';\nimport {\n\tBucketDeployment,\n\tBucketDeploymentProps,\n} from 'aws-cdk-lib/aws-s3-deployment';\nimport {\n\tBehaviorOptions,\n\tDistribution,\n\tDistributionProps,\n} from 'aws-cdk-lib/aws-cloudfront';\n\nimport { ObjectType, CustomException } from '@incloodsolutions/toolkit';\n\nimport { BaseS3Construct } from './s3-construct';\nimport { BaseCloudfrontConstruct } from './cloudfront-construct';\n\nimport { IBaseCdkConstructProps } from '../../types';\n\n/**\n * Props for BaseS3DeploymentConstruct\n *\n * Provides configuration for:\n * - Optional S3 bucket creation\n * - Optional CloudFront distribution\n * - S3 bucket deployment\n */\ninterface IS3DeploymentConstructProps extends Omit<\n\tIBaseCdkConstructProps<{\n\t\t/** Configuration options for S3 bucket */\n\t\treadonly bucketOptions?: BucketProps;\n\n\t\t/**\n\t\t * Configuration options for CloudFront distribution\n\t\t *\n\t\t * Note:\n\t\t * - `additionalBehaviors` supports dynamic route mappings\n\t\t * - Origins are automatically resolved if not provided\n\t\t */\n\t\treadonly cloudfrontOptions?: Partial<\n\t\t\tOmit<DistributionProps, 'additionalBehaviors'>\n\t\t> & {\n\t\t\treadonly additionalBehaviors?: ObjectType<\n\t\t\t\tPartial<BehaviorOptions>,\n\t\t\t\tstring\n\t\t\t>;\n\t\t};\n\n\t\t/**\n\t\t * Configuration for S3 bucket deployment\n\t\t *\n\t\t * Note:\n\t\t * - `sources` is required\n\t\t * - `destinationBucket` can be auto-resolved\n\t\t */\n\t\treadonly bucketDeploymentOptions: Omit<\n\t\t\tPartial<BucketDeploymentProps>,\n\t\t\t'sources'\n\t\t> &\n\t\t\tPick<BucketDeploymentProps, 'sources'>;\n\t}>,\n\t'appName' | 'stackName'\n> {\n\t/** Whether to create a new S3 bucket */\n\treadonly withS3Bucket?: boolean;\n\n\t/** Whether to create a CloudFront distribution */\n\treadonly withCloudfront?: boolean;\n}\n\n/**\n * CDK construct for S3 deployment with optional CloudFront integration\n *\n * Responsibilities:\n * - Optionally creates an S3 bucket\n * - Optionally creates a CloudFront distribution with S3 origin\n * - Deploys assets to S3 bucket\n * - Configures CloudFront invalidation paths\n *\n * Behaviour:\n * - Automatically links S3 bucket as CloudFront origin when enabled\n * - Resolves destination bucket and distribution if not explicitly provided\n * - Throws when required dependencies are missing\n */\nexport class BaseS3DeploymentConstruct extends Construct {\n\t/** The created or provided S3 bucket */\n\treadonly bucket: Bucket;\n\n\t/** The created CloudFront distribution */\n\treadonly distribution: Distribution;\n\n\t/** S3 bucket deployment instance */\n\treadonly bucketDeployment: BucketDeployment;\n\n\t/**\n\t * @param scope Parent construct\n\t * @param id Unique construct identifier\n\t * @param props Configuration for bucket, distribution, and deployment\n\t */\n\tconstructor(\n\t\tscope: Construct,\n\t\tid: string,\n\t\tprops: IS3DeploymentConstructProps,\n\t) {\n\t\tsuper(scope, id);\n\n\t\t/**\n\t\t * Validate CloudFront origin requirements\n\t\t */\n\t\tif (\n\t\t\t!props.options?.cloudfrontOptions?.defaultBehavior?.origin &&\n\t\t\t!props?.withS3Bucket &&\n\t\t\tprops.withCloudfront\n\t\t) {\n\t\t\tthrow new CustomException(\n\t\t\t\t'Cloudfront distribution S3_Bucket origins must be defined!',\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Validate deployment destination requirements\n\t\t */\n\t\tif (\n\t\t\t!props.options?.bucketDeploymentOptions?.destinationBucket &&\n\t\t\t!props?.withS3Bucket\n\t\t) {\n\t\t\tthrow new CustomException(\n\t\t\t\t'Deployment S3_Bucket destination must be defined!',\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Create S3 bucket if enabled\n\t\t */\n\t\tif (props?.withS3Bucket) {\n\t\t\tthis.bucket = new BaseS3Construct(this, 'bucket', {\n\t\t\t\tenableDebug: props.enableDebug,\n\t\t\t\toptions: { bucketOptions: props.options?.bucketOptions },\n\t\t\t}).bucket;\n\t\t}\n\n\t\t/**\n\t\t * Create CloudFront distribution if enabled\n\t\t */\n\t\tif (props?.withCloudfront) {\n\t\t\t/**\n\t\t\t * Resolve S3 origin for distribution\n\t\t\t */\n\t\t\tconst s3Origin =\n\t\t\t\tprops.options?.cloudfrontOptions?.defaultBehavior?.origin ||\n\t\t\t\tS3BucketOrigin.withOriginAccessControl(this.bucket);\n\n\t\t\tthis.distribution = new BaseCloudfrontConstruct(this, 'distribution', {\n\t\t\t\tenableDebug: props.enableDebug,\n\t\t\t\toptions: {\n\t\t\t\t\tcloudfrontOptions: {\n\t\t\t\t\t\t...props.options?.cloudfrontOptions,\n\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * Map additional behaviors and ensure origin is assigned\n\t\t\t\t\t\t */\n\t\t\t\t\t\tadditionalBehaviors: Object.entries(\n\t\t\t\t\t\t\tprops.options?.cloudfrontOptions?.additionalBehaviors || {},\n\t\t\t\t\t\t).reduce(\n\t\t\t\t\t\t\t(behavior, [pattern, behaviorOptions]) => {\n\t\t\t\t\t\t\t\tbehavior[pattern] = {\n\t\t\t\t\t\t\t\t\t...behaviorOptions,\n\t\t\t\t\t\t\t\t\torigin: behaviorOptions.origin || s3Origin,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\treturn behavior;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{} as typeof props.options.cloudfrontOptions.additionalBehaviors,\n\t\t\t\t\t\t) as ObjectType<BehaviorOptions>,\n\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * Default behavior configuration\n\t\t\t\t\t\t */\n\t\t\t\t\t\tdefaultBehavior: {\n\t\t\t\t\t\t\t...props.options?.cloudfrontOptions?.defaultBehavior,\n\t\t\t\t\t\t\torigin: s3Origin,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}).distribution;\n\t\t}\n\n\t\t/**\n\t\t * Deploy assets to S3 bucket\n\t\t *\n\t\t * Automatically resolves:\n\t\t * - Destination bucket\n\t\t * - CloudFront distribution\n\t\t * - Invalidation paths\n\t\t */\n\t\tthis.bucketDeployment = new BucketDeployment(this, 'deployment', {\n\t\t\t...props.options?.bucketDeploymentOptions,\n\n\t\t\t/** Target distribution for cache invalidation */\n\t\t\tdistribution:\n\t\t\t\tprops.options?.bucketDeploymentOptions?.distribution ||\n\t\t\t\tthis.distribution,\n\n\t\t\t/** Paths to invalidate after deployment */\n\t\t\tdistributionPaths: props.options?.bucketDeploymentOptions\n\t\t\t\t?.distributionPaths || ['/*'],\n\n\t\t\t/** Destination S3 bucket */\n\t\t\tdestinationBucket:\n\t\t\t\tprops.options?.bucketDeploymentOptions?.destinationBucket ||\n\t\t\t\tthis.bucket,\n\t\t} as BucketDeploymentProps);\n\t}\n}\n"]}
@@ -3,7 +3,7 @@ import { Bucket, BucketProps } from 'aws-cdk-lib/aws-s3';
3
3
  import { BucketDeployment, BucketDeploymentProps } from 'aws-cdk-lib/aws-s3-deployment';
4
4
  import { Distribution, DistributionProps, BehaviorOptions } from 'aws-cdk-lib/aws-cloudfront';
5
5
  import { ObjectType } from '@incloodsolutions/toolkit';
6
- import { IBaseCdkConstructProps } from '../../types/index.js';
6
+ import { IBaseCdkConstructProps } from '../aws-types.cjs';
7
7
 
8
8
  /**
9
9
  * Props for BaseS3DeploymentConstruct
@@ -3,7 +3,7 @@ import { Bucket, BucketProps } from 'aws-cdk-lib/aws-s3';
3
3
  import { BucketDeployment, BucketDeploymentProps } from 'aws-cdk-lib/aws-s3-deployment';
4
4
  import { Distribution, DistributionProps, BehaviorOptions } from 'aws-cdk-lib/aws-cloudfront';
5
5
  import { ObjectType } from '@incloodsolutions/toolkit';
6
- import { IBaseCdkConstructProps } from '../../types/index.cjs';
6
+ import { IBaseCdkConstructProps } from '../aws-types.js';
7
7
 
8
8
  /**
9
9
  * Props for BaseS3DeploymentConstruct
@@ -110,10 +110,14 @@ var BaseS3DeploymentConstruct = class extends Construct {
110
110
  constructor(scope, id, props) {
111
111
  super(scope, id);
112
112
  if (!props.options?.cloudfrontOptions?.defaultBehavior?.origin && !props?.withS3Bucket && props.withCloudfront) {
113
- throw new CustomException("Cloudfront distribution S3_Bucket origins must be defined!");
113
+ throw new CustomException(
114
+ "Cloudfront distribution S3_Bucket origins must be defined!"
115
+ );
114
116
  }
115
117
  if (!props.options?.bucketDeploymentOptions?.destinationBucket && !props?.withS3Bucket) {
116
- throw new CustomException("Deployment S3_Bucket destination must be defined!");
118
+ throw new CustomException(
119
+ "Deployment S3_Bucket destination must be defined!"
120
+ );
117
121
  }
118
122
  if (props?.withS3Bucket) {
119
123
  this.bucket = new BaseS3Construct(this, "bucket", {
@@ -131,13 +135,18 @@ var BaseS3DeploymentConstruct = class extends Construct {
131
135
  /**
132
136
  * Map additional behaviors and ensure origin is assigned
133
137
  */
134
- additionalBehaviors: Object.entries(props.options?.cloudfrontOptions?.additionalBehaviors || {}).reduce((behavior, [pattern, behaviorOptions]) => {
135
- behavior[pattern] = {
136
- ...behaviorOptions,
137
- origin: behaviorOptions.origin || s3Origin
138
- };
139
- return behavior;
140
- }, {}),
138
+ additionalBehaviors: Object.entries(
139
+ props.options?.cloudfrontOptions?.additionalBehaviors || {}
140
+ ).reduce(
141
+ (behavior, [pattern, behaviorOptions]) => {
142
+ behavior[pattern] = {
143
+ ...behaviorOptions,
144
+ origin: behaviorOptions.origin || s3Origin
145
+ };
146
+ return behavior;
147
+ },
148
+ {}
149
+ ),
141
150
  /**
142
151
  * Default behavior configuration
143
152
  */
@@ -162,5 +171,5 @@ var BaseS3DeploymentConstruct = class extends Construct {
162
171
  };
163
172
 
164
173
  export { BaseS3DeploymentConstruct };
165
- //# sourceMappingURL=s3-deployment-construct.js.map
166
- //# sourceMappingURL=s3-deployment-construct.js.map
174
+ //# sourceMappingURL=s3-deployment.js.map
175
+ //# sourceMappingURL=s3-deployment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/aws/cdk/constructs/s3-construct.ts","../../src/aws/cdk/constructs/cloudfront-construct.ts","../../src/aws/cdk/constructs/s3-deployment-construct.ts"],"names":["Construct"],"mappings":"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","file":"s3-deployment.js","sourcesContent":["import { Construct } from 'constructs';\nimport { CfnOutput, RemovalPolicy } from 'aws-cdk-lib';\nimport { Bucket, BucketProps } from 'aws-cdk-lib/aws-s3';\n\nimport { IBaseCdkConstructProps } from '../../types';\n\n/**\n * Props for BaseS3Construct\n *\n * Provides configuration for creating an S3 bucket\n * with optional overrides for bucket properties.\n */\ninterface IS3DeploymentConstructProps extends Omit<\n\tIBaseCdkConstructProps<{\n\t\t/** Configuration options for the S3 bucket */\n\t\treadonly bucketOptions?: BucketProps;\n\t}>,\n\t'appName' | 'stackName'\n> {}\n\n/**\n * CDK construct for S3 bucket\n *\n * Responsibilities:\n * - Creates an S3 bucket with configurable options\n * - Applies a default removal policy if not provided\n * - Exposes the bucket ARN as a CloudFormation output\n */\nexport class BaseS3Construct extends Construct {\n\t/** The created S3 bucket instance */\n\treadonly bucket: Bucket;\n\n\t/**\n\t * @param scope Parent construct\n\t * @param id Unique construct identifier\n\t * @param props Configuration for S3 bucket\n\t */\n\tconstructor(\n\t\tscope: Construct,\n\t\tid: string,\n\t\tprops: IS3DeploymentConstructProps,\n\t) {\n\t\tsuper(scope, id);\n\n\t\tthis.bucket = new Bucket(this, id, {\n\t\t\t...props.options?.bucketOptions,\n\n\t\t\t/**\n\t\t\t * Removal policy applied to the bucket\n\t\t\t * Defaults to DESTROY if not explicitly defined\n\t\t\t */\n\t\t\tremovalPolicy:\n\t\t\t\tprops.options?.bucketOptions?.removalPolicy || RemovalPolicy.DESTROY,\n\t\t});\n\n\t\t/**\n\t\t * CloudFormation output exposing the S3 bucket ARN\n\t\t */\n\t\tnew CfnOutput(this, 'S3BucketArn', {\n\t\t\tvalue: this.bucket.bucketArn,\n\t\t});\n\t}\n}\n","import { Construct } from 'constructs';\nimport { Duration } from 'aws-cdk-lib';\nimport {\n\tDistribution,\n\tDistributionProps,\n\tViewerProtocolPolicy,\n} from 'aws-cdk-lib/aws-cloudfront';\n\nimport { IBaseCdkConstructProps } from '../../types';\n\n/**\n * Props for BaseCloudfrontConstruct\n *\n * Provides configuration for creating a CloudFront distribution\n * with optional overrides for default behaviour and error handling.\n */\ninterface ICloudfrontConstructProps extends Omit<\n\tIBaseCdkConstructProps<{\n\t\t/** Partial configuration for the CloudFront distribution */\n\t\treadonly cloudfrontOptions: Partial<DistributionProps>;\n\t}>,\n\t'appName' | 'stage' | 'stackName'\n> {}\n\n/**\n * CDK construct for CloudFront distribution\n *\n * Responsibilities:\n * - Creates a CloudFront distribution with configurable options\n * - Enforces HTTPS redirection by default\n * - Adds fallback error responses for SPA routing (400, 403, 404 → index.html)\n */\nexport class BaseCloudfrontConstruct extends Construct {\n\t/** The created CloudFront distribution instance */\n\treadonly distribution: Distribution;\n\n\t/**\n\t * @param scope Parent construct\n\t * @param id Unique construct identifier\n\t * @param props Configuration for CloudFront distribution\n\t */\n\tconstructor(scope: Construct, id: string, props: ICloudfrontConstructProps) {\n\t\tsuper(scope, id);\n\n\t\tthis.distribution = new Distribution(this, id, {\n\t\t\t...props.options?.cloudfrontOptions,\n\n\t\t\t/**\n\t\t\t * Default behaviour configuration\n\t\t\t * Enforces HTTPS if not explicitly defined\n\t\t\t */\n\t\t\tdefaultBehavior: {\n\t\t\t\t...props.options?.cloudfrontOptions?.defaultBehavior,\n\t\t\t\tviewerProtocolPolicy:\n\t\t\t\t\tprops.options?.cloudfrontOptions?.defaultBehavior\n\t\t\t\t\t\t?.viewerProtocolPolicy || ViewerProtocolPolicy.REDIRECT_TO_HTTPS,\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Error response configuration\n\t\t\t *\n\t\t\t * Adds SPA-friendly fallbacks:\n\t\t\t * - 400, 403, 404 responses are redirected to index.html\n\t\t\t */\n\t\t\terrorResponses: [\n\t\t\t\t...(props.options?.cloudfrontOptions?.errorResponses || []),\n\n\t\t\t\t/** Handle 400 errors */\n\t\t\t\t{\n\t\t\t\t\thttpStatus: 400,\n\t\t\t\t\tresponseHttpStatus: 200,\n\t\t\t\t\tresponsePagePath: '/index.html',\n\t\t\t\t\tttl: Duration.days(1),\n\t\t\t\t},\n\n\t\t\t\t/** Handle 403 errors */\n\t\t\t\t{\n\t\t\t\t\thttpStatus: 403,\n\t\t\t\t\tresponseHttpStatus: 200,\n\t\t\t\t\tresponsePagePath: '/index.html',\n\t\t\t\t\tttl: Duration.days(1),\n\t\t\t\t},\n\n\t\t\t\t/** Handle 404 errors */\n\t\t\t\t{\n\t\t\t\t\thttpStatus: 404,\n\t\t\t\t\tresponseHttpStatus: 200,\n\t\t\t\t\tresponsePagePath: '/index.html',\n\t\t\t\t\tttl: Duration.days(1),\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t}\n}\n","import { Construct } from 'constructs';\nimport { Bucket, BucketProps } from 'aws-cdk-lib/aws-s3';\nimport { S3BucketOrigin } from 'aws-cdk-lib/aws-cloudfront-origins';\nimport {\n\tBucketDeployment,\n\tBucketDeploymentProps,\n} from 'aws-cdk-lib/aws-s3-deployment';\nimport {\n\tBehaviorOptions,\n\tDistribution,\n\tDistributionProps,\n} from 'aws-cdk-lib/aws-cloudfront';\n\nimport { ObjectType, CustomException } from '@incloodsolutions/toolkit';\n\nimport { BaseS3Construct } from './s3-construct';\nimport { BaseCloudfrontConstruct } from './cloudfront-construct';\n\nimport { IBaseCdkConstructProps } from '../../types';\n\n/**\n * Props for BaseS3DeploymentConstruct\n *\n * Provides configuration for:\n * - Optional S3 bucket creation\n * - Optional CloudFront distribution\n * - S3 bucket deployment\n */\ninterface IS3DeploymentConstructProps extends Omit<\n\tIBaseCdkConstructProps<{\n\t\t/** Configuration options for S3 bucket */\n\t\treadonly bucketOptions?: BucketProps;\n\n\t\t/**\n\t\t * Configuration options for CloudFront distribution\n\t\t *\n\t\t * Note:\n\t\t * - `additionalBehaviors` supports dynamic route mappings\n\t\t * - Origins are automatically resolved if not provided\n\t\t */\n\t\treadonly cloudfrontOptions?: Partial<\n\t\t\tOmit<DistributionProps, 'additionalBehaviors'>\n\t\t> & {\n\t\t\treadonly additionalBehaviors?: ObjectType<\n\t\t\t\tPartial<BehaviorOptions>,\n\t\t\t\tstring\n\t\t\t>;\n\t\t};\n\n\t\t/**\n\t\t * Configuration for S3 bucket deployment\n\t\t *\n\t\t * Note:\n\t\t * - `sources` is required\n\t\t * - `destinationBucket` can be auto-resolved\n\t\t */\n\t\treadonly bucketDeploymentOptions: Omit<\n\t\t\tPartial<BucketDeploymentProps>,\n\t\t\t'sources'\n\t\t> &\n\t\t\tPick<BucketDeploymentProps, 'sources'>;\n\t}>,\n\t'appName' | 'stackName'\n> {\n\t/** Whether to create a new S3 bucket */\n\treadonly withS3Bucket?: boolean;\n\n\t/** Whether to create a CloudFront distribution */\n\treadonly withCloudfront?: boolean;\n}\n\n/**\n * CDK construct for S3 deployment with optional CloudFront integration\n *\n * Responsibilities:\n * - Optionally creates an S3 bucket\n * - Optionally creates a CloudFront distribution with S3 origin\n * - Deploys assets to S3 bucket\n * - Configures CloudFront invalidation paths\n *\n * Behaviour:\n * - Automatically links S3 bucket as CloudFront origin when enabled\n * - Resolves destination bucket and distribution if not explicitly provided\n * - Throws when required dependencies are missing\n */\nexport class BaseS3DeploymentConstruct extends Construct {\n\t/** The created or provided S3 bucket */\n\treadonly bucket: Bucket;\n\n\t/** The created CloudFront distribution */\n\treadonly distribution: Distribution;\n\n\t/** S3 bucket deployment instance */\n\treadonly bucketDeployment: BucketDeployment;\n\n\t/**\n\t * @param scope Parent construct\n\t * @param id Unique construct identifier\n\t * @param props Configuration for bucket, distribution, and deployment\n\t */\n\tconstructor(\n\t\tscope: Construct,\n\t\tid: string,\n\t\tprops: IS3DeploymentConstructProps,\n\t) {\n\t\tsuper(scope, id);\n\n\t\t/**\n\t\t * Validate CloudFront origin requirements\n\t\t */\n\t\tif (\n\t\t\t!props.options?.cloudfrontOptions?.defaultBehavior?.origin &&\n\t\t\t!props?.withS3Bucket &&\n\t\t\tprops.withCloudfront\n\t\t) {\n\t\t\tthrow new CustomException(\n\t\t\t\t'Cloudfront distribution S3_Bucket origins must be defined!',\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Validate deployment destination requirements\n\t\t */\n\t\tif (\n\t\t\t!props.options?.bucketDeploymentOptions?.destinationBucket &&\n\t\t\t!props?.withS3Bucket\n\t\t) {\n\t\t\tthrow new CustomException(\n\t\t\t\t'Deployment S3_Bucket destination must be defined!',\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Create S3 bucket if enabled\n\t\t */\n\t\tif (props?.withS3Bucket) {\n\t\t\tthis.bucket = new BaseS3Construct(this, 'bucket', {\n\t\t\t\tenableDebug: props.enableDebug,\n\t\t\t\toptions: { bucketOptions: props.options?.bucketOptions },\n\t\t\t}).bucket;\n\t\t}\n\n\t\t/**\n\t\t * Create CloudFront distribution if enabled\n\t\t */\n\t\tif (props?.withCloudfront) {\n\t\t\t/**\n\t\t\t * Resolve S3 origin for distribution\n\t\t\t */\n\t\t\tconst s3Origin =\n\t\t\t\tprops.options?.cloudfrontOptions?.defaultBehavior?.origin ||\n\t\t\t\tS3BucketOrigin.withOriginAccessControl(this.bucket);\n\n\t\t\tthis.distribution = new BaseCloudfrontConstruct(this, 'distribution', {\n\t\t\t\tenableDebug: props.enableDebug,\n\t\t\t\toptions: {\n\t\t\t\t\tcloudfrontOptions: {\n\t\t\t\t\t\t...props.options?.cloudfrontOptions,\n\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * Map additional behaviors and ensure origin is assigned\n\t\t\t\t\t\t */\n\t\t\t\t\t\tadditionalBehaviors: Object.entries(\n\t\t\t\t\t\t\tprops.options?.cloudfrontOptions?.additionalBehaviors || {},\n\t\t\t\t\t\t).reduce(\n\t\t\t\t\t\t\t(behavior, [pattern, behaviorOptions]) => {\n\t\t\t\t\t\t\t\tbehavior[pattern] = {\n\t\t\t\t\t\t\t\t\t...behaviorOptions,\n\t\t\t\t\t\t\t\t\torigin: behaviorOptions.origin || s3Origin,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\treturn behavior;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{} as typeof props.options.cloudfrontOptions.additionalBehaviors,\n\t\t\t\t\t\t) as ObjectType<BehaviorOptions>,\n\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * Default behavior configuration\n\t\t\t\t\t\t */\n\t\t\t\t\t\tdefaultBehavior: {\n\t\t\t\t\t\t\t...props.options?.cloudfrontOptions?.defaultBehavior,\n\t\t\t\t\t\t\torigin: s3Origin,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}).distribution;\n\t\t}\n\n\t\t/**\n\t\t * Deploy assets to S3 bucket\n\t\t *\n\t\t * Automatically resolves:\n\t\t * - Destination bucket\n\t\t * - CloudFront distribution\n\t\t * - Invalidation paths\n\t\t */\n\t\tthis.bucketDeployment = new BucketDeployment(this, 'deployment', {\n\t\t\t...props.options?.bucketDeploymentOptions,\n\n\t\t\t/** Target distribution for cache invalidation */\n\t\t\tdistribution:\n\t\t\t\tprops.options?.bucketDeploymentOptions?.distribution ||\n\t\t\t\tthis.distribution,\n\n\t\t\t/** Paths to invalidate after deployment */\n\t\t\tdistributionPaths: props.options?.bucketDeploymentOptions\n\t\t\t\t?.distributionPaths || ['/*'],\n\n\t\t\t/** Destination S3 bucket */\n\t\t\tdestinationBucket:\n\t\t\t\tprops.options?.bucketDeploymentOptions?.destinationBucket ||\n\t\t\t\tthis.bucket,\n\t\t} as BucketDeploymentProps);\n\t}\n}\n"]}
@@ -34,5 +34,5 @@ var BaseS3Construct = class extends constructs.Construct {
34
34
  };
35
35
 
36
36
  exports.BaseS3Construct = BaseS3Construct;
37
- //# sourceMappingURL=s3-construct.cjs.map
38
- //# sourceMappingURL=s3-construct.cjs.map
37
+ //# sourceMappingURL=s3.cjs.map
38
+ //# sourceMappingURL=s3.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/aws/cdk/constructs/s3-construct.ts"],"names":["Construct","Bucket","RemovalPolicy","CfnOutput"],"mappings":";;;;;;;;AA4BO,IAAM,eAAA,GAAN,cAA8BA,oBAAA,CAAU;AAAA,EA5B/C;AA4B+C,IAAA,MAAA,CAAA,IAAA,EAAA,iBAAA,CAAA;AAAA;AAAA;AAAA,EAErC,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOT,WAAA,CACC,KAAA,EACA,EAAA,EACA,KAAA,EACC;AACD,IAAA,KAAA,CAAM,OAAO,EAAE,CAAA;AAEf,IAAA,IAAA,CAAK,MAAA,GAAS,IAAIC,YAAA,CAAO,IAAA,EAAM,EAAA,EAAI;AAAA,MAClC,GAAG,MAAM,OAAA,EAAS,aAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMlB,aAAA,EACC,KAAA,CAAM,OAAA,EAAS,aAAA,EAAe,iBAAiBC,uBAAA,CAAc;AAAA,KAC9D,CAAA;AAKD,IAAA,IAAIC,mBAAA,CAAU,MAAM,aAAA,EAAe;AAAA,MAClC,KAAA,EAAO,KAAK,MAAA,CAAO;AAAA,KACnB,CAAA;AAAA,EACF;AACD","file":"s3.cjs","sourcesContent":["import { Construct } from 'constructs';\nimport { CfnOutput, RemovalPolicy } from 'aws-cdk-lib';\nimport { Bucket, BucketProps } from 'aws-cdk-lib/aws-s3';\n\nimport { IBaseCdkConstructProps } from '../../types';\n\n/**\n * Props for BaseS3Construct\n *\n * Provides configuration for creating an S3 bucket\n * with optional overrides for bucket properties.\n */\ninterface IS3DeploymentConstructProps extends Omit<\n\tIBaseCdkConstructProps<{\n\t\t/** Configuration options for the S3 bucket */\n\t\treadonly bucketOptions?: BucketProps;\n\t}>,\n\t'appName' | 'stackName'\n> {}\n\n/**\n * CDK construct for S3 bucket\n *\n * Responsibilities:\n * - Creates an S3 bucket with configurable options\n * - Applies a default removal policy if not provided\n * - Exposes the bucket ARN as a CloudFormation output\n */\nexport class BaseS3Construct extends Construct {\n\t/** The created S3 bucket instance */\n\treadonly bucket: Bucket;\n\n\t/**\n\t * @param scope Parent construct\n\t * @param id Unique construct identifier\n\t * @param props Configuration for S3 bucket\n\t */\n\tconstructor(\n\t\tscope: Construct,\n\t\tid: string,\n\t\tprops: IS3DeploymentConstructProps,\n\t) {\n\t\tsuper(scope, id);\n\n\t\tthis.bucket = new Bucket(this, id, {\n\t\t\t...props.options?.bucketOptions,\n\n\t\t\t/**\n\t\t\t * Removal policy applied to the bucket\n\t\t\t * Defaults to DESTROY if not explicitly defined\n\t\t\t */\n\t\t\tremovalPolicy:\n\t\t\t\tprops.options?.bucketOptions?.removalPolicy || RemovalPolicy.DESTROY,\n\t\t});\n\n\t\t/**\n\t\t * CloudFormation output exposing the S3 bucket ARN\n\t\t */\n\t\tnew CfnOutput(this, 'S3BucketArn', {\n\t\t\tvalue: this.bucket.bucketArn,\n\t\t});\n\t}\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { Construct } from 'constructs';
2
2
  import { Bucket, BucketProps } from 'aws-cdk-lib/aws-s3';
3
- import { IBaseCdkConstructProps } from '../../types/index.js';
3
+ import { IBaseCdkConstructProps } from '../aws-types.cjs';
4
4
  import '@incloodsolutions/toolkit';
5
5
 
6
6
  /**
@@ -1,6 +1,6 @@
1
1
  import { Construct } from 'constructs';
2
2
  import { Bucket, BucketProps } from 'aws-cdk-lib/aws-s3';
3
- import { IBaseCdkConstructProps } from '../../types/index.cjs';
3
+ import { IBaseCdkConstructProps } from '../aws-types.js';
4
4
  import '@incloodsolutions/toolkit';
5
5
 
6
6
  /**
@@ -32,5 +32,5 @@ var BaseS3Construct = class extends Construct {
32
32
  };
33
33
 
34
34
  export { BaseS3Construct };
35
- //# sourceMappingURL=s3-construct.js.map
36
- //# sourceMappingURL=s3-construct.js.map
35
+ //# sourceMappingURL=s3.js.map
36
+ //# sourceMappingURL=s3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/aws/cdk/constructs/s3-construct.ts"],"names":[],"mappings":";;;;;;AA4BO,IAAM,eAAA,GAAN,cAA8B,SAAA,CAAU;AAAA,EA5B/C;AA4B+C,IAAA,MAAA,CAAA,IAAA,EAAA,iBAAA,CAAA;AAAA;AAAA;AAAA,EAErC,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOT,WAAA,CACC,KAAA,EACA,EAAA,EACA,KAAA,EACC;AACD,IAAA,KAAA,CAAM,OAAO,EAAE,CAAA;AAEf,IAAA,IAAA,CAAK,MAAA,GAAS,IAAI,MAAA,CAAO,IAAA,EAAM,EAAA,EAAI;AAAA,MAClC,GAAG,MAAM,OAAA,EAAS,aAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMlB,aAAA,EACC,KAAA,CAAM,OAAA,EAAS,aAAA,EAAe,iBAAiB,aAAA,CAAc;AAAA,KAC9D,CAAA;AAKD,IAAA,IAAI,SAAA,CAAU,MAAM,aAAA,EAAe;AAAA,MAClC,KAAA,EAAO,KAAK,MAAA,CAAO;AAAA,KACnB,CAAA;AAAA,EACF;AACD","file":"s3.js","sourcesContent":["import { Construct } from 'constructs';\nimport { CfnOutput, RemovalPolicy } from 'aws-cdk-lib';\nimport { Bucket, BucketProps } from 'aws-cdk-lib/aws-s3';\n\nimport { IBaseCdkConstructProps } from '../../types';\n\n/**\n * Props for BaseS3Construct\n *\n * Provides configuration for creating an S3 bucket\n * with optional overrides for bucket properties.\n */\ninterface IS3DeploymentConstructProps extends Omit<\n\tIBaseCdkConstructProps<{\n\t\t/** Configuration options for the S3 bucket */\n\t\treadonly bucketOptions?: BucketProps;\n\t}>,\n\t'appName' | 'stackName'\n> {}\n\n/**\n * CDK construct for S3 bucket\n *\n * Responsibilities:\n * - Creates an S3 bucket with configurable options\n * - Applies a default removal policy if not provided\n * - Exposes the bucket ARN as a CloudFormation output\n */\nexport class BaseS3Construct extends Construct {\n\t/** The created S3 bucket instance */\n\treadonly bucket: Bucket;\n\n\t/**\n\t * @param scope Parent construct\n\t * @param id Unique construct identifier\n\t * @param props Configuration for S3 bucket\n\t */\n\tconstructor(\n\t\tscope: Construct,\n\t\tid: string,\n\t\tprops: IS3DeploymentConstructProps,\n\t) {\n\t\tsuper(scope, id);\n\n\t\tthis.bucket = new Bucket(this, id, {\n\t\t\t...props.options?.bucketOptions,\n\n\t\t\t/**\n\t\t\t * Removal policy applied to the bucket\n\t\t\t * Defaults to DESTROY if not explicitly defined\n\t\t\t */\n\t\t\tremovalPolicy:\n\t\t\t\tprops.options?.bucketOptions?.removalPolicy || RemovalPolicy.DESTROY,\n\t\t});\n\n\t\t/**\n\t\t * CloudFormation output exposing the S3 bucket ARN\n\t\t */\n\t\tnew CfnOutput(this, 'S3BucketArn', {\n\t\t\tvalue: this.bucket.bucketArn,\n\t\t});\n\t}\n}\n"]}
@@ -39,5 +39,5 @@ var BaseSnsConstruct = class extends constructs.Construct {
39
39
  };
40
40
 
41
41
  exports.BaseSnsConstruct = BaseSnsConstruct;
42
- //# sourceMappingURL=sns-construct.cjs.map
43
- //# sourceMappingURL=sns-construct.cjs.map
42
+ //# sourceMappingURL=sns.cjs.map
43
+ //# sourceMappingURL=sns.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/aws/cdk/constructs/sns-construct.ts"],"names":["Construct","Topic","LambdaSubscription","RemovalPolicy","CfnOutput"],"mappings":";;;;;;;;;AAuCO,IAAM,gBAAA,GAAN,cAA+BA,oBAAA,CAAU;AAAA,EAvChD;AAuCgD,IAAA,MAAA,CAAA,IAAA,EAAA,kBAAA,CAAA;AAAA;AAAA;AAAA,EAEtC,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOT,WAAA,CAAY,KAAA,EAAkB,EAAA,EAAY,KAAA,EAA2B;AACpE,IAAA,KAAA,CAAM,OAAO,EAAE,CAAA;AAEf,IAAA,IAAA,CAAK,QAAQ,IAAIC,YAAA,CAAM,MAAM,EAAA,EAAI,KAAA,CAAM,SAAS,YAAY,CAAA;AAK5D,IAAA,IAAI,KAAA,CAAM,OAAA,EAAS,eAAA,EAAiB,MAAA,EAAQ;AAC3C,MAAA,KAAA,CAAM,OAAA,CAAQ,eAAA,CAAgB,OAAA,CAAQ,CAAC,cAAA,KAAmB;AACzD,QAAA,IAAA,CAAK,KAAA,CAAM,eAAA;AAAA;AAAA;AAAA;AAAA,UAIV,IAAIC,uCAAmB,cAAc;AAAA,SACtC;AAAA,MACD,CAAC,CAAA;AAAA,IACF;AAKA,IAAA,IAAA,CAAK,KAAA,CAAM,kBAAA,CAAmBC,uBAAA,CAAc,OAAO,CAAA;AAKnD,IAAA,IAAIC,mBAAA,CAAU,MAAM,aAAA,EAAe;AAAA,MAClC,KAAA,EAAO,KAAK,KAAA,CAAM;AAAA,KAClB,CAAA;AAAA,EACF;AACD","file":"sns.cjs","sourcesContent":["import { Construct } from 'constructs';\nimport { Function } from 'aws-cdk-lib/aws-lambda';\nimport { CfnOutput, RemovalPolicy } from 'aws-cdk-lib';\nimport { Topic, TopicProps } from 'aws-cdk-lib/aws-sns';\nimport { LambdaSubscription } from 'aws-cdk-lib/aws-sns-subscriptions';\n\nimport { IBaseCdkConstructProps } from '../../types';\n\n/**\n * Props for BaseSnsConstruct\n *\n * Provides configuration for:\n * - SNS topic creation\n * - Lambda subscriptions\n */\ninterface ISnsConstructProps extends Omit<\n\tIBaseCdkConstructProps<{\n\t\t/** SNS topic configuration options */\n\t\treadonly topicOptions: TopicProps;\n\n\t\t/**\n\t\t * Lambda functions to subscribe to the topic\n\t\t *\n\t\t * Each function will receive messages published to the topic\n\t\t */\n\t\treadonly targetFunctions: Function[];\n\t}>,\n\t'appName' | 'stage' | 'stackName'\n> {}\n\n/**\n * CDK construct for SNS topic with Lambda subscriptions\n *\n * Responsibilities:\n * - Creates an SNS topic with configurable options\n * - Subscribes one or more Lambda functions to the topic\n * - Applies a removal policy\n * - Exposes the topic ARN as a CloudFormation output\n */\nexport class BaseSnsConstruct extends Construct {\n\t/** The created SNS topic instance */\n\treadonly topic: Topic;\n\n\t/**\n\t * @param scope Parent construct\n\t * @param id Unique construct identifier\n\t * @param props Configuration for topic and subscriptions\n\t */\n\tconstructor(scope: Construct, id: string, props: ISnsConstructProps) {\n\t\tsuper(scope, id);\n\n\t\tthis.topic = new Topic(this, id, props.options?.topicOptions);\n\n\t\t/**\n\t\t * Attach Lambda subscriptions to the topic\n\t\t */\n\t\tif (props.options?.targetFunctions?.length) {\n\t\t\tprops.options.targetFunctions.forEach((targetFunction) => {\n\t\t\t\tthis.topic.addSubscription(\n\t\t\t\t\t/**\n\t\t\t\t\t * Lambda subscription target\n\t\t\t\t\t */\n\t\t\t\t\tnew LambdaSubscription(targetFunction),\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Apply removal policy (useful for non-production environments)\n\t\t */\n\t\tthis.topic.applyRemovalPolicy(RemovalPolicy.DESTROY);\n\n\t\t/**\n\t\t * CloudFormation output exposing the topic ARN\n\t\t */\n\t\tnew CfnOutput(this, 'SnsTopicArn', {\n\t\t\tvalue: this.topic.topicArn,\n\t\t});\n\t}\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { Construct } from 'constructs';
2
2
  import { Function } from 'aws-cdk-lib/aws-lambda';
3
3
  import { Topic, TopicProps } from 'aws-cdk-lib/aws-sns';
4
- import { IBaseCdkConstructProps } from '../../types/index.js';
4
+ import { IBaseCdkConstructProps } from '../aws-types.cjs';
5
5
  import '@incloodsolutions/toolkit';
6
6
 
7
7
  /**
@@ -1,7 +1,7 @@
1
1
  import { Construct } from 'constructs';
2
2
  import { Function } from 'aws-cdk-lib/aws-lambda';
3
3
  import { Topic, TopicProps } from 'aws-cdk-lib/aws-sns';
4
- import { IBaseCdkConstructProps } from '../../types/index.cjs';
4
+ import { IBaseCdkConstructProps } from '../aws-types.js';
5
5
  import '@incloodsolutions/toolkit';
6
6
 
7
7
  /**
@@ -37,5 +37,5 @@ var BaseSnsConstruct = class extends Construct {
37
37
  };
38
38
 
39
39
  export { BaseSnsConstruct };
40
- //# sourceMappingURL=sns-construct.js.map
41
- //# sourceMappingURL=sns-construct.js.map
40
+ //# sourceMappingURL=sns.js.map
41
+ //# sourceMappingURL=sns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/aws/cdk/constructs/sns-construct.ts"],"names":[],"mappings":";;;;;;;AAuCO,IAAM,gBAAA,GAAN,cAA+B,SAAA,CAAU;AAAA,EAvChD;AAuCgD,IAAA,MAAA,CAAA,IAAA,EAAA,kBAAA,CAAA;AAAA;AAAA;AAAA,EAEtC,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOT,WAAA,CAAY,KAAA,EAAkB,EAAA,EAAY,KAAA,EAA2B;AACpE,IAAA,KAAA,CAAM,OAAO,EAAE,CAAA;AAEf,IAAA,IAAA,CAAK,QAAQ,IAAI,KAAA,CAAM,MAAM,EAAA,EAAI,KAAA,CAAM,SAAS,YAAY,CAAA;AAK5D,IAAA,IAAI,KAAA,CAAM,OAAA,EAAS,eAAA,EAAiB,MAAA,EAAQ;AAC3C,MAAA,KAAA,CAAM,OAAA,CAAQ,eAAA,CAAgB,OAAA,CAAQ,CAAC,cAAA,KAAmB;AACzD,QAAA,IAAA,CAAK,KAAA,CAAM,eAAA;AAAA;AAAA;AAAA;AAAA,UAIV,IAAI,mBAAmB,cAAc;AAAA,SACtC;AAAA,MACD,CAAC,CAAA;AAAA,IACF;AAKA,IAAA,IAAA,CAAK,KAAA,CAAM,kBAAA,CAAmB,aAAA,CAAc,OAAO,CAAA;AAKnD,IAAA,IAAI,SAAA,CAAU,MAAM,aAAA,EAAe;AAAA,MAClC,KAAA,EAAO,KAAK,KAAA,CAAM;AAAA,KAClB,CAAA;AAAA,EACF;AACD","file":"sns.js","sourcesContent":["import { Construct } from 'constructs';\nimport { Function } from 'aws-cdk-lib/aws-lambda';\nimport { CfnOutput, RemovalPolicy } from 'aws-cdk-lib';\nimport { Topic, TopicProps } from 'aws-cdk-lib/aws-sns';\nimport { LambdaSubscription } from 'aws-cdk-lib/aws-sns-subscriptions';\n\nimport { IBaseCdkConstructProps } from '../../types';\n\n/**\n * Props for BaseSnsConstruct\n *\n * Provides configuration for:\n * - SNS topic creation\n * - Lambda subscriptions\n */\ninterface ISnsConstructProps extends Omit<\n\tIBaseCdkConstructProps<{\n\t\t/** SNS topic configuration options */\n\t\treadonly topicOptions: TopicProps;\n\n\t\t/**\n\t\t * Lambda functions to subscribe to the topic\n\t\t *\n\t\t * Each function will receive messages published to the topic\n\t\t */\n\t\treadonly targetFunctions: Function[];\n\t}>,\n\t'appName' | 'stage' | 'stackName'\n> {}\n\n/**\n * CDK construct for SNS topic with Lambda subscriptions\n *\n * Responsibilities:\n * - Creates an SNS topic with configurable options\n * - Subscribes one or more Lambda functions to the topic\n * - Applies a removal policy\n * - Exposes the topic ARN as a CloudFormation output\n */\nexport class BaseSnsConstruct extends Construct {\n\t/** The created SNS topic instance */\n\treadonly topic: Topic;\n\n\t/**\n\t * @param scope Parent construct\n\t * @param id Unique construct identifier\n\t * @param props Configuration for topic and subscriptions\n\t */\n\tconstructor(scope: Construct, id: string, props: ISnsConstructProps) {\n\t\tsuper(scope, id);\n\n\t\tthis.topic = new Topic(this, id, props.options?.topicOptions);\n\n\t\t/**\n\t\t * Attach Lambda subscriptions to the topic\n\t\t */\n\t\tif (props.options?.targetFunctions?.length) {\n\t\t\tprops.options.targetFunctions.forEach((targetFunction) => {\n\t\t\t\tthis.topic.addSubscription(\n\t\t\t\t\t/**\n\t\t\t\t\t * Lambda subscription target\n\t\t\t\t\t */\n\t\t\t\t\tnew LambdaSubscription(targetFunction),\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Apply removal policy (useful for non-production environments)\n\t\t */\n\t\tthis.topic.applyRemovalPolicy(RemovalPolicy.DESTROY);\n\n\t\t/**\n\t\t * CloudFormation output exposing the topic ARN\n\t\t */\n\t\tnew CfnOutput(this, 'SnsTopicArn', {\n\t\t\tvalue: this.topic.topicArn,\n\t\t});\n\t}\n}\n"]}
@@ -51,5 +51,5 @@ var BaseSqsConstruct = class extends constructs.Construct {
51
51
  };
52
52
 
53
53
  exports.BaseSqsConstruct = BaseSqsConstruct;
54
- //# sourceMappingURL=sqs-construct.cjs.map
55
- //# sourceMappingURL=sqs-construct.cjs.map
54
+ //# sourceMappingURL=sqs.cjs.map
55
+ //# sourceMappingURL=sqs.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/aws/cdk/constructs/sqs-construct.ts"],"names":["Construct","Queue","RemovalPolicy","EventSourceMapping","CfnOutput"],"mappings":";;;;;;;;;AAqDO,IAAM,gBAAA,GAAN,cAA+BA,oBAAA,CAAU;AAAA,EArDhD;AAqDgD,IAAA,MAAA,CAAA,IAAA,EAAA,kBAAA,CAAA;AAAA;AAAA;AAAA,EAEtC,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOT,WAAA,CAAY,KAAA,EAAkB,EAAA,EAAY,KAAA,EAA2B;AACpE,IAAA,KAAA,CAAM,OAAO,EAAE,CAAA;AAEf,IAAA,IAAA,CAAK,KAAA,GAAQ,IAAIC,YAAA,CAAM,IAAA,EAAM,EAAA,EAAI;AAAA,MAChC,GAAG,OAAO,OAAA,EAAS,YAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMnB,aAAA,EACC,KAAA,EAAO,OAAA,EAAS,YAAA,EAAc,iBAAiBC,uBAAA,CAAc;AAAA,KAC9D,CAAA;AAKD,IAAA,IAAI,KAAA,EAAO,iBAAiB,MAAA,EAAQ;AACnC,MAAA,KAAA,CAAM,eAAA,CAAgB,OAAA,CAAQ,CAAC,cAAA,EAAgB,KAAA,KAAU;AACxD,QAAA,IAAIC,6BAAmB,IAAA,EAAM,CAAA,EAAG,EAAE,CAAA,eAAA,EAAkB,KAAA,GAAQ,CAAC,CAAA,CAAA,EAAI;AAAA,UAChE,GAAG,OAAO,OAAA,EAAS,yBAAA;AAAA;AAAA,UAGnB,MAAA,EAAQ,cAAA;AAAA;AAAA,UAGR,cAAA,EAAgB,KAAK,KAAA,CAAM,QAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAM3B,aAAA,EACC,KAAA,EAAO,OAAA,EAAS,yBAAA,EAA2B,aAAA,IAAiB;AAAA,SAC7D,CAAA;AAAA,MACF,CAAC,CAAA;AAAA,IACF;AAKA,IAAA,IAAIC,mBAAA,CAAU,MAAM,aAAA,EAAe;AAAA,MAClC,KAAA,EAAO,KAAK,KAAA,CAAM;AAAA,KAClB,CAAA;AAAA,EACF;AACD","file":"sqs.cjs","sourcesContent":["import { Construct } from 'constructs';\nimport { CfnOutput, RemovalPolicy } from 'aws-cdk-lib';\nimport { Queue, QueueProps } from 'aws-cdk-lib/aws-sqs';\nimport {\n\tEventSourceMapping,\n\tEventSourceMappingProps,\n\tFunction,\n} from 'aws-cdk-lib/aws-lambda';\n\nimport { IBaseCdkConstructProps } from '../../types';\n\n/**\n * Props for BaseSqsConstruct\n *\n * Provides configuration for:\n * - SQS queue creation\n * - Lambda event source mappings\n */\ninterface ISqsConstructProps extends Omit<\n\tIBaseCdkConstructProps<{\n\t\t/** Configuration options for the SQS queue */\n\t\treadonly queueOptions?: QueueProps;\n\n\t\t/**\n\t\t * Configuration for Lambda event source mapping\n\t\t *\n\t\t * Note:\n\t\t * `eventSourceArn` and `target` are managed internally\n\t\t */\n\t\treadonly eventSourceMappingOptions?: Omit<\n\t\t\tEventSourceMappingProps,\n\t\t\t'eventSourceArn' | 'target'\n\t\t>;\n\t}>,\n\t'appName' | 'stage' | 'stackName'\n> {\n\t/**\n\t * Lambda functions to be triggered by SQS messages\n\t *\n\t * Each function will be connected via an event source mapping\n\t */\n\treadonly targetFunctions?: Function[];\n}\n\n/**\n * CDK construct for SQS queue with Lambda integration\n *\n * Responsibilities:\n * - Creates an SQS queue with configurable options\n * - Attaches one or more Lambda consumers via event source mappings\n * - Applies default retry behaviour\n * - Exposes the queue ARN as a CloudFormation output\n */\nexport class BaseSqsConstruct extends Construct {\n\t/** The created SQS queue instance */\n\treadonly queue: Queue;\n\n\t/**\n\t * @param scope Parent construct\n\t * @param id Unique construct identifier\n\t * @param props Configuration for queue and Lambda consumers\n\t */\n\tconstructor(scope: Construct, id: string, props: ISqsConstructProps) {\n\t\tsuper(scope, id);\n\n\t\tthis.queue = new Queue(this, id, {\n\t\t\t...props?.options?.queueOptions,\n\n\t\t\t/**\n\t\t\t * Removal policy applied to the queue\n\t\t\t * Defaults to DESTROY if not explicitly defined\n\t\t\t */\n\t\t\tremovalPolicy:\n\t\t\t\tprops?.options?.queueOptions?.removalPolicy || RemovalPolicy.DESTROY,\n\t\t});\n\n\t\t/**\n\t\t * Attach Lambda event source mappings for queue consumption\n\t\t */\n\t\tif (props?.targetFunctions?.length) {\n\t\t\tprops.targetFunctions.forEach((targetFunction, index) => {\n\t\t\t\tnew EventSourceMapping(this, `${id}-eventSourceMap${index + 1}`, {\n\t\t\t\t\t...props?.options?.eventSourceMappingOptions,\n\n\t\t\t\t\t/** Target Lambda function */\n\t\t\t\t\ttarget: targetFunction,\n\n\t\t\t\t\t/** Source SQS queue ARN */\n\t\t\t\t\teventSourceArn: this.queue.queueArn,\n\n\t\t\t\t\t/**\n\t\t\t\t\t * Retry attempts for failed batch processing\n\t\t\t\t\t * Defaults to 3 if not explicitly defined\n\t\t\t\t\t */\n\t\t\t\t\tretryAttempts:\n\t\t\t\t\t\tprops?.options?.eventSourceMappingOptions?.retryAttempts || 3,\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * CloudFormation output exposing the SQS queue ARN\n\t\t */\n\t\tnew CfnOutput(this, 'SqsQueueArn', {\n\t\t\tvalue: this.queue.queueArn,\n\t\t});\n\t}\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { Construct } from 'constructs';
2
2
  import { Queue, QueueProps } from 'aws-cdk-lib/aws-sqs';
3
3
  import { EventSourceMappingProps, Function } from 'aws-cdk-lib/aws-lambda';
4
- import { IBaseCdkConstructProps } from '../../types/index.js';
4
+ import { IBaseCdkConstructProps } from '../aws-types.cjs';
5
5
  import '@incloodsolutions/toolkit';
6
6
 
7
7
  /**
@@ -1,7 +1,7 @@
1
1
  import { Construct } from 'constructs';
2
2
  import { Queue, QueueProps } from 'aws-cdk-lib/aws-sqs';
3
3
  import { EventSourceMappingProps, Function } from 'aws-cdk-lib/aws-lambda';
4
- import { IBaseCdkConstructProps } from '../../types/index.cjs';
4
+ import { IBaseCdkConstructProps } from '../aws-types.js';
5
5
  import '@incloodsolutions/toolkit';
6
6
 
7
7
  /**
@@ -49,5 +49,5 @@ var BaseSqsConstruct = class extends Construct {
49
49
  };
50
50
 
51
51
  export { BaseSqsConstruct };
52
- //# sourceMappingURL=sqs-construct.js.map
53
- //# sourceMappingURL=sqs-construct.js.map
52
+ //# sourceMappingURL=sqs.js.map
53
+ //# sourceMappingURL=sqs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/aws/cdk/constructs/sqs-construct.ts"],"names":[],"mappings":";;;;;;;AAqDO,IAAM,gBAAA,GAAN,cAA+B,SAAA,CAAU;AAAA,EArDhD;AAqDgD,IAAA,MAAA,CAAA,IAAA,EAAA,kBAAA,CAAA;AAAA;AAAA;AAAA,EAEtC,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOT,WAAA,CAAY,KAAA,EAAkB,EAAA,EAAY,KAAA,EAA2B;AACpE,IAAA,KAAA,CAAM,OAAO,EAAE,CAAA;AAEf,IAAA,IAAA,CAAK,KAAA,GAAQ,IAAI,KAAA,CAAM,IAAA,EAAM,EAAA,EAAI;AAAA,MAChC,GAAG,OAAO,OAAA,EAAS,YAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMnB,aAAA,EACC,KAAA,EAAO,OAAA,EAAS,YAAA,EAAc,iBAAiB,aAAA,CAAc;AAAA,KAC9D,CAAA;AAKD,IAAA,IAAI,KAAA,EAAO,iBAAiB,MAAA,EAAQ;AACnC,MAAA,KAAA,CAAM,eAAA,CAAgB,OAAA,CAAQ,CAAC,cAAA,EAAgB,KAAA,KAAU;AACxD,QAAA,IAAI,mBAAmB,IAAA,EAAM,CAAA,EAAG,EAAE,CAAA,eAAA,EAAkB,KAAA,GAAQ,CAAC,CAAA,CAAA,EAAI;AAAA,UAChE,GAAG,OAAO,OAAA,EAAS,yBAAA;AAAA;AAAA,UAGnB,MAAA,EAAQ,cAAA;AAAA;AAAA,UAGR,cAAA,EAAgB,KAAK,KAAA,CAAM,QAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAM3B,aAAA,EACC,KAAA,EAAO,OAAA,EAAS,yBAAA,EAA2B,aAAA,IAAiB;AAAA,SAC7D,CAAA;AAAA,MACF,CAAC,CAAA;AAAA,IACF;AAKA,IAAA,IAAI,SAAA,CAAU,MAAM,aAAA,EAAe;AAAA,MAClC,KAAA,EAAO,KAAK,KAAA,CAAM;AAAA,KAClB,CAAA;AAAA,EACF;AACD","file":"sqs.js","sourcesContent":["import { Construct } from 'constructs';\nimport { CfnOutput, RemovalPolicy } from 'aws-cdk-lib';\nimport { Queue, QueueProps } from 'aws-cdk-lib/aws-sqs';\nimport {\n\tEventSourceMapping,\n\tEventSourceMappingProps,\n\tFunction,\n} from 'aws-cdk-lib/aws-lambda';\n\nimport { IBaseCdkConstructProps } from '../../types';\n\n/**\n * Props for BaseSqsConstruct\n *\n * Provides configuration for:\n * - SQS queue creation\n * - Lambda event source mappings\n */\ninterface ISqsConstructProps extends Omit<\n\tIBaseCdkConstructProps<{\n\t\t/** Configuration options for the SQS queue */\n\t\treadonly queueOptions?: QueueProps;\n\n\t\t/**\n\t\t * Configuration for Lambda event source mapping\n\t\t *\n\t\t * Note:\n\t\t * `eventSourceArn` and `target` are managed internally\n\t\t */\n\t\treadonly eventSourceMappingOptions?: Omit<\n\t\t\tEventSourceMappingProps,\n\t\t\t'eventSourceArn' | 'target'\n\t\t>;\n\t}>,\n\t'appName' | 'stage' | 'stackName'\n> {\n\t/**\n\t * Lambda functions to be triggered by SQS messages\n\t *\n\t * Each function will be connected via an event source mapping\n\t */\n\treadonly targetFunctions?: Function[];\n}\n\n/**\n * CDK construct for SQS queue with Lambda integration\n *\n * Responsibilities:\n * - Creates an SQS queue with configurable options\n * - Attaches one or more Lambda consumers via event source mappings\n * - Applies default retry behaviour\n * - Exposes the queue ARN as a CloudFormation output\n */\nexport class BaseSqsConstruct extends Construct {\n\t/** The created SQS queue instance */\n\treadonly queue: Queue;\n\n\t/**\n\t * @param scope Parent construct\n\t * @param id Unique construct identifier\n\t * @param props Configuration for queue and Lambda consumers\n\t */\n\tconstructor(scope: Construct, id: string, props: ISqsConstructProps) {\n\t\tsuper(scope, id);\n\n\t\tthis.queue = new Queue(this, id, {\n\t\t\t...props?.options?.queueOptions,\n\n\t\t\t/**\n\t\t\t * Removal policy applied to the queue\n\t\t\t * Defaults to DESTROY if not explicitly defined\n\t\t\t */\n\t\t\tremovalPolicy:\n\t\t\t\tprops?.options?.queueOptions?.removalPolicy || RemovalPolicy.DESTROY,\n\t\t});\n\n\t\t/**\n\t\t * Attach Lambda event source mappings for queue consumption\n\t\t */\n\t\tif (props?.targetFunctions?.length) {\n\t\t\tprops.targetFunctions.forEach((targetFunction, index) => {\n\t\t\t\tnew EventSourceMapping(this, `${id}-eventSourceMap${index + 1}`, {\n\t\t\t\t\t...props?.options?.eventSourceMappingOptions,\n\n\t\t\t\t\t/** Target Lambda function */\n\t\t\t\t\ttarget: targetFunction,\n\n\t\t\t\t\t/** Source SQS queue ARN */\n\t\t\t\t\teventSourceArn: this.queue.queueArn,\n\n\t\t\t\t\t/**\n\t\t\t\t\t * Retry attempts for failed batch processing\n\t\t\t\t\t * Defaults to 3 if not explicitly defined\n\t\t\t\t\t */\n\t\t\t\t\tretryAttempts:\n\t\t\t\t\t\tprops?.options?.eventSourceMappingOptions?.retryAttempts || 3,\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * CloudFormation output exposing the SQS queue ARN\n\t\t */\n\t\tnew CfnOutput(this, 'SqsQueueArn', {\n\t\t\tvalue: this.queue.queueArn,\n\t\t});\n\t}\n}\n"]}
@@ -29,5 +29,5 @@ var BaseVpcConstruct = class extends constructs.Construct {
29
29
  };
30
30
 
31
31
  exports.BaseVpcConstruct = BaseVpcConstruct;
32
- //# sourceMappingURL=vpc-construct.cjs.map
33
- //# sourceMappingURL=vpc-construct.cjs.map
32
+ //# sourceMappingURL=vpc.cjs.map
33
+ //# sourceMappingURL=vpc.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/aws/cdk/constructs/vpc-construct.ts"],"names":["Construct","Vpc","CfnOutput"],"mappings":";;;;;;;;AA0BO,IAAM,gBAAA,GAAN,cAA+BA,oBAAA,CAAU;AAAA,EA1BhD;AA0BgD,IAAA,MAAA,CAAA,IAAA,EAAA,kBAAA,CAAA;AAAA;AAAA;AAAA,EAEtC,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOT,WAAA,CAAY,KAAA,EAAkB,EAAA,EAAY,KAAA,EAA2B;AACpE,IAAA,KAAA,CAAM,OAAO,EAAE,CAAA;AAEf,IAAA,IAAA,CAAK,GAAA,GAAM,IAAIC,UAAA,CAAI,IAAA,EAAM,EAAA,EAAI;AAAA,MAC5B,GAAG,MAAM,OAAA,CAAQ;AAAA,KACjB,CAAA;AAKD,IAAA,IAAIC,mBAAA,CAAU,MAAM,QAAA,EAAU;AAAA,MAC7B,KAAA,EAAO,KAAK,GAAA,CAAI;AAAA,KAChB,CAAA;AAAA,EACF;AACD","file":"vpc.cjs","sourcesContent":["import { Construct } from 'constructs';\nimport { CfnOutput } from 'aws-cdk-lib';\nimport { Vpc, VpcProps } from 'aws-cdk-lib/aws-ec2';\n\nimport { IBaseCdkConstructProps } from '../../types';\n\n/**\n * Props for BaseVpcConstruct\n *\n * Provides configuration for creating a VPC.\n */\ninterface IVpcConstructProps extends Omit<\n\tIBaseCdkConstructProps<{\n\t\t/** VPC configuration options */\n\t\treadonly vpcOptions: VpcProps;\n\t}>,\n\t'appName' | 'stage' | 'stackName'\n> {}\n\n/**\n * CDK construct for Virtual Private Cloud (VPC)\n *\n * Responsibilities:\n * - Creates a VPC with configurable options\n * - Exposes the VPC ARN as a CloudFormation output\n */\nexport class BaseVpcConstruct extends Construct {\n\t/** The created VPC instance */\n\treadonly vpc: Vpc;\n\n\t/**\n\t * @param scope Parent construct\n\t * @param id Unique construct identifier\n\t * @param props Configuration for VPC\n\t */\n\tconstructor(scope: Construct, id: string, props: IVpcConstructProps) {\n\t\tsuper(scope, id);\n\n\t\tthis.vpc = new Vpc(this, id, {\n\t\t\t...props.options.vpcOptions,\n\t\t});\n\n\t\t/**\n\t\t * CloudFormation output exposing the VPC ARN\n\t\t */\n\t\tnew CfnOutput(this, 'VpcArn', {\n\t\t\tvalue: this.vpc.vpcArn,\n\t\t});\n\t}\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { Construct } from 'constructs';
2
2
  import { Vpc, VpcProps } from 'aws-cdk-lib/aws-ec2';
3
- import { IBaseCdkConstructProps } from '../../types/index.js';
3
+ import { IBaseCdkConstructProps } from '../aws-types.cjs';
4
4
  import '@incloodsolutions/toolkit';
5
5
 
6
6
  /**
@@ -1,6 +1,6 @@
1
1
  import { Construct } from 'constructs';
2
2
  import { Vpc, VpcProps } from 'aws-cdk-lib/aws-ec2';
3
- import { IBaseCdkConstructProps } from '../../types/index.cjs';
3
+ import { IBaseCdkConstructProps } from '../aws-types.js';
4
4
  import '@incloodsolutions/toolkit';
5
5
 
6
6
  /**
@@ -27,5 +27,5 @@ var BaseVpcConstruct = class extends Construct {
27
27
  };
28
28
 
29
29
  export { BaseVpcConstruct };
30
- //# sourceMappingURL=vpc-construct.js.map
31
- //# sourceMappingURL=vpc-construct.js.map
30
+ //# sourceMappingURL=vpc.js.map
31
+ //# sourceMappingURL=vpc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/aws/cdk/constructs/vpc-construct.ts"],"names":[],"mappings":";;;;;;AA0BO,IAAM,gBAAA,GAAN,cAA+B,SAAA,CAAU;AAAA,EA1BhD;AA0BgD,IAAA,MAAA,CAAA,IAAA,EAAA,kBAAA,CAAA;AAAA;AAAA;AAAA,EAEtC,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOT,WAAA,CAAY,KAAA,EAAkB,EAAA,EAAY,KAAA,EAA2B;AACpE,IAAA,KAAA,CAAM,OAAO,EAAE,CAAA;AAEf,IAAA,IAAA,CAAK,GAAA,GAAM,IAAI,GAAA,CAAI,IAAA,EAAM,EAAA,EAAI;AAAA,MAC5B,GAAG,MAAM,OAAA,CAAQ;AAAA,KACjB,CAAA;AAKD,IAAA,IAAI,SAAA,CAAU,MAAM,QAAA,EAAU;AAAA,MAC7B,KAAA,EAAO,KAAK,GAAA,CAAI;AAAA,KAChB,CAAA;AAAA,EACF;AACD","file":"vpc.js","sourcesContent":["import { Construct } from 'constructs';\nimport { CfnOutput } from 'aws-cdk-lib';\nimport { Vpc, VpcProps } from 'aws-cdk-lib/aws-ec2';\n\nimport { IBaseCdkConstructProps } from '../../types';\n\n/**\n * Props for BaseVpcConstruct\n *\n * Provides configuration for creating a VPC.\n */\ninterface IVpcConstructProps extends Omit<\n\tIBaseCdkConstructProps<{\n\t\t/** VPC configuration options */\n\t\treadonly vpcOptions: VpcProps;\n\t}>,\n\t'appName' | 'stage' | 'stackName'\n> {}\n\n/**\n * CDK construct for Virtual Private Cloud (VPC)\n *\n * Responsibilities:\n * - Creates a VPC with configurable options\n * - Exposes the VPC ARN as a CloudFormation output\n */\nexport class BaseVpcConstruct extends Construct {\n\t/** The created VPC instance */\n\treadonly vpc: Vpc;\n\n\t/**\n\t * @param scope Parent construct\n\t * @param id Unique construct identifier\n\t * @param props Configuration for VPC\n\t */\n\tconstructor(scope: Construct, id: string, props: IVpcConstructProps) {\n\t\tsuper(scope, id);\n\n\t\tthis.vpc = new Vpc(this, id, {\n\t\t\t...props.options.vpcOptions,\n\t\t});\n\n\t\t/**\n\t\t * CloudFormation output exposing the VPC ARN\n\t\t */\n\t\tnew CfnOutput(this, 'VpcArn', {\n\t\t\tvalue: this.vpc.vpcArn,\n\t\t});\n\t}\n}\n"]}
@@ -101,7 +101,10 @@ var BaseApiGatewayConstruct = class _BaseApiGatewayConstruct extends constructs.
101
101
  this.addRoutes(resource, route.children, integration, currentPath);
102
102
  }
103
103
  if (this.enableDebug) {
104
- toolkit.printLog(_BaseApiGatewayConstruct.name, `Route created: ${route.method} ${currentPath}`);
104
+ toolkit.printLog(
105
+ _BaseApiGatewayConstruct.name,
106
+ `Route created: ${route.method} ${currentPath}`
107
+ );
105
108
  }
106
109
  });
107
110
  }
@@ -189,27 +192,39 @@ var BaseApiGatewayWebSocketConstruct = class extends constructs.Construct {
189
192
  */
190
193
  connectRouteOptions: {
191
194
  ...props.handlers.connect?.option,
192
- integration: new awsApigatewayv2Integrations.WebSocketLambdaIntegration("connectIntegration", props.handlers.connect.function)
195
+ integration: new awsApigatewayv2Integrations.WebSocketLambdaIntegration(
196
+ "connectIntegration",
197
+ props.handlers.connect.function
198
+ )
193
199
  },
194
200
  /**
195
201
  * Route for disconnection events ($disconnect)
196
202
  */
197
203
  disconnectRouteOptions: {
198
204
  ...props.handlers.disconnect?.option,
199
- integration: new awsApigatewayv2Integrations.WebSocketLambdaIntegration("disconnectIntegration", props.handlers.disconnect.function)
205
+ integration: new awsApigatewayv2Integrations.WebSocketLambdaIntegration(
206
+ "disconnectIntegration",
207
+ props.handlers.disconnect.function
208
+ )
200
209
  },
201
210
  /**
202
211
  * Default route for unmatched messages ($default)
203
212
  */
204
213
  defaultRouteOptions: {
205
214
  ...props.handlers.default?.option,
206
- integration: new awsApigatewayv2Integrations.WebSocketLambdaIntegration("defaultIntegration", props.handlers.default.function)
215
+ integration: new awsApigatewayv2Integrations.WebSocketLambdaIntegration(
216
+ "defaultIntegration",
217
+ props.handlers.default.function
218
+ )
207
219
  }
208
220
  });
209
221
  this.socketApi.addRoute("notifications", {
210
222
  ...props.handlers.message?.option,
211
223
  /** Lambda integration for message handling */
212
- integration: new awsApigatewayv2Integrations.WebSocketLambdaIntegration("routes", props.handlers.message.function)
224
+ integration: new awsApigatewayv2Integrations.WebSocketLambdaIntegration(
225
+ "routes",
226
+ props.handlers.message.function
227
+ )
213
228
  });
214
229
  const webSocketStage = new awsApigatewayv2.WebSocketStage(this, `${id}_stage`, {
215
230
  ...props.options?.webSocketStageOptions,
@@ -495,7 +510,10 @@ var BaseLambdaAuthoriserV2Construct = class extends constructs.Construct {
495
510
  * Supported response types for the authorizer
496
511
  * Defaults to IAM and SIMPLE responses
497
512
  */
498
- responseTypes: props?.options?.authorizerOptions?.responseTypes || [awsApigatewayv2Authorizers.HttpLambdaResponseType.IAM, awsApigatewayv2Authorizers.HttpLambdaResponseType.SIMPLE]
513
+ responseTypes: props?.options?.authorizerOptions?.responseTypes || [
514
+ awsApigatewayv2Authorizers.HttpLambdaResponseType.IAM,
515
+ awsApigatewayv2Authorizers.HttpLambdaResponseType.SIMPLE
516
+ ]
499
517
  });
500
518
  new awsCdkLib.CfnOutput(this, "LambdaAuthorizerV2_ID", {
501
519
  value: this.authoriser.authorizerId
@@ -612,10 +630,7 @@ var BaseLambdaLayerConstruct = class extends constructs.Construct {
612
630
  /**
613
631
  * Supported CPU architectures
614
632
  */
615
- compatibleArchitectures: [
616
- awsLambda.Architecture.ARM_64,
617
- awsLambda.Architecture.X86_64
618
- ],
633
+ compatibleArchitectures: [awsLambda.Architecture.ARM_64, awsLambda.Architecture.X86_64],
619
634
  /**
620
635
  * Supported runtimes
621
636
  */
@@ -716,10 +731,14 @@ var BaseS3DeploymentConstruct = class extends constructs.Construct {
716
731
  constructor(scope, id, props) {
717
732
  super(scope, id);
718
733
  if (!props.options?.cloudfrontOptions?.defaultBehavior?.origin && !props?.withS3Bucket && props.withCloudfront) {
719
- throw new toolkit.CustomException("Cloudfront distribution S3_Bucket origins must be defined!");
734
+ throw new toolkit.CustomException(
735
+ "Cloudfront distribution S3_Bucket origins must be defined!"
736
+ );
720
737
  }
721
738
  if (!props.options?.bucketDeploymentOptions?.destinationBucket && !props?.withS3Bucket) {
722
- throw new toolkit.CustomException("Deployment S3_Bucket destination must be defined!");
739
+ throw new toolkit.CustomException(
740
+ "Deployment S3_Bucket destination must be defined!"
741
+ );
723
742
  }
724
743
  if (props?.withS3Bucket) {
725
744
  this.bucket = new BaseS3Construct(this, "bucket", {
@@ -737,13 +756,18 @@ var BaseS3DeploymentConstruct = class extends constructs.Construct {
737
756
  /**
738
757
  * Map additional behaviors and ensure origin is assigned
739
758
  */
740
- additionalBehaviors: Object.entries(props.options?.cloudfrontOptions?.additionalBehaviors || {}).reduce((behavior, [pattern, behaviorOptions]) => {
741
- behavior[pattern] = {
742
- ...behaviorOptions,
743
- origin: behaviorOptions.origin || s3Origin
744
- };
745
- return behavior;
746
- }, {}),
759
+ additionalBehaviors: Object.entries(
760
+ props.options?.cloudfrontOptions?.additionalBehaviors || {}
761
+ ).reduce(
762
+ (behavior, [pattern, behaviorOptions]) => {
763
+ behavior[pattern] = {
764
+ ...behaviorOptions,
765
+ origin: behaviorOptions.origin || s3Origin
766
+ };
767
+ return behavior;
768
+ },
769
+ {}
770
+ ),
747
771
  /**
748
772
  * Default behavior configuration
749
773
  */
@@ -877,5 +901,5 @@ exports.BaseS3DeploymentConstruct = BaseS3DeploymentConstruct;
877
901
  exports.BaseSnsConstruct = BaseSnsConstruct;
878
902
  exports.BaseSqsConstruct = BaseSqsConstruct;
879
903
  exports.BaseVpcConstruct = BaseVpcConstruct;
880
- //# sourceMappingURL=index.cjs.map
881
- //# sourceMappingURL=index.cjs.map
904
+ //# sourceMappingURL=aws-cdk.cjs.map
905
+ //# sourceMappingURL=aws-cdk.cjs.map