ddd-node 17.0.0 → 17.2.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.
@@ -1,4 +1,5 @@
1
1
  import { Class } from "type-fest";
2
+ import { ModelId } from "../../meta";
2
3
  import { ClassStatic } from "../../types";
3
4
  export type PropKey = string | symbol;
4
5
  export interface Props {
@@ -14,6 +15,8 @@ export declare class ModelBase<P extends Props> {
14
15
  static mutable(): boolean;
15
16
  static modelName<T extends AnyModel>(this: ModelClass<T>): string;
16
17
  static modelVersion<T extends AnyModel>(this: ModelClass<T>): number;
18
+ static modelId<T extends AnyModel>(this: ModelClass<T>): ModelId;
19
+ static hasModelId<T extends AnyModel>(this: ModelClass<T>, modelId: ModelId): boolean;
17
20
  static ownPropsValidator<T extends AnyModel>(this: ModelClass<T>): import("../../meta").PropsValidator<T> | undefined;
18
21
  static propsValidators<T extends AnyModel>(this: ModelClass<T>): import("../../meta").PropsValidator<AnyModel>[];
19
22
  static ownStaticValues<T extends AnyModel>(this: ModelClass<T>): Map<PropertyKey, import("../../meta").StaticValue<T>>;
@@ -22,10 +25,12 @@ export declare class ModelBase<P extends Props> {
22
25
  constructor();
23
26
  protected redefineModel(): void;
24
27
  protected redefineProp(key: keyof this, propTargetKey: keyof P): void;
25
- protected get _modelClass(): ModelClass<this>;
28
+ protected get _modelClass(): ModelClass<typeof this>;
26
29
  isMutable(): boolean;
27
30
  modelName(): string;
28
31
  modelVersion(): number;
32
+ modelId(): ModelId;
33
+ hasModelId(modelId: ModelId): boolean;
29
34
  ownPropsValidator(): import("../../meta").PropsValidator<this> | undefined;
30
35
  propsValidators(): import("../../meta").PropsValidator<AnyModel>[];
31
36
  ownPropsMap(): import("../../meta").PropsMap<ModelBase<any>>;
@@ -20,6 +20,12 @@ class ModelBase {
20
20
  static modelVersion() {
21
21
  return (0, meta_1.getModelVersion)(this);
22
22
  }
23
+ static modelId() {
24
+ return (0, meta_1.getModelId)(this);
25
+ }
26
+ static hasModelId(modelId) {
27
+ return this.modelId().equals(modelId);
28
+ }
23
29
  static ownPropsValidator() {
24
30
  return (0, meta_1.getOwnPropsValidator)(this);
25
31
  }
@@ -66,6 +72,12 @@ class ModelBase {
66
72
  modelVersion() {
67
73
  return this._modelClass.modelVersion();
68
74
  }
75
+ modelId() {
76
+ return this._modelClass.modelId();
77
+ }
78
+ hasModelId(modelId) {
79
+ return this._modelClass.hasModelId(modelId);
80
+ }
69
81
  ownPropsValidator() {
70
82
  return this._modelClass.ownPropsValidator();
71
83
  }
@@ -11,6 +11,20 @@ export declare const getModelName: <T extends AnyModel>(target: ModelClass<T>) =
11
11
  export type ModelVersion = number;
12
12
  export declare const setModelVersion: <T extends AnyModel>(target: ModelClass<T>, version: ModelVersion) => void;
13
13
  export declare const getModelVersion: <T extends AnyModel>(target: ModelClass<T>) => ModelVersion;
14
+ export type ModelIdValue = `${ModelName}${typeof ModelId.ValueDivider}${ModelVersion}`;
15
+ export declare class ModelId {
16
+ readonly modelName: ModelName;
17
+ readonly modelVersion: ModelVersion;
18
+ static readonly ValueDivider: "|";
19
+ static fromValue(value: ModelIdValue): ModelId;
20
+ static makeValue(modelId: ModelId): ModelIdValue;
21
+ constructor(modelName: ModelName, modelVersion: ModelVersion);
22
+ get value(): ModelIdValue;
23
+ equalsValue(modelIdValue: ModelIdValue): boolean;
24
+ equals(modelId: ModelId): boolean;
25
+ }
26
+ export declare const setModelId: <T extends AnyModel>(target: ModelClass<T>, modelId: ModelId) => void;
27
+ export declare const getModelId: <T extends AnyModel>(target: ModelClass<T>) => ModelId;
14
28
  export type PropsValidator<T extends AnyModel = AnyModel> = (props: PropsOf<T>) => void;
15
29
  export declare const setPropsValidator: <T extends AnyModel>(target: object, validator: PropsValidator<T>) => void;
16
30
  export declare const getOwnPropsValidator: <T extends AnyModel>(target: object) => PropsValidator<T> | undefined;
@@ -3,10 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getStaticValue = exports.setStaticValue = exports.getOwnStaticValues = exports.getPropsValidators = exports.PropsValidatorsMetaKey = exports.getOwnPropsValidator = exports.setPropsValidator = exports.getModelVersion = exports.setModelVersion = exports.getModelName = exports.setModelName = exports.getPropsMap = exports.setProp = exports.getOwnPropsMap = exports.PropsMap = void 0;
6
+ exports.getStaticValue = exports.setStaticValue = exports.getOwnStaticValues = exports.getPropsValidators = exports.PropsValidatorsMetaKey = exports.getOwnPropsValidator = exports.setPropsValidator = exports.getModelId = exports.setModelId = exports.ModelId = exports.getModelVersion = exports.setModelVersion = exports.getModelName = exports.setModelName = exports.getPropsMap = exports.setProp = exports.getOwnPropsMap = exports.PropsMap = void 0;
7
7
  const lodash_1 = __importDefault(require("lodash"));
8
8
  const core_1 = require("../core");
9
9
  const static_value_1 = require("./helpers/static-value");
10
+ // OWN PROPS MAP
10
11
  const OwnPropsMapMetaKey = Symbol.for("OWN_PROPS_MAP");
11
12
  class PropsMap extends Map {
12
13
  }
@@ -25,6 +26,7 @@ const setProp = (target, key, propTargetKey) => {
25
26
  ownPropsMap.set(key, propTargetKey);
26
27
  };
27
28
  exports.setProp = setProp;
29
+ // PROPS MAP
28
30
  const PropsMapMetaKey = Symbol.for("PROPS_MAP");
29
31
  const getPropsMap = (target) => {
30
32
  const propsMap = () => Reflect.getOwnMetadata(PropsMapMetaKey, target);
@@ -74,6 +76,45 @@ const getModelVersion = (target) => {
74
76
  return modelVersion();
75
77
  };
76
78
  exports.getModelVersion = getModelVersion;
79
+ class ModelId {
80
+ static fromValue(value) {
81
+ const [modelName, modelVersion] = value.split(this.ValueDivider);
82
+ return new ModelId(String(modelName), Number(modelVersion));
83
+ }
84
+ static makeValue(modelId) {
85
+ return `${modelId.modelName}${this.ValueDivider}${modelId.modelVersion}`;
86
+ }
87
+ constructor(modelName, modelVersion) {
88
+ this.modelName = modelName;
89
+ this.modelVersion = modelVersion;
90
+ }
91
+ get value() {
92
+ return ModelId.makeValue(this);
93
+ }
94
+ equalsValue(modelIdValue) {
95
+ return this.value === modelIdValue;
96
+ }
97
+ equals(modelId) {
98
+ return this.equalsValue(modelId.value);
99
+ }
100
+ }
101
+ exports.ModelId = ModelId;
102
+ ModelId.ValueDivider = "|";
103
+ const ModelIdMetaKey = Symbol.for("MODEL_ID");
104
+ const setModelId = (target, modelId) => {
105
+ Reflect.defineMetadata(ModelIdMetaKey, modelId, target);
106
+ };
107
+ exports.setModelId = setModelId;
108
+ const getModelId = (target) => {
109
+ const modelId = () => Reflect.getOwnMetadata(ModelIdMetaKey, target);
110
+ if (!modelId()) {
111
+ const modelName = (0, exports.getModelName)(target);
112
+ const modelVersion = (0, exports.getModelVersion)(target);
113
+ (0, exports.setModelId)(target, new ModelId(modelName, modelVersion));
114
+ }
115
+ return modelId();
116
+ };
117
+ exports.getModelId = getModelId;
77
118
  const OwnPropsValidatorMetaKey = Symbol.for("OWN_PROPS_VALIDATOR");
78
119
  const setPropsValidator = (target, validator) => {
79
120
  Reflect.defineMetadata(OwnPropsValidatorMetaKey, validator, target);
@@ -101,7 +142,7 @@ const getPropsValidators = (target) => {
101
142
  return validators();
102
143
  };
103
144
  exports.getPropsValidators = getPropsValidators;
104
- //
145
+ // OWN STATIC VALUES
105
146
  const OwnStaticValuesMetaKey = Symbol.for("OWN_STATIC_VALUES");
106
147
  const getOwnStaticValues = (target) => {
107
148
  const ownStaticValues = () => Reflect.getOwnMetadata(OwnStaticValuesMetaKey, target);
package/dist/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"ddd-node","version":"17.0.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":"17.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"}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ddd-node",
3
- "version": "17.0.0",
3
+ "version": "17.2.0",
4
4
  "description": "Domain Driven Design base for NodeJs",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",