@incanta/config 0.1.9 → 0.1.11

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.
@@ -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;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;IAkDtC,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"}
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;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;IAsDtC,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
@@ -32,9 +32,8 @@ class Config {
32
32
  console.log(`Cannot use environment deployment value of ${configEnvDir} because ${path_1.default.join(this.configDir, configEnvDir)} doesn't exist`);
33
33
  }
34
34
  }
35
- const localValues = loader_1.Loader.load(path_1.default.join(this.configDir, "local"));
36
35
  const overrideValues = loader_1.Loader.loadFile(path_1.default.join(this.configDir, "override.json"));
37
- (0, lodash_merge_1.default)(this.values, defaultValues, envValues, localValues, overrideValues);
36
+ (0, lodash_merge_1.default)(this.values, defaultValues, envValues, overrideValues);
38
37
  // load the environment variables that are configured to be injected
39
38
  // using config-env
40
39
  const dirContents = fs_1.default.readdirSync(this.configDir, { encoding: "utf-8" });
@@ -100,25 +99,27 @@ class Config {
100
99
  const variableRegex = /\$\{[a-zA-Z\-_0-9.]+\}/g;
101
100
  const replaceValue = (value) => {
102
101
  const regexResult = value.matchAll(variableRegex);
102
+ let result = value;
103
103
  for (const match of regexResult) {
104
104
  const keyToReplace = match[0].slice(2, match[0].length - 1);
105
- const value = this.tryGet(keyToReplace);
106
- if (value !== null) {
107
- obj = obj.replace(match[0], `${value}`);
105
+ const newValue = this.tryGet(keyToReplace);
106
+ if (newValue !== null) {
107
+ result = result.replace(match[0], `${newValue}`);
108
108
  }
109
109
  }
110
+ return result;
110
111
  };
111
112
  // replace all ${value} with the value from the config
112
113
  if (typeof obj === "string") {
113
- replaceValue(obj);
114
+ obj = replaceValue(obj);
114
115
  }
115
116
  else if (typeof obj === "object") {
116
117
  // walk the object and replace all strings with the value from the config
117
118
  const walkObject = (curObj) => {
118
119
  for (const property of Object.keys(curObj)) {
119
120
  const value = curObj[property];
120
- if (typeof value === "string") {
121
- replaceValue(value);
121
+ if (typeof value === "string" && property !== "format") {
122
+ curObj[property] = replaceValue(value);
122
123
  }
123
124
  else if (typeof value === "object") {
124
125
  walkObject(value);
package/lib/config.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export interface IConfigOptions {
2
+ parentName?: string;
3
+ }
4
+ export declare class Loader {
5
+ static loadFile(filePath: string): any;
6
+ static load(folder: string): any;
7
+ }
8
+ //# sourceMappingURL=loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAOA,qBAAa,MAAM;WACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG;WAgC/B,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG;CAkExC"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,MAAM;WACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG;WAgC/B,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG;CAyFxC"}
package/lib/loader.js CHANGED
@@ -45,11 +45,30 @@ class Loader {
45
45
  if (!fs_1.default.existsSync(folder)) {
46
46
  return {};
47
47
  }
48
+ const baseObj = {};
49
+ const configFiles = ["_config.json", "config.json"];
50
+ for (const configFile of configFiles) {
51
+ if (fs_1.default.existsSync(path_1.default.join(folder, configFile))) {
52
+ try {
53
+ const folderConfig = JSON.parse(fs_1.default.readFileSync(path_1.default.join(folder, configFile), {
54
+ encoding: "utf-8",
55
+ }));
56
+ if (folderConfig.parentName) {
57
+ console.log(`Loading parent config ${folderConfig.parentName}`);
58
+ (0, lodash_merge_1.default)(baseObj, Loader.load(path_1.default.join(folder, "..", folderConfig.parentName)));
59
+ }
60
+ break;
61
+ }
62
+ catch (e) {
63
+ console.error(`Invalid JSON in ${path_1.default.join(folder, configFile)} file; skipping configuration`);
64
+ break;
65
+ }
66
+ }
67
+ }
48
68
  const contents = fs_1.default.readdirSync(folder, {
49
69
  encoding: "utf-8",
50
70
  withFileTypes: true,
51
71
  });
52
- const baseObj = {};
53
72
  for (const content of contents) {
54
73
  if (!content.isDirectory() && /^_?index\./.exec(content.name) !== null) {
55
74
  (0, lodash_merge_1.default)(baseObj, Loader.loadFile(path_1.default.join(folder, content.name)));
@@ -58,12 +77,11 @@ class Loader {
58
77
  for (const content of contents) {
59
78
  if (content.isDirectory()) {
60
79
  const key = content.name;
61
- if (typeof baseObj[key] !== "undefined") {
62
- console.log(`Could not load the directory ${key} because we already loaded a config for a file with the same name`);
63
- continue;
80
+ if (typeof baseObj[key] === "undefined") {
81
+ baseObj[key] = {};
64
82
  }
65
83
  const obj = Loader.load(path_1.default.join(folder, content.name));
66
- baseObj[key] = obj;
84
+ (0, lodash_merge_1.default)(baseObj[key], obj);
67
85
  }
68
86
  else {
69
87
  if (/^_?index\./.exec(content.name) !== null) {
@@ -73,12 +91,11 @@ class Loader {
73
91
  const fileParts = content.name.split(".");
74
92
  if (fileParts.length === 2) {
75
93
  const key = fileParts[0];
76
- if (typeof baseObj[key] !== "undefined") {
77
- console.log(`Could not load the file ${path_1.default.join(folder, content.name)} because we already loaded a config for a folder with the same name`);
78
- continue;
94
+ if (typeof baseObj[key] === "undefined") {
95
+ baseObj[key] = {};
79
96
  }
80
97
  const obj = Loader.loadFile(path_1.default.join(folder, content.name));
81
- baseObj[key] = obj;
98
+ (0, lodash_merge_1.default)(baseObj[key], obj);
82
99
  }
83
100
  else {
84
101
  console.log(`Invalid file name ${content.name}. Config files must have a supported extension and contain no extra periods in the file name`);
package/lib/loader.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@incanta/config",
3
- "version": "0.1.9",
3
+ "version": "0.1.11",
4
4
  "main": "lib/index.js",
5
5
  "exports": {
6
6
  ".": "./lib/index.js",
package/src/config.ts CHANGED
@@ -43,13 +43,11 @@ export class Config {
43
43
  }
44
44
  }
45
45
 
46
- const localValues = Loader.load(path.join(this.configDir, "local"));
47
-
48
46
  const overrideValues = Loader.loadFile(
49
47
  path.join(this.configDir, "override.json")
50
48
  );
51
49
 
52
- merge(this.values, defaultValues, envValues, localValues, overrideValues);
50
+ merge(this.values, defaultValues, envValues, overrideValues);
53
51
 
54
52
  // load the environment variables that are configured to be injected
55
53
  // using config-env
@@ -129,27 +127,31 @@ export class Config {
129
127
 
130
128
  const variableRegex = /\$\{[a-zA-Z\-_0-9.]+\}/g;
131
129
 
132
- const replaceValue = (value: string): void => {
130
+ const replaceValue = (value: string): string => {
133
131
  const regexResult = value.matchAll(variableRegex);
132
+ let result = value;
133
+
134
134
  for (const match of regexResult) {
135
135
  const keyToReplace = match[0].slice(2, match[0].length - 1);
136
- const value = this.tryGet<string | number | boolean>(keyToReplace);
137
- if (value !== null) {
138
- obj = obj.replace(match[0], `${value}`);
136
+ const newValue = this.tryGet<string | number | boolean>(keyToReplace);
137
+ if (newValue !== null) {
138
+ result = result.replace(match[0], `${newValue}`);
139
139
  }
140
140
  }
141
+
142
+ return result;
141
143
  };
142
144
 
143
145
  // replace all ${value} with the value from the config
144
146
  if (typeof obj === "string") {
145
- replaceValue(obj);
147
+ obj = replaceValue(obj);
146
148
  } else if (typeof obj === "object") {
147
149
  // walk the object and replace all strings with the value from the config
148
150
  const walkObject = (curObj: any): void => {
149
151
  for (const property of Object.keys(curObj)) {
150
152
  const value = curObj[property];
151
- if (typeof value === "string") {
152
- replaceValue(value);
153
+ if (typeof value === "string" && property !== "format") {
154
+ curObj[property] = replaceValue(value);
153
155
  } else if (typeof value === "object") {
154
156
  walkObject(value);
155
157
  }
package/src/loader.ts CHANGED
@@ -5,6 +5,10 @@ import JSON5 from "json5";
5
5
  import YAML from "js-yaml";
6
6
  import merge from "lodash.merge";
7
7
 
8
+ export interface IConfigOptions {
9
+ parentName?: string;
10
+ }
11
+
8
12
  export class Loader {
9
13
  public static loadFile(filePath: string): any {
10
14
  if (!fs.existsSync(filePath)) {
@@ -43,13 +47,45 @@ export class Loader {
43
47
  return {};
44
48
  }
45
49
 
50
+ const baseObj: any = {};
51
+
52
+ const configFiles = ["_config.json", "config.json"];
53
+ for (const configFile of configFiles) {
54
+ if (fs.existsSync(path.join(folder, configFile))) {
55
+ try {
56
+ const folderConfig: IConfigOptions = JSON.parse(
57
+ fs.readFileSync(path.join(folder, configFile), {
58
+ encoding: "utf-8",
59
+ })
60
+ );
61
+
62
+ if (folderConfig.parentName) {
63
+ console.log(`Loading parent config ${folderConfig.parentName}`);
64
+ merge(
65
+ baseObj,
66
+ Loader.load(path.join(folder, "..", folderConfig.parentName))
67
+ );
68
+ }
69
+
70
+ break;
71
+ } catch (e: any) {
72
+ console.error(
73
+ `Invalid JSON in ${path.join(
74
+ folder,
75
+ configFile
76
+ )} file; skipping configuration`
77
+ );
78
+
79
+ break;
80
+ }
81
+ }
82
+ }
83
+
46
84
  const contents = fs.readdirSync(folder, {
47
85
  encoding: "utf-8",
48
86
  withFileTypes: true,
49
87
  });
50
88
 
51
- const baseObj: any = {};
52
-
53
89
  for (const content of contents) {
54
90
  if (!content.isDirectory() && /^_?index\./.exec(content.name) !== null) {
55
91
  merge(baseObj, Loader.loadFile(path.join(folder, content.name)));
@@ -60,16 +96,13 @@ export class Loader {
60
96
  if (content.isDirectory()) {
61
97
  const key = content.name;
62
98
 
63
- if (typeof baseObj[key] !== "undefined") {
64
- console.log(
65
- `Could not load the directory ${key} because we already loaded a config for a file with the same name`
66
- );
67
- continue;
99
+ if (typeof baseObj[key] === "undefined") {
100
+ baseObj[key] = {};
68
101
  }
69
102
 
70
103
  const obj = Loader.load(path.join(folder, content.name));
71
104
 
72
- baseObj[key] = obj;
105
+ merge(baseObj[key], obj);
73
106
  } else {
74
107
  if (/^_?index\./.exec(content.name) !== null) {
75
108
  // we already loaded this to be be in the base config
@@ -80,19 +113,13 @@ export class Loader {
80
113
  if (fileParts.length === 2) {
81
114
  const key = fileParts[0];
82
115
 
83
- if (typeof baseObj[key] !== "undefined") {
84
- console.log(
85
- `Could not load the file ${path.join(
86
- folder,
87
- content.name
88
- )} because we already loaded a config for a folder with the same name`
89
- );
90
- continue;
116
+ if (typeof baseObj[key] === "undefined") {
117
+ baseObj[key] = {};
91
118
  }
92
119
 
93
120
  const obj = Loader.loadFile(path.join(folder, content.name));
94
121
 
95
- baseObj[key] = obj;
122
+ merge(baseObj[key], obj);
96
123
  } else {
97
124
  console.log(
98
125
  `Invalid file name ${content.name}. Config files must have a supported extension and contain no extra periods in the file name`