@incanta/config 0.1.22 → 0.2.0
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/loader.d.ts +1 -0
- package/lib/loader.d.ts.map +1 -1
- package/lib/loader.js +29 -5
- package/lib/loader.js.map +1 -1
- package/package.json +1 -1
- package/src/loader.ts +37 -5
package/lib/loader.d.ts
CHANGED
package/lib/loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,qBAAa,MAAM;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,qBAAa,MAAM;WAEH,uBAAuB,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG;WA0BtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG;WAqC/B,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG;CAkGxC"}
|
package/lib/loader.js
CHANGED
|
@@ -11,6 +11,27 @@ const json5_1 = __importDefault(require("json5"));
|
|
|
11
11
|
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
12
12
|
const lodash_merge_1 = __importDefault(require("lodash.merge"));
|
|
13
13
|
class Loader {
|
|
14
|
+
// add additional camelCase keys for any kebab-case keys (without overwriting existing keys)
|
|
15
|
+
static convertKebabToCamelCase(obj) {
|
|
16
|
+
const newObj = {};
|
|
17
|
+
for (const key of Object.keys(obj)) {
|
|
18
|
+
if (typeof obj[key] === "object" &&
|
|
19
|
+
!Array.isArray(obj[key]) &&
|
|
20
|
+
obj[key] !== null) {
|
|
21
|
+
newObj[key] = Loader.convertKebabToCamelCase(obj[key]);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
newObj[key] = obj[key];
|
|
25
|
+
}
|
|
26
|
+
const newKey = key.replace(/-([a-zA-Z0-9])/g, function (_, match) {
|
|
27
|
+
return match.toUpperCase();
|
|
28
|
+
});
|
|
29
|
+
if (newKey !== key) {
|
|
30
|
+
newObj[newKey] = newObj[key];
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return newObj;
|
|
34
|
+
}
|
|
14
35
|
static loadFile(filePath) {
|
|
15
36
|
if (!fs_1.default.existsSync(filePath)) {
|
|
16
37
|
return {};
|
|
@@ -20,26 +41,29 @@ class Loader {
|
|
|
20
41
|
});
|
|
21
42
|
const fileParts = filePath.split(".");
|
|
22
43
|
const extension = fileParts[fileParts.length - 1];
|
|
44
|
+
let obj;
|
|
23
45
|
if (/^ya?ml$/i.exec(extension)) {
|
|
24
46
|
// yaml file
|
|
25
|
-
|
|
47
|
+
obj = js_yaml_1.default.load(fileContents);
|
|
26
48
|
}
|
|
27
49
|
else if (/^json$/i.exec(extension)) {
|
|
28
50
|
// json file
|
|
29
|
-
|
|
51
|
+
obj = JSON.parse(fileContents);
|
|
30
52
|
}
|
|
31
53
|
else if (/^jsonc$/i.exec(extension)) {
|
|
32
54
|
// jsonc file
|
|
33
|
-
|
|
55
|
+
obj = (0, jsonc_parser_1.parse)(fileContents); // todo: handle error callback
|
|
34
56
|
}
|
|
35
57
|
else if (/^json5$/i.exec(extension)) {
|
|
36
58
|
// json5 file
|
|
37
|
-
|
|
59
|
+
obj = json5_1.default.parse(fileContents);
|
|
38
60
|
}
|
|
39
61
|
else {
|
|
40
62
|
console.log(`Invalid file name ${filePath}. Only yml, yaml, json, jsonc, json5 extensions are supported (case insensitive).`);
|
|
41
|
-
|
|
63
|
+
obj = {};
|
|
42
64
|
}
|
|
65
|
+
const newObj = Loader.convertKebabToCamelCase(obj);
|
|
66
|
+
return newObj;
|
|
43
67
|
}
|
|
44
68
|
static load(folder) {
|
|
45
69
|
if (!fs_1.default.existsSync(folder)) {
|
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;AAMjC,MAAa,MAAM;
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/loader.ts
CHANGED
|
@@ -10,6 +10,33 @@ export interface IConfigOptions {
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
export class Loader {
|
|
13
|
+
// add additional camelCase keys for any kebab-case keys (without overwriting existing keys)
|
|
14
|
+
public static convertKebabToCamelCase(obj: any): any {
|
|
15
|
+
const newObj: any = {};
|
|
16
|
+
|
|
17
|
+
for (const key of Object.keys(obj)) {
|
|
18
|
+
if (
|
|
19
|
+
typeof obj[key] === "object" &&
|
|
20
|
+
!Array.isArray(obj[key]) &&
|
|
21
|
+
obj[key] !== null
|
|
22
|
+
) {
|
|
23
|
+
newObj[key] = Loader.convertKebabToCamelCase(obj[key]);
|
|
24
|
+
} else {
|
|
25
|
+
newObj[key] = obj[key];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const newKey = key.replace(/-([a-zA-Z0-9])/g, function (_, match) {
|
|
29
|
+
return match.toUpperCase();
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
if (newKey !== key) {
|
|
33
|
+
newObj[newKey] = newObj[key];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return newObj;
|
|
38
|
+
}
|
|
39
|
+
|
|
13
40
|
public static loadFile(filePath: string): any {
|
|
14
41
|
if (!fs.existsSync(filePath)) {
|
|
15
42
|
return {};
|
|
@@ -22,24 +49,29 @@ export class Loader {
|
|
|
22
49
|
const fileParts = filePath.split(".");
|
|
23
50
|
const extension = fileParts[fileParts.length - 1];
|
|
24
51
|
|
|
52
|
+
let obj: any;
|
|
25
53
|
if (/^ya?ml$/i.exec(extension)) {
|
|
26
54
|
// yaml file
|
|
27
|
-
|
|
55
|
+
obj = YAML.load(fileContents);
|
|
28
56
|
} else if (/^json$/i.exec(extension)) {
|
|
29
57
|
// json file
|
|
30
|
-
|
|
58
|
+
obj = JSON.parse(fileContents);
|
|
31
59
|
} else if (/^jsonc$/i.exec(extension)) {
|
|
32
60
|
// jsonc file
|
|
33
|
-
|
|
61
|
+
obj = parseJsonc(fileContents); // todo: handle error callback
|
|
34
62
|
} else if (/^json5$/i.exec(extension)) {
|
|
35
63
|
// json5 file
|
|
36
|
-
|
|
64
|
+
obj = JSON5.parse(fileContents);
|
|
37
65
|
} else {
|
|
38
66
|
console.log(
|
|
39
67
|
`Invalid file name ${filePath}. Only yml, yaml, json, jsonc, json5 extensions are supported (case insensitive).`
|
|
40
68
|
);
|
|
41
|
-
|
|
69
|
+
obj = {};
|
|
42
70
|
}
|
|
71
|
+
|
|
72
|
+
const newObj = Loader.convertKebabToCamelCase(obj);
|
|
73
|
+
|
|
74
|
+
return newObj;
|
|
43
75
|
}
|
|
44
76
|
|
|
45
77
|
public static load(folder: string): any {
|