@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
package/README.md
ADDED
package/lib/app/index.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
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("./open-hi-app"), exports);
|
|
18
|
+
__exportStar(require("./open-hi-environment"), exports);
|
|
19
|
+
__exportStar(require("./open-hi-service"), exports);
|
|
20
|
+
__exportStar(require("./open-hi-stage"), exports);
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnREFBOEI7QUFDOUIsd0RBQXNDO0FBQ3RDLG9EQUFrQztBQUNsQyxrREFBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9vcGVuLWhpLWFwcFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vb3Blbi1oaS1lbnZpcm9ubWVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vb3Blbi1oaS1zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9vcGVuLWhpLXN0YWdlXCI7XG4iXX0=
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { OpenHiConfig } from "@openhi/config";
|
|
2
|
+
import { App, AppProps } from "aws-cdk-lib";
|
|
3
|
+
import { IConstruct } from "constructs";
|
|
4
|
+
import { OpenHiEnvironment } from "./open-hi-environment";
|
|
5
|
+
import { OpenHiStage } from "./open-hi-stage";
|
|
6
|
+
/**
|
|
7
|
+
* Properties for creating an OpenHiApp instance.
|
|
8
|
+
*/
|
|
9
|
+
export interface OpenHiAppProps extends AppProps {
|
|
10
|
+
/**
|
|
11
|
+
* Optional name for the application.
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
readonly appName?: string;
|
|
15
|
+
/**
|
|
16
|
+
* The OpenHi configuration object that defines stages, environments, and
|
|
17
|
+
* their associated AWS account and region settings.
|
|
18
|
+
*/
|
|
19
|
+
readonly config: OpenHiConfig;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Root application construct for OpenHi CDK applications.
|
|
23
|
+
*/
|
|
24
|
+
export declare class OpenHiApp extends App {
|
|
25
|
+
/**
|
|
26
|
+
* Finds the OpenHiApp instance that contains the given construct in its
|
|
27
|
+
* construct tree.
|
|
28
|
+
*/
|
|
29
|
+
static of(construct: IConstruct): OpenHiApp | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Type guard that checks if a value is an OpenHiApp instance.
|
|
32
|
+
*/
|
|
33
|
+
static isOpenHiApp(this: void, x: any): x is OpenHiApp;
|
|
34
|
+
/**
|
|
35
|
+
* Name for the application.
|
|
36
|
+
*/
|
|
37
|
+
readonly appName: string;
|
|
38
|
+
/**
|
|
39
|
+
* The OpenHi configuration object for this application.
|
|
40
|
+
*/
|
|
41
|
+
readonly config: OpenHiConfig;
|
|
42
|
+
/**
|
|
43
|
+
* Creates a new OpenHiApp instance.
|
|
44
|
+
*/
|
|
45
|
+
constructor(props: OpenHiAppProps);
|
|
46
|
+
/*****************************************************************************
|
|
47
|
+
*
|
|
48
|
+
* Stages
|
|
49
|
+
*
|
|
50
|
+
****************************************************************************/
|
|
51
|
+
/**
|
|
52
|
+
* Gets all OpenHiStage instances that are direct children of this app.
|
|
53
|
+
|
|
54
|
+
*/
|
|
55
|
+
get stages(): Array<OpenHiStage>;
|
|
56
|
+
/**
|
|
57
|
+
* Gets the development stage, if it exists.
|
|
58
|
+
*/
|
|
59
|
+
get devStage(): OpenHiStage | undefined;
|
|
60
|
+
/**
|
|
61
|
+
* Gets the staging stage, if it exists.
|
|
62
|
+
*/
|
|
63
|
+
get stageStage(): OpenHiStage | undefined;
|
|
64
|
+
/**
|
|
65
|
+
* Gets the production stage, if it exists.
|
|
66
|
+
*/
|
|
67
|
+
get prodStage(): OpenHiStage | undefined;
|
|
68
|
+
/*****************************************************************************
|
|
69
|
+
*
|
|
70
|
+
* Environments
|
|
71
|
+
*
|
|
72
|
+
****************************************************************************/
|
|
73
|
+
/**
|
|
74
|
+
* Gets all OpenHiEnvironment instances across all stages in this app.
|
|
75
|
+
*/
|
|
76
|
+
get environments(): Array<OpenHiEnvironment>;
|
|
77
|
+
/**
|
|
78
|
+
* Gets all primary environments across all stages in this app.
|
|
79
|
+
*/
|
|
80
|
+
get primaryEnvironments(): Array<OpenHiEnvironment>;
|
|
81
|
+
/**
|
|
82
|
+
* Gets all secondary environments across all stages in this app.
|
|
83
|
+
*/
|
|
84
|
+
get secondaryEnvironments(): Array<OpenHiEnvironment>;
|
|
85
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OpenHiApp = void 0;
|
|
4
|
+
const config_1 = require("@openhi/config");
|
|
5
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
6
|
+
const open_hi_environment_1 = require("./open-hi-environment");
|
|
7
|
+
const open_hi_stage_1 = require("./open-hi-stage");
|
|
8
|
+
/**
|
|
9
|
+
* Symbol used for runtime type checking to identify OpenHiApp instances.
|
|
10
|
+
*
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
const OPEN_HI_APP_SYMBOL = Symbol.for("@openhi/constructs/core.OpenHiApp");
|
|
14
|
+
/**
|
|
15
|
+
* Root application construct for OpenHi CDK applications.
|
|
16
|
+
*/
|
|
17
|
+
class OpenHiApp extends aws_cdk_lib_1.App {
|
|
18
|
+
/**
|
|
19
|
+
* Finds the OpenHiApp instance that contains the given construct in its
|
|
20
|
+
* construct tree.
|
|
21
|
+
*/
|
|
22
|
+
static of(construct) {
|
|
23
|
+
return construct.node.scopes.reverse().find(OpenHiApp.isOpenHiApp);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Type guard that checks if a value is an OpenHiApp instance.
|
|
27
|
+
*/
|
|
28
|
+
static isOpenHiApp(x) {
|
|
29
|
+
return x !== null && typeof x === "object" && OPEN_HI_APP_SYMBOL in x;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Creates a new OpenHiApp instance.
|
|
33
|
+
*/
|
|
34
|
+
constructor(props) {
|
|
35
|
+
super(props);
|
|
36
|
+
// Set runtime symbol for type checking
|
|
37
|
+
Object.defineProperty(this, OPEN_HI_APP_SYMBOL, { value: true });
|
|
38
|
+
// Store app name, defaulting to "openhi" if not provided
|
|
39
|
+
this.appName = props.appName ?? "openhi";
|
|
40
|
+
// Store configuration for use by child constructs
|
|
41
|
+
this.config = props.config;
|
|
42
|
+
// Create stages and environments based on configuration
|
|
43
|
+
// Iterate through all possible stage types (dev, stage, prod)
|
|
44
|
+
Object.values(config_1.OPEN_HI_STAGE).forEach((stageType) => {
|
|
45
|
+
// Only create a stage if it's configured in the config
|
|
46
|
+
if (this.config.deploymentTargets?.[stageType]) {
|
|
47
|
+
const stage = new open_hi_stage_1.OpenHiStage(this, { stageType });
|
|
48
|
+
// Create primary deployment target if configured
|
|
49
|
+
// Each stage can have at most one primary deployment target
|
|
50
|
+
if (this.config.deploymentTargets?.[stageType]?.[config_1.OPEN_HI_DEPLOYMENT_TARGET_ROLE.PRIMARY]) {
|
|
51
|
+
const envConfig = this.config.deploymentTargets[stageType][config_1.OPEN_HI_DEPLOYMENT_TARGET_ROLE.PRIMARY];
|
|
52
|
+
new open_hi_environment_1.OpenHiEnvironment(stage, {
|
|
53
|
+
deploymentTargetRole: config_1.OPEN_HI_DEPLOYMENT_TARGET_ROLE.PRIMARY,
|
|
54
|
+
config: envConfig,
|
|
55
|
+
env: { account: envConfig.account, region: envConfig.region },
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
// Create secondary deployment targets if configured
|
|
59
|
+
// Each stage can have zero or more secondary deployment targets
|
|
60
|
+
if (this.config.deploymentTargets?.[stageType]?.[config_1.OPEN_HI_DEPLOYMENT_TARGET_ROLE.SECONDARY]) {
|
|
61
|
+
this.config.deploymentTargets[stageType][config_1.OPEN_HI_DEPLOYMENT_TARGET_ROLE.SECONDARY].forEach((envConfig) => {
|
|
62
|
+
new open_hi_environment_1.OpenHiEnvironment(stage, {
|
|
63
|
+
deploymentTargetRole: config_1.OPEN_HI_DEPLOYMENT_TARGET_ROLE.SECONDARY,
|
|
64
|
+
config: envConfig,
|
|
65
|
+
env: { account: envConfig.account, region: envConfig.region },
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/*****************************************************************************
|
|
73
|
+
*
|
|
74
|
+
* Stages
|
|
75
|
+
*
|
|
76
|
+
****************************************************************************/
|
|
77
|
+
/**
|
|
78
|
+
* Gets all OpenHiStage instances that are direct children of this app.
|
|
79
|
+
|
|
80
|
+
*/
|
|
81
|
+
get stages() {
|
|
82
|
+
return this.node.children.filter(open_hi_stage_1.OpenHiStage.isOpenHiStage);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Gets the development stage, if it exists.
|
|
86
|
+
*/
|
|
87
|
+
get devStage() {
|
|
88
|
+
return this.stages.find((stage) => stage.stageType === config_1.OPEN_HI_STAGE.DEV);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Gets the staging stage, if it exists.
|
|
92
|
+
*/
|
|
93
|
+
get stageStage() {
|
|
94
|
+
return this.stages.find((stage) => stage.stageType === config_1.OPEN_HI_STAGE.STAGE);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Gets the production stage, if it exists.
|
|
98
|
+
*/
|
|
99
|
+
get prodStage() {
|
|
100
|
+
return this.stages.find((stage) => stage.stageType === config_1.OPEN_HI_STAGE.PROD);
|
|
101
|
+
}
|
|
102
|
+
/*****************************************************************************
|
|
103
|
+
*
|
|
104
|
+
* Environments
|
|
105
|
+
*
|
|
106
|
+
****************************************************************************/
|
|
107
|
+
/**
|
|
108
|
+
* Gets all OpenHiEnvironment instances across all stages in this app.
|
|
109
|
+
*/
|
|
110
|
+
get environments() {
|
|
111
|
+
return this.stages.flatMap((stage) => stage.environments);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Gets all primary environments across all stages in this app.
|
|
115
|
+
*/
|
|
116
|
+
get primaryEnvironments() {
|
|
117
|
+
return this.environments.filter((env) => env.deploymentTargetRole === "primary");
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Gets all secondary environments across all stages in this app.
|
|
121
|
+
*/
|
|
122
|
+
get secondaryEnvironments() {
|
|
123
|
+
return this.environments.filter((env) => env.deploymentTargetRole === "secondary");
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
exports.OpenHiApp = OpenHiApp;
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Blbi1oaS1hcHAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwL29wZW4taGktYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUt3QjtBQUN4Qiw2Q0FBNEM7QUFFNUMsK0RBQTBEO0FBQzFELG1EQUE4QztBQUU5Qzs7OztHQUlHO0FBQ0gsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7QUFtQjNFOztHQUVHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsaUJBQUc7SUFDaEM7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFxQjtRQUNwQyxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBYSxDQUFNO1FBQzFDLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksa0JBQWtCLElBQUksQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFZRDs7T0FFRztJQUNILFlBQVksS0FBcUI7UUFDL0IsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWIsdUNBQXVDO1FBQ3ZDLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFakUseURBQXlEO1FBQ3pELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUM7UUFFekMsa0RBQWtEO1FBQ2xELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUUzQix3REFBd0Q7UUFDeEQsOERBQThEO1FBQzlELE1BQU0sQ0FBQyxNQUFNLENBQUMsc0JBQWEs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QUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxtQkFBbUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FDN0IsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsS0FBSyxTQUFTLENBQ2hELENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLHFCQUFxQjtRQUM5QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUM3QixDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLG9CQUFvQixLQUFLLFdBQVcsQ0FDbEQsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXhKRCw4QkF3SkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBPUEVOX0hJX0RFUExPWU1FTlRfVEFSR0VUX1JPTEUsXG4gIE9QRU5fSElfU1RBR0UsXG4gIE9wZW5IaUNvbmZpZyxcbiAgT3BlbkhpRW52aXJvbm1lbnRDb25maWcsXG59IGZyb20gXCJAb3BlbmhpL2NvbmZpZ1wiO1xuaW1wb3J0IHsgQXBwLCBBcHBQcm9wcyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgSUNvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBPcGVuSGlFbnZpcm9ubWVudCB9IGZyb20gXCIuL29wZW4taGktZW52aXJvbm1lbnRcIjtcbmltcG9ydCB7IE9wZW5IaVN0YWdlIH0gZnJvbSBcIi4vb3Blbi1oaS1zdGFnZVwiO1xuXG4vKipcbiAqIFN5bWJvbCB1c2VkIGZvciBydW50aW1lIHR5cGUgY2hlY2tpbmcgdG8gaWRlbnRpZnkgT3BlbkhpQXBwIGluc3RhbmNlcy5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuY29uc3QgT1BFTl9ISV9BUFBfU1lNQk9MID0gU3ltYm9sLmZvcihcIkBvcGVuaGkvY29uc3RydWN0cy9jb3JlLk9wZW5IaUFwcFwiKTtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhbiBPcGVuSGlBcHAgaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3BlbkhpQXBwUHJvcHMgZXh0ZW5kcyBBcHBQcm9wcyB7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBuYW1lIGZvciB0aGUgYXBwbGljYXRpb24uXG4gICAqIGBgYFxuICAgKi9cbiAgcmVhZG9ubHkgYXBwTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIE9wZW5IaSBjb25maWd1cmF0aW9uIG9iamVjdCB0aGF0IGRlZmluZXMgc3RhZ2VzLCBlbnZpcm9ubWVudHMsIGFuZFxuICAgKiB0aGVpciBhc3NvY2lhdGVkIEFXUyBhY2NvdW50IGFuZCByZWdpb24gc2V0dGluZ3MuXG4gICAqL1xuICByZWFkb25seSBjb25maWc6IE9wZW5IaUNvbmZpZztcbn1cblxuLyoqXG4gKiBSb290IGFwcGxpY2F0aW9uIGNvbnN0cnVjdCBmb3IgT3BlbkhpIENESyBhcHBsaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBPcGVuSGlBcHAgZXh0ZW5kcyBBcHAge1xuICAvKipcbiAgICogRmluZHMgdGhlIE9wZW5IaUFwcCBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBnaXZlbiBjb25zdHJ1Y3QgaW4gaXRzXG4gICAqIGNvbnN0cnVjdCB0cmVlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBvZihjb25zdHJ1Y3Q6IElDb25zdHJ1Y3QpOiBPcGVuSGlBcHAgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBjb25zdHJ1Y3Qubm9kZS5zY29wZXMucmV2ZXJzZSgpLmZpbmQoT3BlbkhpQXBwLmlzT3BlbkhpQXBwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUeXBlIGd1YXJkIHRoYXQgY2hlY2tzIGlmIGEgdmFsdWUgaXMgYW4gT3BlbkhpQXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc09wZW5IaUFwcCh0aGlzOiB2b2lkLCB4OiBhbnkpOiB4IGlzIE9wZW5IaUFwcCB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09IFwib2JqZWN0XCIgJiYgT1BFTl9ISV9BUFBfU1lNQk9MIGluIHg7XG4gIH1cblxuICAvKipcbiAgICogTmFtZSBmb3IgdGhlIGFwcGxpY2F0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgT3BlbkhpIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciB0aGlzIGFwcGxpY2F0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlnOiBPcGVuSGlDb25maWc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgT3BlbkhpQXBwIGluc3RhbmNlLlxuICAgKi9cbiAgY29uc3RydWN0b3IocHJvcHM6IE9wZW5IaUFwcFByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgLy8gU2V0IHJ1bnRpbWUgc3ltYm9sIGZvciB0eXBlIGNoZWNraW5nXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIE9QRU5fSElfQVBQX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcblxuICAgIC8vIFN0b3JlIGFwcCBuYW1lLCBkZWZhdWx0aW5nIHRvIFwib3BlbmhpXCIgaWYgbm90IHByb3ZpZGVkXG4gICAgdGhpcy5hcHBOYW1lID0gcHJvcHMuYXBwTmFtZSA/PyBcIm9wZW5oaVwiO1xuXG4gICAgLy8gU3RvcmUgY29uZmlndXJhdGlvbiBmb3IgdXNlIGJ5IGNoaWxkIGNvbnN0cnVjdHNcbiAgICB0aGlzLmNvbmZpZyA9IHByb3BzLmNvbmZpZztcblxuICAgIC8vIENyZWF0ZSBzdGFnZXMgYW5kIGVudmlyb25tZW50cyBiYXNlZCBvbiBjb25maWd1cmF0aW9uXG4gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGFsbCBwb3NzaWJsZSBzdGFnZSB0eXBlcyAoZGV2LCBzdGFnZSwgcHJvZClcbiAgICBPYmplY3QudmFsdWVzKE9QRU5fSElfU1RBR0UpLmZvckVhY2goKHN0YWdlVHlwZSkgPT4ge1xuICAgICAgLy8gT25seSBjcmVhdGUgYSBzdGFnZSBpZiBpdCdzIGNvbmZpZ3VyZWQgaW4gdGhlIGNvbmZpZ1xuICAgICAgaWYgKHRoaXMuY29uZmlnLmRlcGxveW1lbnRUYXJnZXRzPy5bc3RhZ2VUeXBlXSkge1xuICAgICAgICBjb25zdCBzdGFnZSA9IG5ldyBPcGVuSGlTdGFnZSh0aGlzLCB7IHN0YWdlVHlwZSB9KTtcblxuICAgICAgICAvLyBDcmVhdGUgcHJpbWFyeSBkZXBsb3ltZW50IHRhcmdldCBpZiBjb25maWd1cmVkXG4gICAgICAgIC8vIEVhY2ggc3RhZ2UgY2FuIGhhdmUgYXQgbW9zdCBvbmUgcHJpbWFyeSBkZXBsb3ltZW50IHRhcmdldFxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5jb25maWcuZGVwbG95bWVudFRhcmdldHM/LltzdGFnZVR5cGVdPy5bXG4gICAgICAgICAgICBPUEVOX0hJX0RFUExPWU1FTlRfVEFSR0VUX1JPTEUuUFJJTUFSWVxuICAgICAgICAgIF1cbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgZW52Q29uZmlnID1cbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmRlcGxveW1lbnRUYXJnZXRzW3N0YWdlVHlwZV1bXG4gICAgICAgICAgICAgIE9QRU5fSElfREVQTE9ZTUVOVF9UQVJHRVRfUk9MRS5QUklNQVJZXG4gICAgICAgICAgICBdITtcbiAgICAgICAgICBuZXcgT3BlbkhpRW52aXJvbm1lbnQoc3RhZ2UsIHtcbiAgICAgICAgICAgIGRlcGxveW1lbnRUYXJnZXRSb2xlOiBPUEVOX0hJX0RFUExPWU1FTlRfVEFSR0VUX1JPTEUuUFJJTUFSWSxcbiAgICAgICAgICAgIGNvbmZpZzogZW52Q29uZmlnLFxuICAgICAgICAgICAgZW52OiB7IGFjY291bnQ6IGVudkNvbmZpZy5hY2NvdW50LCByZWdpb246IGVudkNvbmZpZy5yZWdpb24gfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENyZWF0ZSBzZWNvbmRhcnkgZGVwbG95bWVudCB0YXJnZXRzIGlmIGNvbmZpZ3VyZWRcbiAgICAgICAgLy8gRWFjaCBzdGFnZSBjYW4gaGF2ZSB6ZXJvIG9yIG1vcmUgc2Vjb25kYXJ5IGRlcGxveW1lbnQgdGFyZ2V0c1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5jb25maWcuZGVwbG95bWVudFRhcmdldHM/LltzdGFnZVR5cGVdPy5bXG4gICAgICAgICAgICBPUEVOX0hJX0RFUExPWU1FTlRfVEFSR0VUX1JPTEUuU0VDT05EQVJZXG4gICAgICAgICAgXVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmNvbmZpZy5kZXBsb3ltZW50VGFyZ2V0c1tzdGFnZVR5cGVdW1xuICAgICAgICAgICAgT1BFTl9ISV9ERVBMT1lNRU5UX1RBUkdFVF9ST0xFLlNFQ09OREFSWVxuICAgICAgICAgIF0hLmZvckVhY2goKGVudkNvbmZpZzogT3BlbkhpRW52aXJvbm1lbnRDb25maWcpID0+IHtcbiAgICAgICAgICAgIG5ldyBPcGVuSGlFbnZpcm9ubWVudChzdGFnZSwge1xuICAgICAgICAgICAgICBkZXBsb3ltZW50VGFyZ2V0Um9sZTogT1BFTl9ISV9ERVBMT1lNRU5UX1RBUkdFVF9ST0xFLlNFQ09OREFSWSxcbiAgICAgICAgICAgICAgY29uZmlnOiBlbnZDb25maWcsXG4gICAgICAgICAgICAgIGVudjogeyBhY2NvdW50OiBlbnZDb25maWcuYWNjb3VudCwgcmVnaW9uOiBlbnZDb25maWcucmVnaW9uIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqXG4gICAqIFN0YWdlc1xuICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogR2V0cyBhbGwgT3BlbkhpU3RhZ2UgaW5zdGFuY2VzIHRoYXQgYXJlIGRpcmVjdCBjaGlsZHJlbiBvZiB0aGlzIGFwcC5cblxuICAgKi9cbiAgcHVibGljIGdldCBzdGFnZXMoKTogQXJyYXk8T3BlbkhpU3RhZ2U+IHtcbiAgICByZXR1cm4gdGhpcy5ub2RlLmNoaWxkcmVuLmZpbHRlcihPcGVuSGlTdGFnZS5pc09wZW5IaVN0YWdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBkZXZlbG9wbWVudCBzdGFnZSwgaWYgaXQgZXhpc3RzLlxuICAgKi9cbiAgcHVibGljIGdldCBkZXZTdGFnZSgpOiBPcGVuSGlTdGFnZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhZ2VzLmZpbmQoKHN0YWdlKSA9PiBzdGFnZS5zdGFnZVR5cGUgPT09IE9QRU5fSElfU1RBR0UuREVWKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzdGFnaW5nIHN0YWdlLCBpZiBpdCBleGlzdHMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHN0YWdlU3RhZ2UoKTogT3BlbkhpU3RhZ2UgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnN0YWdlcy5maW5kKChzdGFnZSkgPT4gc3RhZ2Uuc3RhZ2VUeXBlID09PSBPUEVOX0hJX1NUQUdFLlNUQUdFKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBwcm9kdWN0aW9uIHN0YWdlLCBpZiBpdCBleGlzdHMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHByb2RTdGFnZSgpOiBPcGVuSGlTdGFnZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhZ2VzLmZpbmQoKHN0YWdlKSA9PiBzdGFnZS5zdGFnZVR5cGUgPT09IE9QRU5fSElfU1RBR0UuUFJPRCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICpcbiAgICogRW52aXJvbm1lbnRzXG4gICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBHZXRzIGFsbCBPcGVuSGlFbnZpcm9ubWVudCBpbnN0YW5jZXMgYWNyb3NzIGFsbCBzdGFnZXMgaW4gdGhpcyBhcHAuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGVudmlyb25tZW50cygpOiBBcnJheTxPcGVuSGlFbnZpcm9ubWVudD4ge1xuICAgIHJldHVybiB0aGlzLnN0YWdlcy5mbGF0TWFwKChzdGFnZSkgPT4gc3RhZ2UuZW52aXJvbm1lbnRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFsbCBwcmltYXJ5IGVudmlyb25tZW50cyBhY3Jvc3MgYWxsIHN0YWdlcyBpbiB0aGlzIGFwcC5cbiAgICovXG4gIHB1YmxpYyBnZXQgcHJpbWFyeUVudmlyb25tZW50cygpOiBBcnJheTxPcGVuSGlFbnZpcm9ubWVudD4ge1xuICAgIHJldHVybiB0aGlzLmVudmlyb25tZW50cy5maWx0ZXIoXG4gICAgICAoZW52KSA9PiBlbnYuZGVwbG95bWVudFRhcmdldFJvbGUgPT09IFwicHJpbWFyeVwiLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhbGwgc2Vjb25kYXJ5IGVudmlyb25tZW50cyBhY3Jvc3MgYWxsIHN0YWdlcyBpbiB0aGlzIGFwcC5cbiAgICovXG4gIHB1YmxpYyBnZXQgc2Vjb25kYXJ5RW52aXJvbm1lbnRzKCk6IEFycmF5PE9wZW5IaUVudmlyb25tZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuZW52aXJvbm1lbnRzLmZpbHRlcihcbiAgICAgIChlbnYpID0+IGVudi5kZXBsb3ltZW50VGFyZ2V0Um9sZSA9PT0gXCJzZWNvbmRhcnlcIixcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { OPEN_HI_DEPLOYMENT_TARGET_ROLE, OpenHiEnvironmentConfig } from "@openhi/config";
|
|
2
|
+
import { Stage, StageProps } from "aws-cdk-lib";
|
|
3
|
+
import { IConstruct } from "constructs";
|
|
4
|
+
import { OpenHiStage } from "./open-hi-stage";
|
|
5
|
+
/**
|
|
6
|
+
* Properties for creating an OpenHiEnvironment.
|
|
7
|
+
*/
|
|
8
|
+
export interface OpenHiEnvironmentProps extends StageProps {
|
|
9
|
+
/**
|
|
10
|
+
* The deployment target role for this (account, region).
|
|
11
|
+
*/
|
|
12
|
+
readonly deploymentTargetRole: (typeof OPEN_HI_DEPLOYMENT_TARGET_ROLE)[keyof typeof OPEN_HI_DEPLOYMENT_TARGET_ROLE];
|
|
13
|
+
/**
|
|
14
|
+
* Configuration for this specific environment.
|
|
15
|
+
*/
|
|
16
|
+
readonly config: OpenHiEnvironmentConfig;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Represents an OpenHi environment within an AWS CDK stage.
|
|
20
|
+
*/
|
|
21
|
+
export declare class OpenHiEnvironment extends Stage {
|
|
22
|
+
/**
|
|
23
|
+
* The OpenHiStage that contains this environment.
|
|
24
|
+
*/
|
|
25
|
+
ohStage: OpenHiStage;
|
|
26
|
+
/**
|
|
27
|
+
* Properties for creating the environment.
|
|
28
|
+
*/
|
|
29
|
+
props: OpenHiEnvironmentProps;
|
|
30
|
+
/**
|
|
31
|
+
* Finds the OpenHiEnvironment that contains the given construct.
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
static of(construct: IConstruct): OpenHiEnvironment | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* Type guard to check if a value is an OpenHiEnvironment instance.
|
|
37
|
+
*/
|
|
38
|
+
static isOpenHiEnvironment(this: void, x: any): x is OpenHiEnvironment;
|
|
39
|
+
/**
|
|
40
|
+
* Configuration for this specific environment.
|
|
41
|
+
*/
|
|
42
|
+
readonly config: OpenHiEnvironmentConfig;
|
|
43
|
+
/**
|
|
44
|
+
* The deployment target role for this (account, region).
|
|
45
|
+
*/
|
|
46
|
+
readonly deploymentTargetRole: (typeof OPEN_HI_DEPLOYMENT_TARGET_ROLE)[keyof typeof OPEN_HI_DEPLOYMENT_TARGET_ROLE];
|
|
47
|
+
/**
|
|
48
|
+
* Creates a new OpenHiEnvironment.
|
|
49
|
+
*/
|
|
50
|
+
constructor(
|
|
51
|
+
/**
|
|
52
|
+
* The OpenHiStage that contains this environment.
|
|
53
|
+
*/
|
|
54
|
+
ohStage: OpenHiStage,
|
|
55
|
+
/**
|
|
56
|
+
* Properties for creating the environment.
|
|
57
|
+
*/
|
|
58
|
+
props: OpenHiEnvironmentProps);
|
|
59
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OpenHiEnvironment = void 0;
|
|
4
|
+
const config_1 = require("@openhi/config");
|
|
5
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
6
|
+
/**
|
|
7
|
+
* Symbol used to identify OpenHiEnvironment instances at runtime.
|
|
8
|
+
*/
|
|
9
|
+
const OPEN_HI_ENVIRONMENT_SYMBOL = Symbol.for("@openhi/constructs/core.OpenHiEnvironment");
|
|
10
|
+
/**
|
|
11
|
+
* Represents an OpenHi environment within an AWS CDK stage.
|
|
12
|
+
*/
|
|
13
|
+
class OpenHiEnvironment extends aws_cdk_lib_1.Stage {
|
|
14
|
+
/**
|
|
15
|
+
* Finds the OpenHiEnvironment that contains the given construct.
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
static of(construct) {
|
|
19
|
+
return construct.node.scopes
|
|
20
|
+
.reverse()
|
|
21
|
+
.find(OpenHiEnvironment.isOpenHiEnvironment);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Type guard to check if a value is an OpenHiEnvironment instance.
|
|
25
|
+
*/
|
|
26
|
+
static isOpenHiEnvironment(x) {
|
|
27
|
+
return (x !== null && typeof x === "object" && OPEN_HI_ENVIRONMENT_SYMBOL in x);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Creates a new OpenHiEnvironment.
|
|
31
|
+
*/
|
|
32
|
+
constructor(
|
|
33
|
+
/**
|
|
34
|
+
* The OpenHiStage that contains this environment.
|
|
35
|
+
*/
|
|
36
|
+
ohStage,
|
|
37
|
+
/**
|
|
38
|
+
* Properties for creating the environment.
|
|
39
|
+
*/
|
|
40
|
+
props) {
|
|
41
|
+
// Copy account and region from config into env, if provided.
|
|
42
|
+
// This allows all resources in this environment to default to the correct
|
|
43
|
+
// account and region without having to specify it on each stack or resource.
|
|
44
|
+
if (props.config.account && props.config.region) {
|
|
45
|
+
props = {
|
|
46
|
+
...props,
|
|
47
|
+
env: {
|
|
48
|
+
account: props.config.account,
|
|
49
|
+
region: props.config.region,
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
// Determine the stage name:
|
|
54
|
+
// - Primary environments use the environment type as the name
|
|
55
|
+
// - Secondary deployment targets use "{deploymentTargetRole}-{index}" format
|
|
56
|
+
const stageName = props.deploymentTargetRole === config_1.OPEN_HI_DEPLOYMENT_TARGET_ROLE.PRIMARY
|
|
57
|
+
? props.deploymentTargetRole
|
|
58
|
+
: [props.deploymentTargetRole, ohStage.environments.length].join("-");
|
|
59
|
+
super(ohStage, stageName, {
|
|
60
|
+
env: props.env ?? ohStage.props.env,
|
|
61
|
+
...props,
|
|
62
|
+
});
|
|
63
|
+
this.ohStage = ohStage;
|
|
64
|
+
this.props = props;
|
|
65
|
+
// Mark this instance as an OpenHiEnvironment for runtime type checking
|
|
66
|
+
Object.defineProperty(this, OPEN_HI_ENVIRONMENT_SYMBOL, { value: true });
|
|
67
|
+
this.deploymentTargetRole = props.deploymentTargetRole;
|
|
68
|
+
this.config = props.config;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.OpenHiEnvironment = OpenHiEnvironment;
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Blbi1oaS1lbnZpcm9ubWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHAvb3Blbi1oaS1lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FHd0I7QUFDeEIsNkNBQWdEO0FBSWhEOztHQUVHO0FBQ0gsTUFBTSwwQkFBMEIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUMzQywyQ0FBMkMsQ0FDNUMsQ0FBQztBQWlCRjs7R0FFRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsbUJBQUs7SUFDMUM7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFxQjtRQUNwQyxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTTthQUN6QixPQUFPLEVBQUU7YUFDVCxJQUFJLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsbUJBQW1CLENBRS9CLENBQU07UUFFTixPQUFPLENBQ0wsQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksMEJBQTBCLElBQUksQ0FBQyxDQUN2RSxDQUFDO0lBQ0osQ0FBQztJQVlEOztPQUVHO0lBQ0g7SUFDRTs7T0FFRztJQUNJLE9BQW9CO0lBQzNCOztPQUVHO0lBQ0ksS0FBNkI7UUFFcEMsNkRBQTZEO1FBQzdELDBFQUEwRTtRQUMxRSw2RUFBNkU7UUFDN0UsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hELEtBQUssR0FBRztnQkFDTixHQUFHLEtBQUs7Z0JBQ1IsR0FBRyxFQUFFO29CQUNILE9BQU8sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU87b0JBQzdCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU07aUJBQzVCO2FBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCw0QkFBNEI7UUFDNUIsOERBQThEO1FBQzlELDZFQUE2RTtRQUM3RSxNQUFNLFNBQVMsR0FDYixLQUFLLENBQUMsb0JBQW9CLEtBQUssdUNBQThCLENBQUMsT0FBTztZQUNuRSxDQUFDLENBQUMsS0FBSyxDQUFDLG9CQUFvQjtZQUM1QixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFMUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUU7WUFDeEIsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHO1lBQ25DLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztRQTlCSSxZQUFPLEdBQVAsT0FBTyxDQUFhO1FBSXBCLFVBQUssR0FBTCxLQUFLLENBQXdCO1FBNEJwQyx1RUFBdUU7UUFDdkUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUV6RSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDLG9CQUFvQixDQUFDO1FBQ3ZELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUM3QixDQUFDO0NBQ0Y7QUE5RUQsOENBOEVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgT1BFTl9ISV9ERVBMT1lNRU5UX1RBUkdFVF9ST0xFLFxuICBPcGVuSGlFbnZpcm9ubWVudENvbmZpZyxcbn0gZnJvbSBcIkBvcGVuaGkvY29uZmlnXCI7XG5pbXBvcnQgeyBTdGFnZSwgU3RhZ2VQcm9wcyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgSUNvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBPcGVuSGlTdGFnZSB9IGZyb20gXCIuL29wZW4taGktc3RhZ2VcIjtcblxuLyoqXG4gKiBTeW1ib2wgdXNlZCB0byBpZGVudGlmeSBPcGVuSGlFbnZpcm9ubWVudCBpbnN0YW5jZXMgYXQgcnVudGltZS5cbiAqL1xuY29uc3QgT1BFTl9ISV9FTlZJUk9OTUVOVF9TWU1CT0wgPSBTeW1ib2wuZm9yKFxuICBcIkBvcGVuaGkvY29uc3RydWN0cy9jb3JlLk9wZW5IaUVudmlyb25tZW50XCIsXG4pO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGFuIE9wZW5IaUVudmlyb25tZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5IaUVudmlyb25tZW50UHJvcHMgZXh0ZW5kcyBTdGFnZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBkZXBsb3ltZW50IHRhcmdldCByb2xlIGZvciB0aGlzIChhY2NvdW50LCByZWdpb24pLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwbG95bWVudFRhcmdldFJvbGU6ICh0eXBlb2YgT1BFTl9ISV9ERVBMT1lNRU5UX1RBUkdFVF9ST0xFKVtrZXlvZiB0eXBlb2YgT1BFTl9ISV9ERVBMT1lNRU5UX1RBUkdFVF9ST0xFXTtcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBlbnZpcm9ubWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbmZpZzogT3BlbkhpRW52aXJvbm1lbnRDb25maWc7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBPcGVuSGkgZW52aXJvbm1lbnQgd2l0aGluIGFuIEFXUyBDREsgc3RhZ2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBPcGVuSGlFbnZpcm9ubWVudCBleHRlbmRzIFN0YWdlIHtcbiAgLyoqXG4gICAqIEZpbmRzIHRoZSBPcGVuSGlFbnZpcm9ubWVudCB0aGF0IGNvbnRhaW5zIHRoZSBnaXZlbiBjb25zdHJ1Y3QuXG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBvZihjb25zdHJ1Y3Q6IElDb25zdHJ1Y3QpOiBPcGVuSGlFbnZpcm9ubWVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGNvbnN0cnVjdC5ub2RlLnNjb3Blc1xuICAgICAgLnJldmVyc2UoKVxuICAgICAgLmZpbmQoT3BlbkhpRW52aXJvbm1lbnQuaXNPcGVuSGlFbnZpcm9ubWVudCk7XG4gIH1cblxuICAvKipcbiAgICogVHlwZSBndWFyZCB0byBjaGVjayBpZiBhIHZhbHVlIGlzIGFuIE9wZW5IaUVudmlyb25tZW50IGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc09wZW5IaUVudmlyb25tZW50KFxuICAgIHRoaXM6IHZvaWQsXG4gICAgeDogYW55LFxuICApOiB4IGlzIE9wZW5IaUVudmlyb25tZW50IHtcbiAgICByZXR1cm4gKFxuICAgICAgeCAhPT0gbnVsbCAmJiB0eXBlb2YgeCA9PT0gXCJvYmplY3RcIiAmJiBPUEVOX0hJX0VOVklST05NRU5UX1NZTUJPTCBpbiB4XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGVudmlyb25tZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlnOiBPcGVuSGlFbnZpcm9ubWVudENvbmZpZztcblxuICAvKipcbiAgICogVGhlIGRlcGxveW1lbnQgdGFyZ2V0IHJvbGUgZm9yIHRoaXMgKGFjY291bnQsIHJlZ2lvbikuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVwbG95bWVudFRhcmdldFJvbGU6ICh0eXBlb2YgT1BFTl9ISV9ERVBMT1lNRU5UX1RBUkdFVF9ST0xFKVtrZXlvZiB0eXBlb2YgT1BFTl9ISV9ERVBMT1lNRU5UX1RBUkdFVF9ST0xFXTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBPcGVuSGlFbnZpcm9ubWVudC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8qKlxuICAgICAqIFRoZSBPcGVuSGlTdGFnZSB0aGF0IGNvbnRhaW5zIHRoaXMgZW52aXJvbm1lbnQuXG4gICAgICovXG4gICAgcHVibGljIG9oU3RhZ2U6IE9wZW5IaVN0YWdlLFxuICAgIC8qKlxuICAgICAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIHRoZSBlbnZpcm9ubWVudC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcHJvcHM6IE9wZW5IaUVudmlyb25tZW50UHJvcHMsXG4gICkge1xuICAgIC8vIENvcHkgYWNjb3VudCBhbmQgcmVnaW9uIGZyb20gY29uZmlnIGludG8gZW52LCBpZiBwcm92aWRlZC5cbiAgICAvLyBUaGlzIGFsbG93cyBhbGwgcmVzb3VyY2VzIGluIHRoaXMgZW52aXJvbm1lbnQgdG8gZGVmYXVsdCB0byB0aGUgY29ycmVjdFxuICAgIC8vIGFjY291bnQgYW5kIHJlZ2lvbiB3aXRob3V0IGhhdmluZyB0byBzcGVjaWZ5IGl0IG9uIGVhY2ggc3RhY2sgb3IgcmVzb3VyY2UuXG4gICAgaWYgKHByb3BzLmNvbmZpZy5hY2NvdW50ICYmIHByb3BzLmNvbmZpZy5yZWdpb24pIHtcbiAgICAgIHByb3BzID0ge1xuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgZW52OiB7XG4gICAgICAgICAgYWNjb3VudDogcHJvcHMuY29uZmlnLmFjY291bnQsXG4gICAgICAgICAgcmVnaW9uOiBwcm9wcy5jb25maWcucmVnaW9uLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBEZXRlcm1pbmUgdGhlIHN0YWdlIG5hbWU6XG4gICAgLy8gLSBQcmltYXJ5IGVudmlyb25tZW50cyB1c2UgdGhlIGVudmlyb25tZW50IHR5cGUgYXMgdGhlIG5hbWVcbiAgICAvLyAtIFNlY29uZGFyeSBkZXBsb3ltZW50IHRhcmdldHMgdXNlIFwie2RlcGxveW1lbnRUYXJnZXRSb2xlfS17aW5kZXh9XCIgZm9ybWF0XG4gICAgY29uc3Qgc3RhZ2VOYW1lID1cbiAgICAgIHByb3BzLmRlcGxveW1lbnRUYXJnZXRSb2xlID09PSBPUEVOX0hJX0RFUExPWU1FTlRfVEFSR0VUX1JPTEUuUFJJTUFSWVxuICAgICAgICA/IHByb3BzLmRlcGxveW1lbnRUYXJnZXRSb2xlXG4gICAgICAgIDogW3Byb3BzLmRlcGxveW1lbnRUYXJnZXRSb2xlLCBvaFN0YWdlLmVudmlyb25tZW50cy5sZW5ndGhdLmpvaW4oXCItXCIpO1xuXG4gICAgc3VwZXIob2hTdGFnZSwgc3RhZ2VOYW1lLCB7XG4gICAgICBlbnY6IHByb3BzLmVudiA/PyBvaFN0YWdlLnByb3BzLmVudixcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuXG4gICAgLy8gTWFyayB0aGlzIGluc3RhbmNlIGFzIGFuIE9wZW5IaUVudmlyb25tZW50IGZvciBydW50aW1lIHR5cGUgY2hlY2tpbmdcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgT1BFTl9ISV9FTlZJUk9OTUVOVF9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG5cbiAgICB0aGlzLmRlcGxveW1lbnRUYXJnZXRSb2xlID0gcHJvcHMuZGVwbG95bWVudFRhcmdldFJvbGU7XG4gICAgdGhpcy5jb25maWcgPSBwcm9wcy5jb25maWc7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { OpenHiEnvironmentConfig } from "@openhi/config";
|
|
2
|
+
import { RemovalPolicy, Stack, StackProps } from "aws-cdk-lib";
|
|
3
|
+
import { OpenHiEnvironment } from "./open-hi-environment";
|
|
4
|
+
import { CoreProps } from "../components/core";
|
|
5
|
+
/**
|
|
6
|
+
* Service type identifiers for OpenHI services.
|
|
7
|
+
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* These constants define the different types of services that can be deployed
|
|
10
|
+
* within the OpenHI platform. Each service type represents a distinct domain
|
|
11
|
+
* or functional area with its own data model, API endpoints, and business logic.
|
|
12
|
+
*
|
|
13
|
+
* Service types are used for:
|
|
14
|
+
* - Resource naming and tagging
|
|
15
|
+
* - Service discovery and routing
|
|
16
|
+
* - Deployment context calculations
|
|
17
|
+
* - Cross-service communication patterns
|
|
18
|
+
*
|
|
19
|
+
* @public
|
|
20
|
+
*/
|
|
21
|
+
export declare const OPEN_HI_SERVICE_TYPE: {
|
|
22
|
+
/**
|
|
23
|
+
* Authentication service.
|
|
24
|
+
* *
|
|
25
|
+
* Only one instance of the auth service should exist per environment.
|
|
26
|
+
*/
|
|
27
|
+
readonly AUTH: "auth";
|
|
28
|
+
/**
|
|
29
|
+
* Root shared core services.
|
|
30
|
+
*
|
|
31
|
+
* Only one instance of the core service should exist per environment.
|
|
32
|
+
*/
|
|
33
|
+
readonly CORE: "core";
|
|
34
|
+
/**
|
|
35
|
+
* Rest API service.
|
|
36
|
+
*/
|
|
37
|
+
readonly REST_API: "rest-api";
|
|
38
|
+
/**
|
|
39
|
+
* Global Infrastructure stack (Route53, ACM).
|
|
40
|
+
*/
|
|
41
|
+
readonly GLOBAL: "global";
|
|
42
|
+
/**
|
|
43
|
+
* Data service (DynamoDB, S3, persistence).
|
|
44
|
+
*/
|
|
45
|
+
readonly DATA: "data";
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Type representing valid OpenHI service type values. This is a union of the
|
|
49
|
+
* values from {@link OPEN_HI_SERVICE_TYPE}.
|
|
50
|
+
*
|
|
51
|
+
* @public
|
|
52
|
+
*/
|
|
53
|
+
export type OpenHiServiceType = (typeof OPEN_HI_SERVICE_TYPE)[keyof typeof OPEN_HI_SERVICE_TYPE];
|
|
54
|
+
/**
|
|
55
|
+
* Properties for creating an {@link OpenHiService} stack.
|
|
56
|
+
*
|
|
57
|
+
* @public
|
|
58
|
+
*/
|
|
59
|
+
export interface OpenHiServiceProps extends StackProps {
|
|
60
|
+
/**
|
|
61
|
+
* Optional branch name override.
|
|
62
|
+
*/
|
|
63
|
+
readonly branchName?: string;
|
|
64
|
+
/**
|
|
65
|
+
* Optional repository name override.
|
|
66
|
+
*/
|
|
67
|
+
readonly repoName?: string;
|
|
68
|
+
/**
|
|
69
|
+
* Optional application name override.
|
|
70
|
+
*/
|
|
71
|
+
readonly appName?: string;
|
|
72
|
+
/**
|
|
73
|
+
* Default release branch name.
|
|
74
|
+
*/
|
|
75
|
+
readonly defaultReleaseBranch?: string;
|
|
76
|
+
/**
|
|
77
|
+
* The removal policy for persistent stack resources.
|
|
78
|
+
*/
|
|
79
|
+
readonly removalPolicy?: RemovalPolicy;
|
|
80
|
+
/**
|
|
81
|
+
* Environment configuration for this service.
|
|
82
|
+
*/
|
|
83
|
+
readonly config?: OpenHiEnvironmentConfig;
|
|
84
|
+
/**
|
|
85
|
+
* A constant that identifies the service type.
|
|
86
|
+
*/
|
|
87
|
+
readonly serviceType?: OpenHiServiceType;
|
|
88
|
+
/**
|
|
89
|
+
* Optional props for the core construct.
|
|
90
|
+
*/
|
|
91
|
+
readonly coreProps?: CoreProps;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Represents an OpenHI service stack within the OpenHI platform.
|
|
95
|
+
*/
|
|
96
|
+
export declare class OpenHiService extends Stack {
|
|
97
|
+
ohEnv: OpenHiEnvironment;
|
|
98
|
+
props: OpenHiServiceProps;
|
|
99
|
+
/**
|
|
100
|
+
* The service/stack ID that was passed to the constructor.
|
|
101
|
+
*/
|
|
102
|
+
readonly serviceId: string;
|
|
103
|
+
/**
|
|
104
|
+
* The deployment target role identifier.
|
|
105
|
+
*/
|
|
106
|
+
readonly deploymentTargetRole: string;
|
|
107
|
+
/**
|
|
108
|
+
* Repository name used in resource tagging.
|
|
109
|
+
*/
|
|
110
|
+
readonly repoName: string;
|
|
111
|
+
/**
|
|
112
|
+
* Application name identifier.
|
|
113
|
+
*/
|
|
114
|
+
readonly appName: string;
|
|
115
|
+
/**
|
|
116
|
+
* Default release branch name.
|
|
117
|
+
*/
|
|
118
|
+
readonly defaultReleaseBranch: string;
|
|
119
|
+
/**
|
|
120
|
+
* Branch name used when calculating resource names and hashes.
|
|
121
|
+
*/
|
|
122
|
+
readonly branchName: string;
|
|
123
|
+
/**
|
|
124
|
+
* Short hash unique to the deployment target (app name, deployment target role, account, region).
|
|
125
|
+
*/
|
|
126
|
+
readonly environmentHash: string;
|
|
127
|
+
/**
|
|
128
|
+
* Short hash unique to the environment and branch combination.
|
|
129
|
+
*/
|
|
130
|
+
readonly branchHash: string;
|
|
131
|
+
/**
|
|
132
|
+
* Short hash unique to the specific stack/service.
|
|
133
|
+
*/
|
|
134
|
+
readonly stackHash: string;
|
|
135
|
+
/**
|
|
136
|
+
* The removal policy for persistent stack resources.
|
|
137
|
+
*/
|
|
138
|
+
readonly removalPolicy: RemovalPolicy;
|
|
139
|
+
/**
|
|
140
|
+
* Environment configuration for this service.
|
|
141
|
+
* This is either the value passed in or the default config
|
|
142
|
+
*/
|
|
143
|
+
readonly config: OpenHiEnvironmentConfig;
|
|
144
|
+
/**
|
|
145
|
+
* A constant that identifies the service type.
|
|
146
|
+
*/
|
|
147
|
+
readonly serviceType: (typeof OPEN_HI_SERVICE_TYPE)[keyof typeof OPEN_HI_SERVICE_TYPE] | string;
|
|
148
|
+
/**
|
|
149
|
+
* Core construct containing shared infrastructure.
|
|
150
|
+
*/
|
|
151
|
+
/**
|
|
152
|
+
* Creates a new OpenHI service stack.
|
|
153
|
+
*
|
|
154
|
+
* @param ohEnv - The OpenHI environment (stage) this service belongs to
|
|
155
|
+
* @param id - Unique identifier for this service stack (e.g., "user-service")
|
|
156
|
+
* @param props - Optional properties for configuring the service
|
|
157
|
+
*
|
|
158
|
+
* @throws {Error} If account and region are not defined in props or environment
|
|
159
|
+
*
|
|
160
|
+
*/
|
|
161
|
+
constructor(ohEnv: OpenHiEnvironment, id: string, props?: OpenHiServiceProps);
|
|
162
|
+
/**
|
|
163
|
+
* Creates or returns the core construct for shared infrastructure.
|
|
164
|
+
*/
|
|
165
|
+
/**
|
|
166
|
+
* DNS prefix for this branche's child zone.
|
|
167
|
+
*/
|
|
168
|
+
get childZonePrefix(): string;
|
|
169
|
+
}
|