@bolt.tech/bolt-paramstore 1.0.13
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
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.getParameters = void 0;
|
|
13
|
+
const client_ssm_1 = require("@aws-sdk/client-ssm");
|
|
14
|
+
const htSdk = require("@hypertestco/node-sdk");
|
|
15
|
+
const ssm = new client_ssm_1.SSMClient({
|
|
16
|
+
region: "ap-southeast-1",
|
|
17
|
+
});
|
|
18
|
+
const populateEnvironment = (params) => {
|
|
19
|
+
global.process.env = Object.assign(Object.assign({}, global.process.env), params);
|
|
20
|
+
};
|
|
21
|
+
const fetchParameters = (path, nextToken = undefined) => __awaiter(void 0, void 0, void 0, function* () {
|
|
22
|
+
var _a;
|
|
23
|
+
try {
|
|
24
|
+
const command = new client_ssm_1.GetParametersByPathCommand({
|
|
25
|
+
Path: path,
|
|
26
|
+
WithDecryption: true,
|
|
27
|
+
Recursive: true,
|
|
28
|
+
NextToken: nextToken,
|
|
29
|
+
});
|
|
30
|
+
const data = yield ssm.send(command);
|
|
31
|
+
nextToken = data.NextToken;
|
|
32
|
+
const exportObject = {};
|
|
33
|
+
(_a = data === null || data === void 0 ? void 0 : data.Parameters) === null || _a === void 0 ? void 0 : _a.map((data) => {
|
|
34
|
+
var _a;
|
|
35
|
+
const key = ((_a = data === null || data === void 0 ? void 0 : data.Name) === null || _a === void 0 ? void 0 : _a.substring(data.Name.lastIndexOf("/") + 1, data.Name.length)) || "";
|
|
36
|
+
const value = data.Value || ""; // Ensure value is not undefined
|
|
37
|
+
exportObject[key] = value;
|
|
38
|
+
});
|
|
39
|
+
if (nextToken) {
|
|
40
|
+
const nextParams = yield fetchParameters(path, nextToken);
|
|
41
|
+
return Object.assign(Object.assign({}, exportObject), nextParams); // Merge parameters from next page
|
|
42
|
+
}
|
|
43
|
+
return exportObject;
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.log(error);
|
|
47
|
+
return {}; // Return empty object in case of error, handle error in getParameters for status
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
const getParameters = (path, nextToken = undefined) => __awaiter(void 0, void 0, void 0, function* () {
|
|
51
|
+
try {
|
|
52
|
+
const fetchedParams = yield htSdk.executeUnmocked(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
53
|
+
return fetchParameters(path, nextToken);
|
|
54
|
+
}));
|
|
55
|
+
populateEnvironment(fetchedParams);
|
|
56
|
+
return { status: 200, message: "VARIABLES FETCHED SUCCESSFULLY." };
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
console.log(error);
|
|
60
|
+
return { status: 500, message: `ERROR: ${error}` };
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
exports.getParameters = getParameters;
|
|
64
|
+
// getParameters("/dev/common/", undefined);
|
|
65
|
+
// import { SSMClient, GetParametersByPathCommand } from "@aws-sdk/client-ssm";
|
|
66
|
+
// const ssm = new SSMClient({
|
|
67
|
+
// region: "ap-southeast-1",
|
|
68
|
+
// });
|
|
69
|
+
// export const getParameters = async (
|
|
70
|
+
// path: string,
|
|
71
|
+
// nextToken: string | undefined = undefined
|
|
72
|
+
// ) => {
|
|
73
|
+
// try {
|
|
74
|
+
// const command = new GetParametersByPathCommand({
|
|
75
|
+
// Path: path,
|
|
76
|
+
// WithDecryption: true,
|
|
77
|
+
// Recursive: true,
|
|
78
|
+
// NextToken: nextToken,
|
|
79
|
+
// });
|
|
80
|
+
// const data = await ssm.send(command);
|
|
81
|
+
// nextToken = data.NextToken;
|
|
82
|
+
// const exportObject: any = {};
|
|
83
|
+
// data?.Parameters?.map((data) => {
|
|
84
|
+
// const key: string =
|
|
85
|
+
// data?.Name?.substring(
|
|
86
|
+
// data.Name.lastIndexOf("/") + 1,
|
|
87
|
+
// data.Name.length
|
|
88
|
+
// ) || "";
|
|
89
|
+
// const value = data.Value;
|
|
90
|
+
// exportObject[key] = value;
|
|
91
|
+
// });
|
|
92
|
+
// global.process.env = {
|
|
93
|
+
// ...global.process.env,
|
|
94
|
+
// ...exportObject,
|
|
95
|
+
// };
|
|
96
|
+
// if (nextToken) {
|
|
97
|
+
// await getParameters(path, nextToken);
|
|
98
|
+
// }
|
|
99
|
+
// return { status: 200, message: "VARIABLES FETCHED SUCCESSFULLY." };
|
|
100
|
+
// } catch (error) {
|
|
101
|
+
// console.log(error);
|
|
102
|
+
// return { status: 500, message: `ERROR: ${error}` };
|
|
103
|
+
// }
|
|
104
|
+
// };
|
|
105
|
+
// // getParameters("/dev/common/", undefined);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getSecret: (secretId: string) => Promise<any>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.getSecret = void 0;
|
|
13
|
+
const client_secrets_manager_1 = require("@aws-sdk/client-secrets-manager");
|
|
14
|
+
const smc = new client_secrets_manager_1.SecretsManagerClient({
|
|
15
|
+
region: "ap-southeast-1",
|
|
16
|
+
});
|
|
17
|
+
const getSecret = (secretId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
+
try {
|
|
19
|
+
const command = new client_secrets_manager_1.GetSecretValueCommand({
|
|
20
|
+
SecretId: secretId,
|
|
21
|
+
});
|
|
22
|
+
const data = yield smc.send(command);
|
|
23
|
+
if (!data.SecretString) {
|
|
24
|
+
throw new Error("SecretString is empty");
|
|
25
|
+
}
|
|
26
|
+
return JSON.parse(data.SecretString);
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
console.log({ error });
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
exports.getSecret = getSecret;
|
package/build/index.d.ts
ADDED
package/build/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSecret = exports.getParameters = void 0;
|
|
4
|
+
const getParameters_1 = require("./controllers/getParameters");
|
|
5
|
+
Object.defineProperty(exports, "getParameters", { enumerable: true, get: function () { return getParameters_1.getParameters; } });
|
|
6
|
+
const getSecrets_1 = require("./controllers/getSecrets");
|
|
7
|
+
Object.defineProperty(exports, "getSecret", { enumerable: true, get: function () { return getSecrets_1.getSecret; } });
|
package/package.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@bolt.tech/bolt-paramstore",
|
|
3
|
+
"version": "1.0.13",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "build/index.js",
|
|
6
|
+
"types": "build/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
9
|
+
"build": "tsc",
|
|
10
|
+
"start": "node build/index.js",
|
|
11
|
+
"dev": "tsc && npm start",
|
|
12
|
+
"prepare": "npm run build"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [],
|
|
15
|
+
"author": "",
|
|
16
|
+
"license": "ISC",
|
|
17
|
+
"files": [
|
|
18
|
+
"build/**/*"
|
|
19
|
+
],
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"typescript": "^4.7.4"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@aws-sdk/client-secrets-manager": "^3.112.0",
|
|
25
|
+
"@aws-sdk/client-ssm": "^3.112.0",
|
|
26
|
+
"@types/node": "^18.0.0",
|
|
27
|
+
"@hypertestco/node-sdk": "0.2.25-37"
|
|
28
|
+
}
|
|
29
|
+
}
|