@incanta/config 0.1.16 → 0.1.17
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.d.ts +0 -1
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js +11 -33
- package/lib/config.js.map +1 -1
- package/package.json +1 -1
- package/src/config.ts +11 -34
package/lib/config.d.ts
CHANGED
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;IAE1B,OAAO,CAAC,YAAY,CAAM;gBAEP,OAAO,CAAC,EAAE,cAAc;IA6CpC,GAAG,IAAI,MAAM;
|
|
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;IA6CpC,GAAG,IAAI,MAAM;IAIb,gBAAgB,IAAI,GAAG;IAevB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC;IAKtB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC;IAoEtC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAShC,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
|
@@ -48,36 +48,13 @@ class Config {
|
|
|
48
48
|
dir() {
|
|
49
49
|
return this.configDir;
|
|
50
50
|
}
|
|
51
|
-
getFormattedConfig(prefix, format) {
|
|
52
|
-
let value = "";
|
|
53
|
-
while (format.length > 0) {
|
|
54
|
-
const match = /\${([a-z.]+)}/g.exec(format);
|
|
55
|
-
if (match === null) {
|
|
56
|
-
value += format;
|
|
57
|
-
format = "";
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
value += format.slice(0, match.index);
|
|
61
|
-
format = format.substring(match.index + match[0].length);
|
|
62
|
-
const configKey = match[1];
|
|
63
|
-
value += `${this.get(`${prefix}.${configKey}`)}`;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return value;
|
|
67
|
-
}
|
|
68
51
|
getConfiguredEnv() {
|
|
69
52
|
const extraEnv = {};
|
|
70
53
|
const envKeys = Object.keys(this.envVarConfig);
|
|
71
54
|
for (const key of envKeys) {
|
|
72
55
|
const configKey = this.envVarConfig[key];
|
|
73
56
|
const envValue = this.get(configKey);
|
|
74
|
-
|
|
75
|
-
typeof envValue.format !== "undefined") {
|
|
76
|
-
extraEnv[key] = this.getFormattedConfig(configKey, envValue.format);
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
extraEnv[key] = `${envValue}`;
|
|
80
|
-
}
|
|
57
|
+
extraEnv[key] = `${envValue}`;
|
|
81
58
|
}
|
|
82
59
|
return extraEnv;
|
|
83
60
|
}
|
|
@@ -96,12 +73,18 @@ class Config {
|
|
|
96
73
|
}
|
|
97
74
|
obj = obj[part];
|
|
98
75
|
}
|
|
99
|
-
const variableRegex = /\$\{[a-zA-Z\-_0-9
|
|
76
|
+
const variableRegex = /\$\{[a-zA-Z\-_0-9./]+\}/g;
|
|
100
77
|
const replaceValue = (value) => {
|
|
101
78
|
const regexResult = value.matchAll(variableRegex);
|
|
102
79
|
let result = value;
|
|
103
80
|
for (const match of regexResult) {
|
|
104
|
-
|
|
81
|
+
let keyToReplace = match[0].slice(2, match[0].length - 1);
|
|
82
|
+
if (keyToReplace.startsWith("./")) {
|
|
83
|
+
// convert relative path to absolute path
|
|
84
|
+
keyToReplace = `${keyParts
|
|
85
|
+
.slice(0, keyParts.length - 1)
|
|
86
|
+
.join(".")}.${keyToReplace.slice(2)}`;
|
|
87
|
+
}
|
|
105
88
|
const newValue = this.tryGet(keyToReplace);
|
|
106
89
|
if (newValue !== null) {
|
|
107
90
|
result = result.replace(match[0], `${newValue}`);
|
|
@@ -118,7 +101,7 @@ class Config {
|
|
|
118
101
|
const walkObject = (curObj) => {
|
|
119
102
|
for (const property of Object.keys(curObj)) {
|
|
120
103
|
const value = curObj[property];
|
|
121
|
-
if (typeof value === "string"
|
|
104
|
+
if (typeof value === "string") {
|
|
122
105
|
curObj[property] = replaceValue(value);
|
|
123
106
|
}
|
|
124
107
|
else if (typeof value === "object") {
|
|
@@ -135,12 +118,7 @@ class Config {
|
|
|
135
118
|
obj = {};
|
|
136
119
|
}
|
|
137
120
|
else {
|
|
138
|
-
|
|
139
|
-
obj = this.getFormattedConfig(keyParts.join("."), obj.format);
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
walkObject(obj);
|
|
143
|
-
}
|
|
121
|
+
walkObject(obj);
|
|
144
122
|
}
|
|
145
123
|
}
|
|
146
124
|
return obj;
|
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;IAElB,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,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,cAAc,CAAC,CAAC;QAE7D,oEAAoE;QACpE,mBAAmB;QACnB,MAAM,WAAW,GAAG,YAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;YAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;gBACnC,IAAI,CAAC,YAAY,GAAG,eAAM,CAAC,QAAQ,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;gBACrE,MAAM;aACP;SACF;IACH,CAAC;IAEM,GAAG;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/config.ts
CHANGED
|
@@ -65,24 +65,6 @@ export class Config {
|
|
|
65
65
|
return this.configDir;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
private getFormattedConfig(prefix: string, format: string): string {
|
|
69
|
-
let value = "";
|
|
70
|
-
while (format.length > 0) {
|
|
71
|
-
const match = /\${([a-z.]+)}/g.exec(format);
|
|
72
|
-
if (match === null) {
|
|
73
|
-
value += format;
|
|
74
|
-
format = "";
|
|
75
|
-
} else {
|
|
76
|
-
value += format.slice(0, match.index);
|
|
77
|
-
format = format.substring(match.index + match[0].length);
|
|
78
|
-
const configKey = match[1];
|
|
79
|
-
value += `${this.get<any>(`${prefix}.${configKey}`)}`;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
return value;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
68
|
public getConfiguredEnv(): any {
|
|
87
69
|
const extraEnv: any = {};
|
|
88
70
|
const envKeys = Object.keys(this.envVarConfig);
|
|
@@ -92,14 +74,7 @@ export class Config {
|
|
|
92
74
|
|
|
93
75
|
const envValue = this.get<any>(configKey);
|
|
94
76
|
|
|
95
|
-
|
|
96
|
-
typeof envValue === "object" &&
|
|
97
|
-
typeof envValue.format !== "undefined"
|
|
98
|
-
) {
|
|
99
|
-
extraEnv[key] = this.getFormattedConfig(configKey, envValue.format);
|
|
100
|
-
} else {
|
|
101
|
-
extraEnv[key] = `${envValue}`;
|
|
102
|
-
}
|
|
77
|
+
extraEnv[key] = `${envValue}`;
|
|
103
78
|
}
|
|
104
79
|
|
|
105
80
|
return extraEnv;
|
|
@@ -125,14 +100,20 @@ export class Config {
|
|
|
125
100
|
obj = obj[part];
|
|
126
101
|
}
|
|
127
102
|
|
|
128
|
-
const variableRegex = /\$\{[a-zA-Z\-_0-9
|
|
103
|
+
const variableRegex = /\$\{[a-zA-Z\-_0-9./]+\}/g;
|
|
129
104
|
|
|
130
105
|
const replaceValue = (value: string): string => {
|
|
131
106
|
const regexResult = value.matchAll(variableRegex);
|
|
132
107
|
let result = value;
|
|
133
108
|
|
|
134
109
|
for (const match of regexResult) {
|
|
135
|
-
|
|
110
|
+
let keyToReplace = match[0].slice(2, match[0].length - 1);
|
|
111
|
+
if (keyToReplace.startsWith("./")) {
|
|
112
|
+
// convert relative path to absolute path
|
|
113
|
+
keyToReplace = `${keyParts
|
|
114
|
+
.slice(0, keyParts.length - 1)
|
|
115
|
+
.join(".")}.${keyToReplace.slice(2)}`;
|
|
116
|
+
}
|
|
136
117
|
const newValue = this.tryGet<string | number | boolean>(keyToReplace);
|
|
137
118
|
if (newValue !== null) {
|
|
138
119
|
result = result.replace(match[0], `${newValue}`);
|
|
@@ -150,7 +131,7 @@ export class Config {
|
|
|
150
131
|
const walkObject = (curObj: any): void => {
|
|
151
132
|
for (const property of Object.keys(curObj)) {
|
|
152
133
|
const value = curObj[property];
|
|
153
|
-
if (typeof value === "string"
|
|
134
|
+
if (typeof value === "string") {
|
|
154
135
|
curObj[property] = replaceValue(value);
|
|
155
136
|
} else if (typeof value === "object") {
|
|
156
137
|
if (value === null) {
|
|
@@ -165,11 +146,7 @@ export class Config {
|
|
|
165
146
|
if (obj === null) {
|
|
166
147
|
obj = {};
|
|
167
148
|
} else {
|
|
168
|
-
|
|
169
|
-
obj = this.getFormattedConfig(keyParts.join("."), obj.format);
|
|
170
|
-
} else {
|
|
171
|
-
walkObject(obj);
|
|
172
|
-
}
|
|
149
|
+
walkObject(obj);
|
|
173
150
|
}
|
|
174
151
|
}
|
|
175
152
|
|