@spinajs/configuration 1.2.20 → 1.2.31

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,40 +68,63 @@ 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
- this.Sources = this.Container.resolve(Array.ofType(sources_1.ConfigurationSource), [
84
+ if (this.CustomConfigPaths) {
85
+ this.CustomConfigPaths.forEach((p) => {
86
+ internal_logger_1.InternalLogger.trace(`Custom config path at: ${p}`, 'Configuration');
87
+ });
88
+ }
89
+ if (this.RunApp) {
90
+ internal_logger_1.InternalLogger.trace(`Run app is ${this.RunApp}`, 'Configuration');
91
+ }
92
+ internal_logger_1.InternalLogger.trace(`App base dir is ${this.AppBaseDir}`, 'Configuration');
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), [
75
104
  this.RunApp,
76
105
  this.CustomConfigPaths,
77
106
  this.AppBaseDir,
78
107
  ]);
79
- await Promise.all(this.Sources.map((s) => s.Load())).then((result) => {
80
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
81
- result.map((c) => _.merge(this.Config, c));
82
- return;
108
+ // sort asc sources
109
+ this.Sources.sort((a, b) => {
110
+ return a.Order < b.Order ? -1 : a.Order > b.Order ? 1 : 0;
83
111
  });
84
- this.validateConfig();
85
- this.applyAppDirs();
86
- this.configure();
87
- }
88
- dir(toJoin) {
89
- return (0, path_1.normalize)((0, path_1.join)((0, path_1.resolve)(this.AppBaseDir), toJoin));
90
- }
91
- /**
92
- * adds app dirs to system.dirs config
93
- */
94
- applyAppDirs() {
95
- if (!this.RunApp) {
96
- return;
97
- }
98
- for (const prop of Object.keys(this.get(['system', 'dirs'], []))) {
99
- 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);
100
124
  }
101
125
  }
