@incanta/config 0.1.3 → 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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=config-env.d.ts.map
@@ -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;
@@ -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;IAoCpC,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"}
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":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.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",
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 {