@incanta/config 0.1.16 → 0.1.18
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 +13 -38
- package/lib/config.js.map +1 -1
- package/package.json +1 -1
- package/src/config.ts +13 -38
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;IAkEtC,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,12 +101,12 @@ 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") {
|
|
125
108
|
if (value === null) {
|
|
126
|
-
curObj[property] =
|
|
109
|
+
curObj[property] = null;
|
|
127
110
|
}
|
|
128
111
|
else {
|
|
129
112
|
walkObject(value);
|
|
@@ -131,16 +114,8 @@ class Config {
|
|
|
131
114
|
}
|
|
132
115
|
}
|
|
133
116
|
};
|
|
134
|
-
if (obj
|
|
135
|
-
obj
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
if (obj.format) {
|
|
139
|
-
obj = this.getFormattedConfig(keyParts.join("."), obj.format);
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
walkObject(obj);
|
|
143
|
-
}
|
|
117
|
+
if (obj !== null) {
|
|
118
|
+
walkObject(obj);
|
|
144
119
|
}
|
|
145
120
|
}
|
|
146
121
|
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,11 +131,11 @@ 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) {
|
|
157
|
-
curObj[property] =
|
|
138
|
+
curObj[property] = null;
|
|
158
139
|
} else {
|
|
159
140
|
walkObject(value);
|
|
160
141
|
}
|
|
@@ -162,14 +143,8 @@ export class Config {
|
|
|
162
143
|
}
|
|
163
144
|
};
|
|
164
145
|
|
|
165
|
-
if (obj
|
|
166
|
-
obj
|
|
167
|
-
} else {
|
|
168
|
-
if (obj.format) {
|
|
169
|
-
obj = this.getFormattedConfig(keyParts.join("."), obj.format);
|
|
170
|
-
} else {
|
|
171
|
-
walkObject(obj);
|
|
172
|
-
}
|
|
146
|
+
if (obj !== null) {
|
|
147
|
+
walkObject(obj);
|
|
173
148
|
}
|
|
174
149
|
}
|
|
175
150
|
|