@spinajs/configuration 2.0.38 → 2.0.39

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,5 +1,5 @@
1
1
  import { Class, Container } from '@spinajs/di';
2
- import { ConfigurationSource, IConfigLike, Configuration, ConfigurationOptions, IConfigurationSchema } from '@spinajs/configuration-common';
2
+ import { ConfigurationSource, Configuration, ConfigurationOptions, IConfigurationSchema } from '@spinajs/configuration-common';
3
3
  import Ajv from 'ajv';
4
4
  import './sources';
5
5
  export declare class FrameworkConfiguration extends Configuration {
@@ -50,14 +50,14 @@ export declare class FrameworkConfiguration extends Configuration {
50
50
  * @param value - value to merge
51
51
  */
52
52
  merge(path: string[] | string, value: unknown): void;
53
- resolveAsync(): Promise<void>;
53
+ resolve(): Promise<void>;
54
54
  mergeSource(sType: Class<ConfigurationSource>): Promise<void>;
55
55
  /**
56
56
  * Reloads configuration data
57
57
  */
58
58
  reload(): Promise<void>;
59
59
  protected loadSources(): void;
60
- protected validateAndMerge(rCfg: IConfigLike): void;
60
+ protected validate(): void;
61
61
  protected initValidator(): void;
62
62
  protected dir(toJoin: string): string;
63
63
  /**
@@ -107,7 +107,7 @@ let FrameworkConfiguration = class FrameworkConfiguration extends configuration_
107
107
  merge(path, value) {
108
108
  _.mergeWith(this.get(path), value, util_1.mergeArrays);
109
109
  }
110
- async resolveAsync() {
110
+ async resolve() {
111
111
  if (!this.Container.hasRegistered(configuration_common_1.ConfigurationSource)) {
112
112
  throw new exceptions_1.InvalidOperation('No configuration sources configured. Please ensure that config module have any source to read from !');
113
113
  }
@@ -131,6 +131,7 @@ let FrameworkConfiguration = class FrameworkConfiguration extends configuration_
131
131
  */
132
132
  this.loadSources();
133
133
  await this.reload();
134
+ this.validate();
134
135
  /**
135
136
  * Merge from DI container
136
137
  * eg. when custom modules have config and dont want to use files
@@ -148,7 +149,7 @@ let FrameworkConfiguration = class FrameworkConfiguration extends configuration_
148
149
  const sCfg = await source.Load(this);
149
150
  this.Sources.push(source);
150
151
  if (sCfg) {
151
- this.validateAndMerge(sCfg);
152
+ _.mergeWith(sCfg, util_1.mergeArrays);
152
153
  }
153
154
  }
154
155
  /**
@@ -159,7 +160,7 @@ let FrameworkConfiguration = class FrameworkConfiguration extends configuration_
159
160
  for (const source of this.Sources) {
160
161
  const rCfg = await source.Load(this);
161
162
  if (rCfg) {
162
- this.validateAndMerge(rCfg);
163
+ _.mergeWith(this.Config, rCfg, util_1.mergeArrays);
163
164
  }
164
165
  }
165
166
  }
@@ -174,17 +175,14 @@ let FrameworkConfiguration = class FrameworkConfiguration extends configuration_
174
175
  return a.Order < b.Order ? -1 : a.Order > b.Order ? 1 : 0;
175
176
  });
176
177
  }
177
- validateAndMerge(rCfg) {
178
- Object.keys(rCfg).forEach((k) => {
179
- const schema = this.ValidationSchemas.find((x) => x.$configurationModule === k);
180
- if (schema) {
181
- const result = this.Validator.validate(schema, rCfg[`${k}`]);
182
- if (!result) {
183
- throw new exception_1.InvalidConfiguration('invalid configuration ! Check config files and restart app.', this.Validator.errors);
184
- }
178
+ validate() {
179
+ this.ValidationSchemas.forEach((s) => {
180
+ const config = this.get(s.$configurationModule);
181
+ const result = this.Validator.validate(s, config);
182
+ if (!result) {
183
+ throw new exception_1.InvalidConfiguration('invalid configuration ! Check config files and restart app.', this.Validator.errors);
185
184
  }
186
185
  });
187
- _.mergeWith(this.Config, rCfg, util_1.mergeArrays);
188
186
  }
189
187
  initValidator() {
190
188
  this.Validator = new ajv_1.default({
@@ -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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"}
@@ -1,3 +1,5 @@
1
+ import { IConfigEntryOptions } from '@spinajs/configuration-common';
2
+ import { Class } from '@spinajs/di';
1
3
  /**
2
4
  * Injects configuration value to given class property
3
5
  *
@@ -5,4 +7,15 @@
5
7
  * @param dafaultValue - default value if path not exists
6
8
  * @returns
7
9
  */
8
- export declare function Config(path: string, dafaultValue?: unknown): (target?: any, key?: string) => any;
10
+ export declare function Config(path: string, options?: IConfigEntryOptions): (target?: any, key?: string) => any;
11
+ /**
12
+ * Inject service based on configuration.
13
+ * Configuration could be object or string containing service
14
+ *
15
+ * If array is provided in configuration, service is resolved by name
16
+ * stored in 'service' property and returnes as Map\<serviceName, instance\>
17
+ *
18
+ * @param path - configuration path where service type is stored
19
+ * @param type - if type is provided, it will override type obtain from reflection. Use it specific with arrays and maps, becouse ts reflection module cannot extract array and map type data
20
+ */
21
+ export declare function AutoinjectService(path: string, type?: Class<unknown>): any;
package/lib/decorators.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Config = void 0;
3
+ exports.AutoinjectService = exports.Config = void 0;
4
+ const lodash_1 = require("lodash");
4
5
  /* eslint-disable @typescript-eslint/no-explicit-any */
5
6
  const configuration_common_1 = require("@spinajs/configuration-common");
6
7
  const di_1 = require("@spinajs/di");
@@ -11,14 +12,18 @@ const di_1 = require("@spinajs/di");
11
12
  * @param dafaultValue - default value if path not exists
12
13
  * @returns
13
14
  */
14
- function Config(path, dafaultValue) {
15
+ function Config(path, options) {
15
16
  return (target, key) => {
16
17
  let config = null;
17
18
  const getter = () => {
19
+ var _a;
18
20
  if (!config) {
19
21
  config = di_1.DI.get(configuration_common_1.Configuration);
20
22
  }
21
- return config.get(path, dafaultValue);
23
+ // register conf, so we can expose eg. in db if config is set
24
+ di_1.DI.register({ path, options }).asValue('__configuration_property__');
25
+ // try to return val
26
+ return config.get(path, options ? (_a = options.defaultValue) !== null && _a !== void 0 ? _a : undefined : undefined);
22
27
  };
23
28
  Object.defineProperty(target, key, {
24
29
  get: getter,
@@ -28,4 +33,56 @@ function Config(path, dafaultValue) {
28
33
  };
29
34
  }
30
35
  exports.Config = Config;
36
+ /**
37
+ * Inject service based on configuration.
38
+ * Configuration could be object or string containing service
39
+ *
40
+ * If array is provided in configuration, service is resolved by name
41
+ * stored in 'service' property and returnes as Map\<serviceName, instance\>
42
+ *
43
+ * @param path - configuration path where service type is stored
44
+ * @param type - if type is provided, it will override type obtain from reflection. Use it specific with arrays and maps, becouse ts reflection module cannot extract array and map type data
45
+ */
46
+ function AutoinjectService(path, type) {
47
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
48
+ return (0, di_1.AddDependency)((descriptor, target, propertyKey) => {
49
+ const t = type !== null && type !== void 0 ? type : Reflect.getMetadata('design:type', target, propertyKey);
50
+ descriptor.inject.push({
51
+ autoinject: true,
52
+ autoinjectKey: propertyKey,
53
+ inject: t,
54
+ data: path,
55
+ serviceFunc: (path, container) => {
56
+ const cfg = container.get(configuration_common_1.Configuration);
57
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
58
+ const cfgVal = cfg.get(path);
59
+ if (!cfgVal) {
60
+ throw new Error(`Configuration value ${path} is empty`);
61
+ }
62
+ if ((0, lodash_1.isString)(cfgVal)) {
63
+ return {
64
+ service: cfgVal,
65
+ };
66
+ }
67
+ if ((0, lodash_1.isArray)(cfgVal)) {
68
+ return cfgVal.map((x) => {
69
+ return {
70
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
71
+ service: x.service,
72
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
73
+ options: x,
74
+ };
75
+ });
76
+ }
77
+ return {
78
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
79
+ service: cfgVal.service,
80
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
81
+ options: cfgVal,
82
+ };
83
+ },
84
+ });
85
+ });
86
+ }
87
+ exports.AutoinjectService = AutoinjectService;
31
88
  //# sourceMappingURL=decorators.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,wEAA8D;AAC9D,oCAAiC;AAEjC;;;;;;GAMG;AACH,SAAgB,MAAM,CAAC,IAAY,EAAE,YAAsB;IACzD,OAAO,CAAC,MAAY,EAAE,GAAY,EAAO,EAAE;QACzC,IAAI,MAAM,GAAkB,IAAI,CAAC;QAEjC,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,GAAG,OAAE,CAAC,GAAG,CAAC,oCAAa,CAAC,CAAC;aAChC;YACD,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACxC,CAAC,CAAC;QAEF,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE;YACjC,GAAG,EAAE,MAAM;YACX,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAjBD,wBAiBC"}
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":";;;AAAA,mCAA2C;AAC3C,uDAAuD;AACvD,wEAAmF;AACnF,oCAAsF;AAEtF;;;;;;GAMG;AACH,SAAgB,MAAM,CAAC,IAAY,EAAE,OAA6B;IAChE,OAAO,CAAC,MAAY,EAAE,GAAY,EAAO,EAAE;QACzC,IAAI,MAAM,GAAkB,IAAI,CAAC;QAEjC,MAAM,MAAM,GAAG,GAAG,EAAE;;YAClB,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,GAAG,OAAE,CAAC,GAAG,CAAC,oCAAa,CAAC,CAAC;aAChC;YAED,6DAA6D;YAC7D,OAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;YAErE,oBAAoB;YACpB,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,MAAA,OAAO,CAAC,YAAY,mCAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnF,CAAC,CAAC;QAEF,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE;YACjC,GAAG,EAAE,MAAM;YACX,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAtBD,wBAsBC;AAED;;;;;;;;;GASG;AACH,SAAgB,iBAAiB,CAAC,IAAY,EAAE,IAAqB;IACnE,+DAA+D;IAC/D,OAAO,IAAA,kBAAa,EAAC,CAAC,UAAsC,EAAE,MAAsB,EAAE,WAAmB,EAAE,EAAE;QAC3G,MAAM,CAAC,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAK,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,CAAoB,CAAC;QAC9F,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;YACrB,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,WAAW;YAC1B,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,CAAC,IAAY,EAAE,SAAqB,EAAE,EAAE;gBACnD,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,oCAAa,CAAC,CAAC;gBACzC,mEAAmE;gBACnE,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAM,IAAI,CAAC,CAAC;gBAElC,IAAI,CAAC,MAAM,EAAE;oBACX,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,WAAW,CAAC,CAAC;iBACzD;gBAED,IAAI,IAAA,iBAAQ,EAAC,MAAM,CAAC,EAAE;oBACpB,OAAO;wBACL,OAAO,EAAE,MAAM;qBAChB,CAAC;iBACH;gBAED,IAAI,IAAA,gBAAO,EAAC,MAAM,CAAC,EAAE;oBACnB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;wBACtB,OAAO;4BACL,+GAA+G;4BAC/G,OAAO,EAAE,CAAC,CAAC,OAAiB;4BAC5B,mEAAmE;4BACnE,OAAO,EAAE,CAAC;yBACX,CAAC;oBACJ,CAAC,CAAC,CAAC;iBACJ;gBAED,OAAO;oBACL,+GAA+G;oBAC/G,OAAO,EAAE,MAAM,CAAC,OAAiB;oBACjC,mEAAmE;oBACnE,OAAO,EAAE,MAAM;iBAChB,CAAC;YACJ,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AA5CD,8CA4CC"}
@@ -1,5 +1,5 @@
1
1
  import { ErrorObject } from 'ajv';
2
2
  export declare class InvalidConfiguration extends Error {
3
- validationExceptions: ErrorObject[];
4
- constructor(message: string, validationExceptions: ErrorObject[]);
3
+ validationExceptions?: ErrorObject[];
4
+ constructor(message: string, validationExceptions?: ErrorObject[]);
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"exception.js","sourceRoot":"","sources":["../src/exception.ts"],"names":[],"mappings":";;;AAEA,MAAa,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe,EAAS,oBAAmC;QACrE,KAAK,CAAC,OAAO,CAAC,CAAC;QADmB,yBAAoB,GAApB,oBAAoB,CAAe;IAEvE,CAAC;CACF;AAJD,oDAIC"}
1
+ {"version":3,"file":"exception.js","sourceRoot":"","sources":["../src/exception.ts"],"names":[],"mappings":";;;AAEA,MAAa,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe,EAAS,oBAAoC;QACtE,KAAK,CAAC,OAAO,CAAC,CAAC;QADmB,yBAAoB,GAApB,oBAAoB,CAAgB;IAExE,CAAC;CACF;AAJD,oDAIC"}
package/lib/index.d.ts CHANGED
@@ -6,3 +6,4 @@ export * from '@spinajs/configuration-common';
6
6
  export * from './sources';
7
7
  export * from './decorators';
8
8
  export * from './configuration';
9
+ export * from './exception';
package/lib/index.js CHANGED
@@ -22,4 +22,5 @@ __exportStar(require("@spinajs/configuration-common"), exports);
22
22
  __exportStar(require("./sources"), exports);
23
23
  __exportStar(require("./decorators"), exports);
24
24
  __exportStar(require("./configuration"), exports);
25
+ __exportStar(require("./exception"), exports);
25
26
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;GAGG;AACH,gEAA8C;AAC9C,4CAA0B;AAC1B,+CAA6B;AAC7B,kDAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;GAGG;AACH,gEAA8C;AAC9C,4CAA0B;AAC1B,+CAA6B;AAC7B,kDAAgC;AAChC,8CAA4B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spinajs/configuration",
3
- "version": "2.0.38",
3
+ "version": "2.0.39",
4
4
  "description": "framework configuration module",
5
5
  "main": "lib/index.js",
6
6
  "private": false,
@@ -40,10 +40,10 @@
40
40
  },
41
41
  "homepage": "https://github.com/spinajs/configuration#readme",
42
42
  "dependencies": {
43
- "@spinajs/configuration-common": "^2.0.38",
44
- "@spinajs/di": "^2.0.38",
45
- "@spinajs/exceptions": "^2.0.12",
46
- "@spinajs/internal-logger": "^2.0.38",
43
+ "@spinajs/configuration-common": "^2.0.39",
44
+ "@spinajs/di": "^2.0.39",
45
+ "@spinajs/exceptions": "^2.0.39",
46
+ "@spinajs/internal-logger": "^2.0.39",
47
47
  "ajv": "^8.11.0",
48
48
  "ajv-formats": "^2.1.1",
49
49
  "ajv-keywords": "^5.1.0",
@@ -51,5 +51,5 @@
51
51
  "glob": "^7.1.4",
52
52
  "lodash": "^4.17.14"
53
53
  },
54
- "gitHead": "5ea5440ee9db49595f531592ebdbc6d69f457082"
54
+ "gitHead": "002dc553b0ffffd72193d0121ac425a4083bc9ee"
55
55
  }