@openhi/constructs 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/lib/app/index.d.ts +4 -0
- package/lib/app/index.js +21 -0
- package/lib/app/open-hi-app.d.ts +85 -0
- package/lib/app/open-hi-app.js +127 -0
- package/lib/app/open-hi-environment.d.ts +59 -0
- package/lib/app/open-hi-environment.js +72 -0
- package/lib/app/open-hi-service.d.ts +169 -0
- package/lib/app/open-hi-service.js +195 -0
- package/lib/app/open-hi-stage.d.ts +71 -0
- package/lib/app/open-hi-stage.js +70 -0
- package/lib/components/acm/root-wildcard-certificate.d.ts +15 -0
- package/lib/components/acm/root-wildcard-certificate.js +35 -0
- package/lib/components/api-gateway/core-http-api.d.ts +10 -0
- package/lib/components/api-gateway/core-http-api.js +44 -0
- package/lib/components/api-gateway/http-lambda-integration-no-permissions.d.ts +18 -0
- package/lib/components/api-gateway/http-lambda-integration-no-permissions.js +26 -0
- package/lib/components/app-sync/core-graphql-api.d.ts +12 -0
- package/lib/components/app-sync/core-graphql-api.js +54 -0
- package/lib/components/auth.d.ts +75 -0
- package/lib/components/auth.js +100 -0
- package/lib/components/cognito/core-user-pool-client.d.ts +10 -0
- package/lib/components/cognito/core-user-pool-client.js +47 -0
- package/lib/components/cognito/core-user-pool-domain.d.ts +10 -0
- package/lib/components/cognito/core-user-pool-domain.js +41 -0
- package/lib/components/cognito/core-user-pool-kms-key.d.ts +10 -0
- package/lib/components/cognito/core-user-pool-kms-key.js +37 -0
- package/lib/components/cognito/core-user-pool.d.ts +10 -0
- package/lib/components/cognito/core-user-pool.js +54 -0
- package/lib/components/core.d.ts +102 -0
- package/lib/components/core.js +79 -0
- package/lib/components/dynamodb/dynamo-db-data-store.d.ts +33 -0
- package/lib/components/dynamodb/dynamo-db-data-store.js +107 -0
- package/lib/components/event-bridge/data-event-bus.d.ts +19 -0
- package/lib/components/event-bridge/data-event-bus.js +34 -0
- package/lib/components/event-bridge/ops-event-bus.d.ts +19 -0
- package/lib/components/event-bridge/ops-event-bus.js +34 -0
- package/lib/components/global.d.ts +36 -0
- package/lib/components/global.js +63 -0
- package/lib/components/index.d.ts +1 -0
- package/lib/components/index.js +18 -0
- package/lib/components/route-53/child-hosted-zone.d.ts +20 -0
- package/lib/components/route-53/child-hosted-zone.js +48 -0
- package/lib/components/route-53/root-hosted-zone.d.ts +10 -0
- package/lib/components/route-53/root-hosted-zone.js +20 -0
- package/lib/components/ssm/discoverable-string-parameter.d.ts +59 -0
- package/lib/components/ssm/discoverable-string-parameter.js +50 -0
- package/lib/components/ssm/index.d.ts +1 -0
- package/lib/components/ssm/index.js +18 -0
- package/lib/data/dynamo/ehr/r4/Patient.d.ts +180 -0
- package/lib/data/dynamo/ehr/r4/Patient.js +192 -0
- package/lib/data/dynamo/ehr/r4/ehr-r4-data-service.d.ts +162 -0
- package/lib/data/dynamo/ehr/r4/ehr-r4-data-service.js +37 -0
- package/lib/data/hello-world.d.ts +39 -0
- package/lib/data/hello-world.js +59 -0
- package/lib/data/import-patient-with-dynalite.d.ts +1 -0
- package/lib/data/import-patient-with-dynalite.js +87 -0
- package/lib/data/import-patient.d.ts +47 -0
- package/lib/data/import-patient.js +158 -0
- package/lib/data/lambda/rest-api-lambda.d.ts +13 -0
- package/lib/data/lambda/rest-api-lambda.handler.d.ts +1 -0
- package/lib/data/lambda/rest-api-lambda.handler.js +10 -0
- package/lib/data/lambda/rest-api-lambda.js +22 -0
- package/lib/data/middleware/open-hi-context.d.ts +13 -0
- package/lib/data/middleware/open-hi-context.js +31 -0
- package/lib/data/rest-api/ehr/r4/Patient.d.ts +16 -0
- package/lib/data/rest-api/ehr/r4/Patient.js +234 -0
- package/lib/data/rest-api/rest-api-local.d.ts +1 -0
- package/lib/data/rest-api/rest-api-local.js +8 -0
- package/lib/data/rest-api/rest-api-mockdata.d.ts +7 -0
- package/lib/data/rest-api/rest-api-mockdata.js +585 -0
- package/lib/data/rest-api/rest-api.d.ts +3 -0
- package/lib/data/rest-api/rest-api.js +26 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +20 -0
- package/lib/lib/compression.d.ts +27 -0
- package/lib/lib/compression.js +87 -0
- package/lib/services/index.d.ts +5 -0
- package/lib/services/index.js +22 -0
- package/lib/services/open-hi-auth-service.d.ts +31 -0
- package/lib/services/open-hi-auth-service.js +31 -0
- package/lib/services/open-hi-core-service.d.ts +15 -0
- package/lib/services/open-hi-core-service.js +38 -0
- package/lib/services/open-hi-data-service.d.ts +18 -0
- package/lib/services/open-hi-data-service.js +18 -0
- package/lib/services/open-hi-global-service.d.ts +15 -0
- package/lib/services/open-hi-global-service.js +44 -0
- package/lib/services/open-hi-rest-api-service.d.ts +17 -0
- package/lib/services/open-hi-rest-api-service.js +107 -0
- package/package.json +67 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { RemovalPolicy } from "aws-cdk-lib";
|
|
2
|
+
import { ITable, Table, TableProps } from "aws-cdk-lib/aws-dynamodb";
|
|
3
|
+
import { Construct } from "constructs";
|
|
4
|
+
/**
|
|
5
|
+
* DynamoDB table name for the data store. Used for cross-stack reference and
|
|
6
|
+
* deterministic naming per branch. The table backs multiple use cases (e.g.
|
|
7
|
+
* CRM, CMS, ERP, EHR).
|
|
8
|
+
*/
|
|
9
|
+
export declare function getDynamoDbDataStoreTableName(scope: Construct): string;
|
|
10
|
+
export interface DynamoDbDataStoreProps extends Omit<TableProps, "tableName" | "removalPolicy"> {
|
|
11
|
+
/**
|
|
12
|
+
* Optional removal policy override. If not set, uses the service's default
|
|
13
|
+
* removal policy (RETAIN for prod, DESTROY otherwise).
|
|
14
|
+
*/
|
|
15
|
+
readonly removalPolicy?: RemovalPolicy;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* DynamoDB table implementing the single-table design for app data (e.g. FHIR
|
|
19
|
+
* resources, CRM, CMS, ERP, EHR).
|
|
20
|
+
*
|
|
21
|
+
* @see {@link https://github.com/codedrifters/openhi/blob/main/sites/www-docs/content/architecture/dynamodb-single-table-design.md | DynamoDB Single-Table Design}
|
|
22
|
+
*
|
|
23
|
+
* Primary key: PK (String), SK (String).
|
|
24
|
+
* GSIs: GSI1 (reverse reference), GSI2 (identifier lookup), GSI3 (facility ops), GSI4 (resource type list).
|
|
25
|
+
*/
|
|
26
|
+
export declare class DynamoDbDataStore extends Table {
|
|
27
|
+
/**
|
|
28
|
+
* Import the data store table by name for use in another stack (e.g. data
|
|
29
|
+
* service or Lambda). Uses the same naming as {@link getDynamoDbDataStoreTableName}.
|
|
30
|
+
*/
|
|
31
|
+
static fromConstruct(scope: Construct, id?: string): ITable;
|
|
32
|
+
constructor(scope: Construct, id: string, props?: DynamoDbDataStoreProps);
|
|
33
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DynamoDbDataStore = void 0;
|
|
4
|
+
exports.getDynamoDbDataStoreTableName = getDynamoDbDataStoreTableName;
|
|
5
|
+
const aws_dynamodb_1 = require("aws-cdk-lib/aws-dynamodb");
|
|
6
|
+
const app_1 = require("../../app");
|
|
7
|
+
/**
|
|
8
|
+
* DynamoDB table name for the data store. Used for cross-stack reference and
|
|
9
|
+
* deterministic naming per branch. The table backs multiple use cases (e.g.
|
|
10
|
+
* CRM, CMS, ERP, EHR).
|
|
11
|
+
*/
|
|
12
|
+
function getDynamoDbDataStoreTableName(scope) {
|
|
13
|
+
const stack = app_1.OpenHiService.of(scope);
|
|
14
|
+
return `data-store-${stack.branchHash}`;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* DynamoDB table implementing the single-table design for app data (e.g. FHIR
|
|
18
|
+
* resources, CRM, CMS, ERP, EHR).
|
|
19
|
+
*
|
|
20
|
+
* @see {@link https://github.com/codedrifters/openhi/blob/main/sites/www-docs/content/architecture/dynamodb-single-table-design.md | DynamoDB Single-Table Design}
|
|
21
|
+
*
|
|
22
|
+
* Primary key: PK (String), SK (String).
|
|
23
|
+
* GSIs: GSI1 (reverse reference), GSI2 (identifier lookup), GSI3 (facility ops), GSI4 (resource type list).
|
|
24
|
+
*/
|
|
25
|
+
class DynamoDbDataStore extends aws_dynamodb_1.Table {
|
|
26
|
+
/**
|
|
27
|
+
* Import the data store table by name for use in another stack (e.g. data
|
|
28
|
+
* service or Lambda). Uses the same naming as {@link getDynamoDbDataStoreTableName}.
|
|
29
|
+
*/
|
|
30
|
+
static fromConstruct(scope, id = "dynamo-db-data-store") {
|
|
31
|
+
return aws_dynamodb_1.Table.fromTableName(scope, id, getDynamoDbDataStoreTableName(scope));
|
|
32
|
+
}
|
|
33
|
+
constructor(scope, id, props = {}) {
|
|
34
|
+
const service = app_1.OpenHiService.of(scope);
|
|
35
|
+
super(scope, id, {
|
|
36
|
+
...props,
|
|
37
|
+
tableName: getDynamoDbDataStoreTableName(scope),
|
|
38
|
+
partitionKey: {
|
|
39
|
+
name: "PK",
|
|
40
|
+
type: aws_dynamodb_1.AttributeType.STRING,
|
|
41
|
+
},
|
|
42
|
+
sortKey: {
|
|
43
|
+
name: "SK",
|
|
44
|
+
type: aws_dynamodb_1.AttributeType.STRING,
|
|
45
|
+
},
|
|
46
|
+
billingMode: aws_dynamodb_1.BillingMode.PAY_PER_REQUEST,
|
|
47
|
+
removalPolicy: props.removalPolicy ?? service.removalPolicy,
|
|
48
|
+
});
|
|
49
|
+
// GSI1 — Reverse Reference Index: "what references X?"
|
|
50
|
+
this.addGlobalSecondaryIndex({
|
|
51
|
+
indexName: "GSI1",
|
|
52
|
+
partitionKey: {
|
|
53
|
+
name: "GSI1PK",
|
|
54
|
+
type: aws_dynamodb_1.AttributeType.STRING,
|
|
55
|
+
},
|
|
56
|
+
sortKey: {
|
|
57
|
+
name: "GSI1SK",
|
|
58
|
+
type: aws_dynamodb_1.AttributeType.STRING,
|
|
59
|
+
},
|
|
60
|
+
projectionType: aws_dynamodb_1.ProjectionType.INCLUDE,
|
|
61
|
+
nonKeyAttributes: ["srcType", "srcId", "path", "srcPk", "srcSk", "ts"],
|
|
62
|
+
});
|
|
63
|
+
// GSI2 — Identifier Lookup Index: MRN, NPI, member ID, etc.
|
|
64
|
+
this.addGlobalSecondaryIndex({
|
|
65
|
+
indexName: "GSI2",
|
|
66
|
+
partitionKey: {
|
|
67
|
+
name: "GSI2PK",
|
|
68
|
+
type: aws_dynamodb_1.AttributeType.STRING,
|
|
69
|
+
},
|
|
70
|
+
sortKey: {
|
|
71
|
+
name: "GSI2SK",
|
|
72
|
+
type: aws_dynamodb_1.AttributeType.STRING,
|
|
73
|
+
},
|
|
74
|
+
projectionType: aws_dynamodb_1.ProjectionType.INCLUDE,
|
|
75
|
+
nonKeyAttributes: ["resourcePk", "resourceSk", "display", "status"],
|
|
76
|
+
});
|
|
77
|
+
// GSI3 — Facility Ops Index: worklists, rosters, schedules
|
|
78
|
+
this.addGlobalSecondaryIndex({
|
|
79
|
+
indexName: "GSI3",
|
|
80
|
+
partitionKey: {
|
|
81
|
+
name: "GSI3PK",
|
|
82
|
+
type: aws_dynamodb_1.AttributeType.STRING,
|
|
83
|
+
},
|
|
84
|
+
sortKey: {
|
|
85
|
+
name: "GSI3SK",
|
|
86
|
+
type: aws_dynamodb_1.AttributeType.STRING,
|
|
87
|
+
},
|
|
88
|
+
projectionType: aws_dynamodb_1.ProjectionType.INCLUDE,
|
|
89
|
+
nonKeyAttributes: ["resourcePk", "resourceSk"],
|
|
90
|
+
});
|
|
91
|
+
// GSI4 — Resource Type Index: list all resources of a type in workspace (no scan)
|
|
92
|
+
this.addGlobalSecondaryIndex({
|
|
93
|
+
indexName: "GSI4",
|
|
94
|
+
partitionKey: {
|
|
95
|
+
name: "GSI4PK",
|
|
96
|
+
type: aws_dynamodb_1.AttributeType.STRING,
|
|
97
|
+
},
|
|
98
|
+
sortKey: {
|
|
99
|
+
name: "GSI4SK",
|
|
100
|
+
type: aws_dynamodb_1.AttributeType.STRING,
|
|
101
|
+
},
|
|
102
|
+
projectionType: aws_dynamodb_1.ProjectionType.ALL,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
exports.DynamoDbDataStore = DynamoDbDataStore;
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1vLWRiLWRhdGEtc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9keW5hbW9kYi9keW5hbW8tZGItZGF0YS1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFpQkEsc0VBR0M7QUFuQkQsMkRBT2tDO0FBRWxDLG1DQUEwQztBQUUxQzs7OztHQUlHO0FBQ0gsU0FBZ0IsNkJBQTZCLENBQUMsS0FBZ0I7SUFDNUQsTUFBTSxLQUFLLEdBQUcsbUJBQWEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFrQixDQUFDO0lBQ3ZELE9BQU8sY0FBYyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDMUMsQ0FBQztBQWFEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSxvQkFBSztJQUMxQzs7O09BR0c7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUN6QixLQUFnQixFQUNoQixFQUFFLEdBQUcsc0JBQXNCO1FBRTNCLE9BQU8sb0JBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSw2QkFBNkIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixRQUFnQyxFQUFFO1FBRWxDLE1BQU0sT0FBTyxHQUFHLG1CQUFhLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBa0IsQ0FBQztRQUV6RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsS0FBSztZQUNSLFNBQVMsRUFBRSw2QkFBNkIsQ0FBQyxLQUFLLENBQUM7WUFDL0MsWUFBWSxFQUFFO2dCQUNaLElBQUksRUFBRSxJQUFJO2dCQUNWLElBQUksRUFBRSw0QkFBYSxDQUFDLE1BQU07YUFDM0I7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsSUFBSSxFQUFFLDRCQUFhLENBQUMsTUFBTTthQUMzQjtZQUNELFdBQVcsRUFBRSwwQkFBVyxDQUFDLGVBQWU7WUFDeEMsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhLElBQUksT0FBTyxDQUFDLGFBQWE7U0FDNUQsQ0FBQyxDQUFDO1FBRUgsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyx1QkFBdUIsQ0FBQztZQUMzQixTQUFTLEVBQUUsTUFBTTtZQUNqQixZQUFZLEVBQUU7Z0JBQ1osSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLDRCQUFhLENBQUMsTUFBTTthQUMzQjtZQUNELE9BQU8sRUFBRTtnQkFDUCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxJQUFJLEVBQUUsNEJBQWEsQ0FBQyxNQUFNO2FBQzNCO1lBQ0QsY0FBYyxFQUFFLDZCQUFjLENBQUMsT0FBTztZQUN0QyxnQkFBZ0IsRUFBRSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDO1NBQ3ZFLENBQUMsQ0FBQztRQUVILDREQUE0RDtRQUM1RCxJQUFJLENBQUMsdUJBQXVCLENBQUM7WUFDM0IsU0FBUyxFQUFFLE1BQU07WUFDakIsWUFBWSxFQUFFO2dCQUNaLElBQUksRUFBRSxRQUFRO2dCQUNkLElBQUksRUFBRSw0QkFBYSxDQUFDLE1BQU07YUFDM0I7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLDRCQUFhLENBQUMsTUFBTTthQUMzQjtZQUNELGNBQWMsRUFBRSw2QkFBYyxDQUFDLE9BQU87WUFDdEMsZ0JBQWdCLEVBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUM7U0FDcEUsQ0FBQyxDQUFDO1FBRUgsMkRBQTJEO1FBQzNELElBQUksQ0FBQyx1QkFBdUIsQ0FBQztZQUMzQixTQUFTLEVBQUUsTUFBTTtZQUNqQixZQUFZLEVBQUU7Z0JBQ1osSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLDRCQUFhLENBQUMsTUFBTTthQUMzQjtZQUNELE9BQU8sRUFBRTtnQkFDUCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxJQUFJLEVBQUUsNEJBQWEsQ0FBQyxNQUFNO2FBQzNCO1lBQ0QsY0FBYyxFQUFFLDZCQUFjLENBQUMsT0FBTztZQUN0QyxnQkFBZ0IsRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUM7U0FDL0MsQ0FBQyxDQUFDO1FBRUgsa0ZBQWtGO1FBQ2xGLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztZQUMzQixTQUFTLEVBQUUsTUFBTTtZQUNqQixZQUFZLEVBQUU7Z0JBQ1osSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLDRCQUFhLENBQUMsTUFBTTthQUMzQjtZQUNELE9BQU8sRUFBRTtnQkFDUCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxJQUFJLEVBQUUsNEJBQWEsQ0FBQyxNQUFNO2FBQzNCO1lBQ0QsY0FBYyxFQUFFLDZCQUFjLENBQUMsR0FBRztTQUNuQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUE3RkQsOENBNkZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtcbiAgQXR0cmlidXRlVHlwZSxcbiAgQmlsbGluZ01vZGUsXG4gIElUYWJsZSxcbiAgUHJvamVjdGlvblR5cGUsXG4gIFRhYmxlLFxuICBUYWJsZVByb3BzLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWR5bmFtb2RiXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgT3BlbkhpU2VydmljZSB9IGZyb20gXCIuLi8uLi9hcHBcIjtcblxuLyoqXG4gKiBEeW5hbW9EQiB0YWJsZSBuYW1lIGZvciB0aGUgZGF0YSBzdG9yZS4gVXNlZCBmb3IgY3Jvc3Mtc3RhY2sgcmVmZXJlbmNlIGFuZFxuICogZGV0ZXJtaW5pc3RpYyBuYW1pbmcgcGVyIGJyYW5jaC4gVGhlIHRhYmxlIGJhY2tzIG11bHRpcGxlIHVzZSBjYXNlcyAoZS5nLlxuICogQ1JNLCBDTVMsIEVSUCwgRUhSKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldER5bmFtb0RiRGF0YVN0b3JlVGFibGVOYW1lKHNjb3BlOiBDb25zdHJ1Y3QpOiBzdHJpbmcge1xuICBjb25zdCBzdGFjayA9IE9wZW5IaVNlcnZpY2Uub2Yoc2NvcGUpIGFzIE9wZW5IaVNlcnZpY2U7XG4gIHJldHVybiBgZGF0YS1zdG9yZS0ke3N0YWNrLmJyYW5jaEhhc2h9YDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbW9EYkRhdGFTdG9yZVByb3BzIGV4dGVuZHMgT21pdDxcbiAgVGFibGVQcm9wcyxcbiAgXCJ0YWJsZU5hbWVcIiB8IFwicmVtb3ZhbFBvbGljeVwiXG4+IHtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHJlbW92YWwgcG9saWN5IG92ZXJyaWRlLiBJZiBub3Qgc2V0LCB1c2VzIHRoZSBzZXJ2aWNlJ3MgZGVmYXVsdFxuICAgKiByZW1vdmFsIHBvbGljeSAoUkVUQUlOIGZvciBwcm9kLCBERVNUUk9ZIG90aGVyd2lzZSkuXG4gICAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogUmVtb3ZhbFBvbGljeTtcbn1cblxuLyoqXG4gKiBEeW5hbW9EQiB0YWJsZSBpbXBsZW1lbnRpbmcgdGhlIHNpbmdsZS10YWJsZSBkZXNpZ24gZm9yIGFwcCBkYXRhIChlLmcuIEZISVJcbiAqIHJlc291cmNlcywgQ1JNLCBDTVMsIEVSUCwgRUhSKS5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vY29kZWRyaWZ0ZXJzL29wZW5oaS9ibG9iL21haW4vc2l0ZXMvd3d3LWRvY3MvY29udGVudC9hcmNoaXRlY3R1cmUvZHluYW1vZGItc2luZ2xlLXRhYmxlLWRlc2lnbi5tZCB8IER5bmFtb0RCIFNpbmdsZS1UYWJsZSBEZXNpZ259XG4gKlxuICogUHJpbWFyeSBrZXk6IFBLIChTdHJpbmcpLCBTSyAoU3RyaW5nKS5cbiAqIEdTSXM6IEdTSTEgKHJldmVyc2UgcmVmZXJlbmNlKSwgR1NJMiAoaWRlbnRpZmllciBsb29rdXApLCBHU0kzIChmYWNpbGl0eSBvcHMpLCBHU0k0IChyZXNvdXJjZSB0eXBlIGxpc3QpLlxuICovXG5leHBvcnQgY2xhc3MgRHluYW1vRGJEYXRhU3RvcmUgZXh0ZW5kcyBUYWJsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnQgdGhlIGRhdGEgc3RvcmUgdGFibGUgYnkgbmFtZSBmb3IgdXNlIGluIGFub3RoZXIgc3RhY2sgKGUuZy4gZGF0YVxuICAgKiBzZXJ2aWNlIG9yIExhbWJkYSkuIFVzZXMgdGhlIHNhbWUgbmFtaW5nIGFzIHtAbGluayBnZXREeW5hbW9EYkRhdGFTdG9yZVRhYmxlTmFtZX0uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Db25zdHJ1Y3QoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZCA9IFwiZHluYW1vLWRiLWRhdGEtc3RvcmVcIixcbiAgKTogSVRhYmxlIHtcbiAgICByZXR1cm4gVGFibGUuZnJvbVRhYmxlTmFtZShzY29wZSwgaWQsIGdldER5bmFtb0RiRGF0YVN0b3JlVGFibGVOYW1lKHNjb3BlKSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IER5bmFtb0RiRGF0YVN0b3JlUHJvcHMgPSB7fSxcbiAgKSB7XG4gICAgY29uc3Qgc2VydmljZSA9IE9wZW5IaVNlcnZpY2Uub2Yoc2NvcGUpIGFzIE9wZW5IaVNlcnZpY2U7XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgdGFibGVOYW1lOiBnZXREeW5hbW9EYkRhdGFTdG9yZVRhYmxlTmFtZShzY29wZSksXG4gICAgICBwYXJ0aXRpb25LZXk6IHtcbiAgICAgICAgbmFtZTogXCJQS1wiLFxuICAgICAgICB0eXBlOiBBdHRyaWJ1dGVUeXBlLlNUUklORyxcbiAgICAgIH0sXG4gICAgICBzb3J0S2V5OiB7XG4gICAgICAgIG5hbWU6IFwiU0tcIixcbiAgICAgICAgdHlwZTogQXR0cmlidXRlVHlwZS5TVFJJTkcsXG4gICAgICB9LFxuICAgICAgYmlsbGluZ01vZGU6IEJpbGxpbmdNb2RlLlBBWV9QRVJfUkVRVUVTVCxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzLnJlbW92YWxQb2xpY3kgPz8gc2VydmljZS5yZW1vdmFsUG9saWN5LFxuICAgIH0pO1xuXG4gICAgLy8gR1NJMSDigJQgUmV2ZXJzZSBSZWZlcmVuY2UgSW5kZXg6IFwid2hhdCByZWZlcmVuY2VzIFg/XCJcbiAgICB0aGlzLmFkZEdsb2JhbFNlY29uZGFyeUluZGV4KHtcbiAgICAgIGluZGV4TmFtZTogXCJHU0kxXCIsXG4gICAgICBwYXJ0aXRpb25LZXk6IHtcbiAgICAgICAgbmFtZTogXCJHU0kxUEtcIixcbiAgICAgICAgdHlwZTogQXR0cmlidXRlVHlwZS5TVFJJTkcsXG4gICAgICB9LFxuICAgICAgc29ydEtleToge1xuICAgICAgICBuYW1lOiBcIkdTSTFTS1wiLFxuICAgICAgICB0eXBlOiBBdHRyaWJ1dGVUeXBlLlNUUklORyxcbiAgICAgIH0sXG4gICAgICBwcm9qZWN0aW9uVHlwZTogUHJvamVjdGlvblR5cGUuSU5DTFVERSxcbiAgICAgIG5vbktleUF0dHJpYnV0ZXM6IFtcInNyY1R5cGVcIiwgXCJzcmNJZFwiLCBcInBhdGhcIiwgXCJzcmNQa1wiLCBcInNyY1NrXCIsIFwidHNcIl0sXG4gICAgfSk7XG5cbiAgICAvLyBHU0kyIOKAlCBJZGVudGlmaWVyIExvb2t1cCBJbmRleDogTVJOLCBOUEksIG1lbWJlciBJRCwgZXRjLlxuICAgIHRoaXMuYWRkR2xvYmFsU2Vjb25kYXJ5SW5kZXgoe1xuICAgICAgaW5kZXhOYW1lOiBcIkdTSTJcIixcbiAgICAgIHBhcnRpdGlvbktleToge1xuICAgICAgICBuYW1lOiBcIkdTSTJQS1wiLFxuICAgICAgICB0eXBlOiBBdHRyaWJ1dGVUeXBlLlNUUklORyxcbiAgICAgIH0sXG4gICAgICBzb3J0S2V5OiB7XG4gICAgICAgIG5hbWU6IFwiR1NJMlNLXCIsXG4gICAgICAgIHR5cGU6IEF0dHJpYnV0ZVR5cGUuU1RSSU5HLFxuICAgICAgfSxcbiAgICAgIHByb2plY3Rpb25UeXBlOiBQcm9qZWN0aW9uVHlwZS5JTkNMVURFLFxuICAgICAgbm9uS2V5QXR0cmlidXRlczogW1wicmVzb3VyY2VQa1wiLCBcInJlc291cmNlU2tcIiwgXCJkaXNwbGF5XCIsIFwic3RhdHVzXCJdLFxuICAgIH0pO1xuXG4gICAgLy8gR1NJMyDigJQgRmFjaWxpdHkgT3BzIEluZGV4OiB3b3JrbGlzdHMsIHJvc3RlcnMsIHNjaGVkdWxlc1xuICAgIHRoaXMuYWRkR2xvYmFsU2Vjb25kYXJ5SW5kZXgoe1xuICAgICAgaW5kZXhOYW1lOiBcIkdTSTNcIixcbiAgICAgIHBhcnRpdGlvbktleToge1xuICAgICAgICBuYW1lOiBcIkdTSTNQS1wiLFxuICAgICAgICB0eXBlOiBBdHRyaWJ1dGVUeXBlLlNUUklORyxcbiAgICAgIH0sXG4gICAgICBzb3J0S2V5OiB7XG4gICAgICAgIG5hbWU6IFwiR1NJM1NLXCIsXG4gICAgICAgIHR5cGU6IEF0dHJpYnV0ZVR5cGUuU1RSSU5HLFxuICAgICAgfSxcbiAgICAgIHByb2plY3Rpb25UeXBlOiBQcm9qZWN0aW9uVHlwZS5JTkNMVURFLFxuICAgICAgbm9uS2V5QXR0cmlidXRlczogW1wicmVzb3VyY2VQa1wiLCBcInJlc291cmNlU2tcIl0sXG4gICAgfSk7XG5cbiAgICAvLyBHU0k0IOKAlCBSZXNvdXJjZSBUeXBlIEluZGV4OiBsaXN0IGFsbCByZXNvdXJjZXMgb2YgYSB0eXBlIGluIHdvcmtzcGFjZSAobm8gc2NhbilcbiAgICB0aGlzLmFkZEdsb2JhbFNlY29uZGFyeUluZGV4KHtcbiAgICAgIGluZGV4TmFtZTogXCJHU0k0XCIsXG4gICAgICBwYXJ0aXRpb25LZXk6IHtcbiAgICAgICAgbmFtZTogXCJHU0k0UEtcIixcbiAgICAgICAgdHlwZTogQXR0cmlidXRlVHlwZS5TVFJJTkcsXG4gICAgICB9LFxuICAgICAgc29ydEtleToge1xuICAgICAgICBuYW1lOiBcIkdTSTRTS1wiLFxuICAgICAgICB0eXBlOiBBdHRyaWJ1dGVUeXBlLlNUUklORyxcbiAgICAgIH0sXG4gICAgICBwcm9qZWN0aW9uVHlwZTogUHJvamVjdGlvblR5cGUuQUxMLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { EventBus, EventBusProps, IEventBus } from "aws-cdk-lib/aws-events";
|
|
2
|
+
import { Construct } from "constructs";
|
|
3
|
+
export declare class DataEventBus extends EventBus {
|
|
4
|
+
/*****************************************************************************
|
|
5
|
+
*
|
|
6
|
+
* Return a name for this EventBus based on the stack environment hash. This
|
|
7
|
+
* name is common across all stacks since it's using the environment hash in
|
|
8
|
+
* it's name.
|
|
9
|
+
*
|
|
10
|
+
****************************************************************************/
|
|
11
|
+
static getEventBusName(scope: Construct): string;
|
|
12
|
+
/*****************************************************************************
|
|
13
|
+
*
|
|
14
|
+
* Return imported data event bus for use in any stack.
|
|
15
|
+
*
|
|
16
|
+
****************************************************************************/
|
|
17
|
+
static fromConstruct(scope: Construct): IEventBus;
|
|
18
|
+
constructor(scope: Construct, props?: EventBusProps);
|
|
19
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DataEventBus = void 0;
|
|
4
|
+
const aws_events_1 = require("aws-cdk-lib/aws-events");
|
|
5
|
+
const app_1 = require("../../app");
|
|
6
|
+
class DataEventBus extends aws_events_1.EventBus {
|
|
7
|
+
/*****************************************************************************
|
|
8
|
+
*
|
|
9
|
+
* Return a name for this EventBus based on the stack environment hash. This
|
|
10
|
+
* name is common across all stacks since it's using the environment hash in
|
|
11
|
+
* it's name.
|
|
12
|
+
*
|
|
13
|
+
****************************************************************************/
|
|
14
|
+
static getEventBusName(scope) {
|
|
15
|
+
const stack = app_1.OpenHiService.of(scope);
|
|
16
|
+
return `data${stack.branchHash}`;
|
|
17
|
+
}
|
|
18
|
+
/*****************************************************************************
|
|
19
|
+
*
|
|
20
|
+
* Return imported data event bus for use in any stack.
|
|
21
|
+
*
|
|
22
|
+
****************************************************************************/
|
|
23
|
+
static fromConstruct(scope) {
|
|
24
|
+
return aws_events_1.EventBus.fromEventBusName(scope, "data-event-bus", DataEventBus.getEventBusName(scope));
|
|
25
|
+
}
|
|
26
|
+
constructor(scope, props) {
|
|
27
|
+
super(scope, "data-event-bus", {
|
|
28
|
+
...props,
|
|
29
|
+
eventBusName: DataEventBus.getEventBusName(scope),
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.DataEventBus = DataEventBus;
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ldmVudC1idXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9ldmVudC1icmlkZ2UvZGF0YS1ldmVudC1idXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdURBQTRFO0FBRTVFLG1DQUEwQztBQUUxQyxNQUFhLFlBQWEsU0FBUSxxQkFBUTtJQUN4Qzs7Ozs7O2tGQU04RTtJQUV2RSxNQUFNLENBQUMsZUFBZSxDQUFDLEtBQWdCO1FBQzVDLE1BQU0sS0FBSyxHQUFHLG1CQUFhLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBa0IsQ0FBQztRQUN2RCxPQUFPLE9BQU8sS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7OztrRkFJOEU7SUFFdkUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFnQjtRQUMxQyxPQUFPLHFCQUFRLENBQUMsZ0JBQWdCLENBQzlCLEtBQUssRUFDTCxnQkFBZ0IsRUFDaEIsWUFBWSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FDcEMsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZLEtBQWdCLEVBQUUsS0FBcUI7UUFDakQsS0FBSyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRTtZQUM3QixHQUFHLEtBQUs7WUFDUixZQUFZLEVBQUUsWUFBWSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUM7U0FDbEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBbENELG9DQWtDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50QnVzLCBFdmVudEJ1c1Byb3BzLCBJRXZlbnRCdXMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWV2ZW50c1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IE9wZW5IaVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vYXBwXCI7XG5cbmV4cG9ydCBjbGFzcyBEYXRhRXZlbnRCdXMgZXh0ZW5kcyBFdmVudEJ1cyB7XG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKlxuICAgKiBSZXR1cm4gYSBuYW1lIGZvciB0aGlzIEV2ZW50QnVzIGJhc2VkIG9uIHRoZSBzdGFjayBlbnZpcm9ubWVudCBoYXNoLiBUaGlzXG4gICAqIG5hbWUgaXMgY29tbW9uIGFjcm9zcyBhbGwgc3RhY2tzIHNpbmNlIGl0J3MgdXNpbmcgdGhlIGVudmlyb25tZW50IGhhc2ggaW5cbiAgICogaXQncyBuYW1lLlxuICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgc3RhdGljIGdldEV2ZW50QnVzTmFtZShzY29wZTogQ29uc3RydWN0KTogc3RyaW5nIHtcbiAgICBjb25zdCBzdGFjayA9IE9wZW5IaVNlcnZpY2Uub2Yoc2NvcGUpIGFzIE9wZW5IaVNlcnZpY2U7XG4gICAgcmV0dXJuIGBkYXRhJHtzdGFjay5icmFuY2hIYXNofWA7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICpcbiAgICogUmV0dXJuIGltcG9ydGVkIGRhdGEgZXZlbnQgYnVzIGZvciB1c2UgaW4gYW55IHN0YWNrLlxuICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgc3RhdGljIGZyb21Db25zdHJ1Y3Qoc2NvcGU6IENvbnN0cnVjdCk6IElFdmVudEJ1cyB7XG4gICAgcmV0dXJuIEV2ZW50QnVzLmZyb21FdmVudEJ1c05hbWUoXG4gICAgICBzY29wZSxcbiAgICAgIFwiZGF0YS1ldmVudC1idXNcIixcbiAgICAgIERhdGFFdmVudEJ1cy5nZXRFdmVudEJ1c05hbWUoc2NvcGUpLFxuICAgICk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBwcm9wcz86IEV2ZW50QnVzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgXCJkYXRhLWV2ZW50LWJ1c1wiLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGV2ZW50QnVzTmFtZTogRGF0YUV2ZW50QnVzLmdldEV2ZW50QnVzTmFtZShzY29wZSksXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { EventBus, EventBusProps, IEventBus } from "aws-cdk-lib/aws-events";
|
|
2
|
+
import { Construct } from "constructs";
|
|
3
|
+
export declare class OpsEventBus extends EventBus {
|
|
4
|
+
/*****************************************************************************
|
|
5
|
+
*
|
|
6
|
+
* Return a name for this EventBus based on the stack environment hash. This
|
|
7
|
+
* name is common across all stacks since it's using the environment hash in
|
|
8
|
+
* it's name.
|
|
9
|
+
*
|
|
10
|
+
****************************************************************************/
|
|
11
|
+
static getEventBusName(scope: Construct): string;
|
|
12
|
+
/*****************************************************************************
|
|
13
|
+
*
|
|
14
|
+
* Return imported ops event bus for use in any stack.
|
|
15
|
+
*
|
|
16
|
+
****************************************************************************/
|
|
17
|
+
static fromConstruct(scope: Construct): IEventBus;
|
|
18
|
+
constructor(scope: Construct, props?: EventBusProps);
|
|
19
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OpsEventBus = void 0;
|
|
4
|
+
const aws_events_1 = require("aws-cdk-lib/aws-events");
|
|
5
|
+
const app_1 = require("../../app");
|
|
6
|
+
class OpsEventBus extends aws_events_1.EventBus {
|
|
7
|
+
/*****************************************************************************
|
|
8
|
+
*
|
|
9
|
+
* Return a name for this EventBus based on the stack environment hash. This
|
|
10
|
+
* name is common across all stacks since it's using the environment hash in
|
|
11
|
+
* it's name.
|
|
12
|
+
*
|
|
13
|
+
****************************************************************************/
|
|
14
|
+
static getEventBusName(scope) {
|
|
15
|
+
const stack = app_1.OpenHiService.of(scope);
|
|
16
|
+
return `ops${stack.branchHash}`;
|
|
17
|
+
}
|
|
18
|
+
/*****************************************************************************
|
|
19
|
+
*
|
|
20
|
+
* Return imported ops event bus for use in any stack.
|
|
21
|
+
*
|
|
22
|
+
****************************************************************************/
|
|
23
|
+
static fromConstruct(scope) {
|
|
24
|
+
return aws_events_1.EventBus.fromEventBusName(scope, "ops-event-bus", OpsEventBus.getEventBusName(scope));
|
|
25
|
+
}
|
|
26
|
+
constructor(scope, props) {
|
|
27
|
+
super(scope, "ops-event-bus", {
|
|
28
|
+
...props,
|
|
29
|
+
eventBusName: OpsEventBus.getEventBusName(scope),
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.OpsEventBus = OpsEventBus;
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BzLWV2ZW50LWJ1cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2V2ZW50LWJyaWRnZS9vcHMtZXZlbnQtYnVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUE0RTtBQUU1RSxtQ0FBMEM7QUFFMUMsTUFBYSxXQUFZLFNBQVEscUJBQVE7SUFDdkM7Ozs7OztrRkFNOEU7SUFFdkUsTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUFnQjtRQUM1QyxNQUFNLEtBQUssR0FBRyxtQkFBYSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQWtCLENBQUM7UUFDdkQsT0FBTyxNQUFNLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7a0ZBSThFO0lBRXZFLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBZ0I7UUFDMUMsT0FBTyxxQkFBUSxDQUFDLGdCQUFnQixDQUM5QixLQUFLLEVBQ0wsZUFBZSxFQUNmLFdBQVcsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQ25DLENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWSxLQUFnQixFQUFFLEtBQXFCO1FBQ2pELEtBQUssQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFO1lBQzVCLEdBQUcsS0FBSztZQUNSLFlBQVksRUFBRSxXQUFXLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztTQUNqRCxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFsQ0Qsa0NBa0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRCdXMsIEV2ZW50QnVzUHJvcHMsIElFdmVudEJ1cyB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZXZlbnRzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgT3BlbkhpU2VydmljZSB9IGZyb20gXCIuLi8uLi9hcHBcIjtcblxuZXhwb3J0IGNsYXNzIE9wc0V2ZW50QnVzIGV4dGVuZHMgRXZlbnRCdXMge1xuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICpcbiAgICogUmV0dXJuIGEgbmFtZSBmb3IgdGhpcyBFdmVudEJ1cyBiYXNlZCBvbiB0aGUgc3RhY2sgZW52aXJvbm1lbnQgaGFzaC4gVGhpc1xuICAgKiBuYW1lIGlzIGNvbW1vbiBhY3Jvc3MgYWxsIHN0YWNrcyBzaW5jZSBpdCdzIHVzaW5nIHRoZSBlbnZpcm9ubWVudCBoYXNoIGluXG4gICAqIGl0J3MgbmFtZS5cbiAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHN0YXRpYyBnZXRFdmVudEJ1c05hbWUoc2NvcGU6IENvbnN0cnVjdCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RhY2sgPSBPcGVuSGlTZXJ2aWNlLm9mKHNjb3BlKSBhcyBPcGVuSGlTZXJ2aWNlO1xuICAgIHJldHVybiBgb3BzJHtzdGFjay5icmFuY2hIYXNofWA7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICpcbiAgICogUmV0dXJuIGltcG9ydGVkIG9wcyBldmVudCBidXMgZm9yIHVzZSBpbiBhbnkgc3RhY2suXG4gICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUNvbnN0cnVjdChzY29wZTogQ29uc3RydWN0KTogSUV2ZW50QnVzIHtcbiAgICByZXR1cm4gRXZlbnRCdXMuZnJvbUV2ZW50QnVzTmFtZShcbiAgICAgIHNjb3BlLFxuICAgICAgXCJvcHMtZXZlbnQtYnVzXCIsXG4gICAgICBPcHNFdmVudEJ1cy5nZXRFdmVudEJ1c05hbWUoc2NvcGUpLFxuICAgICk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBwcm9wcz86IEV2ZW50QnVzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgXCJvcHMtZXZlbnQtYnVzXCIsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgZXZlbnRCdXNOYW1lOiBPcHNFdmVudEJ1cy5nZXRFdmVudEJ1c05hbWUoc2NvcGUpLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ICertificate } from "aws-cdk-lib/aws-certificatemanager";
|
|
2
|
+
import { HostedZoneAttributes, IHostedZone } from "aws-cdk-lib/aws-route53";
|
|
3
|
+
import { Construct } from "constructs";
|
|
4
|
+
import { SetOptional } from "type-fest";
|
|
5
|
+
export interface GlobalProps {
|
|
6
|
+
/**
|
|
7
|
+
* Root zone configuration attributes. Zone name is required, hosted zone ID
|
|
8
|
+
* is optional.
|
|
9
|
+
*/
|
|
10
|
+
readonly rootHostedZoneAttributes: HostedZoneAttributes;
|
|
11
|
+
/**
|
|
12
|
+
* Child zone configuration attributes. Zone name is required, hosted zone ID
|
|
13
|
+
* is optional.
|
|
14
|
+
*/
|
|
15
|
+
readonly childHostedZoneAttributes?: SetOptional<HostedZoneAttributes, "hostedZoneId">;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Global construct: owns global infrastructure (e.g. DNS and certificate resources).
|
|
19
|
+
|
|
20
|
+
*/
|
|
21
|
+
export declare class Global extends Construct {
|
|
22
|
+
props: GlobalProps;
|
|
23
|
+
/**
|
|
24
|
+
* Root hosted zone when config provides zoneName.
|
|
25
|
+
*/
|
|
26
|
+
readonly rootHostedZone: IHostedZone;
|
|
27
|
+
/**
|
|
28
|
+
* Child hosted zone when root zone exists.
|
|
29
|
+
*/
|
|
30
|
+
readonly childHostedZone?: IHostedZone;
|
|
31
|
+
/**
|
|
32
|
+
* Root wildcard certificate.
|
|
33
|
+
*/
|
|
34
|
+
readonly rootWildcardCertificate: ICertificate;
|
|
35
|
+
constructor(scope: Construct, id: string, props: GlobalProps);
|
|
36
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Global = void 0;
|
|
4
|
+
const aws_certificatemanager_1 = require("aws-cdk-lib/aws-certificatemanager");
|
|
5
|
+
const constructs_1 = require("constructs");
|
|
6
|
+
const app_1 = require("../app");
|
|
7
|
+
const root_wildcard_certificate_1 = require("./acm/root-wildcard-certificate");
|
|
8
|
+
const child_hosted_zone_1 = require("./route-53/child-hosted-zone");
|
|
9
|
+
const root_hosted_zone_1 = require("./route-53/root-hosted-zone");
|
|
10
|
+
/**
|
|
11
|
+
* Global construct: owns global infrastructure (e.g. DNS and certificate resources).
|
|
12
|
+
|
|
13
|
+
*/
|
|
14
|
+
class Global extends constructs_1.Construct {
|
|
15
|
+
constructor(scope, id, props) {
|
|
16
|
+
super(scope, id);
|
|
17
|
+
this.props = props;
|
|
18
|
+
/**
|
|
19
|
+
* Deconstruct props into individual variables.
|
|
20
|
+
*/
|
|
21
|
+
const { rootHostedZoneAttributes, childHostedZoneAttributes } = props;
|
|
22
|
+
const service = app_1.OpenHiService.of(this);
|
|
23
|
+
/***************************************************************************
|
|
24
|
+
*
|
|
25
|
+
* Root Zone
|
|
26
|
+
*
|
|
27
|
+
* This always is configured manually. Never created by CDK.
|
|
28
|
+
*
|
|
29
|
+
**************************************************************************/
|
|
30
|
+
this.rootHostedZone = root_hosted_zone_1.RootHostedZone.fromConstruct(this, rootHostedZoneAttributes);
|
|
31
|
+
/***************************************************************************
|
|
32
|
+
*
|
|
33
|
+
* Child Zone
|
|
34
|
+
*
|
|
35
|
+
**************************************************************************/
|
|
36
|
+
if (childHostedZoneAttributes) {
|
|
37
|
+
this.childHostedZone = new child_hosted_zone_1.ChildHostedZone(this, "child-zone", {
|
|
38
|
+
parentHostedZone: this.rootHostedZone,
|
|
39
|
+
zoneName: childHostedZoneAttributes.zoneName,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
/***************************************************************************
|
|
43
|
+
*
|
|
44
|
+
* Root WildCard Certificate
|
|
45
|
+
*
|
|
46
|
+
* Crated in main, used in all other environments via SSM import.
|
|
47
|
+
*
|
|
48
|
+
**************************************************************************/
|
|
49
|
+
if (service.branchName === "main") {
|
|
50
|
+
this.rootWildcardCertificate = new root_wildcard_certificate_1.RootWildcardCertificate(this, {
|
|
51
|
+
domainName: `*.${this.rootHostedZone.zoneName}`,
|
|
52
|
+
subjectAlternativeNames: [this.rootHostedZone.zoneName],
|
|
53
|
+
validation: aws_certificatemanager_1.CertificateValidation.fromDns(this.rootHostedZone),
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
this.rootWildcardCertificate =
|
|
58
|
+
root_wildcard_certificate_1.RootWildcardCertificate.fromConstruct(this);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.Global = Global;
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvZ2xvYmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtFQUc0QztBQUU1QywyQ0FBdUM7QUFFdkMsZ0NBQXVDO0FBQ3ZDLCtFQUEwRTtBQUMxRSxvRUFBK0Q7QUFDL0Qsa0VBQTZEO0FBbUI3RDs7O0dBR0c7QUFDSCxNQUFhLE1BQU8sU0FBUSxzQkFBUztJQWdCbkMsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ0gsS0FBa0I7UUFFekIsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUZWLFVBQUssR0FBTCxLQUFLLENBQWE7UUFJekI7O1dBRUc7UUFDSCxNQUFNLEVBQUUsd0JBQXdCLEVBQUUseUJBQXlCLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFFdEUsTUFBTSxPQUFPLEdBQUcsbUJBQWEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFrQixDQUFDO1FBRXhEOzs7Ozs7b0ZBTTRFO1FBRTVFLElBQUksQ0FBQyxjQUFjLEdBQUcsaUNBQWMsQ0FBQyxhQUFhLENBQ2hELElBQUksRUFDSix3QkFBd0IsQ0FDekIsQ0FBQztRQUVGOzs7O29GQUk0RTtRQUU1RSxJQUFJLHlCQUF5QixFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLG1DQUFlLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtnQkFDN0QsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGNBQWM7Z0JBQ3JDLFFBQVEsRUFBRSx5QkFBeUIsQ0FBQyxRQUFRO2FBQzdDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRDs7Ozs7O29GQU00RTtRQUU1RSxJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksbURBQXVCLENBQUMsSUFBSSxFQUFFO2dCQUMvRCxVQUFVLEVBQUUsS0FBSyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRTtnQkFDL0MsdUJBQXVCLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztnQkFDdkQsVUFBVSxFQUFFLDhDQUFxQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO2FBQy9ELENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLHVCQUF1QjtnQkFDMUIsbURBQXVCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUEzRUQsd0JBMkVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2VydGlmaWNhdGVWYWxpZGF0aW9uLFxuICBJQ2VydGlmaWNhdGUsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyXCI7XG5pbXBvcnQgeyBIb3N0ZWRab25lQXR0cmlidXRlcywgSUhvc3RlZFpvbmUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBTZXRPcHRpb25hbCB9IGZyb20gXCJ0eXBlLWZlc3RcIjtcbmltcG9ydCB7IE9wZW5IaVNlcnZpY2UgfSBmcm9tIFwiLi4vYXBwXCI7XG5pbXBvcnQgeyBSb290V2lsZGNhcmRDZXJ0aWZpY2F0ZSB9IGZyb20gXCIuL2FjbS9yb290LXdpbGRjYXJkLWNlcnRpZmljYXRlXCI7XG5pbXBvcnQgeyBDaGlsZEhvc3RlZFpvbmUgfSBmcm9tIFwiLi9yb3V0ZS01My9jaGlsZC1ob3N0ZWQtem9uZVwiO1xuaW1wb3J0IHsgUm9vdEhvc3RlZFpvbmUgfSBmcm9tIFwiLi9yb3V0ZS01My9yb290LWhvc3RlZC16b25lXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2xvYmFsUHJvcHMge1xuICAvKipcbiAgICogUm9vdCB6b25lIGNvbmZpZ3VyYXRpb24gYXR0cmlidXRlcy4gWm9uZSBuYW1lIGlzIHJlcXVpcmVkLCBob3N0ZWQgem9uZSBJRFxuICAgKiBpcyBvcHRpb25hbC5cbiAgICovXG4gIHJlYWRvbmx5IHJvb3RIb3N0ZWRab25lQXR0cmlidXRlczogSG9zdGVkWm9uZUF0dHJpYnV0ZXM7XG5cbiAgLyoqXG4gICAqIENoaWxkIHpvbmUgY29uZmlndXJhdGlvbiBhdHRyaWJ1dGVzLiBab25lIG5hbWUgaXMgcmVxdWlyZWQsIGhvc3RlZCB6b25lIElEXG4gICAqIGlzIG9wdGlvbmFsLlxuICAgKi9cbiAgcmVhZG9ubHkgY2hpbGRIb3N0ZWRab25lQXR0cmlidXRlcz86IFNldE9wdGlvbmFsPFxuICAgIEhvc3RlZFpvbmVBdHRyaWJ1dGVzLFxuICAgIFwiaG9zdGVkWm9uZUlkXCJcbiAgPjtcbn1cblxuLyoqXG4gKiBHbG9iYWwgY29uc3RydWN0OiBvd25zIGdsb2JhbCBpbmZyYXN0cnVjdHVyZSAoZS5nLiBETlMgYW5kIGNlcnRpZmljYXRlIHJlc291cmNlcykuXG5cbiAqL1xuZXhwb3J0IGNsYXNzIEdsb2JhbCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBSb290IGhvc3RlZCB6b25lIHdoZW4gY29uZmlnIHByb3ZpZGVzIHpvbmVOYW1lLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvb3RIb3N0ZWRab25lOiBJSG9zdGVkWm9uZTtcblxuICAvKipcbiAgICogQ2hpbGQgaG9zdGVkIHpvbmUgd2hlbiByb290IHpvbmUgZXhpc3RzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNoaWxkSG9zdGVkWm9uZT86IElIb3N0ZWRab25lO1xuXG4gIC8qKlxuICAgKiBSb290IHdpbGRjYXJkIGNlcnRpZmljYXRlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvb3RXaWxkY2FyZENlcnRpZmljYXRlOiBJQ2VydGlmaWNhdGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHB1YmxpYyBwcm9wczogR2xvYmFsUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvKipcbiAgICAgKiBEZWNvbnN0cnVjdCBwcm9wcyBpbnRvIGluZGl2aWR1YWwgdmFyaWFibGVzLlxuICAgICAqL1xuICAgIGNvbnN0IHsgcm9vdEhvc3RlZFpvbmVBdHRyaWJ1dGVzLCBjaGlsZEhvc3RlZFpvbmVBdHRyaWJ1dGVzIH0gPSBwcm9wcztcblxuICAgIGNvbnN0IHNlcnZpY2UgPSBPcGVuSGlTZXJ2aWNlLm9mKHRoaXMpIGFzIE9wZW5IaVNlcnZpY2U7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBSb290IFpvbmVcbiAgICAgKlxuICAgICAqIFRoaXMgYWx3YXlzIGlzIGNvbmZpZ3VyZWQgbWFudWFsbHkuIE5ldmVyIGNyZWF0ZWQgYnkgQ0RLLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgdGhpcy5yb290SG9zdGVkWm9uZSA9IFJvb3RIb3N0ZWRab25lLmZyb21Db25zdHJ1Y3QoXG4gICAgICB0aGlzLFxuICAgICAgcm9vdEhvc3RlZFpvbmVBdHRyaWJ1dGVzLFxuICAgICk7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBDaGlsZCBab25lXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBpZiAoY2hpbGRIb3N0ZWRab25lQXR0cmlidXRlcykge1xuICAgICAgdGhpcy5jaGlsZEhvc3RlZFpvbmUgPSBuZXcgQ2hpbGRIb3N0ZWRab25lKHRoaXMsIFwiY2hpbGQtem9uZVwiLCB7XG4gICAgICAgIHBhcmVudEhvc3RlZFpvbmU6IHRoaXMucm9vdEhvc3RlZFpvbmUsXG4gICAgICAgIHpvbmVOYW1lOiBjaGlsZEhvc3RlZFpvbmVBdHRyaWJ1dGVzLnpvbmVOYW1lLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogUm9vdCBXaWxkQ2FyZCBDZXJ0aWZpY2F0ZVxuICAgICAqXG4gICAgICogQ3JhdGVkIGluIG1haW4sIHVzZWQgaW4gYWxsIG90aGVyIGVudmlyb25tZW50cyB2aWEgU1NNIGltcG9ydC5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGlmIChzZXJ2aWNlLmJyYW5jaE5hbWUgPT09IFwibWFpblwiKSB7XG4gICAgICB0aGlzLnJvb3RXaWxkY2FyZENlcnRpZmljYXRlID0gbmV3IFJvb3RXaWxkY2FyZENlcnRpZmljYXRlKHRoaXMsIHtcbiAgICAgICAgZG9tYWluTmFtZTogYCouJHt0aGlzLnJvb3RIb3N0ZWRab25lLnpvbmVOYW1lfWAsXG4gICAgICAgIHN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzOiBbdGhpcy5yb290SG9zdGVkWm9uZS56b25lTmFtZV0sXG4gICAgICAgIHZhbGlkYXRpb246IENlcnRpZmljYXRlVmFsaWRhdGlvbi5mcm9tRG5zKHRoaXMucm9vdEhvc3RlZFpvbmUpLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm9vdFdpbGRjYXJkQ2VydGlmaWNhdGUgPVxuICAgICAgICBSb290V2lsZGNhcmRDZXJ0aWZpY2F0ZS5mcm9tQ29uc3RydWN0KHRoaXMpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./ssm";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./ssm"), exports);
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsd0NBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vc3NtXCI7XG4iXX0=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { HostedZone, HostedZoneProps, IHostedZone } from "aws-cdk-lib/aws-route53";
|
|
2
|
+
import { Construct } from "constructs";
|
|
3
|
+
import { OpenHiServiceType } from "../../app/open-hi-service";
|
|
4
|
+
export interface ChildHostedZoneProps extends HostedZoneProps {
|
|
5
|
+
/**
|
|
6
|
+
* The root zone we will attach this sub-zone to.
|
|
7
|
+
*/
|
|
8
|
+
readonly parentHostedZone: IHostedZone;
|
|
9
|
+
}
|
|
10
|
+
export declare class ChildHostedZone extends HostedZone {
|
|
11
|
+
/**
|
|
12
|
+
* Used when storing the API ID in SSM.
|
|
13
|
+
*/
|
|
14
|
+
static readonly SSM_PARAM_NAME = "CHILDHOSTEDZONE";
|
|
15
|
+
static fromConstruct(scope: Construct, props: {
|
|
16
|
+
zoneName: string;
|
|
17
|
+
serviceType?: OpenHiServiceType;
|
|
18
|
+
}): IHostedZone;
|
|
19
|
+
constructor(scope: Construct, id: string, props: ChildHostedZoneProps);
|
|
20
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChildHostedZone = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const aws_route53_1 = require("aws-cdk-lib/aws-route53");
|
|
6
|
+
const open_hi_service_1 = require("../../app/open-hi-service");
|
|
7
|
+
const ssm_1 = require("../ssm");
|
|
8
|
+
class ChildHostedZone extends aws_route53_1.HostedZone {
|
|
9
|
+
static fromConstruct(scope, props) {
|
|
10
|
+
/**
|
|
11
|
+
* Assume it was created in the global stack if no service type was submitted
|
|
12
|
+
*/
|
|
13
|
+
const hostedZoneId = ssm_1.DiscoverableStringParameter.valueForLookupName(scope, {
|
|
14
|
+
ssmParamName: ChildHostedZone.SSM_PARAM_NAME,
|
|
15
|
+
serviceType: props.serviceType ?? open_hi_service_1.OPEN_HI_SERVICE_TYPE.GLOBAL,
|
|
16
|
+
});
|
|
17
|
+
return aws_route53_1.HostedZone.fromHostedZoneAttributes(scope, "child-zone", {
|
|
18
|
+
hostedZoneId,
|
|
19
|
+
zoneName: props.zoneName,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
constructor(scope, id, props) {
|
|
23
|
+
super(scope, id, { ...props });
|
|
24
|
+
/**
|
|
25
|
+
* Chain the child zone to the parent zone using NS record.
|
|
26
|
+
*/
|
|
27
|
+
new aws_route53_1.NsRecord(this, "child-ns-record", {
|
|
28
|
+
zone: props.parentHostedZone,
|
|
29
|
+
recordName: this.zoneName,
|
|
30
|
+
values: this.hostedZoneNameServers || [],
|
|
31
|
+
ttl: aws_cdk_lib_1.Duration.minutes(5),
|
|
32
|
+
});
|
|
33
|
+
/**
|
|
34
|
+
* Generate the SSM Parameter used to store this zone's ID.
|
|
35
|
+
*/
|
|
36
|
+
new ssm_1.DiscoverableStringParameter(this, "child-zone-param", {
|
|
37
|
+
ssmParamName: ChildHostedZone.SSM_PARAM_NAME,
|
|
38
|
+
stringValue: this.hostedZoneId,
|
|
39
|
+
description: "Route53 child hosted zone ID.",
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.ChildHostedZone = ChildHostedZone;
|
|
44
|
+
/**
|
|
45
|
+
* Used when storing the API ID in SSM.
|
|
46
|
+
*/
|
|
47
|
+
ChildHostedZone.SSM_PARAM_NAME = "CHILDHOSTEDZONE";
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpbGQtaG9zdGVkLXpvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9yb3V0ZS01My9jaGlsZC1ob3N0ZWQtem9uZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBdUM7QUFDdkMseURBS2lDO0FBRWpDLCtEQUdtQztBQUNuQyxnQ0FBcUQ7QUFTckQsTUFBYSxlQUFnQixTQUFRLHdCQUFVO0lBTXRDLE1BQU0sQ0FBQyxhQUFhLENBQ3pCLEtBQWdCLEVBQ2hCLEtBQTREO1FBRTVEOztXQUVHO1FBQ0gsTUFBTSxZQUFZLEdBQUcsaUNBQTJCLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFO1lBQ3pFLFlBQVksRUFBRSxlQUFlLENBQUMsY0FBYztZQUM1QyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxzQ0FBb0IsQ0FBQyxNQUFNO1NBQzlELENBQUMsQ0FBQztRQUVILE9BQU8sd0JBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFO1lBQzlELFlBQVk7WUFDWixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7U0FDekIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMkI7UUFDbkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFL0I7O1dBRUc7UUFDSCxJQUFJLHNCQUFRLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3BDLElBQUksRUFBRSxLQUFLLENBQUMsZ0JBQWdCO1lBQzVCLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN6QixNQUFNLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixJQUFJLEVBQUU7WUFDeEMsR0FBRyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUN6QixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNILElBQUksaUNBQTJCLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFO1lBQ3hELFlBQVksRUFBRSxlQUFlLENBQUMsY0FBYztZQUM1QyxXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDOUIsV0FBVyxFQUFFLCtCQUErQjtTQUM3QyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQTdDSCwwQ0E4Q0M7QUE3Q0M7O0dBRUc7QUFDb0IsOEJBQWMsR0FBRyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICBIb3N0ZWRab25lLFxuICBIb3N0ZWRab25lUHJvcHMsXG4gIElIb3N0ZWRab25lLFxuICBOc1JlY29yZCxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgT1BFTl9ISV9TRVJWSUNFX1RZUEUsXG4gIE9wZW5IaVNlcnZpY2VUeXBlLFxufSBmcm9tIFwiLi4vLi4vYXBwL29wZW4taGktc2VydmljZVwiO1xuaW1wb3J0IHsgRGlzY292ZXJhYmxlU3RyaW5nUGFyYW1ldGVyIH0gZnJvbSBcIi4uL3NzbVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoaWxkSG9zdGVkWm9uZVByb3BzIGV4dGVuZHMgSG9zdGVkWm9uZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSByb290IHpvbmUgd2Ugd2lsbCBhdHRhY2ggdGhpcyBzdWItem9uZSB0by5cbiAgICovXG4gIHJlYWRvbmx5IHBhcmVudEhvc3RlZFpvbmU6IElIb3N0ZWRab25lO1xufVxuXG5leHBvcnQgY2xhc3MgQ2hpbGRIb3N0ZWRab25lIGV4dGVuZHMgSG9zdGVkWm9uZSB7XG4gIC8qKlxuICAgKiBVc2VkIHdoZW4gc3RvcmluZyB0aGUgQVBJIElEIGluIFNTTS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU1NNX1BBUkFNX05BTUUgPSBcIkNISUxESE9TVEVEWk9ORVwiO1xuXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUNvbnN0cnVjdChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIHByb3BzOiB7IHpvbmVOYW1lOiBzdHJpbmc7IHNlcnZpY2VUeXBlPzogT3BlbkhpU2VydmljZVR5cGUgfSxcbiAgKTogSUhvc3RlZFpvbmUge1xuICAgIC8qKlxuICAgICAqIEFzc3VtZSBpdCB3YXMgY3JlYXRlZCBpbiB0aGUgZ2xvYmFsIHN0YWNrIGlmIG5vIHNlcnZpY2UgdHlwZSB3YXMgc3VibWl0dGVkXG4gICAgICovXG4gICAgY29uc3QgaG9zdGVkWm9uZUlkID0gRGlzY292ZXJhYmxlU3RyaW5nUGFyYW1ldGVyLnZhbHVlRm9yTG9va3VwTmFtZShzY29wZSwge1xuICAgICAgc3NtUGFyYW1OYW1lOiBDaGlsZEhvc3RlZFpvbmUuU1NNX1BBUkFNX05BTUUsXG4gICAgICBzZXJ2aWNlVHlwZTogcHJvcHMuc2VydmljZVR5cGUgPz8gT1BFTl9ISV9TRVJWSUNFX1RZUEUuR0xPQkFMLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIEhvc3RlZFpvbmUuZnJvbUhvc3RlZFpvbmVBdHRyaWJ1dGVzKHNjb3BlLCBcImNoaWxkLXpvbmVcIiwge1xuICAgICAgaG9zdGVkWm9uZUlkLFxuICAgICAgem9uZU5hbWU6IHByb3BzLnpvbmVOYW1lLFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENoaWxkSG9zdGVkWm9uZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7IC4uLnByb3BzIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hhaW4gdGhlIGNoaWxkIHpvbmUgdG8gdGhlIHBhcmVudCB6b25lIHVzaW5nIE5TIHJlY29yZC5cbiAgICAgKi9cbiAgICBuZXcgTnNSZWNvcmQodGhpcywgXCJjaGlsZC1ucy1yZWNvcmRcIiwge1xuICAgICAgem9uZTogcHJvcHMucGFyZW50SG9zdGVkWm9uZSxcbiAgICAgIHJlY29yZE5hbWU6IHRoaXMuem9uZU5hbWUsXG4gICAgICB2YWx1ZXM6IHRoaXMuaG9zdGVkWm9uZU5hbWVTZXJ2ZXJzIHx8IFtdLFxuICAgICAgdHRsOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogR2VuZXJhdGUgdGhlIFNTTSBQYXJhbWV0ZXIgdXNlZCB0byBzdG9yZSB0aGlzIHpvbmUncyBJRC5cbiAgICAgKi9cbiAgICBuZXcgRGlzY292ZXJhYmxlU3RyaW5nUGFyYW1ldGVyKHRoaXMsIFwiY2hpbGQtem9uZS1wYXJhbVwiLCB7XG4gICAgICBzc21QYXJhbU5hbWU6IENoaWxkSG9zdGVkWm9uZS5TU01fUEFSQU1fTkFNRSxcbiAgICAgIHN0cmluZ1ZhbHVlOiB0aGlzLmhvc3RlZFpvbmVJZCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlJvdXRlNTMgY2hpbGQgaG9zdGVkIHpvbmUgSUQuXCIsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { HostedZoneAttributes, IHostedZone } from "aws-cdk-lib/aws-route53";
|
|
2
|
+
import { Construct } from "constructs";
|
|
3
|
+
/**
|
|
4
|
+
* This will always return a root hosted zone based on attributes. It will
|
|
5
|
+
* never create the root zone since the root zone should always be created
|
|
6
|
+
* manually.
|
|
7
|
+
*/
|
|
8
|
+
export declare class RootHostedZone extends Construct {
|
|
9
|
+
static fromConstruct(scope: Construct, props: HostedZoneAttributes): IHostedZone;
|
|
10
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RootHostedZone = void 0;
|
|
4
|
+
const aws_route53_1 = require("aws-cdk-lib/aws-route53");
|
|
5
|
+
const constructs_1 = require("constructs");
|
|
6
|
+
/**
|
|
7
|
+
* This will always return a root hosted zone based on attributes. It will
|
|
8
|
+
* never create the root zone since the root zone should always be created
|
|
9
|
+
* manually.
|
|
10
|
+
*/
|
|
11
|
+
class RootHostedZone extends constructs_1.Construct {
|
|
12
|
+
static fromConstruct(scope, props) {
|
|
13
|
+
return aws_route53_1.HostedZone.fromHostedZoneAttributes(scope, "root-zone", {
|
|
14
|
+
hostedZoneId: props.hostedZoneId,
|
|
15
|
+
zoneName: props.zoneName,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.RootHostedZone = RootHostedZone;
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC1ob3N0ZWQtem9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3JvdXRlLTUzL3Jvb3QtaG9zdGVkLXpvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseURBSWlDO0FBQ2pDLDJDQUF1QztBQUV2Qzs7OztHQUlHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsc0JBQVM7SUFDcEMsTUFBTSxDQUFDLGFBQWEsQ0FDekIsS0FBZ0IsRUFDaEIsS0FBMkI7UUFFM0IsT0FBTyx3QkFBVSxDQUFDLHdCQUF3QixDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUU7WUFDN0QsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtTQUN6QixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFWRCx3Q0FVQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEhvc3RlZFpvbmUsXG4gIEhvc3RlZFpvbmVBdHRyaWJ1dGVzLFxuICBJSG9zdGVkWm9uZSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG4vKipcbiAqIFRoaXMgd2lsbCBhbHdheXMgcmV0dXJuIGEgcm9vdCBob3N0ZWQgem9uZSBiYXNlZCBvbiBhdHRyaWJ1dGVzLiBJdCB3aWxsXG4gKiBuZXZlciBjcmVhdGUgdGhlIHJvb3Qgem9uZSBzaW5jZSB0aGUgcm9vdCB6b25lIHNob3VsZCBhbHdheXMgYmUgY3JlYXRlZFxuICogbWFudWFsbHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBSb290SG9zdGVkWm9uZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyBzdGF0aWMgZnJvbUNvbnN0cnVjdChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIHByb3BzOiBIb3N0ZWRab25lQXR0cmlidXRlcyxcbiAgKTogSUhvc3RlZFpvbmUge1xuICAgIHJldHVybiBIb3N0ZWRab25lLmZyb21Ib3N0ZWRab25lQXR0cmlidXRlcyhzY29wZSwgXCJyb290LXpvbmVcIiwge1xuICAgICAgaG9zdGVkWm9uZUlkOiBwcm9wcy5ob3N0ZWRab25lSWQsXG4gICAgICB6b25lTmFtZTogcHJvcHMuem9uZU5hbWUsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { StringParameter, type StringParameterProps } from "aws-cdk-lib/aws-ssm";
|
|
2
|
+
import { Construct } from "constructs";
|
|
3
|
+
/*******************************************************************************
|
|
4
|
+
*
|
|
5
|
+
* DiscoverableStringParameterProps: props for creating or looking up SSM
|
|
6
|
+
* parameters. Includes StringParameterProps (minus parameterName) plus
|
|
7
|
+
* name-building fields used by buildParameterName.
|
|
8
|
+
*
|
|
9
|
+
******************************************************************************/
|
|
10
|
+
export interface DiscoverableStringParameterProps extends Omit<StringParameterProps, "parameterName"> {
|
|
11
|
+
/**
|
|
12
|
+
* SSM param name used to build the SSM parameter name via buildParameterName
|
|
13
|
+
* and stored as a tag on the parameter for discoverability.
|
|
14
|
+
*/
|
|
15
|
+
readonly ssmParamName: string;
|
|
16
|
+
/**
|
|
17
|
+
* The environment hash the parameter belongs to.
|
|
18
|
+
* @default - the current stack's environment hash
|
|
19
|
+
*/
|
|
20
|
+
readonly branchHash?: string;
|
|
21
|
+
/**
|
|
22
|
+
* The service type the parameter belongs to.
|
|
23
|
+
* @default - the current stack's service type
|
|
24
|
+
*/
|
|
25
|
+
readonly serviceType?: string;
|
|
26
|
+
/**
|
|
27
|
+
* The AWS account the parameter belongs to.
|
|
28
|
+
* @default - the current stack's account
|
|
29
|
+
*/
|
|
30
|
+
readonly account?: string;
|
|
31
|
+
/**
|
|
32
|
+
* The AWS region the parameter belongs to.
|
|
33
|
+
* @default - the current stack's region
|
|
34
|
+
*/
|
|
35
|
+
readonly region?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Props for buildParameterName and valueForLookupName.
|
|
39
|
+
* Includes ssmParamName (required) and optional overrides (branchHash, serviceType, account, region).
|
|
40
|
+
*/
|
|
41
|
+
export type BuildParameterNameProps = Pick<DiscoverableStringParameterProps, "ssmParamName" | "branchHash" | "serviceType" | "account" | "region">;
|
|
42
|
+
/**
|
|
43
|
+
* Discoverable SSM string parameter construct. Extends CDK StringParameter:
|
|
44
|
+
* builds parameterName from the given name via buildParameterName and tags
|
|
45
|
+
* the parameter with the name constant.
|
|
46
|
+
*/
|
|
47
|
+
export declare class DiscoverableStringParameter extends StringParameter {
|
|
48
|
+
/**
|
|
49
|
+
* Build a param name based on predictable attributes found in services and
|
|
50
|
+
* constructs. Used for storage and retrieval of SSM values across services.
|
|
51
|
+
*/
|
|
52
|
+
static buildParameterName(scope: Construct, props: BuildParameterNameProps): string;
|
|
53
|
+
/**
|
|
54
|
+
* Read the string value of an SSM parameter created with DiscoverableStringParameter,
|
|
55
|
+
* using props that include ssmParamName and optional overrides (e.g. serviceType).
|
|
56
|
+
*/
|
|
57
|
+
static valueForLookupName(scope: Construct, props: BuildParameterNameProps): string;
|
|
58
|
+
constructor(scope: Construct, id: string, props: DiscoverableStringParameterProps);
|
|
59
|
+
}
|