@doctorus/common 0.0.0 → 0.0.1
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/lib/index.d.ts +1 -0
- package/lib/index.js +17 -1
- package/lib/ssm/index.d.ts +2 -0
- package/lib/ssm/index.js +12 -0
- package/lib/ssm/keys.d.ts +27 -0
- package/lib/ssm/keys.js +32 -0
- package/lib/ssm/utils.d.ts +75 -0
- package/lib/ssm/utils.js +105 -0
- package/package.json +1 -1
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -1,4 +1,18 @@
|
|
|
1
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
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
17
|
exports.Hello = void 0;
|
|
4
18
|
class Hello {
|
|
@@ -7,4 +21,6 @@ class Hello {
|
|
|
7
21
|
}
|
|
8
22
|
}
|
|
9
23
|
exports.Hello = Hello;
|
|
10
|
-
|
|
24
|
+
// Export SSM module
|
|
25
|
+
__exportStar(require("./ssm"), exports);
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxNQUFhLEtBQUs7SUFDVCxRQUFRO1FBQ2IsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBSkQsc0JBSUM7QUFFRCxvQkFBb0I7QUFDcEIsd0NBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEhlbGxvIHtcbiAgcHVibGljIHNheUhlbGxvKCkge1xuICAgIHJldHVybiBcImhlbGxvLCB3b3JsZCFcIjtcbiAgfVxufVxuXG4vLyBFeHBvcnQgU1NNIG1vZHVsZVxuZXhwb3J0ICogZnJvbSBcIi4vc3NtXCI7XG4iXX0=
|
package/lib/ssm/index.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isEnvAgnostic = exports.extractKeyFromPath = exports.extractEnvFromPath = exports.buildSSMPathWithPrefix = exports.buildSSMPath = exports.SSM_PARAM_KEY = void 0;
|
|
4
|
+
var keys_1 = require("./keys");
|
|
5
|
+
Object.defineProperty(exports, "SSM_PARAM_KEY", { enumerable: true, get: function () { return keys_1.SSM_PARAM_KEY; } });
|
|
6
|
+
var utils_1 = require("./utils");
|
|
7
|
+
Object.defineProperty(exports, "buildSSMPath", { enumerable: true, get: function () { return utils_1.buildSSMPath; } });
|
|
8
|
+
Object.defineProperty(exports, "buildSSMPathWithPrefix", { enumerable: true, get: function () { return utils_1.buildSSMPathWithPrefix; } });
|
|
9
|
+
Object.defineProperty(exports, "extractEnvFromPath", { enumerable: true, get: function () { return utils_1.extractEnvFromPath; } });
|
|
10
|
+
Object.defineProperty(exports, "extractKeyFromPath", { enumerable: true, get: function () { return utils_1.extractKeyFromPath; } });
|
|
11
|
+
Object.defineProperty(exports, "isEnvAgnostic", { enumerable: true, get: function () { return utils_1.isEnvAgnostic; } });
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3NtL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUF1QztBQUE5QixxR0FBQSxhQUFhLE9BQUE7QUFDdEIsaUNBTWlCO0FBTGYscUdBQUEsWUFBWSxPQUFBO0FBQ1osK0dBQUEsc0JBQXNCLE9BQUE7QUFDdEIsMkdBQUEsa0JBQWtCLE9BQUE7QUFDbEIsMkdBQUEsa0JBQWtCLE9BQUE7QUFDbEIsc0dBQUEsYUFBYSxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgU1NNX1BBUkFNX0tFWSB9IGZyb20gXCIuL2tleXNcIjtcbmV4cG9ydCB7XG4gIGJ1aWxkU1NNUGF0aCxcbiAgYnVpbGRTU01QYXRoV2l0aFByZWZpeCxcbiAgZXh0cmFjdEVudkZyb21QYXRoLFxuICBleHRyYWN0S2V5RnJvbVBhdGgsXG4gIGlzRW52QWdub3N0aWMsXG59IGZyb20gXCIuL3V0aWxzXCI7XG4iXX0=
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSM Parameter Store keys used across AWS stacks
|
|
3
|
+
*/
|
|
4
|
+
export declare enum SSM_PARAM_KEY {
|
|
5
|
+
COGNITO_USER_POOL_ID = "user-pool-id",
|
|
6
|
+
COGNITO_USER_POOL_WEB_CLIENT_ID = "user-pool-web-client-id",
|
|
7
|
+
COGNITO_OAUTH_DOMAIN = "oauth-domain",
|
|
8
|
+
RUM_GUEST_ROLE_ARN = "rum-guest-rome-arn",
|
|
9
|
+
RUM_IDENTITY_POOL_ID = "rum-identity-pool-id",
|
|
10
|
+
RUM_APP_ID = "rum-app-id",
|
|
11
|
+
GRAPHQL_HTTP_URL = "graphql-http-url",
|
|
12
|
+
GRAPHQL_WS_URL = "graphql-ws-url",
|
|
13
|
+
GRAPHQL_HOST = "graphql-host",
|
|
14
|
+
GRAPHQL_API_ID = "graphql-api-id",
|
|
15
|
+
MEDICAL_ASSETS_AWS_CLOUDFRONT_PRIVATE_KEY = "medical-assets-dist-private-key",
|
|
16
|
+
MEDICAL_ASSETS_AWS_CLOUDFRONT_KEY_ID = "medical-assets-dist-public-key-id",
|
|
17
|
+
MEDICAL_ASSETS_BUCKET_NAME = "medical-assets-bucket-name",
|
|
18
|
+
PUBLIC_ASSETS_BUCKET_NAME = "public-assets-bucket-name",
|
|
19
|
+
DB_USER = "db-user",
|
|
20
|
+
DB_PASSWORD = "db-password",
|
|
21
|
+
MEDICAL_ASSETS_DISTRIBUTION_DOMAIN_NAME = "medical-assets-dist-domain-name",
|
|
22
|
+
BASE_HOST = "base-host",
|
|
23
|
+
EMAIL_FROM_ADDRESS = "email-from-address",
|
|
24
|
+
EVENT_API_REAL_TIME_DNS = "event-api-real-time-dns",
|
|
25
|
+
EVENT_API_HTTP_DNS = "event-api-http-dns",
|
|
26
|
+
NOTIFIED_EVENT_ACTIONS = "notified-event-actions"
|
|
27
|
+
}
|
package/lib/ssm/keys.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SSM_PARAM_KEY = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* SSM Parameter Store keys used across AWS stacks
|
|
6
|
+
*/
|
|
7
|
+
var SSM_PARAM_KEY;
|
|
8
|
+
(function (SSM_PARAM_KEY) {
|
|
9
|
+
SSM_PARAM_KEY["COGNITO_USER_POOL_ID"] = "user-pool-id";
|
|
10
|
+
SSM_PARAM_KEY["COGNITO_USER_POOL_WEB_CLIENT_ID"] = "user-pool-web-client-id";
|
|
11
|
+
SSM_PARAM_KEY["COGNITO_OAUTH_DOMAIN"] = "oauth-domain";
|
|
12
|
+
SSM_PARAM_KEY["RUM_GUEST_ROLE_ARN"] = "rum-guest-rome-arn";
|
|
13
|
+
SSM_PARAM_KEY["RUM_IDENTITY_POOL_ID"] = "rum-identity-pool-id";
|
|
14
|
+
SSM_PARAM_KEY["RUM_APP_ID"] = "rum-app-id";
|
|
15
|
+
SSM_PARAM_KEY["GRAPHQL_HTTP_URL"] = "graphql-http-url";
|
|
16
|
+
SSM_PARAM_KEY["GRAPHQL_WS_URL"] = "graphql-ws-url";
|
|
17
|
+
SSM_PARAM_KEY["GRAPHQL_HOST"] = "graphql-host";
|
|
18
|
+
SSM_PARAM_KEY["GRAPHQL_API_ID"] = "graphql-api-id";
|
|
19
|
+
SSM_PARAM_KEY["MEDICAL_ASSETS_AWS_CLOUDFRONT_PRIVATE_KEY"] = "medical-assets-dist-private-key";
|
|
20
|
+
SSM_PARAM_KEY["MEDICAL_ASSETS_AWS_CLOUDFRONT_KEY_ID"] = "medical-assets-dist-public-key-id";
|
|
21
|
+
SSM_PARAM_KEY["MEDICAL_ASSETS_BUCKET_NAME"] = "medical-assets-bucket-name";
|
|
22
|
+
SSM_PARAM_KEY["PUBLIC_ASSETS_BUCKET_NAME"] = "public-assets-bucket-name";
|
|
23
|
+
SSM_PARAM_KEY["DB_USER"] = "db-user";
|
|
24
|
+
SSM_PARAM_KEY["DB_PASSWORD"] = "db-password";
|
|
25
|
+
SSM_PARAM_KEY["MEDICAL_ASSETS_DISTRIBUTION_DOMAIN_NAME"] = "medical-assets-dist-domain-name";
|
|
26
|
+
SSM_PARAM_KEY["BASE_HOST"] = "base-host";
|
|
27
|
+
SSM_PARAM_KEY["EMAIL_FROM_ADDRESS"] = "email-from-address";
|
|
28
|
+
SSM_PARAM_KEY["EVENT_API_REAL_TIME_DNS"] = "event-api-real-time-dns";
|
|
29
|
+
SSM_PARAM_KEY["EVENT_API_HTTP_DNS"] = "event-api-http-dns";
|
|
30
|
+
SSM_PARAM_KEY["NOTIFIED_EVENT_ACTIONS"] = "notified-event-actions";
|
|
31
|
+
})(SSM_PARAM_KEY || (exports.SSM_PARAM_KEY = SSM_PARAM_KEY = {}));
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zc20va2V5cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILElBQVksYUF1Qlg7QUF2QkQsV0FBWSxhQUFhO0lBQ3ZCLHNEQUFxQyxDQUFBO0lBQ3JDLDRFQUEyRCxDQUFBO0lBQzNELHNEQUFxQyxDQUFBO0lBQ3JDLDBEQUF5QyxDQUFBO0lBQ3pDLDhEQUE2QyxDQUFBO0lBQzdDLDBDQUF5QixDQUFBO0lBQ3pCLHNEQUFxQyxDQUFBO0lBQ3JDLGtEQUFpQyxDQUFBO0lBQ2pDLDhDQUE2QixDQUFBO0lBQzdCLGtEQUFpQyxDQUFBO0lBQ2pDLDhGQUE2RSxDQUFBO0lBQzdFLDJGQUEwRSxDQUFBO0lBQzFFLDBFQUF5RCxDQUFBO0lBQ3pELHdFQUF1RCxDQUFBO0lBQ3ZELG9DQUFtQixDQUFBO0lBQ25CLDRDQUEyQixDQUFBO0lBQzNCLDRGQUEyRSxDQUFBO0lBQzNFLHdDQUF1QixDQUFBO0lBQ3ZCLDBEQUF5QyxDQUFBO0lBQ3pDLG9FQUFtRCxDQUFBO0lBQ25ELDBEQUF5QyxDQUFBO0lBQ3pDLGtFQUFpRCxDQUFBO0FBQ25ELENBQUMsRUF2QlcsYUFBYSw2QkFBYixhQUFhLFFBdUJ4QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU1NNIFBhcmFtZXRlciBTdG9yZSBrZXlzIHVzZWQgYWNyb3NzIEFXUyBzdGFja3NcbiAqL1xuZXhwb3J0IGVudW0gU1NNX1BBUkFNX0tFWSB7XG4gIENPR05JVE9fVVNFUl9QT09MX0lEID0gXCJ1c2VyLXBvb2wtaWRcIixcbiAgQ09HTklUT19VU0VSX1BPT0xfV0VCX0NMSUVOVF9JRCA9IFwidXNlci1wb29sLXdlYi1jbGllbnQtaWRcIixcbiAgQ09HTklUT19PQVVUSF9ET01BSU4gPSBcIm9hdXRoLWRvbWFpblwiLFxuICBSVU1fR1VFU1RfUk9MRV9BUk4gPSBcInJ1bS1ndWVzdC1yb21lLWFyblwiLFxuICBSVU1fSURFTlRJVFlfUE9PTF9JRCA9IFwicnVtLWlkZW50aXR5LXBvb2wtaWRcIixcbiAgUlVNX0FQUF9JRCA9IFwicnVtLWFwcC1pZFwiLFxuICBHUkFQSFFMX0hUVFBfVVJMID0gXCJncmFwaHFsLWh0dHAtdXJsXCIsXG4gIEdSQVBIUUxfV1NfVVJMID0gXCJncmFwaHFsLXdzLXVybFwiLFxuICBHUkFQSFFMX0hPU1QgPSBcImdyYXBocWwtaG9zdFwiLFxuICBHUkFQSFFMX0FQSV9JRCA9IFwiZ3JhcGhxbC1hcGktaWRcIixcbiAgTUVESUNBTF9BU1NFVFNfQVdTX0NMT1VERlJPTlRfUFJJVkFURV9LRVkgPSBcIm1lZGljYWwtYXNzZXRzLWRpc3QtcHJpdmF0ZS1rZXlcIixcbiAgTUVESUNBTF9BU1NFVFNfQVdTX0NMT1VERlJPTlRfS0VZX0lEID0gXCJtZWRpY2FsLWFzc2V0cy1kaXN0LXB1YmxpYy1rZXktaWRcIixcbiAgTUVESUNBTF9BU1NFVFNfQlVDS0VUX05BTUUgPSBcIm1lZGljYWwtYXNzZXRzLWJ1Y2tldC1uYW1lXCIsXG4gIFBVQkxJQ19BU1NFVFNfQlVDS0VUX05BTUUgPSBcInB1YmxpYy1hc3NldHMtYnVja2V0LW5hbWVcIixcbiAgREJfVVNFUiA9IFwiZGItdXNlclwiLFxuICBEQl9QQVNTV09SRCA9IFwiZGItcGFzc3dvcmRcIixcbiAgTUVESUNBTF9BU1NFVFNfRElTVFJJQlVUSU9OX0RPTUFJTl9OQU1FID0gXCJtZWRpY2FsLWFzc2V0cy1kaXN0LWRvbWFpbi1uYW1lXCIsXG4gIEJBU0VfSE9TVCA9IFwiYmFzZS1ob3N0XCIsXG4gIEVNQUlMX0ZST01fQUREUkVTUyA9IFwiZW1haWwtZnJvbS1hZGRyZXNzXCIsXG4gIEVWRU5UX0FQSV9SRUFMX1RJTUVfRE5TID0gXCJldmVudC1hcGktcmVhbC10aW1lLWRuc1wiLFxuICBFVkVOVF9BUElfSFRUUF9ETlMgPSBcImV2ZW50LWFwaS1odHRwLWRuc1wiLFxuICBOT1RJRklFRF9FVkVOVF9BQ1RJT05TID0gXCJub3RpZmllZC1ldmVudC1hY3Rpb25zXCIsXG59XG4iXX0=
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { SSM_PARAM_KEY } from "./keys";
|
|
2
|
+
/**
|
|
3
|
+
* Build SSM parameter path with optional environment prefix
|
|
4
|
+
* @param env - Environment name (e.g., 'dev', 'staging', 'prod'), or null for env-agnostic parameters
|
|
5
|
+
* @param key - SSM parameter key
|
|
6
|
+
* @returns Full SSM parameter path
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* buildSSMPath('prod', SSM_PARAM_KEY.COGNITO_USER_POOL_ID)
|
|
11
|
+
* // Returns: '/prod/user-pool-id'
|
|
12
|
+
*
|
|
13
|
+
* buildSSMPath(null, SSM_PARAM_KEY.DB_USER)
|
|
14
|
+
* // Returns: '/db-user' (env-agnostic)
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare function buildSSMPath(env: string | null, key: SSM_PARAM_KEY): string;
|
|
18
|
+
/**
|
|
19
|
+
* Build SSM parameter path with custom prefix
|
|
20
|
+
* @param prefix - Custom prefix (e.g., '/myapp/prod')
|
|
21
|
+
* @param key - SSM parameter key
|
|
22
|
+
* @returns Full SSM parameter path
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* buildSSMPathWithPrefix('/myapp/prod', SSM_PARAM_KEY.DB_USER)
|
|
27
|
+
* // Returns: '/myapp/prod/db-user'
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare function buildSSMPathWithPrefix(prefix: string, key: SSM_PARAM_KEY): string;
|
|
31
|
+
/**
|
|
32
|
+
* Extract environment from SSM parameter path
|
|
33
|
+
* @param path - SSM parameter path
|
|
34
|
+
* @returns Environment name or null if env-agnostic or not found
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts
|
|
38
|
+
* extractEnvFromPath('/prod/user-pool-id')
|
|
39
|
+
* // Returns: 'prod'
|
|
40
|
+
*
|
|
41
|
+
* extractEnvFromPath('/db-user')
|
|
42
|
+
* // Returns: null (env-agnostic parameter)
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export declare function extractEnvFromPath(path: string): string | null;
|
|
46
|
+
/**
|
|
47
|
+
* Parse SSM parameter path to extract key
|
|
48
|
+
* @param path - SSM parameter path
|
|
49
|
+
* @returns SSM parameter key or null if not found
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* extractKeyFromPath('/prod/user-pool-id')
|
|
54
|
+
* // Returns: SSM_PARAM_KEY.COGNITO_USER_POOL_ID
|
|
55
|
+
*
|
|
56
|
+
* extractKeyFromPath('/db-user')
|
|
57
|
+
* // Returns: SSM_PARAM_KEY.DB_USER (env-agnostic)
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export declare function extractKeyFromPath(path: string): SSM_PARAM_KEY | null;
|
|
61
|
+
/**
|
|
62
|
+
* Check if an SSM parameter path is environment-agnostic
|
|
63
|
+
* @param path - SSM parameter path
|
|
64
|
+
* @returns true if the path is env-agnostic (no environment prefix)
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```ts
|
|
68
|
+
* isEnvAgnostic('/db-user')
|
|
69
|
+
* // Returns: true
|
|
70
|
+
*
|
|
71
|
+
* isEnvAgnostic('/prod/user-pool-id')
|
|
72
|
+
* // Returns: false
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
export declare function isEnvAgnostic(path: string): boolean;
|
package/lib/ssm/utils.js
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildSSMPath = buildSSMPath;
|
|
4
|
+
exports.buildSSMPathWithPrefix = buildSSMPathWithPrefix;
|
|
5
|
+
exports.extractEnvFromPath = extractEnvFromPath;
|
|
6
|
+
exports.extractKeyFromPath = extractKeyFromPath;
|
|
7
|
+
exports.isEnvAgnostic = isEnvAgnostic;
|
|
8
|
+
const keys_1 = require("./keys");
|
|
9
|
+
/**
|
|
10
|
+
* Build SSM parameter path with optional environment prefix
|
|
11
|
+
* @param env - Environment name (e.g., 'dev', 'staging', 'prod'), or null for env-agnostic parameters
|
|
12
|
+
* @param key - SSM parameter key
|
|
13
|
+
* @returns Full SSM parameter path
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* buildSSMPath('prod', SSM_PARAM_KEY.COGNITO_USER_POOL_ID)
|
|
18
|
+
* // Returns: '/prod/user-pool-id'
|
|
19
|
+
*
|
|
20
|
+
* buildSSMPath(null, SSM_PARAM_KEY.DB_USER)
|
|
21
|
+
* // Returns: '/db-user' (env-agnostic)
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
function buildSSMPath(env, key) {
|
|
25
|
+
return env ? `/${env}/${key}` : `/${key}`;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Build SSM parameter path with custom prefix
|
|
29
|
+
* @param prefix - Custom prefix (e.g., '/myapp/prod')
|
|
30
|
+
* @param key - SSM parameter key
|
|
31
|
+
* @returns Full SSM parameter path
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* buildSSMPathWithPrefix('/myapp/prod', SSM_PARAM_KEY.DB_USER)
|
|
36
|
+
* // Returns: '/myapp/prod/db-user'
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
function buildSSMPathWithPrefix(prefix, key) {
|
|
40
|
+
const normalizedPrefix = prefix.endsWith("/") ? prefix.slice(0, -1) : prefix;
|
|
41
|
+
const normalizedKey = key.startsWith("/") ? key : `/${key}`;
|
|
42
|
+
return `${normalizedPrefix}${normalizedKey}`;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Extract environment from SSM parameter path
|
|
46
|
+
* @param path - SSM parameter path
|
|
47
|
+
* @returns Environment name or null if env-agnostic or not found
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
51
|
+
* extractEnvFromPath('/prod/user-pool-id')
|
|
52
|
+
* // Returns: 'prod'
|
|
53
|
+
*
|
|
54
|
+
* extractEnvFromPath('/db-user')
|
|
55
|
+
* // Returns: null (env-agnostic parameter)
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
function extractEnvFromPath(path) {
|
|
59
|
+
const match = path.match(/^\/([^/]+)\//);
|
|
60
|
+
return match ? match[1] : null;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Parse SSM parameter path to extract key
|
|
64
|
+
* @param path - SSM parameter path
|
|
65
|
+
* @returns SSM parameter key or null if not found
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```ts
|
|
69
|
+
* extractKeyFromPath('/prod/user-pool-id')
|
|
70
|
+
* // Returns: SSM_PARAM_KEY.COGNITO_USER_POOL_ID
|
|
71
|
+
*
|
|
72
|
+
* extractKeyFromPath('/db-user')
|
|
73
|
+
* // Returns: SSM_PARAM_KEY.DB_USER (env-agnostic)
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
function extractKeyFromPath(path) {
|
|
77
|
+
const parts = path.split("/");
|
|
78
|
+
const keyValue = parts[parts.length - 1];
|
|
79
|
+
// Check if the key value matches any enum value
|
|
80
|
+
const enumValues = Object.values(keys_1.SSM_PARAM_KEY);
|
|
81
|
+
if (enumValues.includes(keyValue)) {
|
|
82
|
+
return keyValue;
|
|
83
|
+
}
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Check if an SSM parameter path is environment-agnostic
|
|
88
|
+
* @param path - SSM parameter path
|
|
89
|
+
* @returns true if the path is env-agnostic (no environment prefix)
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```ts
|
|
93
|
+
* isEnvAgnostic('/db-user')
|
|
94
|
+
* // Returns: true
|
|
95
|
+
*
|
|
96
|
+
* isEnvAgnostic('/prod/user-pool-id')
|
|
97
|
+
* // Returns: false
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
function isEnvAgnostic(path) {
|
|
101
|
+
// Env-agnostic paths have format: /key (only 2 parts when split by /)
|
|
102
|
+
const parts = path.split("/").filter((p) => p.length > 0);
|
|
103
|
+
return parts.length === 1;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3NtL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBaUJBLG9DQUVDO0FBY0Qsd0RBT0M7QUFnQkQsZ0RBR0M7QUFnQkQsZ0RBV0M7QUFnQkQsc0NBSUM7QUExR0QsaUNBQXVDO0FBRXZDOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLEdBQWtCLEVBQUUsR0FBa0I7SUFDakUsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzVDLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILFNBQWdCLHNCQUFzQixDQUNwQyxNQUFjLEVBQ2QsR0FBa0I7SUFFbEIsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDN0UsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzVELE9BQU8sR0FBRyxnQkFBZ0IsR0FBRyxhQUFhLEVBQUUsQ0FBQztBQUMvQyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILFNBQWdCLGtCQUFrQixDQUFDLElBQVk7SUFDN0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN6QyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDakMsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxJQUFZO0lBQzdDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFekMsZ0RBQWdEO0lBQ2hELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsb0JBQWEsQ0FBYSxDQUFDO0lBQzVELElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sUUFBeUIsQ0FBQztJQUNuQyxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILFNBQWdCLGFBQWEsQ0FBQyxJQUFZO0lBQ3hDLHNFQUFzRTtJQUN0RSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMxRCxPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0FBQzVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTU01fUEFSQU1fS0VZIH0gZnJvbSBcIi4va2V5c1wiO1xuXG4vKipcbiAqIEJ1aWxkIFNTTSBwYXJhbWV0ZXIgcGF0aCB3aXRoIG9wdGlvbmFsIGVudmlyb25tZW50IHByZWZpeFxuICogQHBhcmFtIGVudiAtIEVudmlyb25tZW50IG5hbWUgKGUuZy4sICdkZXYnLCAnc3RhZ2luZycsICdwcm9kJyksIG9yIG51bGwgZm9yIGVudi1hZ25vc3RpYyBwYXJhbWV0ZXJzXG4gKiBAcGFyYW0ga2V5IC0gU1NNIHBhcmFtZXRlciBrZXlcbiAqIEByZXR1cm5zIEZ1bGwgU1NNIHBhcmFtZXRlciBwYXRoXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBidWlsZFNTTVBhdGgoJ3Byb2QnLCBTU01fUEFSQU1fS0VZLkNPR05JVE9fVVNFUl9QT09MX0lEKVxuICogLy8gUmV0dXJuczogJy9wcm9kL3VzZXItcG9vbC1pZCdcbiAqXG4gKiBidWlsZFNTTVBhdGgobnVsbCwgU1NNX1BBUkFNX0tFWS5EQl9VU0VSKVxuICogLy8gUmV0dXJuczogJy9kYi11c2VyJyAoZW52LWFnbm9zdGljKVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFNTTVBhdGgoZW52OiBzdHJpbmcgfCBudWxsLCBrZXk6IFNTTV9QQVJBTV9LRVkpOiBzdHJpbmcge1xuICByZXR1cm4gZW52ID8gYC8ke2Vudn0vJHtrZXl9YCA6IGAvJHtrZXl9YDtcbn1cblxuLyoqXG4gKiBCdWlsZCBTU00gcGFyYW1ldGVyIHBhdGggd2l0aCBjdXN0b20gcHJlZml4XG4gKiBAcGFyYW0gcHJlZml4IC0gQ3VzdG9tIHByZWZpeCAoZS5nLiwgJy9teWFwcC9wcm9kJylcbiAqIEBwYXJhbSBrZXkgLSBTU00gcGFyYW1ldGVyIGtleVxuICogQHJldHVybnMgRnVsbCBTU00gcGFyYW1ldGVyIHBhdGhcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGJ1aWxkU1NNUGF0aFdpdGhQcmVmaXgoJy9teWFwcC9wcm9kJywgU1NNX1BBUkFNX0tFWS5EQl9VU0VSKVxuICogLy8gUmV0dXJuczogJy9teWFwcC9wcm9kL2RiLXVzZXInXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU1NNUGF0aFdpdGhQcmVmaXgoXG4gIHByZWZpeDogc3RyaW5nLFxuICBrZXk6IFNTTV9QQVJBTV9LRVksXG4pOiBzdHJpbmcge1xuICBjb25zdCBub3JtYWxpemVkUHJlZml4ID0gcHJlZml4LmVuZHNXaXRoKFwiL1wiKSA/IHByZWZpeC5zbGljZSgwLCAtMSkgOiBwcmVmaXg7XG4gIGNvbnN0IG5vcm1hbGl6ZWRLZXkgPSBrZXkuc3RhcnRzV2l0aChcIi9cIikgPyBrZXkgOiBgLyR7a2V5fWA7XG4gIHJldHVybiBgJHtub3JtYWxpemVkUHJlZml4fSR7bm9ybWFsaXplZEtleX1gO1xufVxuXG4vKipcbiAqIEV4dHJhY3QgZW52aXJvbm1lbnQgZnJvbSBTU00gcGFyYW1ldGVyIHBhdGhcbiAqIEBwYXJhbSBwYXRoIC0gU1NNIHBhcmFtZXRlciBwYXRoXG4gKiBAcmV0dXJucyBFbnZpcm9ubWVudCBuYW1lIG9yIG51bGwgaWYgZW52LWFnbm9zdGljIG9yIG5vdCBmb3VuZFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogZXh0cmFjdEVudkZyb21QYXRoKCcvcHJvZC91c2VyLXBvb2wtaWQnKVxuICogLy8gUmV0dXJuczogJ3Byb2QnXG4gKlxuICogZXh0cmFjdEVudkZyb21QYXRoKCcvZGItdXNlcicpXG4gKiAvLyBSZXR1cm5zOiBudWxsIChlbnYtYWdub3N0aWMgcGFyYW1ldGVyKVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0RW52RnJvbVBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IG1hdGNoID0gcGF0aC5tYXRjaCgvXlxcLyhbXi9dKylcXC8vKTtcbiAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0gOiBudWxsO1xufVxuXG4vKipcbiAqIFBhcnNlIFNTTSBwYXJhbWV0ZXIgcGF0aCB0byBleHRyYWN0IGtleVxuICogQHBhcmFtIHBhdGggLSBTU00gcGFyYW1ldGVyIHBhdGhcbiAqIEByZXR1cm5zIFNTTSBwYXJhbWV0ZXIga2V5IG9yIG51bGwgaWYgbm90IGZvdW5kXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBleHRyYWN0S2V5RnJvbVBhdGgoJy9wcm9kL3VzZXItcG9vbC1pZCcpXG4gKiAvLyBSZXR1cm5zOiBTU01fUEFSQU1fS0VZLkNPR05JVE9fVVNFUl9QT09MX0lEXG4gKlxuICogZXh0cmFjdEtleUZyb21QYXRoKCcvZGItdXNlcicpXG4gKiAvLyBSZXR1cm5zOiBTU01fUEFSQU1fS0VZLkRCX1VTRVIgKGVudi1hZ25vc3RpYylcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEtleUZyb21QYXRoKHBhdGg6IHN0cmluZyk6IFNTTV9QQVJBTV9LRVkgfCBudWxsIHtcbiAgY29uc3QgcGFydHMgPSBwYXRoLnNwbGl0KFwiL1wiKTtcbiAgY29uc3Qga2V5VmFsdWUgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXTtcblxuICAvLyBDaGVjayBpZiB0aGUga2V5IHZhbHVlIG1hdGNoZXMgYW55IGVudW0gdmFsdWVcbiAgY29uc3QgZW51bVZhbHVlcyA9IE9iamVjdC52YWx1ZXMoU1NNX1BBUkFNX0tFWSkgYXMgc3RyaW5nW107XG4gIGlmIChlbnVtVmFsdWVzLmluY2x1ZGVzKGtleVZhbHVlKSkge1xuICAgIHJldHVybiBrZXlWYWx1ZSBhcyBTU01fUEFSQU1fS0VZO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYW4gU1NNIHBhcmFtZXRlciBwYXRoIGlzIGVudmlyb25tZW50LWFnbm9zdGljXG4gKiBAcGFyYW0gcGF0aCAtIFNTTSBwYXJhbWV0ZXIgcGF0aFxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgcGF0aCBpcyBlbnYtYWdub3N0aWMgKG5vIGVudmlyb25tZW50IHByZWZpeClcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGlzRW52QWdub3N0aWMoJy9kYi11c2VyJylcbiAqIC8vIFJldHVybnM6IHRydWVcbiAqXG4gKiBpc0VudkFnbm9zdGljKCcvcHJvZC91c2VyLXBvb2wtaWQnKVxuICogLy8gUmV0dXJuczogZmFsc2VcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFbnZBZ25vc3RpYyhwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgLy8gRW52LWFnbm9zdGljIHBhdGhzIGhhdmUgZm9ybWF0OiAva2V5IChvbmx5IDIgcGFydHMgd2hlbiBzcGxpdCBieSAvKVxuICBjb25zdCBwYXJ0cyA9IHBhdGguc3BsaXQoXCIvXCIpLmZpbHRlcigocCkgPT4gcC5sZW5ndGggPiAwKTtcbiAgcmV0dXJuIHBhcnRzLmxlbmd0aCA9PT0gMTtcbn1cbiJdfQ==
|