ddd-node 13.0.0-0 → 14.0.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.
Files changed (122) hide show
  1. package/.editorconfig +12 -0
  2. package/dist/core/aggregate/base.d.ts +12 -0
  3. package/dist/core/aggregate/base.js +15 -0
  4. package/dist/core/aggregate/event-sourced-aggregate.d.ts +48 -0
  5. package/dist/core/aggregate/event-sourced-aggregate.js +130 -0
  6. package/dist/core/aggregate/index.d.ts +3 -0
  7. package/dist/core/aggregate/index.js +3 -0
  8. package/dist/core/aggregate/state-aggregate.d.ts +22 -0
  9. package/dist/core/aggregate/state-aggregate.js +35 -0
  10. package/dist/core/aggregate/types.d.ts +4 -0
  11. package/dist/core/aggregate/types.js +1 -0
  12. package/dist/core/entity.d.ts +12 -9
  13. package/dist/core/entity.js +3 -7
  14. package/dist/core/enum.d.ts +12 -10
  15. package/dist/core/enum.js +30 -22
  16. package/dist/core/id/common/index.d.ts +2 -0
  17. package/dist/core/id/common/index.js +2 -0
  18. package/dist/core/id/common/snowflake.d.ts +9 -0
  19. package/dist/core/id/common/snowflake.js +13 -0
  20. package/dist/core/id/common/uuid4.d.ts +6 -0
  21. package/dist/core/id/common/uuid4.js +17 -0
  22. package/dist/core/id/id.d.ts +7 -5
  23. package/dist/core/id/id.js +13 -8
  24. package/dist/core/id/index.d.ts +2 -2
  25. package/dist/core/id/index.js +3 -19
  26. package/dist/core/id/interface.d.ts +10 -0
  27. package/dist/core/id/interface.js +1 -0
  28. package/dist/core/index.d.ts +0 -1
  29. package/dist/core/index.js +8 -25
  30. package/dist/core/message/command.d.ts +14 -9
  31. package/dist/core/message/command.js +10 -9
  32. package/dist/core/message/event.d.ts +15 -11
  33. package/dist/core/message/event.js +9 -11
  34. package/dist/core/message/index.js +3 -19
  35. package/dist/core/message/message.d.ts +8 -4
  36. package/dist/core/message/message.js +13 -14
  37. package/dist/core/model/errors.d.ts +3 -0
  38. package/dist/core/model/errors.js +5 -0
  39. package/dist/core/model/index.js +2 -18
  40. package/dist/core/model/model-with-id.d.ts +8 -8
  41. package/dist/core/model/model-with-id.js +9 -13
  42. package/dist/core/model/model.d.ts +30 -19
  43. package/dist/core/model/model.js +50 -41
  44. package/dist/core/repository.d.ts +2 -2
  45. package/dist/core/repository.js +1 -2
  46. package/dist/core/value-object.d.ts +11 -8
  47. package/dist/core/value-object.js +8 -12
  48. package/dist/decorators/aggregate-es/handle.d.ts +2 -0
  49. package/dist/decorators/aggregate-es/handle.js +9 -0
  50. package/dist/decorators/aggregate-es/index.js +2 -0
  51. package/dist/decorators/aggregate-es/when.d.ts +2 -0
  52. package/dist/decorators/aggregate-es/when.js +9 -0
  53. package/dist/decorators/id.d.ts +2 -2
  54. package/dist/decorators/id.js +3 -7
  55. package/dist/decorators/index.d.ts +1 -1
  56. package/dist/decorators/index.js +3 -19
  57. package/dist/decorators/model/enum.d.ts +2 -0
  58. package/dist/decorators/model/enum.js +6 -0
  59. package/dist/decorators/model/index.d.ts +3 -3
  60. package/dist/decorators/model/index.js +5 -21
  61. package/dist/decorators/model/model-name.d.ts +2 -0
  62. package/dist/decorators/model/model-name.js +6 -0
  63. package/dist/decorators/model/prop.d.ts +2 -1
  64. package/dist/decorators/model/prop.js +5 -7
  65. package/dist/decorators/model/static.d.ts +3 -3
  66. package/dist/decorators/model/static.js +7 -30
  67. package/dist/decorators/model/validator.d.ts +3 -0
  68. package/dist/decorators/model/validator.js +7 -0
  69. package/dist/decorators/type.js +1 -2
  70. package/dist/index.js +5 -21
  71. package/dist/meta/aggregate.metadata.d.ts +5 -5
  72. package/dist/meta/aggregate.metadata.js +19 -22
  73. package/dist/meta/helpers/index.d.ts +1 -0
  74. package/dist/meta/helpers/index.js +1 -0
  75. package/dist/meta/helpers/static-value.d.ts +7 -0
  76. package/dist/meta/helpers/static-value.js +11 -0
  77. package/dist/meta/id.metadata.d.ts +4 -4
  78. package/dist/meta/id.metadata.js +10 -10
  79. package/dist/meta/index.d.ts +1 -0
  80. package/dist/meta/index.js +4 -19
  81. package/dist/meta/model.metadata.d.ts +14 -12
  82. package/dist/meta/model.metadata.js +79 -43
  83. package/dist/types/class-static.js +1 -2
  84. package/dist/types/class.js +1 -2
  85. package/dist/types/index.js +2 -18
  86. package/dist/utils/index.js +1 -17
  87. package/dist/utils/to-array.js +2 -8
  88. package/package.json +27 -3
  89. package/ts-loader.js +4 -0
  90. package/tsconfig.build.json +4 -4
  91. package/tsconfig.json +29 -22
  92. package/tsconfig.spec.json +5 -0
  93. package/dist/core/aggregate.d.ts +0 -67
  94. package/dist/core/aggregate.js +0 -179
  95. package/dist/core/error.d.ts +0 -4
  96. package/dist/core/error.js +0 -9
  97. package/dist/core/id/built/index.d.ts +0 -2
  98. package/dist/core/id/built/index.js +0 -18
  99. package/dist/core/id/built/snowflake.generator.d.ts +0 -8
  100. package/dist/core/id/built/snowflake.generator.js +0 -16
  101. package/dist/core/id/built/uuid4.generator.d.ts +0 -5
  102. package/dist/core/id/built/uuid4.generator.js +0 -16
  103. package/dist/core/id/id-generator.d.ts +0 -8
  104. package/dist/core/id/id-generator.js +0 -17
  105. package/dist/decorators/aggregate/handle.d.ts +0 -2
  106. package/dist/decorators/aggregate/handle.js +0 -13
  107. package/dist/decorators/aggregate/index.js +0 -18
  108. package/dist/decorators/aggregate/when.d.ts +0 -2
  109. package/dist/decorators/aggregate/when.js +0 -13
  110. package/dist/decorators/model/helpers/static-values.d.ts +0 -12
  111. package/dist/decorators/model/helpers/static-values.js +0 -30
  112. package/dist/decorators/model/model.d.ts +0 -10
  113. package/dist/decorators/model/model.js +0 -26
  114. package/dist/decorators/model/name.d.ts +0 -2
  115. package/dist/decorators/model/name.js +0 -10
  116. package/dist/decorators/model/types/static-typed-target.d.ts +0 -5
  117. package/dist/decorators/model/types/static-typed-target.js +0 -3
  118. package/dist/decorators/model/types/static-value-builder.d.ts +0 -2
  119. package/dist/decorators/model/types/static-value-builder.js +0 -2
  120. package/dist/decorators/model/validate.d.ts +0 -3
  121. package/dist/decorators/model/validate.js +0 -11
  122. /package/dist/decorators/{aggregate → aggregate-es}/index.d.ts +0 -0
