@fjall/components-infrastructure 0.1.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 (77) hide show
  1. package/README.md +68 -0
  2. package/dist/index.js +18 -0
  3. package/dist/lib/app.d.ts +6 -0
  4. package/dist/lib/app.js +19 -0
  5. package/dist/lib/config/aws/base/costAllocationTags.d.ts +5 -0
  6. package/dist/lib/config/aws/base/costAllocationTags.js +57 -0
  7. package/dist/lib/config/aws/base/iamIdentityCenter.d.ts +5 -0
  8. package/dist/lib/config/aws/base/iamIdentityCenter.js +86 -0
  9. package/dist/lib/config/aws/base/identityCenter.d.ts +5 -0
  10. package/dist/lib/config/aws/base/identityCenter.js +90 -0
  11. package/dist/lib/config/aws/base/ipam.d.ts +5 -0
  12. package/dist/lib/config/aws/base/ipam.js +29 -0
  13. package/dist/lib/config/aws/base/ipamPool.d.ts +5 -0
  14. package/dist/lib/config/aws/base/ipamPool.js +46 -0
  15. package/dist/lib/examples/custom-resources/lambda/aws-cost-allocation-tags/awsCostAllocationTagsLambda.d.ts +2 -0
  16. package/dist/lib/examples/custom-resources/lambda/aws-cost-allocation-tags/awsCostAllocationTagsLambda.js +62 -0
  17. package/dist/lib/examples/cutomResourceExample.d.ts +6 -0
  18. package/dist/lib/examples/cutomResourceExample.js +45 -0
  19. package/dist/lib/index.d.ts +1 -0
  20. package/dist/lib/index.js +18 -0
  21. package/dist/lib/patterns/aws/customResource.d.ts +7 -0
  22. package/dist/lib/patterns/aws/customResource.js +28 -0
  23. package/dist/lib/patterns/aws/index.d.ts +2 -0
  24. package/dist/lib/patterns/aws/index.js +19 -0
  25. package/dist/lib/patterns/aws/multiEnvironmentOrganisation.d.ts +33 -0
  26. package/dist/lib/patterns/aws/multiEnvironmentOrganisation.js +107 -0
  27. package/dist/lib/patterns/aws/webApp.d.ts +17 -0
  28. package/dist/lib/patterns/aws/webApp.js +36 -0
  29. package/dist/lib/resources/aws/awsStack.d.ts +36 -0
  30. package/dist/lib/resources/aws/awsStack.js +86 -0
  31. package/dist/lib/resources/aws/compute/__tests__/fargate.test.d.ts +1 -0
  32. package/dist/lib/resources/aws/compute/__tests__/fargate.test.js +21 -0
  33. package/dist/lib/resources/aws/compute/fargate.d.ts +23 -0
  34. package/dist/lib/resources/aws/compute/fargate.js +50 -0
  35. package/dist/lib/resources/aws/compute/lambda.d.ts +18 -0
  36. package/dist/lib/resources/aws/compute/lambda.js +28 -0
  37. package/dist/lib/resources/aws/constant/__tests__/vpc.test.d.ts +1 -0
  38. package/dist/lib/resources/aws/constant/__tests__/vpc.test.js +13 -0
  39. package/dist/lib/resources/aws/constant/ecr.d.ts +12 -0
  40. package/dist/lib/resources/aws/constant/ecr.js +29 -0
  41. package/dist/lib/resources/aws/constant/vpc.d.ts +18 -0
  42. package/dist/lib/resources/aws/constant/vpc.js +53 -0
  43. package/dist/lib/resources/aws/iam/assignment.d.ts +5 -0
  44. package/dist/lib/resources/aws/iam/assignment.js +13 -0
  45. package/dist/lib/resources/aws/iam/group.d.ts +5 -0
  46. package/dist/lib/resources/aws/iam/group.js +15 -0
  47. package/dist/lib/resources/aws/iam/iamRole.d.ts +5 -0
  48. package/dist/lib/resources/aws/iam/iamRole.js +18 -0
  49. package/dist/lib/resources/aws/iam/permissionSet.d.ts +5 -0
  50. package/dist/lib/resources/aws/iam/permissionSet.js +13 -0
  51. package/dist/lib/resources/aws/iam/role.d.ts +5 -0
  52. package/dist/lib/resources/aws/iam/role.js +18 -0
  53. package/dist/lib/resources/aws/logging/logGroup.d.ts +9 -0
  54. package/dist/lib/resources/aws/logging/logGroup.js +24 -0
  55. package/dist/lib/resources/aws/networking/hostedZone.d.ts +5 -0
  56. package/dist/lib/resources/aws/networking/hostedZone.js +20 -0
  57. package/dist/lib/resources/aws/networking/ipam.d.ts +5 -0
  58. package/dist/lib/resources/aws/networking/ipam.js +15 -0
  59. package/dist/lib/resources/aws/networking/ipamPool.d.ts +9 -0
  60. package/dist/lib/resources/aws/networking/ipamPool.js +35 -0
  61. package/dist/lib/resources/aws/store/database.d.ts +13 -0
  62. package/dist/lib/resources/aws/store/database.js +29 -0
  63. package/dist/lib/resources/aws/store/rds.d.ts +25 -0
  64. package/dist/lib/resources/aws/store/rds.js +90 -0
  65. package/dist/lib/resources/aws/utilities/awsCustomResource.d.ts +6 -0
  66. package/dist/lib/resources/aws/utilities/awsCustomResource.js +24 -0
  67. package/dist/lib/resources/aws/utilities/cfnOutput.d.ts +5 -0
  68. package/dist/lib/resources/aws/utilities/cfnOutput.js +16 -0
  69. package/dist/lib/resources/aws/utilities/customResource.d.ts +5 -0
  70. package/dist/lib/resources/aws/utilities/customResource.js +13 -0
  71. package/dist/lib/resources/aws/utilities/customResourceProvider.d.ts +5 -0
  72. package/dist/lib/resources/aws/utilities/customResourceProvider.js +19 -0
  73. package/dist/lib/utils/addSuffixToEmail.d.ts +1 -0
  74. package/dist/lib/utils/addSuffixToEmail.js +7 -0
  75. package/dist/lib/utils/getConfig.d.ts +7 -0
  76. package/dist/lib/utils/getConfig.js +22 -0
  77. package/package.json +59 -0
