@doctorus/common 0.0.0 → 0.0.2

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.
@@ -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==
package/package.json CHANGED
@@ -30,7 +30,7 @@
30
30
  "publishConfig": {
31
31
  "access": "public"
32
32
  },
33
- "version": "0.0.0",
33
+ "version": "0.0.2",
34
34
  "jest": {
35
35
  "coverageProvider": "v8",
36
36
  "testMatch": [