@incanta/config 2.1.3 → 2.1.5

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.
Files changed (50) hide show
  1. package/lib/config-env.d.ts +3 -0
  2. package/lib/config-env.d.ts.map +1 -0
  3. package/lib/config-env.js +55 -0
  4. package/lib/config-env.js.map +1 -0
  5. package/lib/config.d.ts +44 -0
  6. package/lib/config.d.ts.map +1 -0
  7. package/lib/config.js +354 -0
  8. package/lib/config.js.map +1 -0
  9. package/lib/index.d.ts +4 -0
  10. package/lib/index.d.ts.map +1 -0
  11. package/lib/index.js +14 -0
  12. package/lib/index.js.map +1 -0
  13. package/lib/loader.d.ts +18 -0
  14. package/lib/loader.d.ts.map +1 -0
  15. package/lib/loader.js +226 -0
  16. package/lib/loader.js.map +1 -0
  17. package/lib/merge-customizer.d.ts +2 -0
  18. package/lib/merge-customizer.d.ts.map +1 -0
  19. package/lib/merge-customizer.js +10 -0
  20. package/lib/merge-customizer.js.map +1 -0
  21. package/lib/secrets/aws-secrets-manager.d.ts +7 -0
  22. package/lib/secrets/aws-secrets-manager.d.ts.map +1 -0
  23. package/lib/secrets/aws-secrets-manager.js +28 -0
  24. package/lib/secrets/aws-secrets-manager.js.map +1 -0
  25. package/lib/secrets/azure-key-vault.d.ts +7 -0
  26. package/lib/secrets/azure-key-vault.d.ts.map +1 -0
  27. package/lib/secrets/azure-key-vault.js +26 -0
  28. package/lib/secrets/azure-key-vault.js.map +1 -0
  29. package/lib/secrets/gcp-secret-manager.d.ts +7 -0
  30. package/lib/secrets/gcp-secret-manager.d.ts.map +1 -0
  31. package/lib/secrets/gcp-secret-manager.js +34 -0
  32. package/lib/secrets/gcp-secret-manager.js.map +1 -0
  33. package/lib/secrets/hcp-vault.d.ts +30 -0
  34. package/lib/secrets/hcp-vault.d.ts.map +1 -0
  35. package/lib/secrets/hcp-vault.js +59 -0
  36. package/lib/secrets/hcp-vault.js.map +1 -0
  37. package/lib/secrets/local.d.ts +7 -0
  38. package/lib/secrets/local.d.ts.map +1 -0
  39. package/lib/secrets/local.js +44 -0
  40. package/lib/secrets/local.js.map +1 -0
  41. package/lib/secrets/provider.d.ts +20 -0
  42. package/lib/secrets/provider.d.ts.map +1 -0
  43. package/lib/secrets/provider.js +38 -0
  44. package/lib/secrets/provider.js.map +1 -0
  45. package/lib/secrets/vault.d.ts +7 -0
  46. package/lib/secrets/vault.d.ts.map +1 -0
  47. package/lib/secrets/vault.js +86 -0
  48. package/lib/secrets/vault.js.map +1 -0
  49. package/package.json +1 -1
  50. package/yarn-error.log +5625 -0
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=config-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-env.d.ts","sourceRoot":"","sources":["../src/config-env.ts"],"names":[],"mappings":""}
@@ -0,0 +1,55 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,44 @@
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
@@ -0,0 +1 @@
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 ADDED
@@ -0,0 +1,354 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ import Config from "./config";
2
+ declare const _default: Config;
3
+ export = _default;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
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 ADDED
@@ -0,0 +1,14 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,18 @@
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
@@ -0,0 +1 @@
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"}