@@ -0,0 +1,18 @@
1
+ import { SingletonFunction, Code, Runtime } from "aws-cdk-lib/aws-lambda";
2
+ import { PolicyDocument } from "aws-cdk-lib/aws-iam";
3
+ import { Construct } from "constructs";
4
+ import { Role } from "../iam/role";
5
+ export interface lambdaSingletonFunctionProps {
6
+ code: Code;
7
+ handler: string;
8
+ roleDescription: string;
9
+ runtime: Runtime;
10
+ uuid?: string;
11
+ inlinePolicy: {
12
+ [name: string]: PolicyDocument;
13
+ };
14
+ }
15
+ export declare class lambdaSingletonFunction extends SingletonFunction {
16
+ role: Role;
17
+ constructor(scope: Construct, id: string, props: lambdaSingletonFunctionProps);
18
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.lambdaSingletonFunction = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
6
+ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
7
+ const uuid_1 = require("uuid");
8
+ const role_1 = require("../iam/role");
9
+ class lambdaSingletonFunction extends aws_lambda_1.SingletonFunction {
10
+ constructor(scope, id, props) {
11
+ super(scope, id, {
12
+ ...props,
13
+ uuid: (0, uuid_1.v4)(),
14
+ timeout: aws_cdk_lib_1.Duration.seconds(300),
15
+ runtime: props.runtime
16
+ });
17
+ this.role = new role_1.Role(this, `${id}LambdaRole`, {
18
+ assumedBy: new aws_iam_1.ServicePrincipal("lambda.amazonaws.com"),
19
+ description: props.roleDescription || `${id} Lambda IAM role`,
20
+ inlinePolicies: props.inlinePolicy,
21
+ managedPolicies: [
22
+ aws_iam_1.ManagedPolicy.fromAwsManagedPolicyName("service-role/AWSLambdaBasicExecutionRole")
23
+ ]
24
+ });
25
+ }
26
+ }
27
+ exports.lambdaSingletonFunction = lambdaSingletonFunction;
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvY29tcHV0ZS9sYW1iZGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXVDO0FBQ3ZDLHVEQUEwRTtBQUMxRSxpREFJNkI7QUFFN0IsK0JBQWtDO0FBRWxDLHNDQUFtQztBQWFuQyxNQUFhLHVCQUF3QixTQUFRLDhCQUFpQjtJQUc1RCxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFtQztRQUVuQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsS0FBSztZQUNSLElBQUksRUFBRSxJQUFBLFNBQUksR0FBRTtZQUNaLE9BQU8sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDOUIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1NBQ3ZCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxXQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUU7WUFDNUMsU0FBUyxFQUFFLElBQUksMEJBQWdCLENBQUMsc0JBQXNCLENBQUM7WUFDdkQsV0FBVyxFQUFFLEtBQUssQ0FBQyxlQUFlLElBQUksR0FBRyxFQUFFLGtCQUFrQjtZQUM3RCxjQUFjLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDbEMsZUFBZSxFQUFFO2dCQUNmLHVCQUFhLENBQUMsd0JBQXdCLENBQ3BDLDBDQUEwQyxDQUMzQzthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBMUJELDBEQTBCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBTaW5nbGV0b25GdW5jdGlvbiwgQ29kZSwgUnVudGltZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQge1xuICBQb2xpY3lEb2N1bWVudCxcbiAgU2VydmljZVByaW5jaXBhbCxcbiAgTWFuYWdlZFBvbGljeVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tIFwidXVpZFwiO1xuXG5pbXBvcnQgeyBSb2xlIH0gZnJvbSBcIi4uL2lhbS9yb2xlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgbGFtYmRhU2luZ2xldG9uRnVuY3Rpb25Qcm9wcyB7XG4gIGNvZGU6IENvZGU7XG4gIGhhbmRsZXI6IHN0cmluZztcbiAgcm9sZURlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHJ1bnRpbWU6IFJ1bnRpbWU7XG4gIHV1aWQ/OiBzdHJpbmc7XG4gIGlubGluZVBvbGljeToge1xuICAgIFtuYW1lOiBzdHJpbmddOiBQb2xpY3lEb2N1bWVudDtcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIGxhbWJkYVNpbmdsZXRvbkZ1bmN0aW9uIGV4dGVuZHMgU2luZ2xldG9uRnVuY3Rpb24ge1xuICBwdWJsaWMgcm9sZTogUm9sZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IGxhbWJkYVNpbmdsZXRvbkZ1bmN0aW9uUHJvcHNcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHV1aWQ6IHV1aWQoKSxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMzAwKSxcbiAgICAgIHJ1bnRpbWU6IHByb3BzLnJ1bnRpbWVcbiAgICB9KTtcblxuICAgIHRoaXMucm9sZSA9IG5ldyBSb2xlKHRoaXMsIGAke2lkfUxhbWJkYVJvbGVgLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBTZXJ2aWNlUHJpbmNpcGFsKFwibGFtYmRhLmFtYXpvbmF3cy5jb21cIiksXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMucm9sZURlc2NyaXB0aW9uIHx8IGAke2lkfSBMYW1iZGEgSUFNIHJvbGVgLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHByb3BzLmlubGluZVBvbGljeSxcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW1xuICAgICAgICBNYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcbiAgICAgICAgICBcInNlcnZpY2Utcm9sZS9BV1NMYW1iZGFCYXNpY0V4ZWN1dGlvblJvbGVcIlxuICAgICAgICApXG4gICAgICBdXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const assertions_1 = require("aws-cdk-lib/assertions");
4
+ const awsStack_1 = require("../../awsStack");
5
+ const vpc_1 = require("../vpc");
6
+ describe("VPC", () => {
7
+ it("creates VPC construct", () => {
8
+ const awsStack = new awsStack_1.default("Test").addNetwork(vpc_1.Vpc.build("VPC"));
9
+ const template = assertions_1.Template.fromStack(awsStack.getStack());
10
+ expect(template.toJSON()).toMatchSnapshot();
11
+ });
12
+ });
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9jb25zdGFudC9fX3Rlc3RzX18vdnBjLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx1REFBa0Q7QUFDbEQsNkNBQXNDO0FBQ3RDLGdDQUE2QjtBQUU3QixRQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRTtJQUNuQixFQUFFLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxFQUFFO1FBQy9CLE1BQU0sUUFBUSxHQUFHLElBQUksa0JBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRW5FLE1BQU0sUUFBUSxHQUFHLHFCQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM5QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXNzZXJ0aW9uc1wiO1xuaW1wb3J0IEF3c1N0YWNrIGZyb20gXCIuLi8uLi9hd3NTdGFja1wiO1xuaW1wb3J0IHsgVnBjIH0gZnJvbSBcIi4uL3ZwY1wiO1xuXG5kZXNjcmliZShcIlZQQ1wiLCAoKSA9PiB7XG4gIGl0KFwiY3JlYXRlcyBWUEMgY29uc3RydWN0XCIsICgpID0+IHtcbiAgICBjb25zdCBhd3NTdGFjayA9IG5ldyBBd3NTdGFjayhcIlRlc3RcIikuYWRkTmV0d29yayhWcGMuYnVpbGQoXCJWUENcIikpO1xuXG4gICAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soYXdzU3RhY2suZ2V0U3RhY2soKSk7XG4gICAgZXhwZWN0KHRlbXBsYXRlLnRvSlNPTigpKS50b01hdGNoU25hcHNob3QoKTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,12 @@
1
+ import { Construct } from "constructs";
2
+ import { Repository, RepositoryProps } from "aws-cdk-lib/aws-ecr";
3
+ import { StackBuilder } from "../awsStack";
4
+ interface EcrProps {
5
+ }
6
+ export default class Ecr extends Repository {
7
+ private outputs;
8
+ constructor(scope: Construct, id: string, props?: EcrProps);
9
+ static getRepositoryProps(props?: EcrProps): RepositoryProps;
10
+ static build(id: string, props?: EcrProps): (scope: StackBuilder) => Ecr;
11
+ }
12
+ export {};
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const aws_ecr_1 = require("aws-cdk-lib/aws-ecr");
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ class Ecr extends aws_ecr_1.Repository {
6
+ constructor(scope, id, props) {
7
+ super(scope, id, Ecr.getRepositoryProps(props));
8
+ this.outputs = [];
9
+ this.outputs.push(new aws_cdk_lib_1.CfnOutput(this, "RepositoryName", {
10
+ value: this.repositoryName,
11
+ exportName: "RepositoryName"
12
+ }));
13
+ }
14
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
15
+ static getRepositoryProps(props) {
16
+ // todo: lifeCycleRules
17
+ // todo: Encryption & EncryptionKey (default is AWS managed KMS key)
18
+ return {
19
+ imageScanOnPush: true,
20
+ imageTagMutability: aws_ecr_1.TagMutability.MUTABLE,
21
+ removalPolicy: aws_cdk_lib_1.RemovalPolicy.RETAIN
22
+ };
23
+ }
24
+ static build(id, props) {
25
+ return (scope) => new Ecr(scope.getStack(), id, props);
26
+ }
27
+ }
28
+ exports.default = Ecr;
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvY29uc3RhbnQvZWNyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsaURBSTZCO0FBQzdCLDZDQUF1RDtBQU12RCxNQUFxQixHQUFJLFNBQVEsb0JBQVU7SUFHekMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFnQjtRQUN4RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUgxQyxZQUFPLEdBQWdCLEVBQUUsQ0FBQztRQUtoQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDZixJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQ3BDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYztZQUMxQixVQUFVLEVBQUUsZ0JBQWdCO1NBQzdCLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELDZEQUE2RDtJQUM3RCxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBZ0I7UUFDeEMsdUJBQXVCO1FBQ3ZCLG9FQUFvRTtRQUNwRSxPQUFPO1lBQ0wsZUFBZSxFQUFFLElBQUk7WUFDckIsa0JBQWtCLEVBQUUsdUJBQWEsQ0FBQyxPQUFPO1lBQ3pDLGFBQWEsRUFBRSwyQkFBYSxDQUFDLE1BQU07U0FDcEMsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQVUsRUFBRSxLQUFnQjtRQUN2QyxPQUFPLENBQUMsS0FBbUIsRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2RSxDQUFDO0NBQ0Y7QUE1QkQsc0JBNEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7XG4gIFJlcG9zaXRvcnksXG4gIFJlcG9zaXRvcnlQcm9wcyxcbiAgVGFnTXV0YWJpbGl0eVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjclwiO1xuaW1wb3J0IHsgUmVtb3ZhbFBvbGljeSwgQ2ZuT3V0cHV0IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5cbmltcG9ydCB7IFN0YWNrQnVpbGRlciB9IGZyb20gXCIuLi9hd3NTdGFja1wiO1xuXG5pbnRlcmZhY2UgRWNyUHJvcHMge31cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWNyIGV4dGVuZHMgUmVwb3NpdG9yeSB7XG4gIHByaXZhdGUgb3V0cHV0czogQ2ZuT3V0cHV0W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IEVjclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBFY3IuZ2V0UmVwb3NpdG9yeVByb3BzKHByb3BzKSk7XG5cbiAgICB0aGlzLm91dHB1dHMucHVzaChcbiAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJSZXBvc2l0b3J5TmFtZVwiLCB7XG4gICAgICAgIHZhbHVlOiB0aGlzLnJlcG9zaXRvcnlOYW1lLFxuICAgICAgICBleHBvcnROYW1lOiBcIlJlcG9zaXRvcnlOYW1lXCJcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgc3RhdGljIGdldFJlcG9zaXRvcnlQcm9wcyhwcm9wcz86IEVjclByb3BzKTogUmVwb3NpdG9yeVByb3BzIHtcbiAgICAvLyB0b2RvOiBsaWZlQ3ljbGVSdWxlc1xuICAgIC8vIHRvZG86IEVuY3J5cHRpb24gJiBFbmNyeXB0aW9uS2V5IChkZWZhdWx0IGlzIEFXUyBtYW5hZ2VkIEtNUyBrZXkpXG4gICAgcmV0dXJuIHtcbiAgICAgIGltYWdlU2Nhbk9uUHVzaDogdHJ1ZSxcbiAgICAgIGltYWdlVGFnTXV0YWJpbGl0eTogVGFnTXV0YWJpbGl0eS5NVVRBQkxFLFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5SRVRBSU5cbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKGlkOiBzdHJpbmcsIHByb3BzPzogRWNyUHJvcHMpOiAoc2NvcGU6IFN0YWNrQnVpbGRlcikgPT4gRWNyIHtcbiAgICByZXR1cm4gKHNjb3BlOiBTdGFja0J1aWxkZXIpID0+IG5ldyBFY3Ioc2NvcGUuZ2V0U3RhY2soKSwgaWQsIHByb3BzKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,18 @@
1
+ import { Construct } from "constructs";
2
+ import * as ec2 from "aws-cdk-lib/aws-ec2";
3
+ import { StackBuilder } from "../awsStack";
4
+ export declare class Vpc extends ec2.Vpc {
5
+ constructor(scope: Construct, id: string, props?: ec2.VpcProps);
6
+ static build(id: string, props?: ec2.VpcProps): (sb: StackBuilder) => Construct;
7
+ /**
8
+ * Imports a pre-existing VPC Resource into your Stack
9
+ *
10
+ * Before using an import method ensure you have set the account and region props
11
+ * when creating your AwsStack.
12
+ *
13
+ * @param id
14
+ * @param vpcStackName
15
+ * @returns
16
+ */
17
+ static import(id: string, vpcStackName: string): (sb: StackBuilder) => Construct;
18
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Vpc = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const ec2 = require("aws-cdk-lib/aws-ec2");
6
+ const logGroup_1 = require("../logging/logGroup");
7
+ class Vpc extends ec2.Vpc {
8
+ constructor(scope, id, props) {
9
+ super(scope, `vpc-${id}`, {
10
+ ...props,
11
+ vpcName: `vpc-${id}`,
12
+ availabilityZones: ["us-east-1a", "us-east-1b", "us-east-1c"],
13
+ flowLogs: {
14
+ [`${id}VpcFlowLogs`]: {
15
+ destination: ec2.FlowLogDestination.toCloudWatchLogs(new logGroup_1.LogGroup(scope, `${id}FlowLogGroup`, {
16
+ logGroupName: `/vpc/flowlogs/vpc-${id}/`,
17
+ removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY
18
+ }))
19
+ }
20
+ }
21
+ // ipAddresses: ec2.IpAddresses.awsIpamAllocation({
22
+ // ipv4IpamPoolId: "ipam-pool-0f0c5c711e4a9124c",
23
+ // ipv4NetmaskLength: 20,
24
+ // defaultSubnetIpv4NetmaskLength: 23
25
+ // })
26
+ });
27
+ aws_cdk_lib_1.Tags.of(this).add("Pool", "Production");
28
+ }
29
+ static build(id, props) {
30
+ return (sb) => {
31
+ return new this(sb.getStack(), id, props);
32
+ };
33
+ }
34
+ /**
35
+ * Imports a pre-existing VPC Resource into your Stack
36
+ *
37
+ * Before using an import method ensure you have set the account and region props
38
+ * when creating your AwsStack.
39
+ *
40
+ * @param id
41
+ * @param vpcStackName
42
+ * @returns
43
+ */
44
+ static import(id, vpcStackName) {
45
+ return (sb) => {
46
+ return ec2.Vpc.fromLookup(sb.getStack(), id, {
47
+ vpcName: `${vpcStackName}/${id}`
48
+ });
49
+ };
50
+ }
51
+ }
52
+ exports.Vpc = Vpc;
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvY29uc3RhbnQvdnBjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDZDQUFrRDtBQUNsRCwyQ0FBMkM7QUFHM0Msa0RBQStDO0FBRS9DLE1BQWEsR0FBSSxTQUFRLEdBQUcsQ0FBQyxHQUFHO0lBQzlCLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDNUQsS0FBSyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO1lBQ3hCLEdBQUcsS0FBSztZQUNSLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNwQixpQkFBaUIsRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFDO1lBQzdELFFBQVEsRUFBRTtnQkFDUixDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsRUFBRTtvQkFDcEIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FDbEQsSUFBSSxtQkFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFO3dCQUN2QyxZQUFZLEVBQUUscUJBQXFCLEVBQUUsR0FBRzt3QkFDeEMsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztxQkFDckMsQ0FBQyxDQUNIO2lCQUNGO2FBQ0Y7WUFDRCxtREFBbUQ7WUFDbkQsbURBQW1EO1lBQ25ELDJCQUEyQjtZQUMzQix1Q0FBdUM7WUFDdkMsS0FBSztTQUNOLENBQUMsQ0FBQztRQUVILGtCQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQ1YsRUFBVSxFQUNWLEtBQW9CO1FBRXBCLE9BQU8sQ0FBQyxFQUFnQixFQUFFLEVBQUU7WUFDMUIsT0FBTyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFDRDs7Ozs7Ozs7O09BU0c7SUFDSCxNQUFNLENBQUMsTUFBTSxDQUNYLEVBQVUsRUFDVixZQUFvQjtRQUVwQixPQUFPLENBQUMsRUFBZ0IsRUFBRSxFQUFFO1lBQzFCLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRTtnQkFDM0MsT0FBTyxFQUFFLEdBQUcsWUFBWSxJQUFJLEVBQUUsRUFBRTthQUNqQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF0REQsa0JBc0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFRhZ3MsIFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuXG5pbXBvcnQgeyBTdGFja0J1aWxkZXIgfSBmcm9tIFwiLi4vYXdzU3RhY2tcIjtcbmltcG9ydCB7IExvZ0dyb3VwIH0gZnJvbSBcIi4uL2xvZ2dpbmcvbG9nR3JvdXBcIjtcblxuZXhwb3J0IGNsYXNzIFZwYyBleHRlbmRzIGVjMi5WcGMge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IGVjMi5WcGNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBgdnBjLSR7aWR9YCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICB2cGNOYW1lOiBgdnBjLSR7aWR9YCxcbiAgICAgIGF2YWlsYWJpbGl0eVpvbmVzOiBbXCJ1cy1lYXN0LTFhXCIsIFwidXMtZWFzdC0xYlwiLCBcInVzLWVhc3QtMWNcIl0sXG4gICAgICBmbG93TG9nczoge1xuICAgICAgICBbYCR7aWR9VnBjRmxvd0xvZ3NgXToge1xuICAgICAgICAgIGRlc3RpbmF0aW9uOiBlYzIuRmxvd0xvZ0Rlc3RpbmF0aW9uLnRvQ2xvdWRXYXRjaExvZ3MoXG4gICAgICAgICAgICBuZXcgTG9nR3JvdXAoc2NvcGUsIGAke2lkfUZsb3dMb2dHcm91cGAsIHtcbiAgICAgICAgICAgICAgbG9nR3JvdXBOYW1lOiBgL3ZwYy9mbG93bG9ncy92cGMtJHtpZH0vYCxcbiAgICAgICAgICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gaXBBZGRyZXNzZXM6IGVjMi5JcEFkZHJlc3Nlcy5hd3NJcGFtQWxsb2NhdGlvbih7XG4gICAgICAvLyAgIGlwdjRJcGFtUG9vbElkOiBcImlwYW0tcG9vbC0wZjBjNWM3MTFlNGE5MTI0Y1wiLFxuICAgICAgLy8gICBpcHY0TmV0bWFza0xlbmd0aDogMjAsXG4gICAgICAvLyAgIGRlZmF1bHRTdWJuZXRJcHY0TmV0bWFza0xlbmd0aDogMjNcbiAgICAgIC8vIH0pXG4gICAgfSk7XG5cbiAgICBUYWdzLm9mKHRoaXMpLmFkZChcIlBvb2xcIiwgXCJQcm9kdWN0aW9uXCIpO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM/OiBlYzIuVnBjUHJvcHNcbiAgKTogKHNiOiBTdGFja0J1aWxkZXIpID0+IENvbnN0cnVjdCB7XG4gICAgcmV0dXJuIChzYjogU3RhY2tCdWlsZGVyKSA9PiB7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoc2IuZ2V0U3RhY2soKSwgaWQsIHByb3BzKTtcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBJbXBvcnRzIGEgcHJlLWV4aXN0aW5nIFZQQyBSZXNvdXJjZSBpbnRvIHlvdXIgU3RhY2tcbiAgICpcbiAgICogQmVmb3JlIHVzaW5nIGFuIGltcG9ydCBtZXRob2QgZW5zdXJlIHlvdSBoYXZlIHNldCB0aGUgYWNjb3VudCBhbmQgcmVnaW9uIHByb3BzXG4gICAqICB3aGVuIGNyZWF0aW5nIHlvdXIgQXdzU3RhY2suXG4gICAqXG4gICAqIEBwYXJhbSBpZFxuICAgKiBAcGFyYW0gdnBjU3RhY2tOYW1lXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBzdGF0aWMgaW1wb3J0KFxuICAgIGlkOiBzdHJpbmcsXG4gICAgdnBjU3RhY2tOYW1lOiBzdHJpbmdcbiAgKTogKHNiOiBTdGFja0J1aWxkZXIpID0+IENvbnN0cnVjdCB7XG4gICAgcmV0dXJuIChzYjogU3RhY2tCdWlsZGVyKSA9PiB7XG4gICAgICByZXR1cm4gZWMyLlZwYy5mcm9tTG9va3VwKHNiLmdldFN0YWNrKCksIGlkLCB7XG4gICAgICAgIHZwY05hbWU6IGAke3ZwY1N0YWNrTmFtZX0vJHtpZH1gXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ import { CfnAssignment, CfnAssignmentProps } from "aws-cdk-lib/aws-sso";
2
+ import { Construct } from "constructs";
3
+ export declare class Assignment extends CfnAssignment {
4
+ constructor(scope: Construct, id: string, props: CfnAssignmentProps);
5
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Assignment = void 0;
4
+ const aws_sso_1 = require("aws-cdk-lib/aws-sso");
5
+ class Assignment extends aws_sso_1.CfnAssignment {
6
+ constructor(scope, id, props) {
7
+ super(scope, id, {
8
+ ...props
9
+ });
10
+ }
11
+ }
12
+ exports.Assignment = Assignment;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWdubWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL2lhbS9hc3NpZ25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUF3RTtBQUd4RSxNQUFhLFVBQVcsU0FBUSx1QkFBYTtJQUMzQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXlCO1FBQ2pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxLQUFLO1NBQ1QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBTkQsZ0NBTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5Bc3NpZ25tZW50LCBDZm5Bc3NpZ25tZW50UHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNzb1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuZXhwb3J0IGNsYXNzIEFzc2lnbm1lbnQgZXh0ZW5kcyBDZm5Bc3NpZ25tZW50IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENmbkFzc2lnbm1lbnRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHNcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,5 @@
1
+ import { CfnGroup, CfnGroupProps } from 'aws-cdk-lib/aws-identitystore';
2
+ import { Construct } from "constructs";
3
+ export declare class Group extends CfnGroup {
4
+ constructor(scope: Construct, id: string, props: CfnGroupProps);
5
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Group = void 0;
4
+ const aws_identitystore_1 = require("aws-cdk-lib/aws-identitystore");
5
+ class Group extends aws_identitystore_1.CfnGroup {
6
+ constructor(scope, id, props) {
7
+ super(scope, id, {
8
+ ...props,
9
+ description: props.description || `Iam Identity Center Group ${props.displayName}`,
10
+ identityStoreId: props.identityStoreId
11
+ });
12
+ }
13
+ }
14
+ exports.Group = Group;
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9pYW0vZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQXdFO0FBR3hFLE1BQWEsS0FBTSxTQUFRLDRCQUFRO0lBQ2pDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDNUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixHQUFHLEtBQUs7WUFDUixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSw2QkFBNkIsS0FBSyxDQUFDLFdBQVcsRUFBRTtZQUNsRixlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7U0FDdkMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBUkQsc0JBUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5Hcm91cCwgQ2ZuR3JvdXBQcm9wcyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pZGVudGl0eXN0b3JlJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmV4cG9ydCBjbGFzcyBHcm91cCBleHRlbmRzIENmbkdyb3VwIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENmbkdyb3VwUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uIHx8IGBJYW0gSWRlbnRpdHkgQ2VudGVyIEdyb3VwICR7cHJvcHMuZGlzcGxheU5hbWV9YCxcbiAgICAgIGlkZW50aXR5U3RvcmVJZDogcHJvcHMuaWRlbnRpdHlTdG9yZUlkXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ import { Role, RoleProps } from "aws-cdk-lib/aws-iam";
2
+ import { Construct } from "constructs";
3
+ export declare class IamRole extends Role {
4
+ constructor(scope: Construct, id: string, props: RoleProps);
5
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IamRole = void 0;
4
+ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
5
+ class IamRole extends aws_iam_1.Role {
6
+ constructor(scope, id, props) {
7
+ super(scope, id, {
8
+ ...props,
9
+ assumedBy: props.assumedBy,
10
+ description: props.description,
11
+ inlinePolicies: props.inlinePolicies,
12
+ path: props.path,
13
+ roleName: props.roleName
14
+ });
15
+ }
16
+ }
17
+ exports.IamRole = IamRole;
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFtUm9sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL2lhbS9pYW1Sb2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUFzRDtBQUd0RCxNQUFhLE9BQVEsU0FBUSxjQUFJO0lBQy9CLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBZ0I7UUFDeEQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixHQUFHLEtBQUs7WUFDUixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDMUIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLGNBQWMsRUFBRSxLQUFLLENBQUMsY0FBYztZQUNwQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1NBQ3pCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVhELDBCQVdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm9sZSwgUm9sZVByb3BzIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmV4cG9ydCBjbGFzcyBJYW1Sb2xlIGV4dGVuZHMgUm9sZSB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSb2xlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgYXNzdW1lZEJ5OiBwcm9wcy5hc3N1bWVkQnksXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBpbmxpbmVQb2xpY2llczogcHJvcHMuaW5saW5lUG9saWNpZXMsXG4gICAgICBwYXRoOiBwcm9wcy5wYXRoLFxuICAgICAgcm9sZU5hbWU6IHByb3BzLnJvbGVOYW1lXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ import { CfnPermissionSet, CfnPermissionSetProps } from "aws-cdk-lib/aws-sso";
2
+ import { Construct } from "constructs";
3
+ export declare class PermissionSet extends CfnPermissionSet {
4
+ constructor(scope: Construct, id: string, props: CfnPermissionSetProps);
5
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PermissionSet = void 0;
4
+ const aws_sso_1 = require("aws-cdk-lib/aws-sso");
5
+ class PermissionSet extends aws_sso_1.CfnPermissionSet {
6
+ constructor(scope, id, props) {
7
+ super(scope, id, {
8
+ ...props
9
+ });
10
+ }
11
+ }
12
+ exports.PermissionSet = PermissionSet;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvblNldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL2lhbS9wZXJtaXNzaW9uU2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUE4RTtBQUc5RSxNQUFhLGFBQWMsU0FBUSwwQkFBZ0I7SUFDakQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE0QjtRQUNwRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQU5ELHNDQU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuUGVybWlzc2lvblNldCwgQ2ZuUGVybWlzc2lvblNldFByb3BzIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zc29cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9uU2V0IGV4dGVuZHMgQ2ZuUGVybWlzc2lvblNldCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDZm5QZXJtaXNzaW9uU2V0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ import * as iam from "aws-cdk-lib/aws-iam";
2
+ import { Construct } from "constructs";
3
+ export declare class Role extends iam.Role {
4
+ constructor(scope: Construct, id: string, props: iam.RoleProps);
5
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Role = void 0;
4
+ const iam = require("aws-cdk-lib/aws-iam");
5
+ class Role extends iam.Role {
6
+ constructor(scope, id, props) {
7
+ super(scope, id, {
8
+ ...props,
9
+ assumedBy: props.assumedBy,
10
+ description: props.description,
11
+ inlinePolicies: props.inlinePolicies,
12
+ path: props.path,
13
+ roleName: props.roleName
14
+ });
15
+ }
16
+ }
17
+ exports.Role = Role;
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL2lhbS9yb2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUEyQztBQUczQyxNQUFhLElBQUssU0FBUSxHQUFHLENBQUMsSUFBSTtJQUNoQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW9CO1FBQzVELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxLQUFLO1lBQ1IsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWM7WUFDcEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtTQUN6QixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFYRCxvQkFXQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuZXhwb3J0IGNsYXNzIFJvbGUgZXh0ZW5kcyBpYW0uUm9sZSB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBpYW0uUm9sZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGFzc3VtZWRCeTogcHJvcHMuYXNzdW1lZEJ5LFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHByb3BzLmlubGluZVBvbGljaWVzLFxuICAgICAgcGF0aDogcHJvcHMucGF0aCxcbiAgICAgIHJvbGVOYW1lOiBwcm9wcy5yb2xlTmFtZVxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,9 @@
1
+ import { Stack, StackProps } from "aws-cdk-lib";
2
+ import * as logs from "aws-cdk-lib/aws-logs";
3
+ import { Construct } from "constructs";
4
+ export declare class LogGroup extends logs.LogGroup {
5
+ constructor(scope: Construct, id: string, props?: logs.LogGroupProps);
6
+ }
7
+ export declare class LogGroupStack extends Stack {
8
+ constructor(scope: Construct, id: string, params: logs.LogGroupProps, props?: StackProps);
9
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LogGroupStack = exports.LogGroup = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const logs = require("aws-cdk-lib/aws-logs");
6
+ class LogGroup extends logs.LogGroup {
7
+ constructor(scope, id, props) {
8
+ super(scope, id, {
9
+ ...props,
10
+ logGroupName: props?.logGroupName
11
+ });
12
+ }
13
+ }
14
+ exports.LogGroup = LogGroup;
15
+ class LogGroupStack extends aws_cdk_lib_1.Stack {
16
+ constructor(scope, id, params, props) {
17
+ super(scope, id, props);
18
+ new LogGroup(this, id, {
19
+ logGroupName: params.logGroupName
20
+ });
21
+ }
22
+ }
23
+ exports.LogGroupStack = LogGroupStack;
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nR3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9sb2dnaW5nL2xvZ0dyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUErQztBQUMvQyw2Q0FBNkM7QUFHN0MsTUFBYSxRQUFTLFNBQVEsSUFBSSxDQUFDLFFBQVE7SUFDekMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjtRQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsS0FBSztZQUNSLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWTtTQUNsQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFQRCw0QkFPQztBQUVELE1BQWEsYUFBYyxTQUFRLG1CQUFLO0lBQ3RDLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLE1BQTBCLEVBQzFCLEtBQWtCO1FBRWxCLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDckIsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZO1NBQ2xDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWJELHNDQWFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0eyBTdGFjaywgU3RhY2tQcm9wcyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmV4cG9ydCBjbGFzcyBMb2dHcm91cCBleHRlbmRzIGxvZ3MuTG9nR3JvdXAge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IGxvZ3MuTG9nR3JvdXBQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBsb2dHcm91cE5hbWU6IHByb3BzPy5sb2dHcm91cE5hbWVcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTG9nR3JvdXBTdGFjayBleHRlbmRzIFN0YWNrIHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHBhcmFtczogbG9ncy5Mb2dHcm91cFByb3BzLFxuICAgIHByb3BzPzogU3RhY2tQcm9wc1xuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIG5ldyBMb2dHcm91cCh0aGlzLCBpZCwge1xuICAgICAgbG9nR3JvdXBOYW1lOiBwYXJhbXMubG9nR3JvdXBOYW1lXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ import { Construct } from "constructs";
2
+ import * as route53 from "aws-cdk-lib/aws-route53";
3
+ export declare class HostedZone extends route53.HostedZone {
4
+ constructor(scope: Construct, id: string, props: route53.HostedZone);
5
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HostedZone = void 0;
4
+ const route53 = require("aws-cdk-lib/aws-route53");
5
+ const logGroup_1 = require("../logging/logGroup");
6
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
7
+ class HostedZone extends route53.HostedZone {
8
+ constructor(scope, id, props) {
9
+ super(scope, id, {
10
+ ...props,
11
+ zoneName: props.zoneName,
12
+ queryLogsLogGroupArn: new logGroup_1.LogGroup(scope, `${props.zoneName}QueryLogGroup`, {
13
+ logGroupName: `/hostedzone/querylogs/${props.zoneName}/`,
14
+ removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY
15
+ }).logGroupArn
16
+ });
17
+ }
18
+ }
19
+ exports.HostedZone = HostedZone;
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdGVkWm9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL25ldHdvcmtpbmcvaG9zdGVkWm9uZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxtREFBbUQ7QUFDbkQsa0RBQStDO0FBQy9DLDZDQUE0QztBQUU1QyxNQUFhLFVBQVcsU0FBUSxPQUFPLENBQUMsVUFBVTtJQUNoRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXlCO1FBQ2pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxLQUFLO1lBQ1IsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLG9CQUFvQixFQUFFLElBQUksbUJBQVEsQ0FDaEMsS0FBSyxFQUNMLEdBQUcsS0FBSyxDQUFDLFFBQVEsZUFBZSxFQUNoQztnQkFDRSxZQUFZLEVBQUUseUJBQXlCLEtBQUssQ0FBQyxRQUFRLEdBQUc7Z0JBQ3hELGFBQWEsRUFBRSwyQkFBYSxDQUFDLE9BQU87YUFDckMsQ0FDRixDQUFDLFdBQVc7U0FDZCxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFmRCxnQ0FlQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgKiBhcyByb3V0ZTUzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHsgTG9nR3JvdXAgfSBmcm9tIFwiLi4vbG9nZ2luZy9sb2dHcm91cFwiO1xuaW1wb3J0IHsgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuXG5leHBvcnQgY2xhc3MgSG9zdGVkWm9uZSBleHRlbmRzIHJvdXRlNTMuSG9zdGVkWm9uZSB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiByb3V0ZTUzLkhvc3RlZFpvbmUpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgem9uZU5hbWU6IHByb3BzLnpvbmVOYW1lLFxuICAgICAgcXVlcnlMb2dzTG9nR3JvdXBBcm46IG5ldyBMb2dHcm91cChcbiAgICAgICAgc2NvcGUsXG4gICAgICAgIGAke3Byb3BzLnpvbmVOYW1lfVF1ZXJ5TG9nR3JvdXBgLFxuICAgICAgICB7XG4gICAgICAgICAgbG9nR3JvdXBOYW1lOiBgL2hvc3RlZHpvbmUvcXVlcnlsb2dzLyR7cHJvcHMuem9uZU5hbWV9L2AsXG4gICAgICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZXG4gICAgICAgIH1cbiAgICAgICkubG9nR3JvdXBBcm5cbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,5 @@
1
+ import { Construct } from 'constructs';
2
+ import * as ec2 from 'aws-cdk-lib/aws-ec2';
3
+ export declare class Ipam extends ec2.CfnIPAM {
4
+ constructor(scope: Construct, id: string, props?: ec2.CfnIPAMProps);
5
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Ipam = void 0;
4
+ const ec2 = require("aws-cdk-lib/aws-ec2");
5
+ // Toggle on IPAM
6
+ class Ipam extends ec2.CfnIPAM {
7
+ constructor(scope, id, props) {
8
+ super(scope, id, {
9
+ ...props,
10
+ description: `Default IPAM`
11
+ });
12
+ }
13
+ }
14
+ exports.Ipam = Ipam;
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL25ldHdvcmtpbmcvaXBhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwyQ0FBMkM7QUFFM0MsaUJBQWlCO0FBQ2pCLE1BQWEsSUFBSyxTQUFRLEdBQUcsQ0FBQyxPQUFPO0lBQ25DLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBd0I7UUFDaEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixHQUFHLEtBQUs7WUFDUixXQUFXLEVBQUUsY0FBYztTQUM1QixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFQRCxvQkFPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuXG4vLyBUb2dnbGUgb24gSVBBTVxuZXhwb3J0IGNsYXNzIElwYW0gZXh0ZW5kcyBlYzIuQ2ZuSVBBTSB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogZWMyLkNmbklQQU1Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBkZXNjcmlwdGlvbjogYERlZmF1bHQgSVBBTWBcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,9 @@
1
+ import { Stack, StackProps } from "aws-cdk-lib";
2
+ import { Construct } from "constructs";
3
+ import * as ec2 from "aws-cdk-lib/aws-ec2";
4
+ export declare class IpamPool extends ec2.CfnIPAMPool {
5
+ constructor(scope: Construct, id: string, props: ec2.CfnIPAMPoolProps);
6
+ }
7
+ export declare class IpamPoolStack extends Stack {
8
+ constructor(scope: Construct, id: string, params: ec2.CfnIPAMPoolProps, props?: StackProps);
9
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IpamPoolStack = exports.IpamPool = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const ec2 = require("aws-cdk-lib/aws-ec2");
6
+ class IpamPool extends ec2.CfnIPAMPool {
7
+ constructor(scope, id, props) {
8
+ super(scope, id, {
9
+ ...props,
10
+ description: props.description,
11
+ addressFamily: props.addressFamily,
12
+ ipamScopeId: props.ipamScopeId,
13
+ allocationResourceTags: props.allocationResourceTags,
14
+ autoImport: true,
15
+ provisionedCidrs: props.provisionedCidrs,
16
+ tags: props.tags,
17
+ locale: props.locale
18
+ });
19
+ }
20
+ }
21
+ exports.IpamPool = IpamPool;
22
+ class IpamPoolStack extends aws_cdk_lib_1.Stack {
23
+ constructor(scope, id, params, props) {
24
+ super(scope, id, props);
25
+ new IpamPool(this, id, {
26
+ description: params.description,
27
+ addressFamily: params.addressFamily,
28
+ ipamScopeId: params.ipamScopeId,
29
+ allocationResourceTags: params.allocationResourceTags,
30
+ locale: params.locale
31
+ });
32
+ }
33
+ }
34
+ exports.IpamPoolStack = IpamPoolStack;
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbVBvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9uZXR3b3JraW5nL2lwYW1Qb29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFnRDtBQUVoRCwyQ0FBMkM7QUFFM0MsTUFBYSxRQUFTLFNBQVEsR0FBRyxDQUFDLFdBQVc7SUFDM0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEyQjtRQUNuRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsS0FBSztZQUNSLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWE7WUFDbEMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxzQkFBc0I7WUFDcEQsVUFBVSxFQUFFLElBQUk7WUFDaEIsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtZQUN4QyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWRELDRCQWNDO0FBRUQsTUFBYSxhQUFjLFNBQVEsbUJBQUs7SUFDdEMsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsTUFBNEIsRUFDNUIsS0FBa0I7UUFFbEIsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRTtZQUNyQixXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVc7WUFDL0IsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhO1lBQ25DLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztZQUMvQixzQkFBc0IsRUFBRSxNQUFNLENBQUMsc0JBQXNCO1lBQ3JELE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtTQUN0QixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFqQkQsc0NBaUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2ssIFN0YWNrUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcblxuZXhwb3J0IGNsYXNzIElwYW1Qb29sIGV4dGVuZHMgZWMyLkNmbklQQU1Qb29sIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IGVjMi5DZm5JUEFNUG9vbFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGFkZHJlc3NGYW1pbHk6IHByb3BzLmFkZHJlc3NGYW1pbHksXG4gICAgICBpcGFtU2NvcGVJZDogcHJvcHMuaXBhbVNjb3BlSWQsXG4gICAgICBhbGxvY2F0aW9uUmVzb3VyY2VUYWdzOiBwcm9wcy5hbGxvY2F0aW9uUmVzb3VyY2VUYWdzLFxuICAgICAgYXV0b0ltcG9ydDogdHJ1ZSxcbiAgICAgIHByb3Zpc2lvbmVkQ2lkcnM6IHByb3BzLnByb3Zpc2lvbmVkQ2lkcnMsXG4gICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgICAgbG9jYWxlOiBwcm9wcy5sb2NhbGVcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSXBhbVBvb2xTdGFjayBleHRlbmRzIFN0YWNrIHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHBhcmFtczogZWMyLkNmbklQQU1Qb29sUHJvcHMsXG4gICAgcHJvcHM/OiBTdGFja1Byb3BzXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgbmV3IElwYW1Qb29sKHRoaXMsIGlkLCB7XG4gICAgICBkZXNjcmlwdGlvbjogcGFyYW1zLmRlc2NyaXB0aW9uLFxuICAgICAgYWRkcmVzc0ZhbWlseTogcGFyYW1zLmFkZHJlc3NGYW1pbHksXG4gICAgICBpcGFtU2NvcGVJZDogcGFyYW1zLmlwYW1TY29wZUlkLFxuICAgICAgYWxsb2NhdGlvblJlc291cmNlVGFnczogcGFyYW1zLmFsbG9jYXRpb25SZXNvdXJjZVRhZ3MsXG4gICAgICBsb2NhbGU6IHBhcmFtcy5sb2NhbGVcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,13 @@
1
+ import { Construct } from "constructs";
2
+ import { IConnectable, Vpc, Connections } from "aws-cdk-lib/aws-ec2";
3
+ import { StackBuilder } from "../awsStack";
4
+ interface DatabaseProps {
5
+ vpc: Vpc;
6
+ }
7
+ export default class Database extends Construct implements IConnectable {
8
+ private readonly resource;
9
+ connections: Connections;
10
+ constructor(scope: Construct, id: string, props: DatabaseProps);
11
+ static build(id: string, props?: DatabaseProps): (sb: StackBuilder) => Construct;
12
+ }
13
+ export {};
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const constructs_1 = require("constructs");
4
+ const rds_1 = require("./rds");
5
+ class Database extends constructs_1.Construct {
6
+ constructor(scope, id, props) {
7
+ super(scope, id);
8
+ //todo: intelligently create the right kind of database based
9
+ // on user properties
10
+ this.resource = new rds_1.default(scope, `${id}Rds`, {
11
+ vpc: props.vpc
12
+ });
13
+ this.connections = this.resource.connections;
14
+ }
15
+ //todo: move to generic 'resource' class
16
+ static build(id, props) {
17
+ return (sb) => {
18
+ const newProps = {
19
+ ...props,
20
+ ...{
21
+ vpc: sb.getNetwork() || props?.vpc
22
+ }
23
+ };
24
+ return new this(sb.getStack(), id, newProps);
25
+ };
26
+ }
27
+ }
28
+ exports.default = Database;
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9zdG9yZS9kYXRhYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDJDQUF1QztBQUd2QywrQkFBd0I7QUFPeEIsTUFBcUIsUUFBUyxTQUFRLHNCQUFTO0lBSTdDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDNUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQiw2REFBNkQ7UUFDN0QscUJBQXFCO1FBRXJCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxhQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7WUFDekMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO1NBQ2YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztJQUMvQyxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLE1BQU0sQ0FBQyxLQUFLLENBQ1YsRUFBVSxFQUNWLEtBQXFCO1FBRXJCLE9BQU8sQ0FBQyxFQUFnQixFQUFFLEVBQUU7WUFDMUIsTUFBTSxRQUFRLEdBQWtCO2dCQUM5QixHQUFHLEtBQUs7Z0JBQ1IsR0FBRztvQkFDRCxHQUFHLEVBQUcsRUFBRSxDQUFDLFVBQVUsRUFBVSxJQUFJLEtBQUssRUFBRSxHQUFHO2lCQUM1QzthQUNGLENBQUM7WUFFRixPQUFPLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBakNELDJCQWlDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBJQ29ubmVjdGFibGUsIFZwYywgQ29ubmVjdGlvbnMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuXG5pbXBvcnQgUmRzIGZyb20gXCIuL3Jkc1wiO1xuaW1wb3J0IHsgU3RhY2tCdWlsZGVyIH0gZnJvbSBcIi4uL2F3c1N0YWNrXCI7XG5cbmludGVyZmFjZSBEYXRhYmFzZVByb3BzIHtcbiAgdnBjOiBWcGM7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERhdGFiYXNlIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUNvbm5lY3RhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZTogUmRzO1xuICBwdWJsaWMgY29ubmVjdGlvbnM6IENvbm5lY3Rpb25zO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhYmFzZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8vdG9kbzogaW50ZWxsaWdlbnRseSBjcmVhdGUgdGhlIHJpZ2h0IGtpbmQgb2YgZGF0YWJhc2UgYmFzZWRcbiAgICAvLyBvbiB1c2VyIHByb3BlcnRpZXNcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgUmRzKHNjb3BlLCBgJHtpZH1SZHNgLCB7XG4gICAgICB2cGM6IHByb3BzLnZwY1xuICAgIH0pO1xuXG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMucmVzb3VyY2UuY29ubmVjdGlvbnM7XG4gIH1cblxuICAvL3RvZG86IG1vdmUgdG8gZ2VuZXJpYyAncmVzb3VyY2UnIGNsYXNzXG4gIHN0YXRpYyBidWlsZChcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzPzogRGF0YWJhc2VQcm9wc1xuICApOiAoc2I6IFN0YWNrQnVpbGRlcikgPT4gQ29uc3RydWN0IHtcbiAgICByZXR1cm4gKHNiOiBTdGFja0J1aWxkZXIpID0+IHtcbiAgICAgIGNvbnN0IG5ld1Byb3BzOiBEYXRhYmFzZVByb3BzID0ge1xuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgLi4ue1xuICAgICAgICAgIHZwYzogKHNiLmdldE5ldHdvcmsoKSBhcyBWcGMpIHx8IHByb3BzPy52cGNcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIG5ldyB0aGlzKHNiLmdldFN0YWNrKCksIGlkLCBuZXdQcm9wcyk7XG4gICAgfTtcbiAgfVxufVxuIl19
@@ -0,0 +1,25 @@
1
+ import { PostgresEngineVersion, MysqlEngineVersion } from "aws-cdk-lib/aws-rds";
2
+ import { InstanceClass, InstanceSize, Vpc, IConnectable, Connections } from "aws-cdk-lib/aws-ec2";
3
+ import { Construct } from "constructs";
4
+ interface RdsProps {
5
+ vpc: Vpc;
6
+ databaseName?: string;
7
+ version?: PostgresEngineVersion | MysqlEngineVersion;
8
+ port?: number;
9
+ instanceClass?: InstanceClass;
10
+ instanceSize?: InstanceSize;
11
+ snapshotRetentionInDays?: number;
12
+ retainSnapshotsOnDeletion?: boolean;
13
+ }
14
+ export default class Rds extends Construct implements IConnectable {
15
+ private databaseInstance;
16
+ private outputs;
17
+ private secret;
18
+ private securityGroup;
19
+ connections: Connections;
20
+ constructor(scope: Construct, id: string, props: RdsProps);
21
+ private addDatabaseInstance;
22
+ private addSecretResource;
23
+ private addSecurityGroup;
24
+ }
25
+ export {};