@incanta/config 0.1.2 → 0.1.4
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/config-env.d.ts +2 -0
- package/lib/config-env.d.ts.map +1 -0
- package/lib/config-env.js +19 -0
- package/lib/config-env.js.map +1 -0
- package/lib/config.d.ts +4 -0
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js +47 -0
- package/lib/config.js.map +1 -1
- package/lib/loader.js +2 -2
- package/lib/loader.js.map +1 -1
- package/package.json +6 -1
- package/src/config-env.ts +17 -0
- package/src/config.ts +57 -0
- package/src/loader.ts +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-env.d.ts","sourceRoot":"","sources":["../src/config-env.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
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 child_process_1 = require("child_process");
|
|
7
|
+
const lodash_merge_1 = __importDefault(require("lodash.merge"));
|
|
8
|
+
const index_1 = __importDefault(require("./index"));
|
|
9
|
+
const command = process.argv
|
|
10
|
+
.slice(2)
|
|
11
|
+
.map((arg) => `"${arg}"`)
|
|
12
|
+
.join(" ");
|
|
13
|
+
const env = {};
|
|
14
|
+
(0, lodash_merge_1.default)(env, process.env, index_1.default.getConfiguredEnv());
|
|
15
|
+
(0, child_process_1.execSync)(command, {
|
|
16
|
+
env,
|
|
17
|
+
stdio: "inherit",
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=config-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-env.js","sourceRoot":"","sources":["../src/config-env.ts"],"names":[],"mappings":";;;;;AAAA,iDAAyC;AACzC,gEAAiC;AACjC,oDAA6B;AAE7B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI;KACzB,KAAK,CAAC,CAAC,CAAC;KACR,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC;KACxB,IAAI,CAAC,GAAG,CAAC,CAAC;AAEb,MAAM,GAAG,GAAQ,EAAE,CAAC;AAEpB,IAAA,sBAAK,EAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,eAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAEnD,IAAA,wBAAQ,EAAC,OAAO,EAAE;IAChB,GAAG;IACH,KAAK,EAAE,SAAS;CACjB,CAAC,CAAC"}
|
package/lib/config.d.ts
CHANGED
|
@@ -6,7 +6,11 @@ export declare class Config {
|
|
|
6
6
|
private configDir;
|
|
7
7
|
private values;
|
|
8
8
|
private customValues;
|
|
9
|
+
private envVarConfig;
|
|
9
10
|
constructor(options?: IConfigOptions);
|
|
11
|
+
dir(): string;
|
|
12
|
+
private getFormattedConfig;
|
|
13
|
+
getConfiguredEnv(): any;
|
|
10
14
|
get<T>(key: string): T;
|
|
11
15
|
getWithParts<T>(keyParts: string[]): T;
|
|
12
16
|
has(key: string): boolean;
|
package/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,YAAY,CAAM;gBAEP,OAAO,CAAC,EAAE,cAAc;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,YAAY,CAAM;IAE1B,OAAO,CAAC,YAAY,CAAM;gBAEP,OAAO,CAAC,EAAE,cAAc;IA+CpC,GAAG,IAAI,MAAM;IAIpB,OAAO,CAAC,kBAAkB;IAkBnB,gBAAgB,IAAI,GAAG;IAsBvB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC;IAKtB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC;IAkBtC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAUzB,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
CHANGED
|
@@ -12,6 +12,7 @@ class Config {
|
|
|
12
12
|
configDir;
|
|
13
13
|
values;
|
|
14
14
|
customValues;
|
|
15
|
+
envVarConfig;
|
|
15
16
|
constructor(options) {
|
|
16
17
|
this.values = {};
|
|
17
18
|
this.customValues = {};
|
|
@@ -34,6 +35,52 @@ class Config {
|
|
|
34
35
|
const localValues = loader_1.Loader.load(path_1.default.join(this.configDir, "local"));
|
|
35
36
|
const overrideValues = loader_1.Loader.loadFile(path_1.default.join(this.configDir, "override.json"));
|
|
36
37
|
(0, lodash_merge_1.default)(this.values, defaultValues, envValues, localValues, overrideValues);
|
|
38
|
+
// load the environment variables that are configured to be injected
|
|
39
|
+
// using config-env
|
|
40
|
+
const dirContents = fs_1.default.readdirSync(this.configDir, { encoding: "utf-8" });
|
|
41
|
+
this.envVarConfig = {};
|
|
42
|
+
for (const file of dirContents) {
|
|
43
|
+
if (file.startsWith("environment.")) {
|
|
44
|
+
this.envVarConfig = loader_1.Loader.loadFile(path_1.default.join(this.configDir, file));
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
dir() {
|
|
50
|
+
return this.configDir;
|
|
51
|
+
}
|
|
52
|
+
getFormattedConfig(format) {
|
|
53
|
+
let value = "";
|
|
54
|
+
while (format.length > 0) {
|
|
55
|
+
const match = /\${([a-z.]+)}/g.exec(format);
|
|
56
|
+
if (match === null) {
|
|
57
|
+
value += format;
|
|
58
|
+
format = "";
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
value += format.slice(0, match.index);
|
|
62
|
+
format = format.substring(match.index + match[0].length);
|
|
63
|
+
const configKey = match[1];
|
|
64
|
+
value += `${this.get(configKey)}`;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return value;
|
|
68
|
+
}
|
|
69
|
+
getConfiguredEnv() {
|
|
70
|
+
const extraEnv = {};
|
|
71
|
+
const envKeys = Object.keys(this.envVarConfig);
|
|
72
|
+
for (const key of envKeys) {
|
|
73
|
+
const configKey = this.envVarConfig[key];
|
|
74
|
+
const envValue = this.get(configKey);
|
|
75
|
+
if (typeof envValue === "object" &&
|
|
76
|
+
typeof envValue.format !== "undefined") {
|
|
77
|
+
extraEnv[key] = this.getFormattedConfig(envValue.format);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
extraEnv[key] = `${envValue}`;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return extraEnv;
|
|
37
84
|
}
|
|
38
85
|
get(key) {
|
|
39
86
|
const parts = key.split(".");
|
package/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAiC;AACjC,gDAAwB;AACxB,4CAAoB;AACpB,qCAAkC;AAOlC,MAAa,MAAM;IACT,SAAS,CAAS;IAElB,MAAM,CAAM;IACZ,YAAY,CAAM;IAE1B,YAAmB,OAAwB;QACzC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAEvB,IAAI,CAAC,SAAS;YACZ,OAAO,EAAE,SAAS;gBAClB,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;oBAC7B,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBAC/D,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;QAErC,MAAM,aAAa,GAAG,eAAM,CAAC,IAAI,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAExE,IAAI,SAAS,GAAQ,EAAE,CAAC;QACxB,MAAM,YAAY,GAAG,OAAO,EAAE,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC1E,IAAI,YAAY,EAAE;YAChB,IAAI,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,EAAE;gBAC1D,SAAS,GAAG,eAAM,CAAC,IAAI,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;aAClE;iBAAM;gBACL,OAAO,CAAC,GAAG,CACT,8CAA8C,YAAY,YAAY,cAAI,CAAC,IAAI,CAC7E,IAAI,CAAC,SAAS,EACd,YAAY,CACb,gBAAgB,CAClB,CAAC;aACH;SACF;QAED,MAAM,WAAW,GAAG,eAAM,CAAC,IAAI,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QAEpE,MAAM,cAAc,GAAG,eAAM,CAAC,QAAQ,CACpC,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAC3C,CAAC;QAEF,IAAA,sBAAK,EAAC,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/lib/loader.js
CHANGED
|
@@ -51,7 +51,7 @@ class Loader {
|
|
|
51
51
|
});
|
|
52
52
|
const baseObj = {};
|
|
53
53
|
for (const content of contents) {
|
|
54
|
-
if (!content.isDirectory() && content.name
|
|
54
|
+
if (!content.isDirectory() && /^_?index\./.exec(content.name) !== null) {
|
|
55
55
|
(0, lodash_merge_1.default)(baseObj, Loader.loadFile(path_1.default.join(folder, content.name)));
|
|
56
56
|
}
|
|
57
57
|
}
|
|
@@ -66,7 +66,7 @@ class Loader {
|
|
|
66
66
|
baseObj[key] = obj;
|
|
67
67
|
}
|
|
68
68
|
else {
|
|
69
|
-
if (content.name
|
|
69
|
+
if (/^_?index\./.exec(content.name) !== null) {
|
|
70
70
|
// we already loaded this to be be in the base config
|
|
71
71
|
continue;
|
|
72
72
|
}
|
package/lib/loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,+CAAmD;AACnD,kDAA0B;AAC1B,sDAA2B;AAC3B,gEAAiC;AAEjC,MAAa,MAAM;IACV,MAAM,CAAC,QAAQ,CAAC,QAAgB;QACrC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YAC5B,OAAO,EAAE,CAAC;SACX;QAED,MAAM,YAAY,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE;YAC7C,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAElD,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAC9B,YAAY;YACZ,OAAO,iBAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAChC;aAAM,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACpC,YAAY;YACZ,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;SACjC;aAAM,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACrC,aAAa;YACb,OAAO,IAAA,oBAAU,EAAC,YAAY,CAAC,CAAC,CAAC,8BAA8B;SAChE;aAAM,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACrC,aAAa;YACb,OAAO,eAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;SAClC;aAAM;YACL,OAAO,CAAC,GAAG,CACT,qBAAqB,QAAQ,mFAAmF,CACjH,CAAC;YACF,OAAO,EAAE,CAAC;SACX;IACH,CAAC;IAEM,MAAM,CAAC,IAAI,CAAC,MAAc;QAC/B,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YAC1B,OAAO,EAAE,CAAC;SACX;QAED,MAAM,QAAQ,GAAG,YAAE,CAAC,WAAW,CAAC,MAAM,EAAE;YACtC,QAAQ,EAAE,OAAO;YACjB,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;QAEH,MAAM,OAAO,GAAQ,EAAE,CAAC;QAExB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@incanta/config",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./lib/index.js",
|
|
7
7
|
"./config": "./lib/config.js"
|
|
8
8
|
},
|
|
9
|
+
"bin": {
|
|
10
|
+
"config-env": "./lib/config-env.js"
|
|
11
|
+
},
|
|
12
|
+
"packageManager": "yarn@1.22.19",
|
|
9
13
|
"repository": "git@github.com:IncantaGames/config.git",
|
|
10
14
|
"author": "Incanta Games",
|
|
11
15
|
"license": "MIT",
|
|
@@ -26,6 +30,7 @@
|
|
|
26
30
|
"@types/node": "^18.11.18",
|
|
27
31
|
"@typescript-eslint/eslint-plugin": "^5.48.0",
|
|
28
32
|
"@typescript-eslint/parser": "^5.48.0",
|
|
33
|
+
"cross-env": "^7.0.3",
|
|
29
34
|
"eslint": "^8.31.0",
|
|
30
35
|
"eslint-config-prettier": "^8.6.0",
|
|
31
36
|
"eslint-plugin-import": "^2.26.0",
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { execSync } from "child_process";
|
|
2
|
+
import merge from "lodash.merge";
|
|
3
|
+
import config from "./index";
|
|
4
|
+
|
|
5
|
+
const command = process.argv
|
|
6
|
+
.slice(2)
|
|
7
|
+
.map((arg) => `"${arg}"`)
|
|
8
|
+
.join(" ");
|
|
9
|
+
|
|
10
|
+
const env: any = {};
|
|
11
|
+
|
|
12
|
+
merge(env, process.env, config.getConfiguredEnv());
|
|
13
|
+
|
|
14
|
+
execSync(command, {
|
|
15
|
+
env,
|
|
16
|
+
stdio: "inherit",
|
|
17
|
+
});
|
package/src/config.ts
CHANGED
|
@@ -14,6 +14,8 @@ export class Config {
|
|
|
14
14
|
private values: any;
|
|
15
15
|
private customValues: any;
|
|
16
16
|
|
|
17
|
+
private envVarConfig: any;
|
|
18
|
+
|
|
17
19
|
public constructor(options?: IConfigOptions) {
|
|
18
20
|
this.values = {};
|
|
19
21
|
this.customValues = {};
|
|
@@ -48,6 +50,61 @@ export class Config {
|
|
|
48
50
|
);
|
|
49
51
|
|
|
50
52
|
merge(this.values, defaultValues, envValues, localValues, overrideValues);
|
|
53
|
+
|
|
54
|
+
// load the environment variables that are configured to be injected
|
|
55
|
+
// using config-env
|
|
56
|
+
const dirContents = fs.readdirSync(this.configDir, { encoding: "utf-8" });
|
|
57
|
+
this.envVarConfig = {};
|
|
58
|
+
for (const file of dirContents) {
|
|
59
|
+
if (file.startsWith("environment.")) {
|
|
60
|
+
this.envVarConfig = Loader.loadFile(path.join(this.configDir, file));
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
public dir(): string {
|
|
67
|
+
return this.configDir;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
private getFormattedConfig(format: string): string {
|
|
71
|
+
let value = "";
|
|
72
|
+
while (format.length > 0) {
|
|
73
|
+
const match = /\${([a-z.]+)}/g.exec(format);
|
|
74
|
+
if (match === null) {
|
|
75
|
+
value += format;
|
|
76
|
+
format = "";
|
|
77
|
+
} else {
|
|
78
|
+
value += format.slice(0, match.index);
|
|
79
|
+
format = format.substring(match.index + match[0].length);
|
|
80
|
+
const configKey = match[1];
|
|
81
|
+
value += `${this.get<any>(configKey)}`;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return value;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
public getConfiguredEnv(): any {
|
|
89
|
+
const extraEnv: any = {};
|
|
90
|
+
const envKeys = Object.keys(this.envVarConfig);
|
|
91
|
+
|
|
92
|
+
for (const key of envKeys) {
|
|
93
|
+
const configKey = this.envVarConfig[key];
|
|
94
|
+
|
|
95
|
+
const envValue = this.get<any>(configKey);
|
|
96
|
+
|
|
97
|
+
if (
|
|
98
|
+
typeof envValue === "object" &&
|
|
99
|
+
typeof envValue.format !== "undefined"
|
|
100
|
+
) {
|
|
101
|
+
extraEnv[key] = this.getFormattedConfig(envValue.format);
|
|
102
|
+
} else {
|
|
103
|
+
extraEnv[key] = `${envValue}`;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
return extraEnv;
|
|
51
108
|
}
|
|
52
109
|
|
|
53
110
|
public get<T>(key: string): T {
|
package/src/loader.ts
CHANGED
|
@@ -51,7 +51,7 @@ export class Loader {
|
|
|
51
51
|
const baseObj: any = {};
|
|
52
52
|
|
|
53
53
|
for (const content of contents) {
|
|
54
|
-
if (!content.isDirectory() && content.name
|
|
54
|
+
if (!content.isDirectory() && /^_?index\./.exec(content.name) !== null) {
|
|
55
55
|
merge(baseObj, Loader.loadFile(path.join(folder, content.name)));
|
|
56
56
|
}
|
|
57
57
|
}
|
|
@@ -71,7 +71,7 @@ export class Loader {
|
|
|
71
71
|
|
|
72
72
|
baseObj[key] = obj;
|
|
73
73
|
} else {
|
|
74
|
-
if (content.name
|
|
74
|
+
if (/^_?index\./.exec(content.name) !== null) {
|
|
75
75
|
// we already loaded this to be be in the base config
|
|
76
76
|
continue;
|
|
77
77
|
}
|