102
- validateConfig() {
103
- const validator = new ajv_1.default({
126
+ initValidator() {
127
+ this.Validator = new ajv_1.default({
104
128
  logger: {
105
129
  log: (msg) => internal_logger_1.InternalLogger.info(msg, 'Configuration'),
106
130
  warn: (msg) => internal_logger_1.InternalLogger.warn(msg, 'Configuration'),
@@ -116,27 +140,34 @@ let FrameworkConfiguration = class FrameworkConfiguration extends types_1.Config
116
140
  coerceTypes: true,
117
141
  });
118
142
  // add $merge & $patch for json schema
119
- require('ajv-merge-patch')(validator);
143
+ require('ajv-merge-patch')(this.Validator);
120
144
  // add common formats validation eg: date time
121
- require('ajv-formats')(validator);
145
+ require('ajv-formats')(this.Validator);
122
146
  // add keywords
123
- require('ajv-keywords')(validator);
147
+ require('ajv-keywords')(this.Validator);
124
148
  // in strict mode ajv will throw when
125
149
  // unknown keyword in schema is met
126
150
  // we use $configurationModule keyword to identify
127
151
  // to match config module with config schema
128
- validator.addKeyword('$configurationModule');
129
- const schemas = this.Container.get(Array.ofType('__configurationSchema__'), true);
130
- if (schemas) {
131
- Object.keys(this.Config).forEach((k) => {
132
- const schema = schemas.find((x) => x.$configurationModule === k);
133
- if (schema) {
134
- const result = validator.validate(schema, this.Config[`${k}`]);
135
- if (!result) {
136
- throw new exception_1.InvalidConfiguration('invalid configuration ! Check config files and restart app.', validator.errors);
137
- }
138
- }
139
- });
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}`));
140
171
  }
141
172
  }
142
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":"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"}
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;
@@ -55,6 +48,9 @@ class BaseFileSource extends ConfigurationSource {
55
48
  this.BasePath = '';
56
49
  this.BasePath = (0, util_1.findBasePath)(process.cwd());
57
50
  }
51
+ get Order() {
52
+ return 1;
53
+ }
58
54
  load(extension, callback) {
59
55
  const config = {};
60
56
  if (this.RunApp) {
@@ -76,7 +72,7 @@ class BaseFileSource extends ConfigurationSource {
76
72
  .map(callback)
77
73
  .filter((v) => v !== null)
78
74
  // load & merge configs
79
- .map((c) => { var _a; return _.mergeWith(config, (_a = c.default) !== null && _a !== void 0 ? _a : c, mergeArrays); });
75
+ .map((c) => { var _a; return _.mergeWith(config, (_a = c.default) !== null && _a !== void 0 ? _a : c, util_1.mergeArrays); });
80
76
  return config;
81
77
  }
82
78
  }
@@ -89,10 +85,10 @@ let JsFileSource = class JsFileSource extends BaseFileSource {
89
85
  const dEnv = (_a = di_1.DI.get('process.env')) !== null && _a !== void 0 ? _a : process.env;
90
86
  if (dEnv.NODE_ENV) {
91
87
  if (dEnv.NODE_ENV === 'development') {
92
- return _.mergeWith(common, this.load('*.dev.js', _load), mergeArrays);
88
+ return _.mergeWith(common, this.load('*.dev.js', _load), util_1.mergeArrays);
93
89
  }
94
90
  else {
95
- return _.mergeWith(common, this.load('*.prod.js', _load), mergeArrays);
91
+ return _.mergeWith(common, this.load('*.prod.js', _load), util_1.mergeArrays);
96
92
  }
97
93
  }
98
94
  return common;
@@ -106,7 +102,7 @@ let JsFileSource = class JsFileSource extends BaseFileSource {
106
102
  }
107
103
  };
108
104
  JsFileSource = __decorate([
109
- (0, di_1.Injectable)(ConfigurationSource)
105
+ (0, di_1.Injectable)(configuration_common_1.ConfigurationSource)
110
106
  ], JsFileSource);
111
107
  exports.JsFileSource = JsFileSource;
112
108
  let JsonFileSource = class JsonFileSource extends BaseFileSource {
@@ -117,10 +113,10 @@ let JsonFileSource = class JsonFileSource extends BaseFileSource {
117
113
  const dEnv = (_a = di_1.DI.get('process.env')) !== null && _a !== void 0 ? _a : process.env;
118
114
  if (dEnv.NODE_ENV) {
119
115
  if (dEnv.NODE_ENV === 'development') {
120
- return _.mergeWith(common, this.load('*.dev.json', _load), mergeArrays);
116
+ return _.mergeWith(common, this.load('*.dev.json', _load), util_1.mergeArrays);
121
117
  }
122
118
  else {
123
- return _.mergeWith(common, this.load('*.prod.json', _load), mergeArrays);
119
+ return _.mergeWith(common, this.load('*.prod.json', _load), util_1.mergeArrays);
124
120
  }
125
121
  }
126
122
  return common;
@@ -136,7 +132,7 @@ let JsonFileSource = class JsonFileSource extends BaseFileSource {
136
132
  }
137
133
  };
138
134
  JsonFileSource = __decorate([
139
- (0, di_1.Injectable)(ConfigurationSource)
135
+ (0, di_1.Injectable)(configuration_common_1.ConfigurationSource)
140
136
  ], JsonFileSource);
141
137
  exports.JsonFileSource = JsonFileSource;
142
138
  //# sourceMappingURL=sources.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sources.js","sourceRoot":"","sources":["../src/sources.ts"],"names":[],"mappings":"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"}
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");
@@ -34,6 +34,12 @@ function merge(to, from) {
34
34
  return to;
35
35
  }
36
36
  exports.merge = merge;
37
+ function mergeArrays(target, source) {
38
+ if (_.isArray(target)) {
39
+ return target.concat(source);
40
+ }
41
+ }
42
+ exports.mergeArrays = mergeArrays;
37
43
  // clean require cache config
38
44
  // http://stackoverflow.com/questions/9210542/node-js-require-cache-possible-to-invalidate
39
45
  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,+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,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.20",
3
+ "version": "1.2.31",
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.20",
43
+ "@spinajs/configuration-common": "^1.2.31",
44
+ "@spinajs/di": "^1.2.30",
44
45
  "@spinajs/exceptions": "^1.2.7",
45
- "@spinajs/internal-logger": "^1.2.20",
46
+ "@spinajs/internal-logger": "^1.2.30",
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": "bbed041879adfd9d6a502aa27891a3682e68c20c"
54
+ "gitHead": "dc63606c6ce0ec96d14086a1eaa3ce677151a085"
54
55
  }