ddd-node 15.2.0 → 15.3.0

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.
@@ -13,17 +13,19 @@ export declare class ModelBase<P extends Props> {
13
13
  static isModel(model: any): model is AnyModel;
14
14
  static mutable(): boolean;
15
15
  static modelName<T extends AnyModel>(this: ModelClass<T>): string;
16
- static propsValidator<T extends AnyModel>(this: ModelClass<T>): import("../../meta").PropsValidator<T> | undefined;
16
+ static ownPropsValidator<T extends AnyModel>(this: ModelClass<T>): import("../../meta").PropsValidator<T> | undefined;
17
+ static propsValidators<T extends AnyModel>(this: ModelClass<T>): import("../../meta").PropsValidator<AnyModel>[];
17
18
  static ownStaticValues<T extends AnyModel>(this: ModelClass<T>): Map<string | symbol, import("../../meta").StaticValue<T>>;
18
19
  static ownPropsMap(): import("../../meta").PropsMap<ModelBase<any>>;
19
20
  static propsMap(): import("../../meta").PropsMap<ModelBase<any>>;
20
21
  constructor();
21
22
  protected redefineModel(): void;
22
23
  protected redefineProp(key: keyof this, propTargetKey: keyof P): void;
23
- protected get currentModelType(): ModelClass<this>;
24
+ protected get _modelClass(): ModelClass<this>;
24
25
  isMutable(): boolean;
25
26
  modelName(): string;
26
- propsValidator(): import("../../meta").PropsValidator<this> | undefined;
27
+ ownPropsValidator(): import("../../meta").PropsValidator<this> | undefined;
28
+ propsValidators(): import("../../meta").PropsValidator<AnyModel>[];
27
29
  ownPropsMap(): import("../../meta").PropsMap<ModelBase<any>>;
28
30
  propsMap(): import("../../meta").PropsMap<any>;
29
31
  validateProps(props: P): void;
@@ -17,8 +17,11 @@ class ModelBase {
17
17
  static modelName() {
18
18
  return (0, meta_1.getModelName)(this);
19
19
  }
20
- static propsValidator() {
21
- return (0, meta_1.getPropsValidator)(this);
20
+ static ownPropsValidator() {
21
+ return (0, meta_1.getOwnPropsValidator)(this);
22
+ }
23
+ static propsValidators() {
24
+ return (0, meta_1.getPropsValidators)(this);
22
25
  }
23
26
  static ownStaticValues() {
24
27
  return (0, meta_1.getOwnStaticValues)(this);
@@ -48,28 +51,30 @@ class ModelBase {
48
51
  },
49
52
  });
50
53
  }
51
- get currentModelType() {
54
+ get _modelClass() {
52
55
  return this.constructor;
53
56
  }
54
57
  isMutable() {
55
- return this.currentModelType.mutable();
58
+ return this._modelClass.mutable();
56
59
  }
57
60
  modelName() {
58
- return this.currentModelType.modelName();
61
+ return this._modelClass.modelName();
62
+ }
63
+ ownPropsValidator() {
64
+ return this._modelClass.ownPropsValidator();
59
65
  }
60
- propsValidator() {
61
- return this.currentModelType.propsValidator();
66
+ propsValidators() {
67
+ return this._modelClass.propsValidators();
62
68
  }
63
69
  ownPropsMap() {
64
- return this.currentModelType.ownPropsMap();
70
+ return this._modelClass.ownPropsMap();
65
71
  }
66
72
  propsMap() {
67
73
  return (0, meta_1.getPropsMap)(Reflect.getPrototypeOf(this));
68
74
  }
69
75
  validateProps(props) {
70
- const propsValidator = this.propsValidator();
71
- if (propsValidator)
72
- propsValidator(props);
76
+ const propsValidators = this.propsValidators();
77
+ propsValidators.forEach((propsValidator) => propsValidator(props));
73
78
  }
74
79
  validate() {
75
80
  this.validateProps(this._props);
@@ -9,7 +9,9 @@ export declare const setModelName: <T extends AnyModel>(target: ModelClass<T>, n
9
9
  export declare const getModelName: <T extends AnyModel>(target: ModelClass<T>) => string;
10
10
  export type PropsValidator<T extends AnyModel = AnyModel> = (props: PropsOf<T>) => void;
11
11
  export declare const setPropsValidator: <T extends AnyModel>(target: object, validator: PropsValidator<T>) => void;
12
- export declare const getPropsValidator: <T extends AnyModel>(target: object) => PropsValidator<T> | undefined;
12
+ export declare const getOwnPropsValidator: <T extends AnyModel>(target: object) => PropsValidator<T> | undefined;
13
+ export declare const PropsValidatorsMetaKey: unique symbol;
14
+ export declare const getPropsValidators: (target: object) => PropsValidator<AnyModel>[];
13
15
  export declare const getOwnStaticValues: <T extends AnyModel>(target: object) => Map<string | symbol, StaticValue<T>>;
14
16
  export declare const setStaticValue: <T extends AnyModel>(target: object, key: string, value: T | StaticValueBuilder<T>) => void;
15
17
  export declare const getStaticValue: (target: object, key: string | symbol) => AnyModel | undefined;
@@ -1,10 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getStaticValue = exports.setStaticValue = exports.getOwnStaticValues = exports.getPropsValidator = exports.setPropsValidator = exports.getModelName = exports.setModelName = exports.getPropsMap = exports.setProp = exports.getOwnPropsMap = exports.PropsMap = void 0;
3
+ exports.getStaticValue = exports.setStaticValue = exports.getOwnStaticValues = exports.getPropsValidators = exports.PropsValidatorsMetaKey = exports.getOwnPropsValidator = exports.setPropsValidator = exports.getModelName = exports.setModelName = exports.getPropsMap = exports.setProp = exports.getOwnPropsMap = exports.PropsMap = void 0;
4
4
  const core_1 = require("../core");
5
5
  const static_value_1 = require("./helpers/static-value");
6
6
  const OwnPropsMapMetaKey = Symbol.for("OWN_PROPS_MAP");
7
- // Prop keys map is a Map<Key, TargetPropKey>;
8
7
  class PropsMap extends Map {
9
8
  }
10
9
  exports.PropsMap = PropsMap;
@@ -60,15 +59,32 @@ const getModelName = (target) => {
60
59
  return modelName();
61
60
  };
62
61
  exports.getModelName = getModelName;
63
- const PropsValidatorMetaKey = Symbol.for("PROPS_VALIDATOR");
62
+ const OwnPropsValidatorMetaKey = Symbol.for("OWN_PROPS_VALIDATOR");
64
63
  const setPropsValidator = (target, validator) => {
65
- Reflect.defineMetadata(PropsValidatorMetaKey, validator, target);
64
+ Reflect.defineMetadata(OwnPropsValidatorMetaKey, validator, target);
66
65
  };
67
66
  exports.setPropsValidator = setPropsValidator;
68
- const getPropsValidator = (target) => {
69
- return Reflect.getMetadata(PropsValidatorMetaKey, target);
67
+ const getOwnPropsValidator = (target) => {
68
+ return Reflect.getOwnMetadata(OwnPropsValidatorMetaKey, target);
70
69
  };
71
- exports.getPropsValidator = getPropsValidator;
70
+ exports.getOwnPropsValidator = getOwnPropsValidator;
71
+ exports.PropsValidatorsMetaKey = Symbol.for("PROPS_VALIDATORS");
72
+ const getPropsValidators = (target) => {
73
+ const validators = () => Reflect.getOwnMetadata(exports.PropsValidatorsMetaKey, target);
74
+ if (validators())
75
+ return validators();
76
+ const result = [];
77
+ let _target = target;
78
+ do {
79
+ const ownValidator = (0, exports.getOwnPropsValidator)(_target);
80
+ if (ownValidator)
81
+ result.push(ownValidator);
82
+ _target = Reflect.getPrototypeOf(_target);
83
+ } while (_target !== null);
84
+ Reflect.defineMetadata(exports.PropsValidatorsMetaKey, result, target);
85
+ return validators();
86
+ };
87
+ exports.getPropsValidators = getPropsValidators;
72
88
  //
73
89
  const OwnStaticValuesMetaKey = Symbol.for("OWN_STATIC_VALUES");
74
90
  const getOwnStaticValues = (target) => {
package/dist/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"ddd-node","version":"15.2.0","description":"Domain Driven Design base for NodeJs","type":"commonjs","main":"index.js","types":"index.d.ts","files":["dist"],"repository":{"type":"git","url":"https://github.com/nqd881/ddd-node"},"keywords":["ddd","ddd-node","ddd-base","ddd-ts","ddd-js"],"author":"Quoc Dai","license":"ISC","devDependencies":{"@types/chai":"^4.3.16","@types/lodash":"^4.14.200","@types/mocha":"^10.0.6","@types/uuid":"^9.0.6","chai":"^5.1.1","chai-deep-match":"^1.2.1","ddd-node":"file:dist","mocha":"^10.4.0","ts-node":"^10.9.1","tsconfig-paths":"^4.2.0","typescript":"^5.2.2"},"dependencies":{"lodash":"^4.17.21","nodejs-snowflake":"^2.0.1","reflect-metadata":"^0.1.13","tsc-alias":"^1.8.8","type-fest":"^4.15.0","uuid":"^9.0.1"}}
1
+ {"name":"ddd-node","version":"15.3.0","description":"Domain Driven Design base for NodeJs","type":"commonjs","main":"index.js","types":"index.d.ts","files":["dist"],"repository":{"type":"git","url":"https://github.com/nqd881/ddd-node"},"keywords":["ddd","ddd-node","ddd-base","ddd-ts","ddd-js"],"author":"Quoc Dai","license":"ISC","devDependencies":{"@types/chai":"^4.3.16","@types/lodash":"^4.14.200","@types/mocha":"^10.0.6","@types/uuid":"^9.0.6","chai":"^5.1.1","chai-deep-match":"^1.2.1","ddd-node":"file:dist","mocha":"^10.4.0","ts-node":"^10.9.1","tsconfig-paths":"^4.2.0","typescript":"^5.2.2"},"dependencies":{"lodash":"^4.17.21","nodejs-snowflake":"^2.0.1","reflect-metadata":"^0.1.13","tsc-alias":"^1.8.8","type-fest":"^4.15.0","uuid":"^9.0.1"}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ddd-node",
3
- "version": "15.2.0",
3
+ "version": "15.3.0",
4
4
  "description": "Domain Driven Design base for NodeJs",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",