@spinajs/configuration 1.2.30 → 1.2.48

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,6 +1,8 @@
1
1
  import { Container } from '@spinajs/di';
2
- import { ConfigurationSource } from './sources';
3
- import { Configuration, ConfigurationOptions } from './types';
2
+ import { ConfigurationSource } from '@spinajs/configuration-common';
3
+ import { Configuration, ConfigurationOptions, IConfigurationSchema } from './types';
4
+ import Ajv from 'ajv';
5
+ import './sources';
4
6
  export declare class FrameworkConfiguration extends Configuration {
5
7
  /**
6
8
  * Apps configuration base dir, where to look for app config
@@ -16,6 +18,8 @@ export declare class FrameworkConfiguration extends Configuration {
16
18
  protected Config: Record<string, unknown>;
17
19
  protected CustomConfigPaths: string[];
18
20
  protected Sources: ConfigurationSource[];
21
+ protected Validator: Ajv;
22
+ protected ValidationSchemas: IConfigurationSchema[];
19
23
  protected Container: Container;
20
24
  /**
21
25
  *
@@ -39,13 +43,21 @@ export declare class FrameworkConfiguration extends Configuration {
39
43
  * @param value - value to set
40
44
  */
41
45
  set(path: string[] | string, value: unknown): void;
46
+ /**
47
+ * Merge existing config value with new options instead overriding
48
+ *
49
+ * @param path - cfg path
50
+ * @param value - value to merge
51
+ */
52
+ merge(path: string[] | string, value: unknown): void;
42
53
  resolveAsync(): Promise<void>;
54
+ protected loadSources(): Promise<void>;
55
+ protected initValidator(): void;
43
56
  protected dir(toJoin: string): string;
44
57
  /**
45
58
  * adds app dirs to system.dirs config
46
59
  */
47
60
  protected applyAppDirs(): void;
48
- protected validateConfig(): void;
49
61
  /**
50
62
  * runs configuration func on files
51
63
  * eg. when you want to configure stuff at beginning eq. external libs
@@ -15,13 +15,14 @@ exports.FrameworkConfiguration = void 0;
15
15
  const di_1 = require("@spinajs/di");
16
16
  const exceptions_1 = require("@spinajs/exceptions");
17
17
  const path_1 = require("path");
18
- const sources_1 = require("./sources");
18
+ const configuration_common_1 = require("@spinajs/configuration-common");
19
19
  const types_1 = require("./types");
20
20
  const util_1 = require("./util");
21
21
  const _ = require("lodash");
22
22
  const ajv_1 = require("ajv");
23
23
  const exception_1 = require("./exception");
24
24
  const internal_logger_1 = require("@spinajs/internal-logger");
25
+ require("./sources");
25
26
  let FrameworkConfiguration = class FrameworkConfiguration extends types_1.Configuration {
26
27
  /**
27
28
  *
@@ -67,8 +68,17 @@ let FrameworkConfiguration = class FrameworkConfiguration extends types_1.Config
67
68
  set(path, value) {
68
69
  this.Config = _.set(this.Config, path, value);
69
70
  }
71
+ /**
72
+ * Merge existing config value with new options instead overriding
73
+ *
74
+ * @param path - cfg path
75
+ * @param value - value to merge
76
+ */
77
+ merge(path, value) {
78
+ _.mergeWith(this.get(path), value, util_1.mergeArrays);
79
+ }
70
80
  async resolveAsync() {
71
- if (!this.Container.hasRegistered(sources_1.ConfigurationSource)) {
81
+ if (!this.Container.hasRegistered(configuration_common_1.ConfigurationSource)) {
72
82
  throw new exceptions_1.InvalidOperation('No configuration sources configured. Please ensure that config module have any source to read from !');
73
83
  }
74
84
  if (this.CustomConfigPaths) {
@@ -80,36 +90,41 @@ let FrameworkConfiguration = class FrameworkConfiguration extends types_1.Config
80
90
  internal_logger_1.InternalLogger.trace(`Run app is ${this.RunApp}`, 'Configuration');
81
91
  }
82
92
  internal_logger_1.InternalLogger.trace(`App base dir is ${this.AppBaseDir}`, 'Configuration');
83
- this.Sources = this.Container.resolve(Array.ofType(sources_1.ConfigurationSource), [
93
+ this.initValidator();
94
+ this.applyAppDirs();
95
+ /**
96
+ * Load and validate data from cfg sources
97
+ * in proper order
98
+ */
99
+ await this.loadSources();
100
+ this.configure();
101
+ }
102
+ async loadSources() {
103
+ this.Sources = this.Container.resolve(Array.ofType(configuration_common_1.ConfigurationSource), [
84
104
  this.RunApp,
85
105
  this.CustomConfigPaths,
86
106
  this.AppBaseDir,
87
107
  ]);
88
- await Promise.all(this.Sources.map((s) => s.Load())).then((result) => {
89
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
90
- result.map((c) => _.merge(this.Config, c));
91
- return;
108
+ // sort asc sources
109
+ this.Sources.sort((a, b) => {
110
+ return a.Order < b.Order ? -1 : a.Order > b.Order ? 1 : 0;
92
111
  });
93
- this.validateConfig();
94
- this.applyAppDirs();
95
- this.configure();
96
- }
97
- dir(toJoin) {
98
- return (0, path_1.normalize)((0, path_1.join)((0, path_1.resolve)(this.AppBaseDir), toJoin));
99
- }
100
- /**
101
- * adds app dirs to system.dirs config
102
- */
103
- applyAppDirs() {
104
- if (!this.RunApp) {
105
- return;
106
- }
107
- for (const prop of Object.keys(this.get(['system', 'dirs'], []))) {
108
- this.get(['system', 'dirs', prop]).push(this.dir(`/${this.RunApp}/${prop}`));
112
+ for (const source of this.Sources) {
113
+ const rCfg = await source.Load(this);
114
+ Object.keys(rCfg).forEach((k) => {
115
+ const schema = this.ValidationSchemas.find((x) => x.$configurationModule === k);
116
+ if (schema) {
117
+ const result = this.Validator.validate(schema, rCfg[`${k}`]);
118
+ if (!result) {
119
+ throw new exception_1.InvalidConfiguration('invalid configuration ! Check config files and restart app.', this.Validator.errors);
120
+ }
121
+ }
122
+ });
123
+ _.mergeWith(this.Config, rCfg, util_1.mergeArrays);
109
124
  }
110
125
  }
111
- validateConfig() {
112
- const validator = new ajv_1.default({
126
+ initValidator() {
127
+ this.Validator = new ajv_1.default({
113
128
  logger: {
114
129
  log: (msg) => internal_logger_1.InternalLogger.info(msg, 'Configuration'),
115
130
  warn: (msg) => internal_logger_1.InternalLogger.warn(msg, 'Configuration'),
@@ -125,27 +140,34 @@ let FrameworkConfiguration = class FrameworkConfiguration extends types_1.Config
125
140
  coerceTypes: true,
126
141
  });
127
142
  // add $merge & $patch for json schema
128
- require('ajv-merge-patch')(validator);
143
+ require('ajv-merge-patch')(this.Validator);
129
144
  // add common formats validation eg: date time
130
- require('ajv-formats')(validator);
145
+ require('ajv-formats')(this.Validator);
131
146
  // add keywords
132
- require('ajv-keywords')(validator);
147
+ require('ajv-keywords')(this.Validator);
133
148
  // in strict mode ajv will throw when
134
149
  // unknown keyword in schema is met
135
150
  // we use $configurationModule keyword to identify
136
151
  // to match config module with config schema
137
- validator.addKeyword('$configurationModule');
138
- const schemas = this.Container.get(Array.ofType('__configurationSchema__'), true);
139
- if (schemas) {
140
- Object.keys(this.Config).forEach((k) => {
141
- const schema = schemas.find((x) => x.$configurationModule === k);
142
- if (schema) {
143
- const result = validator.validate(schema, this.Config[`${k}`]);
144
- if (!result) {
145
- throw new exception_1.InvalidConfiguration('invalid configuration ! Check config files and restart app.', validator.errors);
146
- }
147
- }
148
- });
152
+ this.Validator.addKeyword('$configurationModule');
153
+ /**
154
+ * load all registered configuration json schemas
155
+ * for config value validation
156
+ */
157
+ this.ValidationSchemas = this.Container.get(Array.ofType('__configurationSchema__'), true);
158
+ }
159
+ dir(toJoin) {
160
+ return (0, path_1.normalize)((0, path_1.join)((0, path_1.resolve)(this.AppBaseDir), toJoin));
161
+ }
162
+ /**
163
+ * adds app dirs to system.dirs config
164
+ */
165
+ applyAppDirs() {
166
+ if (!this.RunApp) {
167
+ return;
168
+ }
169
+ for (const prop of Object.keys(this.get(['system', 'dirs'], []))) {
170
+ this.get(['system', 'dirs', prop]).push(this.dir(`/${this.RunApp}/${prop}`));
149
171
  }
150
172
  }
151
173
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"configuration.js","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configuration.js","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uDAAuD;AACvD,sDAAsD;AACtD,oCAAgE;AAChE,oDAAuD;AACvD,+BAAgD;AAChD,wEAAoE;AACpE,mCAAmG;AACnG,iCAAgD;AAChD,4BAA4B;AAC5B,6BAAsB;AACtB,2CAAmD;AACnD,8DAA0D;AAC1D,qBAAmB;AAGnB,IAAa,sBAAsB,GAAnC,MAAa,sBAAuB,SAAQ,qBAAa;IA2BvD;;;;;OAKG;IACH,YAAY,OAA8B;;QACxC,KAAK,EAAE,CAAC;QAjCV;;WAEG;QACI,eAAU,GAAG,IAAI,CAAC;QAEzB;;WAEG;QACI,WAAM,GAAG,EAAE,CAAC;QAEnB;;WAEG;QACO,WAAM,GAA4B,EAAE,CAAC;QAsB7C,IAAI,CAAC,iBAAiB,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,mCAAI,EAAE,CAAC;QACvD,IAAI,CAAC,MAAM,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,mCAAI,IAAA,gBAAS,EAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,mCAAI,IAAA,gBAAS,EAAC,WAAW,CAAC,mCAAI,IAAA,WAAI,EAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACjG,CAAC;IAED;;;;;OAKG;IACI,GAAG,CAAI,IAAuB,EAAE,YAAgB;QACrD,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,CAAM,CAAC;IACrD,CAAC;IAED;;;;;;OAMG;IACI,GAAG,CAAC,IAAuB,EAAE,KAAc;QAChD,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,IAAuB,EAAE,KAAc;QAClD,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAW,CAAC,CAAC;IAClD,CAAC;IAEM,KAAK,CAAC,YAAY;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,0CAAmB,CAAC,EAAE;YACtD,MAAM,IAAI,6BAAgB,CACxB,sGAAsG,CACvG,CAAC;SACH;QAED,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACnC,gCAAc,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,gCAAc,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC;SACpE;QAED,gCAAc,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,UAAU,EAAE,EAAE,eAAe,CAAC,CAAC;QAE5E,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB;;;WAGG;QACH,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzB,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAES,KAAK,CAAC,WAAW;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAsB,KAAK,CAAC,MAAM,CAAC,0CAAmB,CAAC,EAAE;YAC5F,IAAI,CAAC,MAAM;YACX,IAAI,CAAC,iBAAiB;YACtB,IAAI,CAAC,UAAU;SAChB,CAAC,CAAC;QAEH,mBAAmB;QACnB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACzB,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YACjC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAErC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB,KAAK,CAAC,CAAC,CAAC;gBAEhF,IAAI,MAAM,EAAE;oBACV,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC7D,IAAI,CAAC,MAAM,EAAE;wBACX,MAAM,IAAI,gCAAoB,CAC5B,6DAA6D,EAC7D,IAAI,CAAC,SAAS,CAAC,MAAM,CACtB,CAAC;qBACH;iBACF;YACH,CAAC,CAAC,CAAC;YAEH,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,kBAAW,CAAC,CAAC;SAC7C;IACH,CAAC;IAES,aAAa;QACrB,IAAI,CAAC,SAAS,GAAG,IAAI,aAAG,CAAC;YACvB,MAAM,EAAE;gBACN,GAAG,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,gCAAc,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC;gBAC/D,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,gCAAc,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC;gBAChE,KAAK,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,gCAAc,CAAC,KAAK,CAAC,GAAG,EAAE,eAAe,CAAC;aACnE;YAED,qEAAqE;YACrE,SAAS,EAAE,IAAI;YAEf,mDAAmD;YACnD,gBAAgB,EAAE,IAAI;YAEtB,iCAAiC;YACjC,WAAW,EAAE,IAAI;YAEjB,wHAAwH;YACxH,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QAEH,sCAAsC;QACtC,OAAO,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE3C,8CAA8C;QAC9C,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEvC,eAAe;QACf,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAExC,qCAAqC;QACrC,mCAAmC;QACnC,kDAAkD;QAClD,4CAA4C;QAC5C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;QAElD;;;WAGG;QACH,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAuB,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE,IAAI,CAAC,CAAC;IACnH,CAAC;IAES,GAAG,CAAC,MAAc;QAC1B,OAAO,IAAA,gBAAS,EAAC,IAAA,WAAI,EAAC,IAAA,cAAO,EAAC,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACO,YAAY;QACpB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO;SACR;QAED,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;YAChE,IAAI,CAAC,GAAG,CAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;SACxF;IACH,CAAC;IAED;;;OAGG;IACO,SAAS;QACjB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAkB,CAAC;YAE1D,IAAI,SAAS,CAAC,SAAS,IAAI,OAAO,SAAS,CAAC,SAAS,KAAK,UAAU,EAAE;gBACpE,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aACjC;SACF;IACH,CAAC;CACF,CAAA;AAxLC;IADC,IAAA,eAAU,GAAE;8BACQ,cAAS;yDAAC;AAzBpB,sBAAsB;IADlC,IAAA,eAAU,EAAC,qBAAa,CAAC;;GACb,sBAAsB,CAiNlC;AAjNY,wDAAsB"}
package/lib/sources.d.ts CHANGED
@@ -1,6 +1,4 @@
1
- export declare abstract class ConfigurationSource {
2
- abstract Load(): Promise<unknown>;
3
- }
1
+ import { ConfigurationSource } from '@spinajs/configuration-common';
4
2
  export declare abstract class BaseFileSource extends ConfigurationSource {
5
3
  protected RunApp?: string;
6
4
  protected CustomConfigPaths?: string[];
@@ -11,6 +9,7 @@ export declare abstract class BaseFileSource extends ConfigurationSource {
11
9
  BaseDir: string;
12
10
  protected CommonDirs: string[];
13
11
  protected BasePath: string;
12
+ get Order(): number;
14
13
  constructor(RunApp?: string, CustomConfigPaths?: string[], appBaseDir?: string);
15
14
  protected load(extension: string, callback: (file: string) => any): {};
16
15
  }
package/lib/sources.js CHANGED
@@ -6,7 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.JsonFileSource = exports.JsFileSource = exports.BaseFileSource = exports.ConfigurationSource = void 0;
9
+ exports.JsonFileSource = exports.JsFileSource = exports.BaseFileSource = void 0;
10
10
  /* eslint-disable @typescript-eslint/no-unsafe-argument */
11
11
  /* eslint-disable @typescript-eslint/no-unsafe-call */
12
12
  /* eslint-disable @typescript-eslint/require-await */
@@ -21,15 +21,8 @@ const util_1 = require("./util");
21
21
  const fs = require("fs");
22
22
  const path = require("path");
23
23
  const internal_logger_1 = require("@spinajs/internal-logger");
24
- function mergeArrays(target, source) {
25
- if (_.isArray(target)) {
26
- return target.concat(source);
27
- }
28
- }
29
- class ConfigurationSource {
30
- }
31
- exports.ConfigurationSource = ConfigurationSource;
32
- class BaseFileSource extends ConfigurationSource {
24
+ const configuration_common_1 = require("@spinajs/configuration-common");
25
+ class BaseFileSource extends configuration_common_1.ConfigurationSource {
33
26
  constructor(RunApp, CustomConfigPaths, appBaseDir) {
34
27
  super();
35
28
  this.RunApp = RunApp;
@@ -53,7 +46,16 @@ class BaseFileSource extends ConfigurationSource {
53
46
  'config',
54
47
  ];
55
48
  this.BasePath = '';
56
- this.BasePath = (0, util_1.findBasePath)(process.cwd());
49
+ // try to find root folder with node_modules
50
+ // on server environment
51
+ const bPath = (0, util_1.findBasePath)(process.cwd());
52
+ // if we cannot find node_modules folders and base path
53
+ // assume that process working dir is base path
54
+ // eg. on electron environment
55
+ this.BasePath = bPath === null ? process.cwd() : bPath;
56
+ }
57
+ get Order() {
58
+ return 1;
57
59
  }
58
60
  load(extension, callback) {
59
61
  const config = {};
@@ -76,7 +78,7 @@ class BaseFileSource extends ConfigurationSource {
76
78
  .map(callback)
77
79
  .filter((v) => v !== null)
78
80
  // load & merge configs
79
- .map((c) => { var _a; return _.mergeWith(config, (_a = c.default) !== null && _a !== void 0 ? _a : c, mergeArrays); });
81
+ .map((c) => { var _a; return _.mergeWith(config, (_a = c.default) !== null && _a !== void 0 ? _a : c, util_1.mergeArrays); });
80
82
  return config;
81
83
  }
82
84
  }
@@ -87,13 +89,11 @@ let JsFileSource = class JsFileSource extends BaseFileSource {
87
89
  const common = this.load('!(*.dev|*.prod).js', _load);
88
90
  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
89
91
  const dEnv = (_a = di_1.DI.get('process.env')) !== null && _a !== void 0 ? _a : process.env;
90
- if (dEnv.NODE_ENV) {
91
- if (dEnv.NODE_ENV === 'development') {
92
- return _.mergeWith(common, this.load('*.dev.js', _load), mergeArrays);
93
- }
94
- else {
95
- return _.mergeWith(common, this.load('*.prod.js', _load), mergeArrays);
96
- }
92
+ if (dEnv.NODE_ENV && dEnv.NODE_ENV === 'development') {
93
+ return _.mergeWith(common, this.load('*.dev.js', _load), util_1.mergeArrays);
94
+ }
95
+ else {
96
+ return _.mergeWith(common, this.load('*.prod.js', _load), util_1.mergeArrays);
97
97
  }
98
98
  return common;
99
99
  function _load(file) {
@@ -106,7 +106,7 @@ let JsFileSource = class JsFileSource extends BaseFileSource {
106
106
  }
107
107
  };
108
108
  JsFileSource = __decorate([
109
- (0, di_1.Injectable)(ConfigurationSource)
109
+ (0, di_1.Injectable)(configuration_common_1.ConfigurationSource)
110
110
  ], JsFileSource);
111
111
  exports.JsFileSource = JsFileSource;
112
112
  let JsonFileSource = class JsonFileSource extends BaseFileSource {
@@ -115,13 +115,11 @@ let JsonFileSource = class JsonFileSource extends BaseFileSource {
115
115
  const common = this.load('!(*.dev|*.prod).json', _load);
116
116
  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
117
117
  const dEnv = (_a = di_1.DI.get('process.env')) !== null && _a !== void 0 ? _a : process.env;
118
- if (dEnv.NODE_ENV) {
119
- if (dEnv.NODE_ENV === 'development') {
120
- return _.mergeWith(common, this.load('*.dev.json', _load), mergeArrays);
121
- }
122
- else {
123
- return _.mergeWith(common, this.load('*.prod.json', _load), mergeArrays);
124
- }
118
+ if (dEnv.NODE_ENV && dEnv.NODE_ENV === 'development') {
119
+ return _.mergeWith(common, this.load('*.dev.json', _load), util_1.mergeArrays);
120
+ }
121
+ else {
122
+ return _.mergeWith(common, this.load('*.prod.json', _load), util_1.mergeArrays);
125
123
  }
126
124
  return common;
127
125
  function _load(file) {
@@ -136,7 +134,7 @@ let JsonFileSource = class JsonFileSource extends BaseFileSource {
136
134
  }
137
135
  };
138
136
  JsonFileSource = __decorate([
139
- (0, di_1.Injectable)(ConfigurationSource)
137
+ (0, di_1.Injectable)(configuration_common_1.ConfigurationSource)
140
138
  ], JsonFileSource);
141
139
  exports.JsonFileSource = JsonFileSource;
142
140
  //# sourceMappingURL=sources.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sources.js","sourceRoot":"","sources":["../src/sources.ts"],"names":[],"mappings":";;;;;;;;;AAAA,0DAA0D;AAC1D,sDAAsD;AACtD,qDAAqD;AACrD,+DAA+D;AAC/D,wDAAwD;AACxD,uDAAuD;AACvD,oCAA6C;AAC7C,+BAA4B;AAC5B,4BAA4B;AAC5B,+BAAgD;AAChD,iCAA+C;AAC/C,yBAAyB;AACzB,6BAA6B;AAC7B,8DAA0D;AAE1D,SAAS,WAAW,CAAC,MAAiB,EAAE,MAAiB;IACvD,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACrB,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAC9B;AACH,CAAC;AAED,MAAsB,mBAAmB;CAExC;AAFD,kDAEC;AAED,MAAsB,cAAe,SAAQ,mBAAmB;IAyB9D,YAAsB,MAAe,EAAY,iBAA4B,EAAY,UAAmB;QAC1G,KAAK,EAAE,CAAC;QADY,WAAM,GAAN,MAAM,CAAS;QAAY,sBAAiB,GAAjB,iBAAiB,CAAW;QAAY,eAAU,GAAV,UAAU,CAAS;QAxB5G;;WAEG;QACI,YAAO,GAAG,IAAI,CAAC;QAEZ,eAAU,GAAG;YACrB,mBAAmB;YACnB,IAAA,gBAAS,EAAC,IAAA,WAAI,EAAC,IAAA,cAAO,EAAC,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC;YAEjD,wBAAwB;YACxB,IAAA,gBAAS,EAAC,IAAA,WAAI,EAAC,IAAA,cAAO,EAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;YAE9C,+BAA+B;YAC/B,oCAAoC;YAEpC,wDAAwD;YACxD,YAAY;YACZ,aAAa;YACb,cAAc;YACd,QAAQ;SACT,CAAC;QAEQ,aAAQ,GAAG,EAAE,CAAC;QAKtB,IAAI,CAAC,QAAQ,GAAG,IAAA,mBAAY,EAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9C,CAAC;IAES,IAAI,CAAC,SAAiB,EAAE,QAA+B;QAC/D,MAAM,MAAM,GAAG,EAAE,CAAC;QAElB,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC;SAC7F;QAED,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SAClE;QAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3E,uBAAuB;aACtB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,SAAS,EAAE,CAAC,CAAC,CAAC;YACxD,gBAAgB;aACf,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YACxB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7C,CAAC,EAAE,EAAE,CAAC;YACN,uCAAuC;aACtC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,IAAA,gBAAS,EAAC,IAAA,cAAO,EAAC,CAAC,CAAC,CAAC,CAAC;aACzC,MAAM,CAAC,CAAC,CAAS,EAAE,KAAa,EAAE,IAAW,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC;aAC5E,GAAG,CAAC,QAAQ,CAAC;aACb,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;YAC/B,uBAAuB;aACtB,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,WAAC,OAAA,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,MAAA,CAAC,CAAC,OAAO,mCAAI,CAAC,EAAE,WAAW,CAAC,CAAA,EAAA,CAAC,CAAC;QAErE,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA3DD,wCA2DC;AAGD,IAAa,YAAY,GAAzB,MAAa,YAAa,SAAQ,cAAc;IACvC,KAAK,CAAC,IAAI;;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QACtD,mEAAmE;QACnE,MAAM,IAAI,GAAG,MAAA,OAAE,CAAC,GAAG,CAAM,aAAa,CAAC,mCAAI,OAAO,CAAC,GAAG,CAAC;QAEvD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,IAAI,CAAC,QAAQ,KAAK,aAAa,EAAE;gBACnC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;aACvE;iBAAM;gBACL,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;aACxE;SACF;QAED,OAAO,MAAM,CAAC;QAEd,SAAS,KAAK,CAAC,IAAY;YACzB,4DAA4D;YAE5D,IAAA,cAAO,EAAC,IAAI,CAAC,CAAC;YAEd,gCAAc,CAAC,KAAK,CAAC,uBAAuB,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC;YAErE,+DAA+D;YAC/D,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;CACF,CAAA;AA3BY,YAAY;IADxB,IAAA,eAAU,EAAC,mBAAmB,CAAC;GACnB,YAAY,CA2BxB;AA3BY,oCAAY;AA8BzB,IAAa,cAAc,GAA3B,MAAa,cAAe,SAAQ,cAAc;IACzC,KAAK,CAAC,IAAI;;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;QACxD,mEAAmE;QACnE,MAAM,IAAI,GAAG,MAAA,OAAE,CAAC,GAAG,CAAM,aAAa,CAAC,mCAAI,OAAO,CAAC,GAAG,CAAC;QAEvD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,IAAI,CAAC,QAAQ,KAAK,aAAa,EAAE;gBACnC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;aACzE;iBAAM;gBACL,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;aAC1E;SACF;QAED,OAAO,MAAM,CAAC;QAEd,SAAS,KAAK,CAAC,IAAY;YACzB,IAAI;gBACF,gCAAc,CAAC,KAAK,CAAC,uBAAuB,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC;gBAErE,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;aACnD;YAAC,OAAO,GAAG,EAAE;gBACZ,OAAO,IAAI,CAAC;aACb;QACH,CAAC;IACH,CAAC;CACF,CAAA;AA1BY,cAAc;IAD1B,IAAA,eAAU,EAAC,mBAAmB,CAAC;GACnB,cAAc,CA0B1B;AA1BY,wCAAc"}
1
+ {"version":3,"file":"sources.js","sourceRoot":"","sources":["../src/sources.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts CHANGED
@@ -6,6 +6,9 @@ export interface IFrameworkVersion {
6
6
  minor: number;
7
7
  major: number;
8
8
  }
9
+ export interface IConfigLike {
10
+ [val: string]: unknown;
11
+ }
9
12
  export interface IConfigurationSchema {
10
13
  $configurationModule: string;
11
14
  }
@@ -53,4 +56,11 @@ export declare abstract class Configuration extends AsyncModule {
53
56
  * @param value - value to set
54
57
  */
55
58
  abstract set(path: string[] | string, value: unknown): void;
59
+ /**
60
+ * Merge existing config value with new options instead overriding
61
+ *
62
+ * @param path - cfg path
63
+ * @param value - value to merge
64
+ */
65
+ abstract merge(path: string[] | string, value: unknown): void;
56
66
  }
package/lib/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAAA,oCAA0C;AAwC1C,MAAsB,aAAc,SAAQ,gBAAW;CA0BtD;AA1BD,sCA0BC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAAA,oCAA0C;AA4C1C,MAAsB,aAAc,SAAQ,gBAAW;CAkCtD;AAlCD,sCAkCC"}
package/lib/util.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export declare function parseArgv(param: string): string;
2
2
  export declare function findBasePath(path: string): string;
3
3
  export declare function merge(to: unknown, from: unknown): unknown;
4
+ export declare function mergeArrays(target: unknown[], source: unknown[]): unknown;
4
5
  export declare function uncache(file: string): string;
5
6
  export declare function filterDirs(dir: string): boolean;
package/lib/util.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.filterDirs = exports.uncache = exports.merge = exports.findBasePath = exports.parseArgv = void 0;
3
+ exports.filterDirs = exports.uncache = exports.mergeArrays = exports.merge = exports.findBasePath = exports.parseArgv = void 0;
4
4
  /* eslint-disable @typescript-eslint/no-unsafe-return */
5
5
  /* eslint-disable @typescript-eslint/unbound-method */
6
6
  const fs = require("fs");
@@ -18,6 +18,12 @@ function findBasePath(path) {
18
18
  if (fs.existsSync((0, path_1.join)(path, 'node_modules'))) {
19
19
  return path;
20
20
  }
21
+ const parentPath = (0, path_1.dirname)(path);
22
+ // if we reach root eg c:\
23
+ // and nothing is found return null
24
+ if (parentPath === path) {
25
+ return null;
26
+ }
21
27
  return findBasePath((0, path_1.resolve)(path, '..'));
22
28
  }
23
29
  exports.findBasePath = findBasePath;
@@ -34,6 +40,12 @@ function merge(to, from) {
34
40
  return to;
35
41
  }
36
42
  exports.merge = merge;
43
+ function mergeArrays(target, source) {
44
+ if (_.isArray(target)) {
45
+ return target.concat(source);
46
+ }
47
+ }
48
+ exports.mergeArrays = mergeArrays;
37
49
  // clean require cache config
38
50
  // http://stackoverflow.com/questions/9210542/node-js-require-cache-possible-to-invalidate
39
51
  function uncache(file) {
package/lib/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;AAAA,wDAAwD;AACxD,sDAAsD;AACtD,yBAAyB;AACzB,4BAA6B;AAC7B,+BAAqC;AAQrC,SAAgB,SAAS,CAAC,KAAa;IACrC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAE1C,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE;QACpD,OAAO,SAAS,CAAC;KAClB;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACjC,CAAC;AARD,8BAQC;AAED,SAAgB,YAAY,CAAC,IAAY;IACvC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAA,WAAI,EAAC,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE;QAC7C,OAAO,IAAI,CAAC;KACb;IAED,OAAO,YAAY,CAAC,IAAA,cAAO,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3C,CAAC;AAND,oCAMC;AAED,SAAgB,KAAK,CAAC,EAAW,EAAE,IAAa;IAC9C,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QAClC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACrC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7B,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;SACnC;aAAM,IAAI,CAAC,GAAG,EAAE;YACf,OAAO,IAAI,CAAC;SACb;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,CAAC;AACZ,CAAC;AAXD,sBAWC;AAED,6BAA6B;AAC7B,0FAA0F;AAC1F,SAAgB,OAAO,CAAC,IAAY;IAClC,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC;AACd,CAAC;AAHD,0BAGC;AAED,SAAgB,UAAU,CAAC,GAAW;IACpC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QACtB,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AALD,gCAKC"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;AAAA,wDAAwD;AACxD,sDAAsD;AACtD,yBAAyB;AACzB,4BAA6B;AAC7B,+BAA8C;AAQ9C,SAAgB,SAAS,CAAC,KAAa;IACrC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAE1C,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE;QACpD,OAAO,SAAS,CAAC;KAClB;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACjC,CAAC;AARD,8BAQC;AAED,SAAgB,YAAY,CAAC,IAAY;IACvC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAA,WAAI,EAAC,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE;QAC7C,OAAO,IAAI,CAAC;KACb;IAED,MAAM,UAAU,GAAG,IAAA,cAAO,EAAC,IAAI,CAAC,CAAC;IAEjC,0BAA0B;IAC1B,mCAAmC;IACnC,IAAI,UAAU,KAAK,IAAI,EAAE;QACvB,OAAO,IAAI,CAAC;KACb;IAED,OAAO,YAAY,CAAC,IAAA,cAAO,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3C,CAAC;AAdD,oCAcC;AAED,SAAgB,KAAK,CAAC,EAAW,EAAE,IAAa;IAC9C,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QAClC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACrC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7B,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;SACnC;aAAM,IAAI,CAAC,GAAG,EAAE;YACf,OAAO,IAAI,CAAC;SACb;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,CAAC;AACZ,CAAC;AAXD,sBAWC;AAED,SAAgB,WAAW,CAAC,MAAiB,EAAE,MAAiB;IAC9D,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACrB,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAC9B;AACH,CAAC;AAJD,kCAIC;AAED,6BAA6B;AAC7B,0FAA0F;AAC1F,SAAgB,OAAO,CAAC,IAAY;IAClC,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC;AACd,CAAC;AAHD,0BAGC;AAED,SAAgB,UAAU,CAAC,GAAW;IACpC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QACtB,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AALD,gCAKC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spinajs/configuration",
3
- "version": "1.2.30",
3
+ "version": "1.2.48",
4
4
  "description": "framework configuration module",
5
5
  "main": "lib/index.js",
6
6
  "private": false,
@@ -40,9 +40,10 @@
40
40
  },
41
41
  "homepage": "https://github.com/spinajs/configuration#readme",
42
42
  "dependencies": {
43
- "@spinajs/di": "^1.2.30",
43
+ "@spinajs/configuration-common": "^1.2.32",
44
+ "@spinajs/di": "^1.2.32",
44
45
  "@spinajs/exceptions": "^1.2.7",
45
- "@spinajs/internal-logger": "^1.2.30",
46
+ "@spinajs/internal-logger": "^1.2.32",
46
47
  "ajv": "^8.8.2",
47
48
  "ajv-formats": "^2.1.1",
48
49
  "ajv-keywords": "^5.1.0",
@@ -50,5 +51,5 @@
50
51
  "glob": "^7.1.4",
51
52
  "lodash": "^4.17.14"
52
53
  },
53
- "gitHead": "06aef45008bf43baf2d1a91917a1a1eaa23a15cc"
54
+ "gitHead": "134abbafa841f6a59776c06c7581bc90de8bf8d5"
54
55
  }