@incanta/config 2.1.1 → 2.1.3
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/package.json +7 -5
- package/lib/config-env.d.ts +0 -3
- package/lib/config-env.d.ts.map +0 -1
- package/lib/config-env.js +0 -55
- package/lib/config-env.js.map +0 -1
- package/lib/config.d.ts +0 -44
- package/lib/config.d.ts.map +0 -1
- package/lib/config.js +0 -354
- package/lib/config.js.map +0 -1
- package/lib/index.d.ts +0 -4
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -14
- package/lib/index.js.map +0 -1
- package/lib/loader.d.ts +0 -18
- package/lib/loader.d.ts.map +0 -1
- package/lib/loader.js +0 -226
- package/lib/loader.js.map +0 -1
- package/lib/merge-customizer.d.ts +0 -2
- package/lib/merge-customizer.d.ts.map +0 -1
- package/lib/merge-customizer.js +0 -10
- package/lib/merge-customizer.js.map +0 -1
- package/lib/secrets/aws-secrets-manager.d.ts +0 -7
- package/lib/secrets/aws-secrets-manager.d.ts.map +0 -1
- package/lib/secrets/aws-secrets-manager.js +0 -28
- package/lib/secrets/aws-secrets-manager.js.map +0 -1
- package/lib/secrets/azure-key-vault.d.ts +0 -7
- package/lib/secrets/azure-key-vault.d.ts.map +0 -1
- package/lib/secrets/azure-key-vault.js +0 -26
- package/lib/secrets/azure-key-vault.js.map +0 -1
- package/lib/secrets/gcp-secret-manager.d.ts +0 -7
- package/lib/secrets/gcp-secret-manager.d.ts.map +0 -1
- package/lib/secrets/gcp-secret-manager.js +0 -34
- package/lib/secrets/gcp-secret-manager.js.map +0 -1
- package/lib/secrets/hcp-vault.d.ts +0 -30
- package/lib/secrets/hcp-vault.d.ts.map +0 -1
- package/lib/secrets/hcp-vault.js +0 -59
- package/lib/secrets/hcp-vault.js.map +0 -1
- package/lib/secrets/local.d.ts +0 -7
- package/lib/secrets/local.d.ts.map +0 -1
- package/lib/secrets/local.js +0 -44
- package/lib/secrets/local.js.map +0 -1
- package/lib/secrets/provider.d.ts +0 -20
- package/lib/secrets/provider.d.ts.map +0 -1
- package/lib/secrets/provider.js +0 -38
- package/lib/secrets/provider.js.map +0 -1
- package/lib/secrets/vault.d.ts +0 -7
- package/lib/secrets/vault.d.ts.map +0 -1
- package/lib/secrets/vault.js +0 -86
- package/lib/secrets/vault.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@incanta/config",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.3",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./lib/index.js",
|
|
@@ -15,14 +15,15 @@
|
|
|
15
15
|
"license": "MIT",
|
|
16
16
|
"scripts": {
|
|
17
17
|
"build": "tsc -b .",
|
|
18
|
-
"test": "jest"
|
|
18
|
+
"test": "jest",
|
|
19
|
+
"audit": "yarn-audit-fix"
|
|
19
20
|
},
|
|
20
21
|
"dependencies": {
|
|
21
22
|
"@aws-sdk/client-secrets-manager": "^3.839.0",
|
|
22
23
|
"@azure/identity": "^4.10.1",
|
|
23
24
|
"@azure/keyvault-secrets": "^4.10.0",
|
|
24
|
-
"@google-cloud/secret-manager": "^6.
|
|
25
|
-
"js-yaml": "^4.1.
|
|
25
|
+
"@google-cloud/secret-manager": "^6.1.1",
|
|
26
|
+
"js-yaml": "^4.1.1",
|
|
26
27
|
"json5": "^2.2.3",
|
|
27
28
|
"jsonc-parser": "^3.2.0",
|
|
28
29
|
"lodash.mergewith": "^4.6.2"
|
|
@@ -43,6 +44,7 @@
|
|
|
43
44
|
"jest": "^29.5.0",
|
|
44
45
|
"prettier": "^2.8.1",
|
|
45
46
|
"ts-jest": "^29.1.0",
|
|
46
|
-
"typescript": "^5.0.4"
|
|
47
|
+
"typescript": "^5.0.4",
|
|
48
|
+
"yarn-audit-fix": "^10.1.1"
|
|
47
49
|
}
|
|
48
50
|
}
|
package/lib/config-env.d.ts
DELETED
package/lib/config-env.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-env.d.ts","sourceRoot":"","sources":["../src/config-env.ts"],"names":[],"mappings":""}
|
package/lib/config-env.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
-
};
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
const child_process_1 = require("child_process");
|
|
8
|
-
const lodash_mergewith_1 = __importDefault(require("lodash.mergewith"));
|
|
9
|
-
const index_1 = __importDefault(require("./index"));
|
|
10
|
-
const merge_customizer_1 = require("./merge-customizer");
|
|
11
|
-
let command = process.argv.slice(2).join(" ");
|
|
12
|
-
let envName = "";
|
|
13
|
-
if (command.startsWith("--env=") || command.startsWith("-e=")) {
|
|
14
|
-
const isLongOption = command.startsWith("--env=");
|
|
15
|
-
const commandAfterEnv = command.substring(command.indexOf(isLongOption ? "--env=" : "-e=") + (isLongOption ? 6 : 3));
|
|
16
|
-
if (commandAfterEnv.startsWith('"') || commandAfterEnv.startsWith("'")) {
|
|
17
|
-
const quoteChar = commandAfterEnv[0];
|
|
18
|
-
// find next quoteChar, ensuring it wasn't escaped
|
|
19
|
-
let endQuoteIndex = -1;
|
|
20
|
-
let startQuoteIndex = 0;
|
|
21
|
-
// eslint-disable-next-line no-constant-condition
|
|
22
|
-
while (true) {
|
|
23
|
-
endQuoteIndex = commandAfterEnv.indexOf(quoteChar, startQuoteIndex + 1);
|
|
24
|
-
if (endQuoteIndex !== -1 && commandAfterEnv[endQuoteIndex - 1] !== "\\") {
|
|
25
|
-
break;
|
|
26
|
-
}
|
|
27
|
-
if (endQuoteIndex === -1) {
|
|
28
|
-
throw new Error(`Unmatched quote in command: ${commandAfterEnv}. Please ensure quotes are properly closed.`);
|
|
29
|
-
}
|
|
30
|
-
startQuoteIndex = endQuoteIndex;
|
|
31
|
-
}
|
|
32
|
-
envName = commandAfterEnv.substring(1, endQuoteIndex).trim();
|
|
33
|
-
command = commandAfterEnv.substring(endQuoteIndex + 1).trim();
|
|
34
|
-
index_1.default.init({
|
|
35
|
-
configDir: index_1.default.dir(),
|
|
36
|
-
configEnv: envName,
|
|
37
|
-
cwd: index_1.default.cwd(),
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
const tokens = commandAfterEnv.split(" ");
|
|
42
|
-
envName = tokens[0].trim();
|
|
43
|
-
command = tokens.slice(1).join(" ").trim();
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
const env = {};
|
|
47
|
-
if (envName) {
|
|
48
|
-
env.NODE_CONFIG_ENV = envName;
|
|
49
|
-
}
|
|
50
|
-
(0, lodash_mergewith_1.default)(env, process.env, index_1.default.getConfiguredEnv(), merge_customizer_1.mergeWithCustomizer);
|
|
51
|
-
(0, child_process_1.execSync)(command, {
|
|
52
|
-
env,
|
|
53
|
-
stdio: "inherit",
|
|
54
|
-
});
|
|
55
|
-
//# sourceMappingURL=config-env.js.map
|
package/lib/config-env.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-env.js","sourceRoot":"","sources":["../src/config-env.ts"],"names":[],"mappings":";;;;;;AAEA,iDAAyC;AACzC,wEAAyC;AACzC,oDAA6B;AAC7B,yDAAyD;AAEzD,IAAI,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE9C,IAAI,OAAO,GAAG,EAAE,CAAC;AACjB,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;IAC9D,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAElD,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CACvC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC1E,CAAC;IAEF,IAAI,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACvE,MAAM,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QACrC,kDAAkD;QAClD,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC;QACvB,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,iDAAiD;QACjD,OAAO,IAAI,EAAE,CAAC;YACZ,aAAa,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,GAAG,CAAC,CAAC,CAAC;YAExE,IAAI,aAAa,KAAK,CAAC,CAAC,IAAI,eAAe,CAAC,aAAa,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACxE,MAAM;YACR,CAAC;YAED,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CACb,+BAA+B,eAAe,6CAA6C,CAC5F,CAAC;YACJ,CAAC;YAED,eAAe,GAAG,aAAa,CAAC;QAClC,CAAC;QAED,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7D,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAE9D,eAAM,CAAC,IAAI,CAAC;YACV,SAAS,EAAE,eAAM,CAAC,GAAG,EAAE;YACvB,SAAS,EAAE,OAAO;YAClB,GAAG,EAAE,eAAM,CAAC,GAAG,EAAE;SAClB,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3B,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,MAAM,GAAG,GAAQ,EAAE,CAAC;AAEpB,IAAI,OAAO,EAAE,CAAC;IACZ,GAAG,CAAC,eAAe,GAAG,OAAO,CAAC;AAChC,CAAC;AAED,IAAA,0BAAS,EAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,eAAM,CAAC,gBAAgB,EAAE,EAAE,sCAAmB,CAAC,CAAC;AAE5E,IAAA,wBAAQ,EAAC,OAAO,EAAE;IAChB,GAAG;IACH,KAAK,EAAE,SAAS;CACjB,CAAC,CAAC"}
|
package/lib/config.d.ts
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
export interface IConfigOptions {
|
|
2
|
-
configDir?: string;
|
|
3
|
-
configEnv?: string;
|
|
4
|
-
cwd?: string;
|
|
5
|
-
}
|
|
6
|
-
export interface IConfigSettings {
|
|
7
|
-
defaults?: {
|
|
8
|
-
dir?: string;
|
|
9
|
-
env?: string;
|
|
10
|
-
};
|
|
11
|
-
extraDirs?: string[];
|
|
12
|
-
}
|
|
13
|
-
export default class Config {
|
|
14
|
-
private configDir;
|
|
15
|
-
private configEnv;
|
|
16
|
-
private configCwd;
|
|
17
|
-
private extraConfigDirs;
|
|
18
|
-
private values;
|
|
19
|
-
private normalizedValues;
|
|
20
|
-
private customValues;
|
|
21
|
-
private envVarConfig;
|
|
22
|
-
private secretsToken;
|
|
23
|
-
private secretsCache;
|
|
24
|
-
constructor(options?: IConfigOptions);
|
|
25
|
-
init(options?: IConfigOptions): void;
|
|
26
|
-
dir(): string;
|
|
27
|
-
env(): string;
|
|
28
|
-
cwd(): string;
|
|
29
|
-
configEnvDir(configEnv: string): string | null;
|
|
30
|
-
getConfiguredEnv(): any;
|
|
31
|
-
get<T>(key: string): T;
|
|
32
|
-
getWithParts<T>(keyParts: string[]): T;
|
|
33
|
-
getWithSecrets<T>(key: string): Promise<T>;
|
|
34
|
-
processSecrets<T>(v: T): Promise<T>;
|
|
35
|
-
normalizeString(value: string, currentPath: string[]): string;
|
|
36
|
-
normalizeArray(arr: any[], currentPath: string[]): any[];
|
|
37
|
-
normalizeObject(obj: any, currentPath: string[]): any;
|
|
38
|
-
tryGet<T>(key: string): T | null;
|
|
39
|
-
getJson(): any;
|
|
40
|
-
set<T>(key: string, value: T): void;
|
|
41
|
-
setWithParts<T>(keyParts: string[], value: T): void;
|
|
42
|
-
save(): Promise<void>;
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=config.d.ts.map
|
package/lib/config.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE;QACT,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAOD,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,eAAe,CAAgB;IAEvC,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,gBAAgB,CAAM;IAC9B,OAAO,CAAC,YAAY,CAAM;IAE1B,OAAO,CAAC,YAAY,CAAM;IAE1B,OAAO,CAAC,YAAY,CAGJ;IAChB,OAAO,CAAC,YAAY,CAA+B;gBAEhC,OAAO,CAAC,EAAE,cAAc;IAIpC,IAAI,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI;IA0IpC,GAAG,IAAI,MAAM;IAIb,GAAG,IAAI,MAAM;IAIb,GAAG,IAAI,MAAM;IAIb,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IA0B9C,gBAAgB,IAAI,GAAG;IAevB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC;IAKtB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC;IAyBhC,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAW1C,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAmEzC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM;IAgD7D,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE;IAkBxD,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,GAAG;IA4BrD,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAShC,OAAO,IAAI,GAAG;IAMd,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAKnC,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAe7C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAMnC"}
|
package/lib/config.js
DELETED
|
@@ -1,354 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const lodash_mergewith_1 = __importDefault(require("lodash.mergewith"));
|
|
7
|
-
const path_1 = __importDefault(require("path"));
|
|
8
|
-
const fs_1 = __importDefault(require("fs"));
|
|
9
|
-
const loader_1 = require("./loader");
|
|
10
|
-
const provider_1 = require("./secrets/provider");
|
|
11
|
-
const merge_customizer_1 = require("./merge-customizer");
|
|
12
|
-
class Config {
|
|
13
|
-
configDir = "";
|
|
14
|
-
configEnv = "";
|
|
15
|
-
configCwd = "";
|
|
16
|
-
extraConfigDirs = [];
|
|
17
|
-
values;
|
|
18
|
-
normalizedValues;
|
|
19
|
-
customValues;
|
|
20
|
-
envVarConfig;
|
|
21
|
-
secretsToken = null;
|
|
22
|
-
secretsCache = {};
|
|
23
|
-
constructor(options) {
|
|
24
|
-
this.init(options);
|
|
25
|
-
}
|
|
26
|
-
init(options) {
|
|
27
|
-
this.values = {};
|
|
28
|
-
this.normalizedValues = {};
|
|
29
|
-
this.customValues = {};
|
|
30
|
-
this.secretsToken = null;
|
|
31
|
-
this.secretsCache = {};
|
|
32
|
-
let defaultConfigDir = "config";
|
|
33
|
-
let defaultConfigEnv = "default";
|
|
34
|
-
this.configCwd = options?.cwd || process.cwd();
|
|
35
|
-
if (fs_1.default.existsSync(path_1.default.join(this.configCwd, "config-settings.json"))) {
|
|
36
|
-
const configSettings = JSON.parse(fs_1.default.readFileSync(path_1.default.join(this.configCwd, "config-settings.json"), "utf-8"));
|
|
37
|
-
if (configSettings.defaults) {
|
|
38
|
-
if (configSettings.defaults.dir) {
|
|
39
|
-
defaultConfigDir = configSettings.defaults.dir;
|
|
40
|
-
}
|
|
41
|
-
if (configSettings.defaults.env) {
|
|
42
|
-
defaultConfigEnv = configSettings.defaults.env;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
if (configSettings.extraDirs && Array.isArray(configSettings.extraDirs)) {
|
|
46
|
-
this.extraConfigDirs = configSettings.extraDirs;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
this.configDir =
|
|
50
|
-
options?.configDir ||
|
|
51
|
-
(process.env["NODE_CONFIG_DIR"] &&
|
|
52
|
-
path_1.default.relative(this.configCwd, process.env["NODE_CONFIG_DIR"])) ||
|
|
53
|
-
path_1.default.join(this.configCwd, defaultConfigDir);
|
|
54
|
-
this.configEnv =
|
|
55
|
-
options?.configEnv || process.env["NODE_CONFIG_ENV"] || defaultConfigEnv;
|
|
56
|
-
const configEnvDir = this.configEnvDir(this.configEnv);
|
|
57
|
-
const configFolderOptions = loader_1.Loader.readConfigSettings(configEnvDir || path_1.default.join(this.configDir, "default"));
|
|
58
|
-
const defaultValues = loader_1.Loader.loadRoot(path_1.default.join(this.configDir, "default"), {
|
|
59
|
-
...configFolderOptions,
|
|
60
|
-
parentNames: [],
|
|
61
|
-
}, this);
|
|
62
|
-
let envValues = {
|
|
63
|
-
data: {},
|
|
64
|
-
loadedNames: [],
|
|
65
|
-
};
|
|
66
|
-
if (configEnvDir) {
|
|
67
|
-
envValues = loader_1.Loader.loadRoot(configEnvDir, {
|
|
68
|
-
...configFolderOptions,
|
|
69
|
-
existingObj: defaultValues.data,
|
|
70
|
-
}, this);
|
|
71
|
-
}
|
|
72
|
-
const overrideValues = loader_1.Loader.loadFile(path_1.default.join(this.configDir, "override.json"), {});
|
|
73
|
-
(0, lodash_mergewith_1.default)(this.values, defaultValues.data, envValues.data, overrideValues, merge_customizer_1.mergeWithCustomizer);
|
|
74
|
-
const applyBases = (obj, currentPath = []) => {
|
|
75
|
-
for (const key of Object.keys(obj)) {
|
|
76
|
-
if (key === "incantaConfigBase") {
|
|
77
|
-
const baseName = obj[key];
|
|
78
|
-
const baseValue = obj[baseName];
|
|
79
|
-
for (const objKey in obj) {
|
|
80
|
-
if (objKey !== key && objKey !== baseName) {
|
|
81
|
-
obj[objKey] = (0, lodash_mergewith_1.default)({}, baseValue, obj[objKey]);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
else if (typeof obj[key] === "object" && obj[key] !== null) {
|
|
86
|
-
applyBases(obj[key], [...currentPath, key]);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
applyBases(this.values);
|
|
91
|
-
const removeIncantaConfigBase = (obj) => {
|
|
92
|
-
for (const key of Object.keys(obj)) {
|
|
93
|
-
if (key === "incantaConfigBase") {
|
|
94
|
-
delete obj[key];
|
|
95
|
-
}
|
|
96
|
-
else if (typeof obj[key] === "object" && obj[key] !== null) {
|
|
97
|
-
removeIncantaConfigBase(obj[key]);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
removeIncantaConfigBase(this.values);
|
|
102
|
-
this.values = loader_1.Loader.convertKebabToCamelCase(this.values, configFolderOptions);
|
|
103
|
-
this.normalizedValues = this.normalizeObject(this.values, []);
|
|
104
|
-
// load the environment variables that are configured to be injected
|
|
105
|
-
// using config-env
|
|
106
|
-
const dirContents = fs_1.default.readdirSync(this.configDir, { encoding: "utf-8" });
|
|
107
|
-
this.envVarConfig = {};
|
|
108
|
-
for (const file of dirContents) {
|
|
109
|
-
if (file.startsWith("environment.")) {
|
|
110
|
-
this.envVarConfig = loader_1.Loader.loadFile(path_1.default.join(this.configDir, file), {});
|
|
111
|
-
break;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
dir() {
|
|
116
|
-
return this.configDir;
|
|
117
|
-
}
|
|
118
|
-
env() {
|
|
119
|
-
return this.configEnv;
|
|
120
|
-
}
|
|
121
|
-
cwd() {
|
|
122
|
-
return this.configCwd;
|
|
123
|
-
}
|
|
124
|
-
configEnvDir(configEnv) {
|
|
125
|
-
if (fs_1.default.existsSync(path_1.default.join(this.configDir, configEnv))) {
|
|
126
|
-
return path_1.default.join(this.configDir, configEnv);
|
|
127
|
-
}
|
|
128
|
-
for (const extraDir of this.extraConfigDirs) {
|
|
129
|
-
if (fs_1.default.existsSync(path_1.default.join(extraDir, configEnv))) {
|
|
130
|
-
return path_1.default.join(extraDir, configEnv);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
if (process.env["NODE_CONFIG_SKIP_ENV_WARNING"] !== "true") {
|
|
134
|
-
console.error(`\nERROR: Cannot find config environment "${configEnv}" in ${this.configDir} or configured extra dirs: [${this.extraConfigDirs.join(", ")}].\nThis error is for a **single environment folder**; ` +
|
|
135
|
-
`if you see multiple folders listed in this error, you likely have a typo "parentNames" (i.e. ["parent 1, parent 2"] instead of ["parent 1", "parent 2"]).\n` +
|
|
136
|
-
`We're continuing on with the default environment folder, but this is likely an error for you.\n`);
|
|
137
|
-
}
|
|
138
|
-
return null;
|
|
139
|
-
}
|
|
140
|
-
getConfiguredEnv() {
|
|
141
|
-
const extraEnv = {};
|
|
142
|
-
const envKeys = Object.keys(this.envVarConfig);
|
|
143
|
-
for (const key of envKeys) {
|
|
144
|
-
const configKey = this.envVarConfig[key];
|
|
145
|
-
const envValue = this.get(configKey);
|
|
146
|
-
extraEnv[key] = `${envValue}`;
|
|
147
|
-
}
|
|
148
|
-
return extraEnv;
|
|
149
|
-
}
|
|
150
|
-
get(key) {
|
|
151
|
-
const parts = key.split(".");
|
|
152
|
-
return this.getWithParts(parts);
|
|
153
|
-
}
|
|
154
|
-
getWithParts(keyParts) {
|
|
155
|
-
if (keyParts.length === 0) {
|
|
156
|
-
throw new Error("Cannot use an empty key");
|
|
157
|
-
}
|
|
158
|
-
let obj = (0, lodash_mergewith_1.default)({}, this.normalizedValues, merge_customizer_1.mergeWithCustomizer);
|
|
159
|
-
for (const part of keyParts) {
|
|
160
|
-
// convert to camelCase first
|
|
161
|
-
const newPart = part.replace(/-([a-zA-Z0-9])/g, function (_, match) {
|
|
162
|
-
return match.toUpperCase();
|
|
163
|
-
});
|
|
164
|
-
if (typeof obj[newPart] === "undefined" && obj[part] === undefined) {
|
|
165
|
-
throw new Error(`Could not find value for key ${keyParts.join(".")}`);
|
|
166
|
-
}
|
|
167
|
-
else if (obj[newPart] === undefined && obj[part] !== undefined) {
|
|
168
|
-
obj = obj[part];
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
obj = obj[newPart];
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
return obj;
|
|
175
|
-
}
|
|
176
|
-
async getWithSecrets(key) {
|
|
177
|
-
let value = this.get(key);
|
|
178
|
-
const provider = this.normalizedValues.secrets?.provider;
|
|
179
|
-
if (typeof provider === "string" && provider !== provider_1.SecretsProviderType.None) {
|
|
180
|
-
value = await this.processSecrets(value);
|
|
181
|
-
}
|
|
182
|
-
return value;
|
|
183
|
-
}
|
|
184
|
-
async processSecrets(v) {
|
|
185
|
-
if (typeof this.normalizedValues.secrets?.provider === "undefined" ||
|
|
186
|
-
(typeof this.normalizedValues.secrets?.provider === "string" &&
|
|
187
|
-
this.normalizedValues.secrets.provider === provider_1.SecretsProviderType.None)) {
|
|
188
|
-
return v;
|
|
189
|
-
}
|
|
190
|
-
if (typeof v === "string" && v.startsWith("secret|")) {
|
|
191
|
-
const secretKey = v.slice(7);
|
|
192
|
-
const provider = (0, provider_1.GetSecretsProvider)(this.normalizedValues.secrets.provider);
|
|
193
|
-
if (this.secretsToken === null ||
|
|
194
|
-
this.secretsToken.expires.getTime() < Date.now() + 500) {
|
|
195
|
-
this.secretsToken = await provider.getAuthToken(this);
|
|
196
|
-
}
|
|
197
|
-
if (this.secretsCache[secretKey] === undefined ||
|
|
198
|
-
this.secretsCache[secretKey].expires < new Date()) {
|
|
199
|
-
const secretValue = await provider.getSecret(this, this.secretsToken.value, secretKey);
|
|
200
|
-
this.secretsCache[secretKey] = {
|
|
201
|
-
value: secretValue,
|
|
202
|
-
expires: new Date(Date.now() +
|
|
203
|
-
this.get("secrets.cache-duration-seconds") * 1000),
|
|
204
|
-
};
|
|
205
|
-
}
|
|
206
|
-
if (this.secretsCache[secretKey] === undefined) {
|
|
207
|
-
throw new Error(`Secret ${secretKey} not found`);
|
|
208
|
-
}
|
|
209
|
-
return this.secretsCache[secretKey].value;
|
|
210
|
-
}
|
|
211
|
-
else if (typeof v === "object" && v !== null) {
|
|
212
|
-
if (Array.isArray(v)) {
|
|
213
|
-
const newObjs = [];
|
|
214
|
-
for (const value of v) {
|
|
215
|
-
newObjs.push(await this.processSecrets(value));
|
|
216
|
-
}
|
|
217
|
-
return newObjs;
|
|
218
|
-
}
|
|
219
|
-
else {
|
|
220
|
-
const newObj = {};
|
|
221
|
-
for (const key of Object.keys(v)) {
|
|
222
|
-
const value = v[key];
|
|
223
|
-
newObj[key] = await this.processSecrets(value);
|
|
224
|
-
}
|
|
225
|
-
return newObj;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
return v;
|
|
229
|
-
}
|
|
230
|
-
normalizeString(value, currentPath) {
|
|
231
|
-
let result = value;
|
|
232
|
-
const variableRegex = /\$\{[a-zA-Z\-_0-9./]+\}/g;
|
|
233
|
-
const regexResult = value.matchAll(variableRegex);
|
|
234
|
-
for (const match of regexResult) {
|
|
235
|
-
const key = match[0].slice(2, match[0].length - 1);
|
|
236
|
-
let keyToFetchValue;
|
|
237
|
-
if (key.startsWith(".")) {
|
|
238
|
-
keyToFetchValue = path_1.default
|
|
239
|
-
.normalize(`${currentPath.join("/")}/${key}`)
|
|
240
|
-
.replaceAll("\\", "/")
|
|
241
|
-
.replaceAll("/", ".");
|
|
242
|
-
}
|
|
243
|
-
else {
|
|
244
|
-
keyToFetchValue = key;
|
|
245
|
-
}
|
|
246
|
-
let obj = (0, lodash_mergewith_1.default)({}, this.values, merge_customizer_1.mergeWithCustomizer);
|
|
247
|
-
const keyParts = keyToFetchValue.split(".");
|
|
248
|
-
for (const part of keyParts) {
|
|
249
|
-
// convert to camelCase first
|
|
250
|
-
const newPart = part.replace(/-([a-zA-Z0-9])/g, function (_, match) {
|
|
251
|
-
return match.toUpperCase();
|
|
252
|
-
});
|
|
253
|
-
if (typeof obj[newPart] === "undefined" && obj[part] === undefined) {
|
|
254
|
-
throw new Error(`Could not find value for key ${keyParts.join(".")}`);
|
|
255
|
-
}
|
|
256
|
-
else if (obj[newPart] === undefined && obj[part] !== undefined) {
|
|
257
|
-
obj = obj[part];
|
|
258
|
-
}
|
|
259
|
-
else {
|
|
260
|
-
obj = obj[newPart];
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
if (obj !== null) {
|
|
264
|
-
if (typeof obj === "string" && obj.match(variableRegex) !== null) {
|
|
265
|
-
obj = this.normalizeString(obj, keyParts.slice(0, -1));
|
|
266
|
-
}
|
|
267
|
-
result = result.replace(match[0], `${obj}`);
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
return result;
|
|
271
|
-
}
|
|
272
|
-
normalizeArray(arr, currentPath) {
|
|
273
|
-
return arr.map((value) => {
|
|
274
|
-
if (typeof value === "string") {
|
|
275
|
-
return this.normalizeString(value, currentPath);
|
|
276
|
-
}
|
|
277
|
-
else if (typeof value === "object") {
|
|
278
|
-
if (value === null) {
|
|
279
|
-
return null;
|
|
280
|
-
}
|
|
281
|
-
else if (Array.isArray(value)) {
|
|
282
|
-
return this.normalizeArray(value, currentPath);
|
|
283
|
-
}
|
|
284
|
-
else {
|
|
285
|
-
return this.normalizeObject(value, currentPath);
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
return value;
|
|
289
|
-
});
|
|
290
|
-
}
|
|
291
|
-
normalizeObject(obj, currentPath) {
|
|
292
|
-
if (typeof obj !== "object" || obj === null) {
|
|
293
|
-
return obj;
|
|
294
|
-
}
|
|
295
|
-
const newObj = (0, lodash_mergewith_1.default)({}, obj, merge_customizer_1.mergeWithCustomizer);
|
|
296
|
-
for (const property of Object.keys(newObj)) {
|
|
297
|
-
const value = newObj[property];
|
|
298
|
-
if (typeof value === "string") {
|
|
299
|
-
newObj[property] = this.normalizeString(value, currentPath);
|
|
300
|
-
}
|
|
301
|
-
else if (typeof value === "object") {
|
|
302
|
-
if (value === null) {
|
|
303
|
-
newObj[property] = null;
|
|
304
|
-
}
|
|
305
|
-
else if (Array.isArray(value)) {
|
|
306
|
-
newObj[property] = this.normalizeArray(value, currentPath);
|
|
307
|
-
}
|
|
308
|
-
else {
|
|
309
|
-
newObj[property] = this.normalizeObject(value, [
|
|
310
|
-
...currentPath,
|
|
311
|
-
property,
|
|
312
|
-
]);
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
return newObj;
|
|
317
|
-
}
|
|
318
|
-
tryGet(key) {
|
|
319
|
-
try {
|
|
320
|
-
const value = this.get(key);
|
|
321
|
-
return value;
|
|
322
|
-
}
|
|
323
|
-
catch {
|
|
324
|
-
return null;
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
getJson() {
|
|
328
|
-
const values = (0, lodash_mergewith_1.default)({}, this.normalizedValues, merge_customizer_1.mergeWithCustomizer);
|
|
329
|
-
return values;
|
|
330
|
-
}
|
|
331
|
-
set(key, value) {
|
|
332
|
-
const parts = key.split(".");
|
|
333
|
-
this.setWithParts(parts, value);
|
|
334
|
-
}
|
|
335
|
-
setWithParts(keyParts, value) {
|
|
336
|
-
if (keyParts.length === 0) {
|
|
337
|
-
throw new Error("Cannot use an empty key");
|
|
338
|
-
}
|
|
339
|
-
const obj = {};
|
|
340
|
-
for (let i = 0; i < keyParts.length - 1; i++) {
|
|
341
|
-
obj[keyParts[i]] = {};
|
|
342
|
-
}
|
|
343
|
-
obj[keyParts[keyParts.length - 1]] = value;
|
|
344
|
-
(0, lodash_mergewith_1.default)(this.customValues, obj, merge_customizer_1.mergeWithCustomizer);
|
|
345
|
-
}
|
|
346
|
-
async save() {
|
|
347
|
-
const fileContents = JSON.stringify(this.customValues, null, 2);
|
|
348
|
-
await fs_1.default.promises.writeFile(this.configDir, fileContents, {
|
|
349
|
-
encoding: "utf-8",
|
|
350
|
-
});
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
exports.default = Config;
|
|
354
|
-
//# sourceMappingURL=config.js.map
|
package/lib/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
DELETED
package/lib/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;;AAY9B,kBAAqB"}
|
package/lib/index.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
const config_1 = __importDefault(require("./config"));
|
|
6
|
-
let config = undefined;
|
|
7
|
-
function GetConfig() {
|
|
8
|
-
if (!config) {
|
|
9
|
-
config = new config_1.default();
|
|
10
|
-
}
|
|
11
|
-
return config;
|
|
12
|
-
}
|
|
13
|
-
module.exports = GetConfig();
|
|
14
|
-
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,sDAA8B;AAE9B,IAAI,MAAM,GAAuB,SAAS,CAAC;AAE3C,SAAS,SAAS;IAChB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,IAAI,gBAAM,EAAE,CAAC;IACxB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,iBAAS,SAAS,EAAE,CAAC"}
|
package/lib/loader.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import Config from "./config";
|
|
2
|
-
export interface IConfigFolderOptions {
|
|
3
|
-
variableCasing?: "original" | "camel" | "both";
|
|
4
|
-
parentNames?: string[];
|
|
5
|
-
loadedNames?: string[];
|
|
6
|
-
existingObj?: any;
|
|
7
|
-
}
|
|
8
|
-
export declare class Loader {
|
|
9
|
-
static readConfigSettings(folder: string): IConfigFolderOptions;
|
|
10
|
-
static convertKebabToCamelCase(obj: any, options: IConfigFolderOptions): any;
|
|
11
|
-
static loadFile(filePath: string, options: IConfigFolderOptions): any;
|
|
12
|
-
static loadRoot(folder: string, options: IConfigFolderOptions, config: Config): {
|
|
13
|
-
data: any;
|
|
14
|
-
loadedNames: string[];
|
|
15
|
-
};
|
|
16
|
-
static load(folder: string, options: IConfigFolderOptions): any;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=loader.d.ts.map
|
package/lib/loader.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAMA,OAAO,MAAM,MAAM,UAAU,CAAC;AAG9B,MAAM,WAAW,oBAAoB;IACnC,cAAc,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;IAC/C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,GAAG,CAAC;CACnB;AAED,qBAAa,MAAM;WACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB;WA8BxD,uBAAuB,CACnC,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,oBAAoB,GAC5B,GAAG;WAsEQ,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,GAAG;WAmC9D,QAAQ,CACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,MAAM,GACb;QAAE,IAAI,EAAE,GAAG,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE;WAqDzB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,GAAG;CA+FvE"}
|