@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,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
4
+ const aws_rds_1 = require("aws-cdk-lib/aws-rds");
5
+ const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
6
+ const aws_cdk_lib_2 = require("aws-cdk-lib");
7
+ const aws_secretsmanager_1 = require("aws-cdk-lib/aws-secretsmanager");
8
+ const constructs_1 = require("constructs");
9
+ class Rds extends constructs_1.Construct {
10
+ constructor(scope, id, props) {
11
+ super(scope, id);
12
+ this.outputs = [];
13
+ // todo: automatically change class & size based on environment
14
+ const instanceClass = props.instanceClass || aws_ec2_1.InstanceClass.BURSTABLE4_GRAVITON;
15
+ const instanceSize = props.instanceSize || aws_ec2_1.InstanceSize.MICRO;
16
+ const databaseName = props.databaseName || `${id}Database`;
17
+ const port = props.port || 5432;
18
+ const snapshotRetentionInDays = props.snapshotRetentionInDays || 14;
19
+ const retainSnapshotsOnDeletion = props.retainSnapshotsOnDeletion || true;
20
+ const engine = aws_rds_1.DatabaseInstanceEngine.postgres({
21
+ version: props.version ||
22
+ aws_rds_1.PostgresEngineVersion.VER_14_5
23
+ });
24
+ //todo: validate engine & version are an acceptable combination
25
+ this.addSecretResource(id);
26
+ this.addSecurityGroup(id, props.vpc, port);
27
+ this.addDatabaseInstance(scope, `${id}Instance`, props, engine, instanceClass, instanceSize, port, databaseName, snapshotRetentionInDays, retainSnapshotsOnDeletion);
28
+ this.connections = this.securityGroup.connections;
29
+ //todo: multiAz
30
+ //todo: reserved instance families
31
+ //todo: security group
32
+ //todo: cluster
33
+ //todo: automatic rotating credentials
34
+ //todo: database proxy
35
+ //todo: cfn outputs (url)
36
+ //todo: database cname?
37
+ }
38
+ addDatabaseInstance(scope, id, props, engine, instanceClass, instanceSize, port, databaseName, snapshotRetentionInDays, retainSnapshotsOnDeletion) {
39
+ this.databaseInstance = new aws_rds_1.DatabaseInstance(scope, id, {
40
+ vpc: props.vpc,
41
+ // vpcSubnets: { subnetType: SubnetType.PRIVATE_ISOLATED },
42
+ engine: engine,
43
+ instanceType: aws_ec2_1.InstanceType.of(instanceClass, instanceSize),
44
+ credentials: aws_rds_1.Credentials.fromSecret(this.secret),
45
+ port: port,
46
+ securityGroups: [this.securityGroup],
47
+ databaseName: databaseName,
48
+ backupRetention: aws_cdk_lib_1.Duration.days(snapshotRetentionInDays),
49
+ deleteAutomatedBackups: retainSnapshotsOnDeletion,
50
+ removalPolicy: aws_cdk_lib_1.RemovalPolicy.SNAPSHOT
51
+ });
52
+ }
53
+ addSecretResource(id) {
54
+ this.secret = new aws_secretsmanager_1.Secret(this, `${id}Secret`, {
55
+ secretName: `${id}-credentials`,
56
+ generateSecretString: {
57
+ secretStringTemplate: JSON.stringify({
58
+ username: "postgres"
59
+ }),
60
+ excludePunctuation: true,
61
+ includeSpace: false,
62
+ generateStringKey: "password"
63
+ }
64
+ });
65
+ this.outputs.push(new aws_cdk_lib_2.CfnOutput(this, "Secret Name", {
66
+ value: this.secret.secretName
67
+ }));
68
+ this.outputs.push(new aws_cdk_lib_2.CfnOutput(this, "Secret ARN", {
69
+ value: this.secret.secretArn
70
+ }));
71
+ }
72
+ addSecurityGroup(id, vpc, port) {
73
+ this.securityGroup = new aws_ec2_1.SecurityGroup(this, `${id}DBSecurityGroup`, {
74
+ securityGroupName: "Database-SG",
75
+ vpc: vpc
76
+ });
77
+ //todo: retrieve from service not hardcoded vpc?
78
+ // this.securityGroup.connections.allowFrom(ecsService.service, Port.tcp(3306), 'Inbound');
79
+ // Create basic ingress rule to allow access to database through default port
80
+ // this.securityGroup.addIngressRule(
81
+ // Peer.ipv4(vpc.vpcCidrBlock),
82
+ // Port.tcp(port),
83
+ // `Allow port ${port} for database connection from only within the VPC (${vpc.vpcId})`
84
+ // );
85
+ // todo: Double check egress rules with Paul.
86
+ // - What is the default (CDK Diff implies it might be 'everyone'?)
87
+ }
88
+ }
89
+ exports.default = Rds;
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3Mvc3RvcmUvcmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkNBQXNEO0FBQ3RELGlEQU82QjtBQUM3QixpREFRNkI7QUFFN0IsNkNBQXdDO0FBQ3hDLHVFQUF3RDtBQUN4RCwyQ0FBdUM7QUFjdkMsTUFBcUIsR0FBSSxTQUFRLHNCQUFTO0lBT3hDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBZTtRQUN2RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBTlgsWUFBTyxHQUFnQixFQUFFLENBQUM7UUFRaEMsK0RBQStEO1FBQy9ELE1BQU0sYUFBYSxHQUNqQixLQUFLLENBQUMsYUFBYSxJQUFJLHVCQUFhLENBQUMsbUJBQW1CLENBQUM7UUFDM0QsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSSxzQkFBWSxDQUFDLEtBQUssQ0FBQztRQUU5RCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJLEdBQUcsRUFBRSxVQUFVLENBQUM7UUFDM0QsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUM7UUFDaEMsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLENBQUMsdUJBQXVCLElBQUksRUFBRSxDQUFDO1FBQ3BFLE1BQU0seUJBQXlCLEdBQUcsS0FBSyxDQUFDLHlCQUF5QixJQUFJLElBQUksQ0FBQztRQUUxRSxNQUFNLE1BQU0sR0FBRyxnQ0FBc0IsQ0FBQyxRQUFRLENBQUM7WUFDN0MsT0FBTyxFQUNKLEtBQUssQ0FBQyxPQUFpQztnQkFDeEMsK0JBQXFCLENBQUMsUUFBUTtTQUNqQyxDQUFDLENBQUM7UUFFSCwrREFBK0Q7UUFFL0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxF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UUFFTCw2Q0FBNkM7UUFDN0Msb0VBQW9FO0lBQ3RFLENBQUM7Q0FDRjtBQTlIRCxzQkE4SEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtcbiAgQ3JlZGVudGlhbHMsXG4gIERhdGFiYXNlSW5zdGFuY2UsXG4gIERhdGFiYXNlSW5zdGFuY2VFbmdpbmUsXG4gIFBvc3RncmVzRW5naW5lVmVyc2lvbixcbiAgTXlzcWxFbmdpbmVWZXJzaW9uLFxuICBJSW5zdGFuY2VFbmdpbmVcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yZHNcIjtcbmltcG9ydCB7XG4gIEluc3RhbmNlQ2xhc3MsXG4gIEluc3RhbmNlU2l6ZSxcbiAgSW5zdGFuY2VUeXBlLFxuICBTZWN1cml0eUdyb3VwLFxuICBWcGMsXG4gIElDb25uZWN0YWJsZSxcbiAgQ29ubmVjdGlvbnNcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcblxuaW1wb3J0IHsgQ2ZuT3V0cHV0IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBTZWNyZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5pbnRlcmZhY2UgUmRzUHJvcHMge1xuICB2cGM6IFZwYztcbiAgZGF0YWJhc2VOYW1lPzogc3RyaW5nO1xuICB2ZXJzaW9uPzogUG9zdGdyZXNFbmdpbmVWZXJzaW9uIHwgTXlzcWxFbmdpbmVWZXJzaW9uO1xuICBwb3J0PzogbnVtYmVyO1xuICBpbnN0YW5jZUNsYXNzPzogSW5zdGFuY2VDbGFzcztcbiAgaW5zdGFuY2VTaXplPzogSW5zdGFuY2VTaXplO1xuICAvLyBEYXRhYmFzZSBJbnN0YW5jZSBDb25maWd1cmF0aW9uXG4gIHNuYXBzaG90UmV0ZW50aW9uSW5EYXlzPzogbnVtYmVyO1xuICByZXRhaW5TbmFwc2hvdHNPbkRlbGV0aW9uPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmRzIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUNvbm5lY3RhYmxlIHtcbiAgcHJpdmF0ZSBkYXRhYmFzZUluc3RhbmNlOiBEYXRhYmFzZUluc3RhbmNlO1xuICBwcml2YXRlIG91dHB1dHM6IENmbk91dHB1dFtdID0gW107XG4gIHByaXZhdGUgc2VjcmV0OiBTZWNyZXQ7XG4gIHByaXZhdGUgc2VjdXJpdHlHcm91cDogU2VjdXJpdHlHcm91cDtcbiAgcHVibGljIGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUmRzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gdG9kbzogYXV0b21hdGljYWxseSBjaGFuZ2UgY2xhc3MgJiBzaXplIGJhc2VkIG9uIGVudmlyb25tZW50XG4gICAgY29uc3QgaW5zdGFuY2VDbGFzcyA9XG4gICAgICBwcm9wcy5pbnN0YW5jZUNsYXNzIHx8IEluc3RhbmNlQ2xhc3MuQlVSU1RBQkxFNF9HUkFWSVRPTjtcbiAgICBjb25zdCBpbnN0YW5jZVNpemUgPSBwcm9wcy5pbnN0YW5jZVNpemUgfHwgSW5zdGFuY2VTaXplLk1JQ1JPO1xuXG4gICAgY29uc3QgZGF0YWJhc2VOYW1lID0gcHJvcHMuZGF0YWJhc2VOYW1lIHx8IGAke2lkfURhdGFiYXNlYDtcbiAgICBjb25zdCBwb3J0ID0gcHJvcHMucG9ydCB8fCA1NDMyO1xuICAgIGNvbnN0IHNuYXBzaG90UmV0ZW50aW9uSW5EYXlzID0gcHJvcHMuc25hcHNob3RSZXRlbnRpb25JbkRheXMgfHwgMTQ7XG4gICAgY29uc3QgcmV0YWluU25hcHNob3RzT25EZWxldGlvbiA9IHByb3BzLnJldGFpblNuYXBzaG90c09uRGVsZXRpb24gfHwgdHJ1ZTtcblxuICAgIGNvbnN0IGVuZ2luZSA9IERhdGFiYXNlSW5zdGFuY2VFbmdpbmUucG9zdGdyZXMoe1xuICAgICAgdmVyc2lvbjpcbiAgICAgICAgKHByb3BzLnZlcnNpb24gYXMgUG9zdGdyZXNFbmdpbmVWZXJzaW9uKSB8fFxuICAgICAgICBQb3N0Z3Jlc0VuZ2luZVZlcnNpb24uVkVSXzE0XzVcbiAgICB9KTtcblxuICAgIC8vdG9kbzogdmFsaWRhdGUgZW5naW5lICYgdmVyc2lvbiBhcmUgYW4gYWNjZXB0YWJsZSBjb21iaW5hdGlvblxuXG4gICAgdGhpcy5hZGRTZWNyZXRSZXNvdXJjZShpZCk7XG4gICAgdGhpcy5hZGRTZWN1cml0eUdyb3VwKGlkLCBwcm9wcy52cGMsIHBvcnQpO1xuICAgIHRoaXMuYWRkRGF0YWJhc2VJbnN0YW5jZShcbiAgICAgIHNjb3BlLFxuICAgICAgYCR7aWR9SW5zdGFuY2VgLFxuICAgICAgcHJvcHMsXG4gICAgICBlbmdpbmUsXG4gICAgICBpbnN0YW5jZUNsYXNzLFxuICAgICAgaW5zdGFuY2VTaXplLFxuICAgICAgcG9ydCxcbiAgICAgIGRhdGFiYXNlTmFtZSxcbiAgICAgIHNuYXBzaG90UmV0ZW50aW9uSW5EYXlzLFxuICAgICAgcmV0YWluU25hcHNob3RzT25EZWxldGlvblxuICAgICk7XG5cbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5zZWN1cml0eUdyb3VwLmNvbm5lY3Rpb25zO1xuXG4gICAgLy90b2RvOiBtdWx0aUF6XG4gICAgLy90b2RvOiByZXNlcnZlZCBpbnN0YW5jZSBmYW1pbGllc1xuICAgIC8vdG9kbzogc2VjdXJpdHkgZ3JvdXBcbiAgICAvL3RvZG86IGNsdXN0ZXJcbiAgICAvL3RvZG86IGF1dG9tYXRpYyByb3RhdGluZyBjcmVkZW50aWFsc1xuICAgIC8vdG9kbzogZGF0YWJhc2UgcHJveHlcbiAgICAvL3RvZG86IGNmbiBvdXRwdXRzICh1cmwpXG4gICAgLy90b2RvOiBkYXRhYmFzZSBjbmFtZT9cbiAgfVxuXG4gIHByaXZhdGUgYWRkRGF0YWJhc2VJbnN0YW5jZShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFJkc1Byb3BzLFxuICAgIGVuZ2luZTogSUluc3RhbmNlRW5naW5lLFxuICAgIGluc3RhbmNlQ2xhc3M6IEluc3RhbmNlQ2xhc3MsXG4gICAgaW5zdGFuY2VTaXplOiBJbnN0YW5jZVNpemUsXG4gICAgcG9ydDogbnVtYmVyLFxuICAgIGRhdGFiYXNlTmFtZTogc3RyaW5nLFxuICAgIHNuYXBzaG90UmV0ZW50aW9uSW5EYXlzOiBudW1iZXIsXG4gICAgcmV0YWluU25hcHNob3RzT25EZWxldGlvbjogYm9vbGVhblxuICApIHtcbiAgICB0aGlzLmRhdGFiYXNlSW5zdGFuY2UgPSBuZXcgRGF0YWJhc2VJbnN0YW5jZShzY29wZSwgaWQsIHtcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgLy8gdnBjU3VibmV0czogeyBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURUQgfSxcbiAgICAgIGVuZ2luZTogZW5naW5lLFxuICAgICAgaW5zdGFuY2VUeXBlOiBJbnN0YW5jZVR5cGUub2YoaW5zdGFuY2VDbGFzcywgaW5zdGFuY2VTaXplKSxcbiAgICAgIGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscy5mcm9tU2VjcmV0KHRoaXMuc2VjcmV0KSxcbiAgICAgIHBvcnQ6IHBvcnQsXG4gICAgICBzZWN1cml0eUdyb3VwczogW3RoaXMuc2VjdXJpdHlHcm91cF0sXG4gICAgICBkYXRhYmFzZU5hbWU6IGRhdGFiYXNlTmFtZSxcbiAgICAgIGJhY2t1cFJldGVudGlvbjogRHVyYXRpb24uZGF5cyhzbmFwc2hvdFJldGVudGlvbkluRGF5cyksXG4gICAgICBkZWxldGVBdXRvbWF0ZWRCYWNrdXBzOiByZXRhaW5TbmFwc2hvdHNPbkRlbGV0aW9uLFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5TTkFQU0hPVFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRTZWNyZXRSZXNvdXJjZShpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zZWNyZXQgPSBuZXcgU2VjcmV0KHRoaXMsIGAke2lkfVNlY3JldGAsIHtcbiAgICAgIHNlY3JldE5hbWU6IGAke2lkfS1jcmVkZW50aWFsc2AsXG4gICAgICBnZW5lcmF0ZVNlY3JldFN0cmluZzoge1xuICAgICAgICBzZWNyZXRTdHJpbmdUZW1wbGF0ZTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIHVzZXJuYW1lOiBcInBvc3RncmVzXCJcbiAgICAgICAgfSksXG4gICAgICAgIGV4Y2x1ZGVQdW5jdHVhdGlvbjogdHJ1ZSxcbiAgICAgICAgaW5jbHVkZVNwYWNlOiBmYWxzZSxcbiAgICAgICAgZ2VuZXJhdGVTdHJpbmdLZXk6IFwicGFzc3dvcmRcIlxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5vdXRwdXRzLnB1c2goXG4gICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiU2VjcmV0IE5hbWVcIiwge1xuICAgICAgICB2YWx1ZTogdGhpcy5zZWNyZXQuc2VjcmV0TmFtZVxuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMub3V0cHV0cy5wdXNoKFxuICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBcIlNlY3JldCBBUk5cIiwge1xuICAgICAgICB2YWx1ZTogdGhpcy5zZWNyZXQuc2VjcmV0QXJuXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFkZFNlY3VyaXR5R3JvdXAoaWQ6IHN0cmluZywgdnBjOiBWcGMsIHBvcnQ6IG51bWJlcikge1xuICAgIHRoaXMuc2VjdXJpdHlHcm91cCA9IG5ldyBTZWN1cml0eUdyb3VwKHRoaXMsIGAke2lkfURCU2VjdXJpdHlHcm91cGAsIHtcbiAgICAgIHNlY3VyaXR5R3JvdXBOYW1lOiBcIkRhdGFiYXNlLVNHXCIsXG4gICAgICB2cGM6IHZwY1xuICAgIH0pO1xuXG4gICAgLy90b2RvOiByZXRyaWV2ZSBmcm9tIHNlcnZpY2Ugbm90IGhhcmRjb2RlZCB2cGM/XG4gICAgLy8gdGhpcy5zZWN1cml0eUdyb3VwLmNvbm5lY3Rpb25zLmFsbG93RnJvbShlY3NTZXJ2aWNlLnNlcnZpY2UsIFBvcnQudGNwKDMzMDYpLCAnSW5ib3VuZCcpO1xuXG4gICAgLy8gQ3JlYXRlIGJhc2ljIGluZ3Jlc3MgcnVsZSB0byBhbGxvdyBhY2Nlc3MgdG8gZGF0YWJhc2UgdGhyb3VnaCBkZWZhdWx0IHBvcnRcbiAgICAvLyB0aGlzLnNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoXG4gICAgLy8gICBQZWVyLmlwdjQodnBjLnZwY0NpZHJCbG9jayksXG4gICAgLy8gICBQb3J0LnRjcChwb3J0KSxcbiAgICAvLyAgIGBBbGxvdyBwb3J0ICR7cG9ydH0gZm9yIGRhdGFiYXNlIGNvbm5lY3Rpb24gZnJvbSBvbmx5IHdpdGhpbiB0aGUgVlBDICgke3ZwYy52cGNJZH0pYFxuICAgIC8vICk7XG5cbiAgICAvLyB0b2RvOiBEb3VibGUgY2hlY2sgZWdyZXNzIHJ1bGVzIHdpdGggUGF1bC5cbiAgICAvLyAgLSBXaGF0IGlzIHRoZSBkZWZhdWx0IChDREsgRGlmZiBpbXBsaWVzIGl0IG1pZ2h0IGJlICdldmVyeW9uZSc/KVxuICB9XG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ import * as customResource from "aws-cdk-lib/custom-resources";
2
+ import { Construct } from "constructs";
3
+ export declare class AwsCustomResource extends customResource.AwsCustomResource {
4
+ readonly response: string;
5
+ constructor(scope: Construct, id: string, props: customResource.AwsCustomResourceProps);
6
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AwsCustomResource = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const customResource = require("aws-cdk-lib/custom-resources");
6
+ class AwsCustomResource extends customResource.AwsCustomResource {
7
+ constructor(scope, id, props) {
8
+ super(scope, id, {
9
+ ...props,
10
+ functionName: props.functionName,
11
+ logRetention: aws_cdk_lib_1.aws_logs.RetentionDays.ONE_YEAR,
12
+ onCreate: props.onCreate,
13
+ onDelete: props.onDelete,
14
+ onUpdate: props.onUpdate,
15
+ policy: props.policy || customResource.AwsCustomResourcePolicy.fromSdkCalls({
16
+ resources: customResource.AwsCustomResourcePolicy.ANY_RESOURCE
17
+ }),
18
+ resourceType: props.resourceType
19
+ });
20
+ }
21
+ }
22
+ exports.AwsCustomResource = AwsCustomResource;
23
+ ;
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzQ3VzdG9tUmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXVDO0FBQ3ZDLCtEQUErRDtBQUcvRCxNQUFhLGlCQUFrQixTQUFRLGNBQWMsQ0FBQyxpQkFBaUI7SUFHckUsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBNEM7UUFFNUMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixHQUFHLEtBQUs7WUFDUixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDaEMsWUFBWSxFQUFFLHNCQUFRLENBQUMsYUFBYSxDQUFDLFFBQVE7WUFDN0MsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLElBQUksY0FBYyxDQUFDLHVCQUF1QixDQUFDLFlBQVksQ0FBQztnQkFDMUUsU0FBUyxFQUFFLGNBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZO2FBQy9ELENBQUM7WUFDRixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7U0FDbkMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUFDO0FBcEJGLDhDQW9CRTtBQUFBLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhd3NfbG9ncyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgY3VzdG9tUmVzb3VyY2UgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmV4cG9ydCBjbGFzcyBBd3NDdXN0b21SZXNvdXJjZSBleHRlbmRzIGN1c3RvbVJlc291cmNlLkF3c0N1c3RvbVJlc291cmNlIHtcbiAgcHVibGljIHJlYWRvbmx5IHJlc3BvbnNlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBjdXN0b21SZXNvdXJjZS5Bd3NDdXN0b21SZXNvdXJjZVByb3BzXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBmdW5jdGlvbk5hbWU6IHByb3BzLmZ1bmN0aW9uTmFtZSxcbiAgICAgIGxvZ1JldGVudGlvbjogYXdzX2xvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfWUVBUixcbiAgICAgIG9uQ3JlYXRlOiBwcm9wcy5vbkNyZWF0ZSxcbiAgICAgIG9uRGVsZXRlOiBwcm9wcy5vbkRlbGV0ZSxcbiAgICAgIG9uVXBkYXRlOiBwcm9wcy5vblVwZGF0ZSxcbiAgICAgIHBvbGljeTogcHJvcHMucG9saWN5IHx8IGN1c3RvbVJlc291cmNlLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TZGtDYWxscyh7XG4gICAgICAgIHJlc291cmNlczogY3VzdG9tUmVzb3VyY2UuQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuQU5ZX1JFU09VUkNFXG4gICAgICB9KSxcbiAgICAgIHJlc291cmNlVHlwZTogcHJvcHMucmVzb3VyY2VUeXBlXG4gIH0pO1xufX07Il19
@@ -0,0 +1,5 @@
1
+ import * as cdk from "aws-cdk-lib";
2
+ import { Construct } from "constructs";
3
+ export declare class CfnOutput extends cdk.CfnOutput {
4
+ constructor(scope: Construct, id: string, props: cdk.CfnOutputProps);
5
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CfnOutput = void 0;
4
+ const cdk = require("aws-cdk-lib");
5
+ class CfnOutput extends cdk.CfnOutput {
6
+ constructor(scope, id, props) {
7
+ super(scope, id, {
8
+ ...props,
9
+ value: props.value,
10
+ description: props.description,
11
+ exportName: props.exportName
12
+ });
13
+ }
14
+ }
15
+ exports.CfnOutput = CfnOutput;
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2ZuT3V0cHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvdXRpbGl0aWVzL2Nmbk91dHB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBbUM7QUFHbkMsTUFBYSxTQUFVLFNBQVEsR0FBRyxDQUFDLFNBQVM7SUFDMUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF5QjtRQUNqRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsS0FBSztZQUNSLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztZQUNsQixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVRELDhCQVNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuZXhwb3J0IGNsYXNzIENmbk91dHB1dCBleHRlbmRzIGNkay5DZm5PdXRwdXQge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogY2RrLkNmbk91dHB1dFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHZhbHVlOiBwcm9wcy52YWx1ZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGV4cG9ydE5hbWU6IHByb3BzLmV4cG9ydE5hbWVcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,5 @@
1
+ import * as cdk from "aws-cdk-lib";
2
+ import { Construct } from "constructs";
3
+ export declare class CustomResource extends cdk.CustomResource {
4
+ constructor(scope: Construct, id: string, props: cdk.CustomResourceProps);
5
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CustomResource = void 0;
4
+ const cdk = require("aws-cdk-lib");
5
+ class CustomResource extends cdk.CustomResource {
6
+ constructor(scope, id, props) {
7
+ super(scope, id, {
8
+ ...props,
9
+ });
10
+ }
11
+ }
12
+ exports.CustomResource = CustomResource;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tUmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvY3VzdG9tUmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW1DO0FBR25DLE1BQWEsY0FBZSxTQUFRLEdBQUcsQ0FBQyxjQUFjO0lBQ3BELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBOEI7UUFDdEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixHQUFHLEtBQUs7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFORCx3Q0FNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmV4cG9ydCBjbGFzcyBDdXN0b21SZXNvdXJjZSBleHRlbmRzIGNkay5DdXN0b21SZXNvdXJjZSB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBjZGsuQ3VzdG9tUmVzb3VyY2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ import { Provider, ProviderProps } from "aws-cdk-lib/custom-resources";
2
+ import { Construct } from "constructs";
3
+ export declare class CustomResourceProvider extends Provider {
4
+ constructor(scope: Construct, id: string, props: ProviderProps);
5
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CustomResourceProvider = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const custom_resources_1 = require("aws-cdk-lib/custom-resources");
6
+ class CustomResourceProvider extends custom_resources_1.Provider {
7
+ constructor(scope, id, props) {
8
+ super(scope, id, {
9
+ ...props,
10
+ onEventHandler: props.onEventHandler,
11
+ logRetention: aws_cdk_lib_1.aws_logs.RetentionDays.ONE_YEAR,
12
+ providerFunctionName: props.providerFunctionName,
13
+ role: props.role,
14
+ vpc: props.vpc
15
+ });
16
+ }
17
+ }
18
+ exports.CustomResourceProvider = CustomResourceProvider;
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tUmVzb3VyY2VQcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL3V0aWxpdGllcy9jdXN0b21SZXNvdXJjZVByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF1QztBQUN2QyxtRUFBdUU7QUFHdkUsTUFBYSxzQkFBdUIsU0FBUSwyQkFBUTtJQUNsRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW9CO1FBQzVELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxLQUFLO1lBQ1IsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjO1lBQ3BDLFlBQVksRUFBRSxzQkFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRO1lBQzdDLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxvQkFBb0I7WUFDaEQsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVhELHdEQVdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXdzX2xvZ3MgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IFByb3ZpZGVyLCBQcm92aWRlclByb3BzIH0gZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmV4cG9ydCBjbGFzcyBDdXN0b21SZXNvdXJjZVByb3ZpZGVyIGV4dGVuZHMgUHJvdmlkZXIge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHJvdmlkZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBvbkV2ZW50SGFuZGxlcjogcHJvcHMub25FdmVudEhhbmRsZXIsXG4gICAgICBsb2dSZXRlbnRpb246IGF3c19sb2dzLlJldGVudGlvbkRheXMuT05FX1lFQVIsXG4gICAgICBwcm92aWRlckZ1bmN0aW9uTmFtZTogcHJvcHMucHJvdmlkZXJGdW5jdGlvbk5hbWUsXG4gICAgICByb2xlOiBwcm9wcy5yb2xlLFxuICAgICAgdnBjOiBwcm9wcy52cGNcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1 @@
1
+ export default function addSuffixToEmail(email: string, suffix: string): string;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function addSuffixToEmail(email, suffix) {
4
+ return email.replace("@", `+${suffix}@`);
5
+ }
6
+ exports.default = addSuffixToEmail;
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkU3VmZml4VG9FbWFpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi91dGlscy9hZGRTdWZmaXhUb0VtYWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBd0IsZ0JBQWdCLENBQ3RDLEtBQWEsRUFDYixNQUFjO0lBRWQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUxELG1DQUtDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkU3VmZml4VG9FbWFpbChcbiAgZW1haWw6IHN0cmluZyxcbiAgc3VmZml4OiBzdHJpbmdcbik6IHN0cmluZyB7XG4gIHJldHVybiBlbWFpbC5yZXBsYWNlKFwiQFwiLCBgKyR7c3VmZml4fUBgKTtcbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ interface Config {
2
+ environment?: string;
3
+ account?: string;
4
+ region?: string;
5
+ }
6
+ export default function getConfig(): Config;
7
+ export {};
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const fs_1 = require("fs");
4
+ const app_1 = require("../app");
5
+ function getConfig() {
6
+ const app = app_1.default.getInstance();
7
+ // Get cdk deploy --context config
8
+ const env = app.node.tryGetContext("environment");
9
+ try {
10
+ // Load config json file
11
+ const configFile = (0, fs_1.readFileSync)(`../${env}.json`, "utf8");
12
+ const config = JSON.parse(configFile);
13
+ config.enviornment = env;
14
+ return JSON.parse(configFile);
15
+ }
16
+ catch (err) {
17
+ console.warn(`No config file found for environment: ${env}`);
18
+ return {};
19
+ }
20
+ }
21
+ exports.default = getConfig;
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Q29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3V0aWxzL2dldENvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDJCQUFrQztBQUNsQyxnQ0FBeUI7QUFRekIsU0FBd0IsU0FBUztJQUMvQixNQUFNLEdBQUcsR0FBRyxhQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFOUIsa0NBQWtDO0lBQ2xDLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRWxELElBQUk7UUFDRix3QkFBd0I7UUFDeEIsTUFBTSxVQUFVLEdBQUcsSUFBQSxpQkFBWSxFQUFDLE1BQU0sR0FBRyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0QyxNQUFNLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDL0I7SUFBQyxPQUFPLEdBQUcsRUFBRTtRQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMseUNBQXlDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDN0QsT0FBTyxFQUFFLENBQUM7S0FDWDtBQUNILENBQUM7QUFoQkQsNEJBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVhZEZpbGVTeW5jIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgQXBwIGZyb20gXCIuLi9hcHBcIjtcblxuaW50ZXJmYWNlIENvbmZpZyB7XG4gIGVudmlyb25tZW50Pzogc3RyaW5nO1xuICBhY2NvdW50Pzogc3RyaW5nO1xuICByZWdpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldENvbmZpZygpOiBDb25maWcge1xuICBjb25zdCBhcHAgPSBBcHAuZ2V0SW5zdGFuY2UoKTtcblxuICAvLyBHZXQgY2RrIGRlcGxveSAtLWNvbnRleHQgY29uZmlnXG4gIGNvbnN0IGVudiA9IGFwcC5ub2RlLnRyeUdldENvbnRleHQoXCJlbnZpcm9ubWVudFwiKTtcblxuICB0cnkge1xuICAgIC8vIExvYWQgY29uZmlnIGpzb24gZmlsZVxuICAgIGNvbnN0IGNvbmZpZ0ZpbGUgPSByZWFkRmlsZVN5bmMoYC4uLyR7ZW52fS5qc29uYCwgXCJ1dGY4XCIpO1xuICAgIGNvbnN0IGNvbmZpZyA9IEpTT04ucGFyc2UoY29uZmlnRmlsZSk7XG4gICAgY29uZmlnLmVudmlvcm5tZW50ID0gZW52O1xuICAgIHJldHVybiBKU09OLnBhcnNlKGNvbmZpZ0ZpbGUpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zb2xlLndhcm4oYE5vIGNvbmZpZyBmaWxlIGZvdW5kIGZvciBlbnZpcm9ubWVudDogJHtlbnZ9YCk7XG4gICAgcmV0dXJuIHt9O1xuICB9XG59XG4iXX0=
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "@fjall/components-infrastructure",
3
+ "version": "0.1.0",
4
+ "bin": {
5
+ "infrastructure": "bin/infrastructure.js"
6
+ },
7
+ "main": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "files": [
10
+ "dist/lib"
11
+ ],
12
+ "scripts": {
13
+ "deploy:main": "npx cdk deploy -c environment=main",
14
+ "list:main": "npx cdk list -c environment=main",
15
+ "destroy:main": "npx cdk destroy -c environment=main",
16
+ "synth:main": "npx cdk synthesize -c environment=main",
17
+ "deploy:dev": "npx cdk deploy -c environment=development",
18
+ "list:dev": "npx cdk list -c environment=mdevain",
19
+ "destroy:dev": "npx cdk destroy -c environment=dev",
20
+ "synth:dev": "npx cdk synthesize -c environment=dev",
21
+ "deploy:stag": "npx cdk deploy -c environment=staging",
22
+ "list:stag": "npx cdk list -c environment=stag",
23
+ "destroy:stag": "npx cdk destroy -c environment=stag",
24
+ "synth:stag": "npx cdk synthesize -c environment=stag",
25
+ "deploy:prod": "npx cdk deploy -c environment=production",
26
+ "list:prod": "npx cdk list -c environment=prod",
27
+ "destroy:prod": "npx cdk destroy -c environment=prod",
28
+ "synth:prod": "npx cdk synthesize -c environment=prod",
29
+ "publish": "npm run build && npm publish --access restricted",
30
+ "build": "tsc",
31
+ "watch": "tsc -w",
32
+ "test": "jest",
33
+ "cdk": "cdk"
34
+ },
35
+ "devDependencies": {
36
+ "@types/aws-lambda": "^8.10.109",
37
+ "@types/jest": "^29.2.4",
38
+ "@types/node": "18.11.15",
39
+ "@types/uuid": "^9.0.2",
40
+ "@typescript-eslint/eslint-plugin": "^6.1.0",
41
+ "@typescript-eslint/parser": "^6.1.0",
42
+ "eslint": "^8.45.0",
43
+ "jest": "^29.3.1",
44
+ "ts-jest": "^29.0.3",
45
+ "ts-node": "^10.9.1",
46
+ "typescript": "~4.9.4"
47
+ },
48
+ "dependencies": {
49
+ "@aws-sdk/client-cost-explorer": "^3.245.0",
50
+ "@aws-sdk/client-sso-admin": "^3.398.0",
51
+ "@pepperize/cdk-organizations": "^0.7.135",
52
+ "aws-cdk": "2.56.1",
53
+ "aws-cdk-lib": "2.56.1",
54
+ "aws-lambda": "^1.0.7",
55
+ "constructs": "^10.0.0",
56
+ "source-map-support": "^0.5.21",
57
+ "uuid": "^9.0.0"
58
+ }
59
+ }