@@ -1,3 +1,3 @@
1
- export * from "./aggregate";
1
+ export * from "./aggregate-es";
2
2
  export * from "./id";
3
3
  export * from "./model";
@@ -1,19 +1,3 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./aggregate"), exports);
18
- __exportStar(require("./id"), exports);
19
- __exportStar(require("./model"), exports);
1
+ export * from "./aggregate-es";
2
+ export * from "./id";
3
+ export * from "./model";
@@ -0,0 +1,2 @@
1
+ import { EnumClass, EnumValue } from "../../core";
2
+ export declare const Enum: (value: EnumValue) => <T extends EnumClass<import("../../core").EnumBase>>(target: T, key: string) => void;
@@ -0,0 +1,6 @@
1
+ import { Static } from "./static";
2
+ export const Enum = (value) => {
3
+ return (target, key) => {
4
+ Static(() => new target(value))(target, key);
5
+ };
6
+ };
@@ -1,5 +1,5 @@
1
1
  export * from "./prop";
2
- export * from "./name";
3
- export * from "./validate";
4
- export * from "./model";
2
+ export * from "./model-name";
3
+ export * from "./validator";
5
4
  export * from "./static";
5
+ export * from "./enum";
@@ -1,21 +1,5 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./prop"), exports);
18
- __exportStar(require("./name"), exports);
19
- __exportStar(require("./validate"), exports);
20
- __exportStar(require("./model"), exports);
21
- __exportStar(require("./static"), exports);
1
+ export * from "./prop";
2
+ export * from "./model-name";
3
+ export * from "./validator";
4
+ export * from "./static";
5
+ export * from "./enum";
@@ -0,0 +1,2 @@
1
+ import { ModelClass } from "../../core";
2
+ export declare const ModelName: (name?: string) => <T extends ModelClass<import("../../core").AnyModel>>(target: T) => void;
@@ -0,0 +1,6 @@
1
+ import { setModelName } from "../../meta";
2
+ export const ModelName = (name) => {
3
+ return (target) => {
4
+ setModelName(target, name);
5
+ };
6
+ };
@@ -1 +1,2 @@
1
- export declare const Prop: (target: object, propKey: string) => void;
1
+ import { AnyModel, PropKey, PropsOf } from "../../core";
2
+ export declare const Prop: <T extends AnyModel>(propKey?: keyof PropsOf<T> | undefined) => (target: T, key: PropKey) => void;
@@ -1,8 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Prop = void 0;
4
- const _meta_1 = require("../../meta/index");
5
- const Prop = (target, propKey) => {
6
- (0, _meta_1.setPropKey)(target, propKey);
1
+ import { setProp } from "../../meta";
2
+ export const Prop = (propKey) => {
3
+ return (target, key) => {
4
+ setProp(target, key, propKey ?? key);
5
+ };
7
6
  };
8
- exports.Prop = Prop;
@@ -1,3 +1,3 @@
1
- import { ModelClass } from "../../core/index";
2
- import { StaticValueBuilder } from "./types/static-value-builder";
3
- export declare const Static: <T extends ModelClass, I extends InstanceType<T> = InstanceType<T>>(builder: StaticValueBuilder<I>) => (target: T, key: string) => void;
1
+ import { ModelClass } from "../../core";
2
+ import { StaticValueBuilder } from "../../meta";
3
+ export declare const Static: <T extends ModelClass<import("../../core").AnyModel>, I extends InstanceType<T> = InstanceType<T>>(builder: StaticValueBuilder<I>) => (target: T, key: string) => void;
@@ -1,39 +1,16 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Static = void 0;
4
- const static_values_1 = require("./helpers/static-values");
5
- // Lazy builder for static value (value of static prop is an instance of that model)
6
- const Static = (builder) => {
1
+ import { getStaticValue, setStaticValue } from "../../meta";
2
+ export const Static = (builder) => {
7
3
  return (target, key) => {
8
- const STATIC_VALUES_KEY = target.STATIC_VALUES_KEY;
9
- const typedTarget = target;
10
- let staticValues = typedTarget[STATIC_VALUES_KEY];
11
- if (!staticValues || staticValues.target !== target) {
12
- Object.defineProperty(target, STATIC_VALUES_KEY, {
13
- configurable: false,
14
- enumerable: false,
15
- writable: false,
16
- value: new static_values_1.StaticValues(target),
17
- });
18
- staticValues = typedTarget[STATIC_VALUES_KEY];
19
- }
20
- staticValues.setValue(key, builder);
4
+ setStaticValue(target, key, builder);
21
5
  Object.defineProperty(target, key, {
22
6
  configurable: false,
23
7
  enumerable: true,
24
8
  get() {
25
- let loopTarget = typedTarget;
26
- do {
27
- const sValues = loopTarget[STATIC_VALUES_KEY];
28
- if (!sValues)
29
- return undefined;
30
- if (sValues.hasValueOf(key))
31
- return sValues.getValue(key);
32
- loopTarget = Reflect.getPrototypeOf(loopTarget);
33
- } while (loopTarget !== null);
34
- return undefined;
9
+ return getStaticValue(target, key);
10
+ },
11
+ set() {
12
+ throw new Error("Static value is readonly");
35
13
  },
36
14
  });
37
15
  };
38
16
  };
39
- exports.Static = Static;
@@ -0,0 +1,3 @@
1
+ import { ModelClass } from "../../core";
2
+ import { PropsValidator } from "../../meta";
3
+ export declare const Validator: <T extends ModelClass<import("../../core").AnyModel>, I extends InstanceType<T> = InstanceType<T>>(validator?: PropsValidator<I> | undefined) => (target: T) => void;
@@ -0,0 +1,7 @@
1
+ import { setPropsValidator } from "../../meta";
2
+ export const Validator = (validator) => {
3
+ return (target) => {
4
+ if (validator)
5
+ setPropsValidator(target, validator);
6
+ };
7
+ };
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
package/dist/index.js CHANGED
@@ -1,21 +1,5 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./meta"), exports);
18
- __exportStar(require("./core"), exports);
19
- __exportStar(require("./decorators"), exports);
20
- __exportStar(require("./types"), exports);
21
- __exportStar(require("./utils"), exports);
1
+ export * from "./meta";
2
+ export * from "./core";
3
+ export * from "./decorators";
4
+ export * from "./types";
5
+ export * from "./utils";
@@ -1,8 +1,8 @@
1
- import { AnyCommand, AnyEvent, CommandHandler, EventApplier } from "../core/index";
1
+ import { AnyCommand, AnyEvent, CommandHandler, EventApplier } from "../core";
2
2
  import "reflect-metadata";
3
- export declare const EventAppliersMetaKey: unique symbol;
4
- export declare const getEventAppliersMap: (target: object) => Map<string, EventApplier>;
3
+ export declare const EventApplierMapMetaKey: unique symbol;
4
+ export declare const getEventApplierMap: (target: object) => Map<string, EventApplier>;
5
5
  export declare const defineEventApplier: <T extends AnyEvent>(target: object, eventName: string, applier: EventApplier<T>) => void;
6
- export declare const CommandHandlersMetaKey: unique symbol;
7
- export declare const getCommandHandlersMap: (target: object) => Map<string, CommandHandler>;
6
+ export declare const CommandHandlerMapMetaKey: unique symbol;
7
+ export declare const getCommandHandlerMap: (target: object) => Map<string, CommandHandler>;
8
8
  export declare const defineCommandHandler: <T extends AnyCommand>(target: object, commandName: string, handler: CommandHandler<T>) => void;
@@ -1,30 +1,27 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.defineCommandHandler = exports.getCommandHandlersMap = exports.CommandHandlersMetaKey = exports.defineEventApplier = exports.getEventAppliersMap = exports.EventAppliersMetaKey = void 0;
4
- require("reflect-metadata");
1
+ import "reflect-metadata";
5
2
  // Event applier map
6
- exports.EventAppliersMetaKey = Symbol.for("EVENT_APPLIERS");
7
- const getEventAppliersMap = (target) => {
8
- return (Reflect.getMetadata(exports.EventAppliersMetaKey, target) ||
9
- new Map());
3
+ export const EventApplierMapMetaKey = Symbol.for("EVENT_APPLIER_MAP");
4
+ export const getEventApplierMap = (target) => {
5
+ const eventApplierMap = () => Reflect.getMetadata(EventApplierMapMetaKey, target);
6
+ if (eventApplierMap())
7
+ return eventApplierMap();
8
+ Reflect.defineMetadata(EventApplierMapMetaKey, new Map(), target);
9
+ return eventApplierMap();
10
10
  };
11
- exports.getEventAppliersMap = getEventAppliersMap;
12
- const defineEventApplier = (target, eventName, applier) => {
13
- const eventAppliersMap = (0, exports.getEventAppliersMap)(target);
11
+ export const defineEventApplier = (target, eventName, applier) => {
12
+ const eventAppliersMap = getEventApplierMap(target);
14
13
  eventAppliersMap.set(eventName, applier);
15
- Reflect.defineMetadata(exports.EventAppliersMetaKey, eventAppliersMap, target);
16
14
  };
17
- exports.defineEventApplier = defineEventApplier;
18
15
  // Command handler map
19
- exports.CommandHandlersMetaKey = Symbol.for("COMMAND_HANDLERS");
20
- const getCommandHandlersMap = (target) => {
21
- return (Reflect.getMetadata(exports.CommandHandlersMetaKey, target) ||
22
- new Map());
16
+ export const CommandHandlerMapMetaKey = Symbol.for("COMMAND_HANDLER_MAP");
17
+ export const getCommandHandlerMap = (target) => {
18
+ const commandHandlerMap = () => Reflect.getMetadata(CommandHandlerMapMetaKey, target);
19
+ if (commandHandlerMap())
20
+ return commandHandlerMap();
21
+ Reflect.defineMetadata(CommandHandlerMapMetaKey, new Map(), target);
22
+ return commandHandlerMap();
23
23
  };
24
- exports.getCommandHandlersMap = getCommandHandlersMap;
25
- const defineCommandHandler = (target, commandName, handler) => {
26
- const commandHandlersMap = (0, exports.getCommandHandlersMap)(target);
24
+ export const defineCommandHandler = (target, commandName, handler) => {
25
+ const commandHandlersMap = getCommandHandlerMap(target);
27
26
  commandHandlersMap.set(commandName, handler);
28
- Reflect.defineMetadata(exports.CommandHandlersMetaKey, commandHandlersMap, target);
29
27
  };
30
- exports.defineCommandHandler = defineCommandHandler;
@@ -0,0 +1 @@
1
+ export * from "./static-value";
@@ -0,0 +1 @@
1
+ export * from "./static-value";
@@ -0,0 +1,7 @@
1
+ import { AnyModel } from "../../core";
2
+ export type StaticValueBuilder<T extends AnyModel = AnyModel> = () => T;
3
+ export declare class StaticValue<T extends AnyModel = AnyModel> {
4
+ private _value;
5
+ constructor(value: T | StaticValueBuilder<T>);
6
+ get value(): T;
7
+ }
@@ -0,0 +1,11 @@
1
+ export class StaticValue {
2
+ constructor(value) {
3
+ this._value = value;
4
+ }
5
+ get value() {
6
+ if (typeof this._value === "function") {
7
+ this._value = this._value();
8
+ }
9
+ return this._value;
10
+ }
11
+ }
@@ -1,4 +1,4 @@
1
- import { IdGeneratorBase } from "../core/index";
2
- export declare const IdGeneratorMetaKey: unique symbol;
3
- export declare const defineIdGenerator: (target: object, idGenerator: IdGeneratorBase) => void;
4
- export declare const getIdGenerator: (target: object) => any;
1
+ import { IIdService } from "../core";
2
+ export declare const IdServiceMetaKey: unique symbol;
3
+ export declare const defineIdService: (target: object, idService: IIdService) => void;
4
+ export declare const getIdService: (target: object) => IIdService;
@@ -1,12 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getIdGenerator = exports.defineIdGenerator = exports.IdGeneratorMetaKey = void 0;
4
- exports.IdGeneratorMetaKey = Symbol.for("ID_GENERATOR");
5
- const defineIdGenerator = (target, idGenerator) => {
6
- Reflect.defineMetadata(exports.IdGeneratorMetaKey, idGenerator, target);
1
+ import { Uuid4Service } from "../core";
2
+ export const IdServiceMetaKey = Symbol.for("ID_SERVICE");
3
+ export const defineIdService = (target, idService) => {
4
+ Reflect.defineMetadata(IdServiceMetaKey, idService, target);
7
5
  };
8
- exports.defineIdGenerator = defineIdGenerator;
9
- const getIdGenerator = (target) => {
10
- return Reflect.getMetadata(exports.IdGeneratorMetaKey, target);
6
+ export const getIdService = (target) => {
7
+ const idService = () => Reflect.getMetadata(IdServiceMetaKey, target);
8
+ if (idService())
9
+ return idService();
10
+ Reflect.defineMetadata(IdServiceMetaKey, new Uuid4Service(), target);
11
+ return idService();
11
12
  };
12
- exports.getIdGenerator = getIdGenerator;
@@ -1,3 +1,4 @@
1
+ export * from "./helpers";
1
2
  export * from "./aggregate.metadata";
2
3
  export * from "./id.metadata";
3
4
  export * from "./model.metadata";
@@ -1,19 +1,4 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./aggregate.metadata"), exports);
18
- __exportStar(require("./id.metadata"), exports);
19
- __exportStar(require("./model.metadata"), exports);
1
+ export * from "./helpers";
2
+ export * from "./aggregate.metadata";
3
+ export * from "./id.metadata";
4
+ export * from "./model.metadata";
@@ -1,13 +1,15 @@
1
- import { AnyModel, PropsOf } from "../core/index";
2
- export declare const getPropKeySet: (target: object | null) => Set<string | symbol>;
3
- export declare const setPropKey: (target: object, propKey: string) => void;
4
- export declare const setModelName: (target: object, name: string) => void;
5
- export declare const getModelName: (target: object) => string;
1
+ import { AnyModel, ModelClass, PropKey, PropsOf } from "../core";
2
+ import { StaticValue, StaticValueBuilder } from "./helpers/static-value";
3
+ export declare class PropsMap<T extends AnyModel = AnyModel> extends Map<PropKey, keyof PropsOf<T>> {
4
+ }
5
+ export declare const getOwnPropsMap: <T extends AnyModel = AnyModel>(target: T) => PropsMap<T>;
6
+ export declare const setProp: <T extends AnyModel = AnyModel>(target: T, key: PropKey, targetPropKey?: keyof PropsOf<T> | undefined) => void;
7
+ export declare const getPropsMap: <T extends AnyModel = AnyModel>(target: T) => PropsMap<T>;
8
+ export declare const setModelName: <T extends AnyModel>(target: ModelClass<T>, name?: string) => void;
9
+ export declare const getModelName: <T extends AnyModel>(target: ModelClass<T>) => string;
6
10
  export type PropsValidator<T extends AnyModel = AnyModel> = (props: PropsOf<T>) => void;
7
- export declare const setValidateProps: <T extends AnyModel>(target: object, validator: PropsValidator<T>) => void;
8
- export declare const getValidateProps: <T extends AnyModel>(target: object) => PropsValidator<T> | undefined;
9
- export type ModelMetadata<T extends AnyModel = AnyModel> = {
10
- name: string;
11
- validator?: PropsValidator<T>;
12
- };
13
- export declare const getModelMetadata: <T extends AnyModel = AnyModel>(target: object) => ModelMetadata<T>;
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;
13
+ export declare const getOwnStaticValues: <T extends AnyModel>(target: object) => Map<string | symbol, StaticValue<T>>;
14
+ export declare const setStaticValue: <T extends AnyModel>(target: object, key: string, value: T | StaticValueBuilder<T>) => void;
15
+ export declare const getStaticValue: (target: object, key: string | symbol) => AnyModel | undefined;
@@ -1,46 +1,82 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getModelMetadata = exports.getValidateProps = exports.setValidateProps = exports.getModelName = exports.setModelName = exports.setPropKey = exports.getPropKeySet = void 0;
4
- const PropMetaKey = Symbol.for("PROP");
5
- const getPropKeySet = (target) => {
6
- var _a;
7
- if (!target)
8
- return new Set();
9
- return (_a = Reflect.getMetadata(PropMetaKey, target)) !== null && _a !== void 0 ? _a : new Set();
10
- };
11
- exports.getPropKeySet = getPropKeySet;
12
- const setPropKey = (target, propKey) => {
13
- const propKeySet = (0, exports.getPropKeySet)(target);
14
- propKeySet.add(propKey);
15
- Reflect.defineMetadata(PropMetaKey, propKeySet, target);
16
- };
17
- exports.setPropKey = setPropKey;
1
+ import { ModelBase } from "../core";
2
+ import { StaticValue } from "./helpers/static-value";
3
+ const OwnPropsMapMetaKey = Symbol.for("OWN_PROPS_MAP");
4
+ // Prop keys map is a Map<Key, TargetPropKey>;
5
+ export class PropsMap extends Map {
6
+ }
7
+ // target is prototype
8
+ export const getOwnPropsMap = (target) => {
9
+ const ownPropsMap = () => Reflect.getOwnMetadata(OwnPropsMapMetaKey, target);
10
+ if (!ownPropsMap())
11
+ Reflect.defineMetadata(OwnPropsMapMetaKey, new PropsMap(), target);
12
+ return ownPropsMap();
13
+ };
14
+ export const setProp = (target, key, targetPropKey) => {
15
+ const ownPropsMap = getOwnPropsMap(target);
16
+ if (targetPropKey)
17
+ ownPropsMap.set(key, targetPropKey);
18
+ };
19
+ const PropsMapMetaKey = Symbol.for("PROPS_MAP");
20
+ export const getPropsMap = (target) => {
21
+ const propsMap = () => Reflect.getOwnMetadata(PropsMapMetaKey, target);
22
+ if (propsMap())
23
+ return propsMap();
24
+ const buildPropsMap = (target) => {
25
+ let _target = target;
26
+ const result = new PropsMap();
27
+ const ownPropsMapList = [];
28
+ do {
29
+ if (ModelBase.isModel(_target)) {
30
+ const ownPropsMap = getOwnPropsMap(_target);
31
+ ownPropsMapList.unshift(ownPropsMap);
32
+ }
33
+ _target = Reflect.getPrototypeOf(_target);
34
+ } while (_target !== null);
35
+ ownPropsMapList.forEach((ownPropsMap) => {
36
+ ownPropsMap.forEach((targetPropKey, key) => result.set(key, targetPropKey));
37
+ });
38
+ return result;
39
+ };
40
+ Reflect.defineMetadata(PropsMapMetaKey, buildPropsMap(target), target);
41
+ return propsMap();
42
+ };
18
43
  //
19
44
  const ModelNameMetaKey = Symbol.for("MODEL_NAME");
20
- const setModelName = (target, name) => {
21
- Reflect.defineMetadata(ModelNameMetaKey, name, target);
22
- };
23
- exports.setModelName = setModelName;
24
- const getModelName = (target) => {
25
- const modelName = Reflect.getMetadata(ModelNameMetaKey, target);
26
- if (!modelName)
27
- throw new Error();
28
- return modelName;
29
- };
30
- exports.getModelName = getModelName;
31
- const ValidatePropsMetaKey = Symbol.for("VALIDATE_PROPS");
32
- const setValidateProps = (target, validator) => {
33
- Reflect.defineMetadata(ValidatePropsMetaKey, validator, target);
34
- };
35
- exports.setValidateProps = setValidateProps;
36
- const getValidateProps = (target) => {
37
- return Reflect.getMetadata(ValidatePropsMetaKey, target);
38
- };
39
- exports.getValidateProps = getValidateProps;
40
- const getModelMetadata = (target) => {
41
- return {
42
- name: (0, exports.getModelName)(target),
43
- validator: (0, exports.getValidateProps)(target),
44
- };
45
+ export const setModelName = (target, name) => {
46
+ Reflect.defineMetadata(ModelNameMetaKey, name ?? target.name, target);
47
+ };
48
+ export const getModelName = (target) => {
49
+ const modelName = () => Reflect.getMetadata(ModelNameMetaKey, target);
50
+ if (!modelName())
51
+ setModelName(target);
52
+ return modelName();
53
+ };
54
+ const PropsValidatorMetaKey = Symbol.for("PROPS_VALIDATOR");
55
+ export const setPropsValidator = (target, validator) => {
56
+ Reflect.defineMetadata(PropsValidatorMetaKey, validator, target);
57
+ };
58
+ export const getPropsValidator = (target) => {
59
+ return Reflect.getMetadata(PropsValidatorMetaKey, target);
60
+ };
61
+ //
62
+ const OwnStaticValuesMetaKey = Symbol.for("OWN_STATIC_VALUES");
63
+ export const getOwnStaticValues = (target) => {
64
+ const ownStaticValues = () => Reflect.getOwnMetadata(OwnStaticValuesMetaKey, target);
65
+ if (!ownStaticValues())
66
+ Reflect.defineMetadata(OwnStaticValuesMetaKey, new Map(), target);
67
+ return ownStaticValues();
68
+ };
69
+ export const setStaticValue = (target, key, value) => {
70
+ const staticValues = getOwnStaticValues(target);
71
+ staticValues.set(key, new StaticValue(value));
72
+ };
73
+ export const getStaticValue = (target, key) => {
74
+ let _target = target;
75
+ do {
76
+ const staticValues = getOwnStaticValues(_target);
77
+ if (staticValues.has(key))
78
+ return staticValues.get(key)?.value;
79
+ _target = Reflect.getPrototypeOf(_target);
80
+ } while (_target !== null);
81
+ return undefined;
45
82
  };
46
- exports.getModelMetadata = getModelMetadata;
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
@@ -1,18 +1,2 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./class"), exports);
18
- __exportStar(require("./class-static"), exports);
1
+ export * from "./class";
2
+ export * from "./class-static";
@@ -1,17 +1 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./to-array"), exports);
1
+ export * from "./to-array";
@@ -1,9 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toArray = void 0;
4
- const toArray = (value) => {
5
- if (Array.isArray(value))
6
- return value;
7
- return [value];
1
+ export const toArray = (value) => {
2
+ return Array.isArray(value) ? value : [value];
8
3
  };
9
- exports.toArray = toArray;