@nestjslatam/ddd-lib 1.0.51 → 1.0.52
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.
- package/LICENSE +21 -21
- package/README.md +30 -30
- package/dist/aggregate-root.d.ts +63 -0
- package/dist/aggregate-root.js +154 -0
- package/dist/broken-rules.manager.d.ts +21 -0
- package/dist/broken-rules.manager.js +95 -0
- package/dist/core/aggregate/aggregate-equality.d.ts +16 -0
- package/dist/core/aggregate/aggregate-equality.js +33 -0
- package/dist/core/aggregate/aggregate-identity.d.ts +11 -0
- package/dist/core/aggregate/aggregate-identity.js +40 -0
- package/dist/core/aggregate/aggregate-serializer.d.ts +28 -0
- package/dist/core/aggregate/aggregate-serializer.js +38 -0
- package/dist/core/aggregate/aggregate-validation-orchestrator.d.ts +14 -0
- package/dist/core/aggregate/aggregate-validation-orchestrator.js +36 -0
- package/dist/core/aggregate/index.d.ts +5 -0
- package/dist/core/aggregate/index.js +12 -0
- package/dist/core/business-rules/impl/broken-rule.d.ts +7 -0
- package/dist/core/business-rules/impl/broken-rule.js +15 -0
- package/dist/core/business-rules/impl/broken-rules-extension.d.ts +6 -0
- package/dist/core/business-rules/impl/broken-rules-extension.js +32 -0
- package/dist/core/business-rules/impl/index.d.ts +4 -0
- package/{ddd-core/broken-rules → dist/core/business-rules/impl}/index.js +2 -1
- package/dist/core/business-rules/impl/property-change/index.d.ts +5 -0
- package/dist/core/business-rules/impl/property-change/index.js +21 -0
- package/dist/core/business-rules/impl/property-change/notify-property-changed.base.d.ts +16 -0
- package/dist/core/business-rules/impl/property-change/notify-property-changed.base.js +64 -0
- package/dist/core/business-rules/impl/property-change/notify-property-changed.context-args.d.ts +7 -0
- package/dist/core/business-rules/impl/property-change/notify-property-changed.context-args.js +12 -0
- package/dist/core/business-rules/impl/property-change/notify-property-changed.context.d.ts +11 -0
- package/dist/core/business-rules/impl/property-change/notify-property-changed.context.js +21 -0
- package/dist/core/business-rules/impl/property-change/reflection-type-extensions.d.ts +5 -0
- package/dist/core/business-rules/impl/property-change/reflection-type-extensions.js +23 -0
- package/dist/core/business-rules/index.d.ts +2 -0
- package/dist/core/index.d.ts +6 -0
- package/{ddd-core → dist/core}/index.js +5 -5
- package/dist/core/repositories/index.d.ts +3 -0
- package/dist/core/repositories/index.js +19 -0
- package/dist/core/repositories/repository-read.interface.d.ts +7 -0
- package/{ddd-commands/interfaces/command-handler.interface.js → dist/core/repositories/repository-read.interface.js} +1 -1
- package/{ddd-ports/interfaces/domain-repository-write.interface.d.ts → dist/core/repositories/repository-write.interface.d.ts} +4 -3
- package/{ddd-commands/interfaces/command-metadata.interface.js → dist/core/repositories/repository-write.interface.js} +1 -1
- package/dist/core/tracking-state/impl/index.d.ts +4 -0
- package/{ddd-core → dist/core/tracking-state}/impl/index.js +2 -2
- package/dist/core/tracking-state/impl/nested-property-change-detector.d.ts +8 -0
- package/dist/core/tracking-state/impl/nested-property-change-detector.js +38 -0
- package/{ddd-core → dist/core/tracking-state}/impl/tracking-props.d.ts +3 -0
- package/{ddd-core → dist/core/tracking-state}/impl/tracking-props.js +11 -0
- package/dist/core/tracking-state/impl/tracking-state-transition.d.ts +9 -0
- package/dist/core/tracking-state/impl/tracking-state-transition.js +34 -0
- package/{ddd-commands → dist/core/tracking-state}/index.d.ts +1 -0
- package/dist/core/tracking-state/interfaces/ichange-detector.d.ts +8 -0
- package/{ddd-commands/interfaces/command.interface.js → dist/core/tracking-state/interfaces/ichange-detector.js} +1 -1
- package/dist/core/tracking-state/interfaces/idomain-primitive.d.ts +5 -0
- package/dist/core/tracking-state/interfaces/idomain-primitive.js +3 -0
- package/dist/core/tracking-state/interfaces/index.d.ts +6 -0
- package/dist/core/tracking-state/interfaces/index.js +22 -0
- package/{ddd-core/interfaces/tracking.interface.d.ts → dist/core/tracking-state/interfaces/itracking-props.d.ts} +2 -0
- package/{ddd-core/interfaces/saga.interface.js → dist/core/tracking-state/interfaces/itracking-props.js} +1 -1
- package/dist/core/tracking-state/interfaces/itracking-state-manager.d.ts +12 -0
- package/{ddd-commands/interfaces/command-bus.interface.js → dist/core/tracking-state/interfaces/itracking-state-manager.js} +1 -1
- package/dist/core/tracking-state/interfaces/itracking-state-transitions.d.ts +7 -0
- package/dist/core/tracking-state/interfaces/itracking-state-transitions.js +3 -0
- package/dist/core/validator-rules/impl/abstract-rule-validator.d.ts +13 -0
- package/dist/core/validator-rules/impl/abstract-rule-validator.js +34 -0
- package/dist/core/validator-rules/impl/abstract-validator.d.ts +4 -0
- package/dist/core/validator-rules/impl/abstract-validator.js +7 -0
- package/dist/core/validator-rules/impl/entity-validator.d.ts +5 -0
- package/dist/core/validator-rules/impl/entity-validator.js +12 -0
- package/dist/core/validator-rules/impl/index.d.ts +5 -0
- package/{ddd-core/interfaces → dist/core/validator-rules/impl}/index.js +4 -4
- package/dist/core/validator-rules/impl/value-object-validator.d.ts +7 -0
- package/dist/core/validator-rules/impl/value-object-validator.js +15 -0
- package/{ddd-events → dist/core/validator-rules}/index.d.ts +2 -1
- package/{ddd-events → dist/core/validator-rules}/index.js +1 -1
- package/dist/core/validator-rules/interfaces/index.d.ts +3 -0
- package/{ddd-ports → dist/core/validator-rules/interfaces}/index.js +2 -1
- package/dist/core/validator-rules/interfaces/irule-context.d.ts +5 -0
- package/{ddd-commands/impl/command-types.js → dist/core/validator-rules/interfaces/irule-context.js} +1 -1
- package/dist/core/validator-rules/interfaces/irule-validator.d.ts +8 -0
- package/{ddd-core/interfaces/ddd.options.js → dist/core/validator-rules/interfaces/irule-validator.js} +1 -1
- package/dist/ddd.module.d.ts +6 -0
- package/{ddd.module.js → dist/ddd.module.js} +4 -32
- package/dist/ddd.service.d.ts +7 -0
- package/{ddd.service.js → dist/ddd.service.js} +1 -16
- package/dist/domain-event.d.ts +56 -0
- package/dist/domain-event.js +175 -0
- package/dist/enum.d.ts +28 -0
- package/dist/enum.js +129 -0
- package/dist/exceptions/domain.exception.d.ts +19 -0
- package/dist/exceptions/domain.exception.js +45 -0
- package/{ddd-helpers → dist/helpers}/datetime.helper.d.ts +1 -0
- package/{ddd-helpers → dist/helpers}/datetime.helper.js +1 -1
- package/dist/helpers/domain-object.helper.d.ts +20 -0
- package/{ddd-helpers → dist/helpers}/domain-object.helper.js +14 -19
- package/{ddd-helpers → dist/helpers}/index.d.ts +1 -0
- package/dist/index.d.ts +13 -0
- package/{ddd-events/impl → dist}/index.js +11 -7
- package/dist/state-transition.manager.d.ts +23 -0
- package/dist/state-transition.manager.js +163 -0
- package/dist/tracking-state-manager.d.ts +25 -0
- package/dist/tracking-state-manager.js +70 -0
- package/dist/validator-rule.manager.d.ts +17 -0
- package/dist/validator-rule.manager.js +80 -0
- package/dist/valueobject.d.ts +23 -0
- package/dist/valueobject.js +93 -0
- package/dist/valueobjects/id.valueobject.d.ts +16 -0
- package/dist/valueobjects/id.valueobject.js +52 -0
- package/dist/valueobjects/index.d.ts +7 -0
- package/{ddd-commands/impl → dist/valueobjects}/index.js +6 -5
- package/dist/valueobjects/number-notnull.validator.d.ts +13 -0
- package/dist/valueobjects/number-notnull.validator.js +31 -0
- package/dist/valueobjects/number-positive.validator.d.ts +13 -0
- package/dist/valueobjects/number-positive.validator.js +43 -0
- package/dist/valueobjects/number.valueobject.d.ts +25 -0
- package/dist/valueobjects/number.valueobject.js +67 -0
- package/dist/valueobjects/string-notnullorempty.validator.d.ts +14 -0
- package/dist/valueobjects/string-notnullorempty.validator.js +36 -0
- package/dist/valueobjects/string.valueobject.d.ts +27 -0
- package/dist/valueobjects/string.valueobject.js +86 -0
- package/package.json +51 -26
- package/src/types.d.ts +7 -0
- package/ddd-aggregate-root.d.ts +0 -34
- package/ddd-aggregate-root.js +0 -85
- package/ddd-aggregate-root.js.map +0 -1
- package/ddd-commands/impl/command-types.d.ts +0 -3
- package/ddd-commands/impl/command-types.js.map +0 -1
- package/ddd-commands/impl/command.base.d.ts +0 -7
- package/ddd-commands/impl/command.base.js +0 -15
- package/ddd-commands/impl/command.base.js.map +0 -1
- package/ddd-commands/impl/default-command-publisher.d.ts +0 -7
- package/ddd-commands/impl/default-command-publisher.js +0 -13
- package/ddd-commands/impl/default-command-publisher.js.map +0 -1
- package/ddd-commands/impl/domain-command-bus.d.ts +0 -18
- package/ddd-commands/impl/domain-command-bus.js +0 -71
- package/ddd-commands/impl/domain-command-bus.js.map +0 -1
- package/ddd-commands/impl/index.d.ts +0 -5
- package/ddd-commands/impl/index.js.map +0 -1
- package/ddd-commands/index.js.map +0 -1
- package/ddd-commands/interfaces/command-bus.interface.d.ts +0 -4
- package/ddd-commands/interfaces/command-bus.interface.js.map +0 -1
- package/ddd-commands/interfaces/command-handler.interface.d.ts +0 -4
- package/ddd-commands/interfaces/command-handler.interface.js.map +0 -1
- package/ddd-commands/interfaces/command-metadata.interface.d.ts +0 -4
- package/ddd-commands/interfaces/command-metadata.interface.js.map +0 -1
- package/ddd-commands/interfaces/command-publisher.interface.d.ts +0 -4
- package/ddd-commands/interfaces/command-publisher.interface.js +0 -3
- package/ddd-commands/interfaces/command-publisher.interface.js.map +0 -1
- package/ddd-commands/interfaces/command.interface.d.ts +0 -4
- package/ddd-commands/interfaces/command.interface.js.map +0 -1
- package/ddd-commands/interfaces/index.d.ts +0 -5
- package/ddd-commands/interfaces/index.js +0 -22
- package/ddd-commands/interfaces/index.js.map +0 -1
- package/ddd-core/broken-rules/broken-rule-collection.d.ts +0 -13
- package/ddd-core/broken-rules/broken-rule-collection.js +0 -54
- package/ddd-core/broken-rules/broken-rule-collection.js.map +0 -1
- package/ddd-core/broken-rules/broken-rule.d.ts +0 -5
- package/ddd-core/broken-rules/broken-rule.js +0 -13
- package/ddd-core/broken-rules/broken-rule.js.map +0 -1
- package/ddd-core/broken-rules/index.d.ts +0 -2
- package/ddd-core/broken-rules/index.js.map +0 -1
- package/ddd-core/ddd-base-classes.d.ts +0 -52
- package/ddd-core/ddd-base-classes.js +0 -173
- package/ddd-core/ddd-base-classes.js.map +0 -1
- package/ddd-core/ddd-validators.d.ts +0 -15
- package/ddd-core/ddd-validators.js +0 -70
- package/ddd-core/ddd-validators.js.map +0 -1
- package/ddd-core/impl/index.d.ts +0 -3
- package/ddd-core/impl/index.js.map +0 -1
- package/ddd-core/impl/observable-bus.d.ts +0 -6
- package/ddd-core/impl/observable-bus.js +0 -16
- package/ddd-core/impl/observable-bus.js.map +0 -1
- package/ddd-core/impl/of-type.d.ts +0 -4
- package/ddd-core/impl/of-type.js +0 -9
- package/ddd-core/impl/of-type.js.map +0 -1
- package/ddd-core/impl/tracking-props.js.map +0 -1
- package/ddd-core/index.d.ts +0 -5
- package/ddd-core/index.js.map +0 -1
- package/ddd-core/interfaces/ddd.options.d.ts +0 -7
- package/ddd-core/interfaces/ddd.options.js.map +0 -1
- package/ddd-core/interfaces/index.d.ts +0 -4
- package/ddd-core/interfaces/index.js.map +0 -1
- package/ddd-core/interfaces/message-source.interface.d.ts +0 -5
- package/ddd-core/interfaces/message-source.interface.js +0 -3
- package/ddd-core/interfaces/message-source.interface.js.map +0 -1
- package/ddd-core/interfaces/saga.interface.d.ts +0 -4
- package/ddd-core/interfaces/saga.interface.js.map +0 -1
- package/ddd-core/interfaces/tracking.interface.js +0 -3
- package/ddd-core/interfaces/tracking.interface.js.map +0 -1
- package/ddd-decorators/command-handler.decorator.d.ts +0 -3
- package/ddd-decorators/command-handler.decorator.js +0 -16
- package/ddd-decorators/command-handler.decorator.js.map +0 -1
- package/ddd-decorators/constants.d.ts +0 -5
- package/ddd-decorators/constants.js +0 -9
- package/ddd-decorators/constants.js.map +0 -1
- package/ddd-decorators/events-handler.decorator.d.ts +0 -3
- package/ddd-decorators/events-handler.decorator.js +0 -18
- package/ddd-decorators/events-handler.decorator.js.map +0 -1
- package/ddd-decorators/index.d.ts +0 -6
- package/ddd-decorators/index.js +0 -23
- package/ddd-decorators/index.js.map +0 -1
- package/ddd-decorators/reflect-command.helper.d.ts +0 -6
- package/ddd-decorators/reflect-command.helper.js +0 -25
- package/ddd-decorators/reflect-command.helper.js.map +0 -1
- package/ddd-decorators/reflect-event.helper.d.ts +0 -7
- package/ddd-decorators/reflect-event.helper.js +0 -18
- package/ddd-decorators/reflect-event.helper.js.map +0 -1
- package/ddd-decorators/saga.decorator.d.ts +0 -2
- package/ddd-decorators/saga.decorator.js +0 -13
- package/ddd-decorators/saga.decorator.js.map +0 -1
- package/ddd-events/impl/default-event-publisher.d.ts +0 -9
- package/ddd-events/impl/default-event-publisher.js +0 -16
- package/ddd-events/impl/default-event-publisher.js.map +0 -1
- package/ddd-events/impl/domain-event-bus.d.ts +0 -32
- package/ddd-events/impl/domain-event-bus.js +0 -140
- package/ddd-events/impl/domain-event-bus.js.map +0 -1
- package/ddd-events/impl/domain-event-cli.registry.d.ts +0 -6
- package/ddd-events/impl/domain-event-cli.registry.js +0 -18
- package/ddd-events/impl/domain-event-cli.registry.js.map +0 -1
- package/ddd-events/impl/domain-event-collection.d.ts +0 -11
- package/ddd-events/impl/domain-event-collection.js +0 -33
- package/ddd-events/impl/domain-event-collection.js.map +0 -1
- package/ddd-events/impl/domain-event-publisher.d.ts +0 -12
- package/ddd-events/impl/domain-event-publisher.js +0 -48
- package/ddd-events/impl/domain-event-publisher.js.map +0 -1
- package/ddd-events/impl/domain-event-types.d.ts +0 -3
- package/ddd-events/impl/domain-event-types.js +0 -3
- package/ddd-events/impl/domain-event-types.js.map +0 -1
- package/ddd-events/impl/domain-event.d.ts +0 -19
- package/ddd-events/impl/domain-event.deserializer.d.ts +0 -8
- package/ddd-events/impl/domain-event.deserializer.js +0 -31
- package/ddd-events/impl/domain-event.deserializer.js.map +0 -1
- package/ddd-events/impl/domain-event.js +0 -29
- package/ddd-events/impl/domain-event.js.map +0 -1
- package/ddd-events/impl/domain-event.serializer.d.ts +0 -6
- package/ddd-events/impl/domain-event.serializer.js +0 -45
- package/ddd-events/impl/domain-event.serializer.js.map +0 -1
- package/ddd-events/impl/index.d.ts +0 -8
- package/ddd-events/impl/index.js.map +0 -1
- package/ddd-events/index.js.map +0 -1
- package/ddd-events/interfaces/domain-event-bus.interface.d.ts +0 -5
- package/ddd-events/interfaces/domain-event-bus.interface.js +0 -3
- package/ddd-events/interfaces/domain-event-bus.interface.js.map +0 -1
- package/ddd-events/interfaces/domain-event-handler.interface.d.ts +0 -4
- package/ddd-events/interfaces/domain-event-handler.interface.js +0 -3
- package/ddd-events/interfaces/domain-event-handler.interface.js.map +0 -1
- package/ddd-events/interfaces/domain-event-metadata.interface.d.ts +0 -7
- package/ddd-events/interfaces/domain-event-metadata.interface.js +0 -3
- package/ddd-events/interfaces/domain-event-metadata.interface.js.map +0 -1
- package/ddd-events/interfaces/domain-event-publisher.interface.d.ts +0 -5
- package/ddd-events/interfaces/domain-event-publisher.interface.js +0 -3
- package/ddd-events/interfaces/domain-event-publisher.interface.js.map +0 -1
- package/ddd-events/interfaces/domain-event-serializable.interface.d.ts +0 -11
- package/ddd-events/interfaces/domain-event-serializable.interface.js +0 -3
- package/ddd-events/interfaces/domain-event-serializable.interface.js.map +0 -1
- package/ddd-events/interfaces/domain-event.interface.d.ts +0 -2
- package/ddd-events/interfaces/domain-event.interface.js +0 -3
- package/ddd-events/interfaces/domain-event.interface.js.map +0 -1
- package/ddd-events/interfaces/index.d.ts +0 -6
- package/ddd-events/interfaces/index.js +0 -23
- package/ddd-events/interfaces/index.js.map +0 -1
- package/ddd-exceptions/constants.d.ts +0 -14
- package/ddd-exceptions/constants.js +0 -18
- package/ddd-exceptions/constants.js.map +0 -1
- package/ddd-exceptions/impl/arguments-exception.d.ts +0 -10
- package/ddd-exceptions/impl/arguments-exception.js +0 -27
- package/ddd-exceptions/impl/arguments-exception.js.map +0 -1
- package/ddd-exceptions/impl/broken-rules.exeption.d.ts +0 -6
- package/ddd-exceptions/impl/broken-rules.exeption.js +0 -14
- package/ddd-exceptions/impl/broken-rules.exeption.js.map +0 -1
- package/ddd-exceptions/impl/command-exception.d.ts +0 -7
- package/ddd-exceptions/impl/command-exception.js +0 -20
- package/ddd-exceptions/impl/command-exception.js.map +0 -1
- package/ddd-exceptions/impl/common.exception.d.ts +0 -14
- package/ddd-exceptions/impl/common.exception.js +0 -29
- package/ddd-exceptions/impl/common.exception.js.map +0 -1
- package/ddd-exceptions/impl/domain-bus.exception.d.ts +0 -7
- package/ddd-exceptions/impl/domain-bus.exception.js +0 -20
- package/ddd-exceptions/impl/domain-bus.exception.js.map +0 -1
- package/ddd-exceptions/impl/domain-publisher.exception.d.ts +0 -9
- package/ddd-exceptions/impl/domain-publisher.exception.js +0 -13
- package/ddd-exceptions/impl/domain-publisher.exception.js.map +0 -1
- package/ddd-exceptions/impl/domain-unhandled-bus.exeption.d.ts +0 -16
- package/ddd-exceptions/impl/domain-unhandled-bus.exeption.js +0 -45
- package/ddd-exceptions/impl/domain-unhandled-bus.exeption.js.map +0 -1
- package/ddd-exceptions/impl/index.d.ts +0 -8
- package/ddd-exceptions/impl/index.js +0 -25
- package/ddd-exceptions/impl/index.js.map +0 -1
- package/ddd-exceptions/impl/sagas.exception.d.ts +0 -4
- package/ddd-exceptions/impl/sagas.exception.js +0 -13
- package/ddd-exceptions/impl/sagas.exception.js.map +0 -1
- package/ddd-exceptions/index.d.ts +0 -3
- package/ddd-exceptions/index.js +0 -20
- package/ddd-exceptions/index.js.map +0 -1
- package/ddd-exceptions/interfaces/exception.base.d.ts +0 -17
- package/ddd-exceptions/interfaces/exception.base.js +0 -24
- package/ddd-exceptions/interfaces/exception.base.js.map +0 -1
- package/ddd-exceptions/interfaces/index.d.ts +0 -3
- package/ddd-exceptions/interfaces/index.js +0 -20
- package/ddd-exceptions/interfaces/index.js.map +0 -1
- package/ddd-exceptions/interfaces/unhandled-exception-info.interface.d.ts +0 -6
- package/ddd-exceptions/interfaces/unhandled-exception-info.interface.js +0 -3
- package/ddd-exceptions/interfaces/unhandled-exception-info.interface.js.map +0 -1
- package/ddd-exceptions/interfaces/unhandled-exception-publisher.interface.d.ts +0 -6
- package/ddd-exceptions/interfaces/unhandled-exception-publisher.interface.js +0 -3
- package/ddd-exceptions/interfaces/unhandled-exception-publisher.interface.js.map +0 -1
- package/ddd-helpers/datetime.helper.js.map +0 -1
- package/ddd-helpers/domain-object.helper.d.ts +0 -18
- package/ddd-helpers/domain-object.helper.js.map +0 -1
- package/ddd-helpers/index.js.map +0 -1
- package/ddd-ports/index.d.ts +0 -1
- package/ddd-ports/index.js.map +0 -1
- package/ddd-ports/interfaces/domain-repository-read.interface.d.ts +0 -6
- package/ddd-ports/interfaces/domain-repository-read.interface.js +0 -3
- package/ddd-ports/interfaces/domain-repository-read.interface.js.map +0 -1
- package/ddd-ports/interfaces/domain-repository-write.interface.js +0 -3
- package/ddd-ports/interfaces/domain-repository-write.interface.js.map +0 -1
- package/ddd-ports/interfaces/index.d.ts +0 -2
- package/ddd-ports/interfaces/index.js +0 -19
- package/ddd-ports/interfaces/index.js.map +0 -1
- package/ddd-validators/impl/domain-abstract.validator.d.ts +0 -5
- package/ddd-validators/impl/domain-abstract.validator.js +0 -34
- package/ddd-validators/impl/domain-abstract.validator.js.map +0 -1
- package/ddd-validators/impl/domain-entity.validator.d.ts +0 -5
- package/ddd-validators/impl/domain-entity.validator.js +0 -12
- package/ddd-validators/impl/domain-entity.validator.js.map +0 -1
- package/ddd-validators/impl/domain-value-object.validator.d.ts +0 -11
- package/ddd-validators/impl/domain-value-object.validator.js +0 -41
- package/ddd-validators/impl/domain-value-object.validator.js.map +0 -1
- package/ddd-validators/impl/index.d.ts +0 -3
- package/ddd-validators/impl/index.js +0 -20
- package/ddd-validators/impl/index.js.map +0 -1
- package/ddd-validators/index.d.ts +0 -1
- package/ddd-validators/index.js.map +0 -1
- package/ddd-valueobjects/domain-audit.valueobject.d.ts +0 -21
- package/ddd-valueobjects/domain-audit.valueobject.js +0 -63
- package/ddd-valueobjects/domain-audit.valueobject.js.map +0 -1
- package/ddd-valueobjects/domain-date.valueobject.d.ts +0 -6
- package/ddd-valueobjects/domain-date.valueobject.js +0 -20
- package/ddd-valueobjects/domain-date.valueobject.js.map +0 -1
- package/ddd-valueobjects/domain-enum-base.valueobject.d.ts +0 -5
- package/ddd-valueobjects/domain-enum-base.valueobject.js +0 -11
- package/ddd-valueobjects/domain-enum-base.valueobject.js.map +0 -1
- package/ddd-valueobjects/domain-number-base.valueobject.d.ts +0 -6
- package/ddd-valueobjects/domain-number-base.valueobject.js +0 -22
- package/ddd-valueobjects/domain-number-base.valueobject.js.map +0 -1
- package/ddd-valueobjects/domain-string-base.valueobject.d.ts +0 -6
- package/ddd-valueobjects/domain-string-base.valueobject.js +0 -22
- package/ddd-valueobjects/domain-string-base.valueobject.js.map +0 -1
- package/ddd-valueobjects/domain-uid.valueobject.d.ts +0 -7
- package/ddd-valueobjects/domain-uid.valueobject.js +0 -29
- package/ddd-valueobjects/domain-uid.valueobject.js.map +0 -1
- package/ddd-valueobjects/index.d.ts +0 -6
- package/ddd-valueobjects/index.js +0 -23
- package/ddd-valueobjects/index.js.map +0 -1
- package/ddd.module.d.ts +0 -11
- package/ddd.module.js.map +0 -1
- package/ddd.service.d.ts +0 -14
- package/ddd.service.js.map +0 -1
- package/index.d.ts +0 -14
- package/index.js +0 -31
- package/index.js.map +0 -1
- package/tsconfig.lib.tsbuildinfo +0 -1
- /package/{ddd-validators → dist/core/business-rules}/index.js +0 -0
- /package/{ddd-commands → dist/core/tracking-state}/index.js +0 -0
- /package/{ddd-helpers → dist/helpers}/index.js +0 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ValidatorRuleManager = void 0;
|
|
4
|
+
const domain_exception_1 = require("./exceptions/domain.exception");
|
|
5
|
+
class ValidatorRuleManager {
|
|
6
|
+
constructor() {
|
|
7
|
+
this._validators = [];
|
|
8
|
+
}
|
|
9
|
+
add(rule) {
|
|
10
|
+
if (!rule) {
|
|
11
|
+
throw new domain_exception_1.ArgumentNullException('rule');
|
|
12
|
+
}
|
|
13
|
+
if (!this.hasValidatorOfType(rule.constructor)) {
|
|
14
|
+
this._validators.push(rule);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
addRange(rules) {
|
|
18
|
+
if (!rules) {
|
|
19
|
+
throw new domain_exception_1.ArgumentNullException('rules');
|
|
20
|
+
}
|
|
21
|
+
if (rules.length === 0) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
rules.forEach((rule) => this.add(rule));
|
|
25
|
+
}
|
|
26
|
+
remove(rule) {
|
|
27
|
+
if (!rule) {
|
|
28
|
+
throw new domain_exception_1.ArgumentNullException('rule');
|
|
29
|
+
}
|
|
30
|
+
const index = this._validators.indexOf(rule);
|
|
31
|
+
if (index !== -1) {
|
|
32
|
+
this._validators.splice(index, 1);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
clear() {
|
|
36
|
+
this._validators.length = 0;
|
|
37
|
+
}
|
|
38
|
+
getValidators() {
|
|
39
|
+
return Object.freeze([...this._validators]);
|
|
40
|
+
}
|
|
41
|
+
getBrokenRules() {
|
|
42
|
+
const result = [];
|
|
43
|
+
const seen = new Set();
|
|
44
|
+
for (const validator of this._validators) {
|
|
45
|
+
const brokenRules = validator.validate();
|
|
46
|
+
if (brokenRules && brokenRules.length > 0) {
|
|
47
|
+
for (const brokenRule of brokenRules) {
|
|
48
|
+
const key = this.getBrokenRuleKey(brokenRule);
|
|
49
|
+
if (!seen.has(key)) {
|
|
50
|
+
seen.add(key);
|
|
51
|
+
result.push(brokenRule);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return Object.freeze(result);
|
|
57
|
+
}
|
|
58
|
+
isEmpty() {
|
|
59
|
+
return this._validators.length === 0;
|
|
60
|
+
}
|
|
61
|
+
count() {
|
|
62
|
+
return this._validators.length;
|
|
63
|
+
}
|
|
64
|
+
has(validatorType) {
|
|
65
|
+
return this.hasValidatorOfType(validatorType);
|
|
66
|
+
}
|
|
67
|
+
findByType(validatorType) {
|
|
68
|
+
return this._validators.find((v) => v.constructor === validatorType);
|
|
69
|
+
}
|
|
70
|
+
hasValidatorOfType(validatorType) {
|
|
71
|
+
return this._validators.some((v) => v.constructor === validatorType);
|
|
72
|
+
}
|
|
73
|
+
getBrokenRuleKey(brokenRule) {
|
|
74
|
+
const property = brokenRule.property.trim().toUpperCase();
|
|
75
|
+
const message = brokenRule.message.trim().toUpperCase();
|
|
76
|
+
return `${property}:${message}`;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.ValidatorRuleManager = ValidatorRuleManager;
|
|
80
|
+
//# sourceMappingURL=validator-rule.manager.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { BrokenRulesManager } from './broken-rules.manager';
|
|
2
|
+
import { AbstractNotifyPropertyChanged, AbstractRuleValidator } from './core';
|
|
3
|
+
import { TrackingStateManager } from './tracking-state-manager';
|
|
4
|
+
import { ValidatorRuleManager } from './validator-rule.manager';
|
|
5
|
+
export declare abstract class DddValueObject<TValue> extends AbstractNotifyPropertyChanged {
|
|
6
|
+
readonly trackingState: TrackingStateManager;
|
|
7
|
+
readonly validatorRules: ValidatorRuleManager<AbstractRuleValidator<DddValueObject<TValue>>>;
|
|
8
|
+
readonly brokenRules: BrokenRulesManager;
|
|
9
|
+
get isValid(): boolean;
|
|
10
|
+
protected constructor(value: TValue);
|
|
11
|
+
private valuePropertyChanged;
|
|
12
|
+
setValue(value: TValue): void;
|
|
13
|
+
getValue(): TValue;
|
|
14
|
+
addValidators(): void;
|
|
15
|
+
private validate;
|
|
16
|
+
protected abstract getEqualityComponents(): Iterable<any>;
|
|
17
|
+
private getTypeConstructor;
|
|
18
|
+
equals(obj: unknown): boolean;
|
|
19
|
+
getHashCode(): number;
|
|
20
|
+
getCopy(): DddValueObject<TValue>;
|
|
21
|
+
clone(): object;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=valueobject.d.ts.map
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DddValueObject = void 0;
|
|
4
|
+
const broken_rules_manager_1 = require("./broken-rules.manager");
|
|
5
|
+
const core_1 = require("./core");
|
|
6
|
+
const domain_exception_1 = require("./exceptions/domain.exception");
|
|
7
|
+
const tracking_state_manager_1 = require("./tracking-state-manager");
|
|
8
|
+
const validator_rule_manager_1 = require("./validator-rule.manager");
|
|
9
|
+
class DddValueObject extends core_1.AbstractNotifyPropertyChanged {
|
|
10
|
+
get isValid() {
|
|
11
|
+
return this.brokenRules.getBrokenRules().length === 0;
|
|
12
|
+
}
|
|
13
|
+
constructor(value) {
|
|
14
|
+
super();
|
|
15
|
+
if (value === null || value === undefined) {
|
|
16
|
+
throw new domain_exception_1.ArgumentNullException('value');
|
|
17
|
+
}
|
|
18
|
+
this.brokenRules = new broken_rules_manager_1.BrokenRulesManager();
|
|
19
|
+
this.validatorRules = new validator_rule_manager_1.ValidatorRuleManager();
|
|
20
|
+
this.trackingState = new tracking_state_manager_1.TrackingStateManager();
|
|
21
|
+
const valueType = this.getTypeConstructor(typeof value, value);
|
|
22
|
+
this.registerProperty('internalValue', valueType, value, this.valuePropertyChanged.bind(this));
|
|
23
|
+
this.trackingState.markAsNew();
|
|
24
|
+
this.addValidators();
|
|
25
|
+
this.validate();
|
|
26
|
+
}
|
|
27
|
+
valuePropertyChanged() {
|
|
28
|
+
this.trackingState.markAsDirty();
|
|
29
|
+
this.validate();
|
|
30
|
+
}
|
|
31
|
+
setValue(value) {
|
|
32
|
+
if (value === null || value === undefined) {
|
|
33
|
+
throw new domain_exception_1.ArgumentNullException('value');
|
|
34
|
+
}
|
|
35
|
+
this.setValuePropertyChanged(value, 'internalValue');
|
|
36
|
+
}
|
|
37
|
+
getValue() {
|
|
38
|
+
return this.getValuePropertyChanged('internalValue');
|
|
39
|
+
}
|
|
40
|
+
addValidators() {
|
|
41
|
+
}
|
|
42
|
+
validate() {
|
|
43
|
+
this.brokenRules.clear();
|
|
44
|
+
const brokenRulesArray = this.validatorRules.getBrokenRules();
|
|
45
|
+
if (brokenRulesArray && brokenRulesArray.length > 0) {
|
|
46
|
+
this.brokenRules.addRange(brokenRulesArray);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
getTypeConstructor(typeString, value) {
|
|
50
|
+
const typeMap = {
|
|
51
|
+
string: String,
|
|
52
|
+
number: Number,
|
|
53
|
+
boolean: Boolean,
|
|
54
|
+
symbol: Symbol,
|
|
55
|
+
bigint: BigInt,
|
|
56
|
+
};
|
|
57
|
+
if (typeString in typeMap) {
|
|
58
|
+
return typeMap[typeString];
|
|
59
|
+
}
|
|
60
|
+
if (value?.constructor) {
|
|
61
|
+
return value.constructor;
|
|
62
|
+
}
|
|
63
|
+
return typeString;
|
|
64
|
+
}
|
|
65
|
+
equals(obj) {
|
|
66
|
+
if (obj === null ||
|
|
67
|
+
obj === undefined ||
|
|
68
|
+
Object.getPrototypeOf(this) !== Object.getPrototypeOf(obj)) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
const other = obj;
|
|
72
|
+
const thisComponents = Array.from(this.getEqualityComponents());
|
|
73
|
+
const otherComponents = Array.from(other.getEqualityComponents());
|
|
74
|
+
if (thisComponents.length !== otherComponents.length)
|
|
75
|
+
return false;
|
|
76
|
+
return thisComponents.every((val, index) => val === otherComponents[index]);
|
|
77
|
+
}
|
|
78
|
+
getHashCode() {
|
|
79
|
+
const components = Array.from(this.getEqualityComponents());
|
|
80
|
+
return components.reduce((hash, item) => {
|
|
81
|
+
const itemHash = item ? JSON.stringify(item).length : 0;
|
|
82
|
+
return Math.trunc((hash << 5) - hash + itemHash);
|
|
83
|
+
}, 0);
|
|
84
|
+
}
|
|
85
|
+
getCopy() {
|
|
86
|
+
return Object.assign(Object.create(Object.getPrototypeOf(this)), this);
|
|
87
|
+
}
|
|
88
|
+
clone() {
|
|
89
|
+
return this.getCopy();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
exports.DddValueObject = DddValueObject;
|
|
93
|
+
//# sourceMappingURL=valueobject.js.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { DddValueObject } from '../valueobject';
|
|
2
|
+
export declare class IdValueObject extends DddValueObject<string> {
|
|
3
|
+
protected constructor(value: string);
|
|
4
|
+
addValidators(): void;
|
|
5
|
+
static create(): IdValueObject;
|
|
6
|
+
static load(value: string): IdValueObject;
|
|
7
|
+
static loadFromString(value: string): IdValueObject;
|
|
8
|
+
protected getEqualityComponents(): Iterable<any>;
|
|
9
|
+
static empty(): IdValueObject;
|
|
10
|
+
static get defaultValue(): IdValueObject;
|
|
11
|
+
isEmpty(): boolean;
|
|
12
|
+
isDefault(): boolean;
|
|
13
|
+
toString(): string;
|
|
14
|
+
toJSON(): string;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=id.valueobject.d.ts.map
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IdValueObject = void 0;
|
|
4
|
+
const uuid_1 = require("uuid");
|
|
5
|
+
const valueobject_1 = require("../valueobject");
|
|
6
|
+
const domain_exception_1 = require("../exceptions/domain.exception");
|
|
7
|
+
class IdValueObject extends valueobject_1.DddValueObject {
|
|
8
|
+
constructor(value) {
|
|
9
|
+
super(value);
|
|
10
|
+
}
|
|
11
|
+
addValidators() {
|
|
12
|
+
super.addValidators();
|
|
13
|
+
}
|
|
14
|
+
static create() {
|
|
15
|
+
return new IdValueObject((0, uuid_1.v4)());
|
|
16
|
+
}
|
|
17
|
+
static load(value) {
|
|
18
|
+
if (value === null || value === undefined) {
|
|
19
|
+
throw new domain_exception_1.ArgumentNullException('value');
|
|
20
|
+
}
|
|
21
|
+
if (!(0, uuid_1.validate)(value)) {
|
|
22
|
+
throw new domain_exception_1.InvalidFormatException('value', 'valid UUID v4', value);
|
|
23
|
+
}
|
|
24
|
+
return new IdValueObject(value);
|
|
25
|
+
}
|
|
26
|
+
static loadFromString(value) {
|
|
27
|
+
return IdValueObject.load(value);
|
|
28
|
+
}
|
|
29
|
+
getEqualityComponents() {
|
|
30
|
+
return [this.getValue()];
|
|
31
|
+
}
|
|
32
|
+
static empty() {
|
|
33
|
+
return new IdValueObject('00000000-0000-0000-0000-000000000000');
|
|
34
|
+
}
|
|
35
|
+
static get defaultValue() {
|
|
36
|
+
return IdValueObject.empty();
|
|
37
|
+
}
|
|
38
|
+
isEmpty() {
|
|
39
|
+
return this.getValue() === '00000000-0000-0000-0000-000000000000';
|
|
40
|
+
}
|
|
41
|
+
isDefault() {
|
|
42
|
+
return this.isEmpty();
|
|
43
|
+
}
|
|
44
|
+
toString() {
|
|
45
|
+
return this.getValue();
|
|
46
|
+
}
|
|
47
|
+
toJSON() {
|
|
48
|
+
return this.getValue();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.IdValueObject = IdValueObject;
|
|
52
|
+
//# sourceMappingURL=id.valueobject.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './id.valueobject';
|
|
2
|
+
export * from './string.valueobject';
|
|
3
|
+
export * from './string-notnullorempty.validator';
|
|
4
|
+
export * from './number.valueobject';
|
|
5
|
+
export * from './number-notnull.validator';
|
|
6
|
+
export * from './number-positive.validator';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -14,9 +14,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
18
|
-
__exportStar(require("./
|
|
19
|
-
__exportStar(require("./
|
|
20
|
-
__exportStar(require("
|
|
21
|
-
__exportStar(require("./
|
|
17
|
+
__exportStar(require("./id.valueobject"), exports);
|
|
18
|
+
__exportStar(require("./string.valueobject"), exports);
|
|
19
|
+
__exportStar(require("./string-notnullorempty.validator"), exports);
|
|
20
|
+
__exportStar(require("./number.valueobject"), exports);
|
|
21
|
+
__exportStar(require("./number-notnull.validator"), exports);
|
|
22
|
+
__exportStar(require("./number-positive.validator"), exports);
|
|
22
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AbstractRuleValidator } from '../core';
|
|
2
|
+
import { DddValueObject } from '../valueobject';
|
|
3
|
+
export declare class NumberNotNullValidator extends AbstractRuleValidator<DddValueObject<number>> {
|
|
4
|
+
private readonly options;
|
|
5
|
+
constructor(subject: DddValueObject<number>, options?: Partial<NumberValidationOptions>);
|
|
6
|
+
addRules(): void;
|
|
7
|
+
}
|
|
8
|
+
export interface NumberValidationOptions {
|
|
9
|
+
allowNaN: boolean;
|
|
10
|
+
allowInfinity: boolean;
|
|
11
|
+
propertyName: string;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=number-notnull.validator.d.ts.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NumberNotNullValidator = void 0;
|
|
4
|
+
const core_1 = require("../core");
|
|
5
|
+
class NumberNotNullValidator extends core_1.AbstractRuleValidator {
|
|
6
|
+
constructor(subject, options) {
|
|
7
|
+
super(subject);
|
|
8
|
+
this.options = {
|
|
9
|
+
allowNaN: false,
|
|
10
|
+
allowInfinity: false,
|
|
11
|
+
propertyName: 'value',
|
|
12
|
+
...options,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
addRules() {
|
|
16
|
+
const value = this.subject.getValue();
|
|
17
|
+
const propertyName = this.options.propertyName;
|
|
18
|
+
if (value === null || value === undefined) {
|
|
19
|
+
this.addBrokenRule(propertyName, `${propertyName} cannot be null or undefined`);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (!this.options.allowNaN && Number.isNaN(value)) {
|
|
23
|
+
this.addBrokenRule(propertyName, `${propertyName} cannot be NaN`);
|
|
24
|
+
}
|
|
25
|
+
if (!this.options.allowInfinity && !Number.isFinite(value)) {
|
|
26
|
+
this.addBrokenRule(propertyName, `${propertyName} must be a finite number`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.NumberNotNullValidator = NumberNotNullValidator;
|
|
31
|
+
//# sourceMappingURL=number-notnull.validator.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AbstractRuleValidator } from '../core';
|
|
2
|
+
import { DddValueObject } from '../valueobject';
|
|
3
|
+
export declare class NumberPositiveValidator extends AbstractRuleValidator<DddValueObject<number>> {
|
|
4
|
+
private readonly options;
|
|
5
|
+
constructor(subject: DddValueObject<number>, options?: Partial<NumberPositiveValidationOptions>);
|
|
6
|
+
addRules(): void;
|
|
7
|
+
}
|
|
8
|
+
export interface NumberPositiveValidationOptions {
|
|
9
|
+
allowZero: boolean;
|
|
10
|
+
propertyName: string;
|
|
11
|
+
epsilon: number;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=number-positive.validator.d.ts.map
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NumberPositiveValidator = void 0;
|
|
4
|
+
const core_1 = require("../core");
|
|
5
|
+
class NumberPositiveValidator extends core_1.AbstractRuleValidator {
|
|
6
|
+
constructor(subject, options) {
|
|
7
|
+
super(subject);
|
|
8
|
+
this.options = {
|
|
9
|
+
allowZero: false,
|
|
10
|
+
propertyName: 'value',
|
|
11
|
+
epsilon: 0,
|
|
12
|
+
...options,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
addRules() {
|
|
16
|
+
const value = this.subject.getValue();
|
|
17
|
+
const propertyName = this.options.propertyName;
|
|
18
|
+
if (value === null || value === undefined) {
|
|
19
|
+
this.addBrokenRule(propertyName, `${propertyName} cannot be null or undefined`);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (Number.isNaN(value)) {
|
|
23
|
+
this.addBrokenRule(propertyName, `${propertyName} cannot be NaN`);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (!Number.isFinite(value)) {
|
|
27
|
+
this.addBrokenRule(propertyName, `${propertyName} must be a finite number`);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (this.options.allowZero) {
|
|
31
|
+
if (value < -this.options.epsilon) {
|
|
32
|
+
this.addBrokenRule(propertyName, `${propertyName} must be non-negative (greater than or equal to zero)`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
if (value <= this.options.epsilon) {
|
|
37
|
+
this.addBrokenRule(propertyName, `${propertyName} must be a positive number (greater than zero)`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.NumberPositiveValidator = NumberPositiveValidator;
|
|
43
|
+
//# sourceMappingURL=number-positive.validator.js.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { DddValueObject } from '../valueobject';
|
|
2
|
+
export declare class NumberValueObject extends DddValueObject<number> {
|
|
3
|
+
private readonly options;
|
|
4
|
+
protected constructor(value: number, options?: Partial<NumberValueObjectOptions>);
|
|
5
|
+
static create(value: number, options?: Partial<NumberValueObjectOptions>): NumberValueObject;
|
|
6
|
+
static load(value: number, options?: Partial<NumberValueObjectOptions>): NumberValueObject;
|
|
7
|
+
static zero(options?: Partial<NumberValueObjectOptions>): NumberValueObject;
|
|
8
|
+
static one(options?: Partial<NumberValueObjectOptions>): NumberValueObject;
|
|
9
|
+
isZero(): boolean;
|
|
10
|
+
isPositive(): boolean;
|
|
11
|
+
isNegative(): boolean;
|
|
12
|
+
toNumber(): number;
|
|
13
|
+
toString(): string;
|
|
14
|
+
toJSON(): number;
|
|
15
|
+
protected getEqualityComponents(): Iterable<any>;
|
|
16
|
+
addValidators(): void;
|
|
17
|
+
}
|
|
18
|
+
export interface NumberValueObjectOptions {
|
|
19
|
+
requirePositive: boolean;
|
|
20
|
+
allowZero: boolean;
|
|
21
|
+
allowNaN: boolean;
|
|
22
|
+
allowInfinity: boolean;
|
|
23
|
+
epsilon: number;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=number.valueobject.d.ts.map
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NumberValueObject = void 0;
|
|
4
|
+
const valueobject_1 = require("../valueobject");
|
|
5
|
+
const number_notnull_validator_1 = require("./number-notnull.validator");
|
|
6
|
+
const number_positive_validator_1 = require("./number-positive.validator");
|
|
7
|
+
class NumberValueObject extends valueobject_1.DddValueObject {
|
|
8
|
+
constructor(value, options) {
|
|
9
|
+
super(value);
|
|
10
|
+
this.options = {
|
|
11
|
+
requirePositive: true,
|
|
12
|
+
allowZero: false,
|
|
13
|
+
allowNaN: false,
|
|
14
|
+
allowInfinity: false,
|
|
15
|
+
epsilon: 0,
|
|
16
|
+
...options,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
static create(value, options) {
|
|
20
|
+
return new NumberValueObject(value, options);
|
|
21
|
+
}
|
|
22
|
+
static load(value, options) {
|
|
23
|
+
return new NumberValueObject(value, options);
|
|
24
|
+
}
|
|
25
|
+
static zero(options) {
|
|
26
|
+
return new NumberValueObject(0, { ...options, allowZero: true });
|
|
27
|
+
}
|
|
28
|
+
static one(options) {
|
|
29
|
+
return new NumberValueObject(1, options);
|
|
30
|
+
}
|
|
31
|
+
isZero() {
|
|
32
|
+
return this.getValue() === 0;
|
|
33
|
+
}
|
|
34
|
+
isPositive() {
|
|
35
|
+
return this.getValue() > 0;
|
|
36
|
+
}
|
|
37
|
+
isNegative() {
|
|
38
|
+
return this.getValue() < 0;
|
|
39
|
+
}
|
|
40
|
+
toNumber() {
|
|
41
|
+
return this.getValue();
|
|
42
|
+
}
|
|
43
|
+
toString() {
|
|
44
|
+
return this.getValue().toString();
|
|
45
|
+
}
|
|
46
|
+
toJSON() {
|
|
47
|
+
return this.getValue();
|
|
48
|
+
}
|
|
49
|
+
getEqualityComponents() {
|
|
50
|
+
return [this.getValue()];
|
|
51
|
+
}
|
|
52
|
+
addValidators() {
|
|
53
|
+
super.addValidators();
|
|
54
|
+
this.validatorRules.add(new number_notnull_validator_1.NumberNotNullValidator(this, {
|
|
55
|
+
allowNaN: this.options.allowNaN,
|
|
56
|
+
allowInfinity: this.options.allowInfinity,
|
|
57
|
+
}));
|
|
58
|
+
if (this.options.requirePositive) {
|
|
59
|
+
this.validatorRules.add(new number_positive_validator_1.NumberPositiveValidator(this, {
|
|
60
|
+
allowZero: this.options.allowZero,
|
|
61
|
+
epsilon: this.options.epsilon,
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.NumberValueObject = NumberValueObject;
|
|
67
|
+
//# sourceMappingURL=number.valueobject.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AbstractRuleValidator } from '../core';
|
|
2
|
+
import { DddValueObject } from '../valueobject';
|
|
3
|
+
export declare class StringNotNullOrEmptyValidator extends AbstractRuleValidator<DddValueObject<string>> {
|
|
4
|
+
private readonly options;
|
|
5
|
+
constructor(subject: DddValueObject<string>, options?: Partial<StringValidationOptions>);
|
|
6
|
+
addRules(): void;
|
|
7
|
+
}
|
|
8
|
+
export interface StringValidationOptions {
|
|
9
|
+
allowEmpty: boolean;
|
|
10
|
+
trimWhitespace: boolean;
|
|
11
|
+
minLength: number;
|
|
12
|
+
propertyName: string;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=string-notnullorempty.validator.d.ts.map
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StringNotNullOrEmptyValidator = void 0;
|
|
4
|
+
const core_1 = require("../core");
|
|
5
|
+
class StringNotNullOrEmptyValidator extends core_1.AbstractRuleValidator {
|
|
6
|
+
constructor(subject, options) {
|
|
7
|
+
super(subject);
|
|
8
|
+
this.options = {
|
|
9
|
+
allowEmpty: false,
|
|
10
|
+
trimWhitespace: false,
|
|
11
|
+
minLength: 0,
|
|
12
|
+
propertyName: 'value',
|
|
13
|
+
...options,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
addRules() {
|
|
17
|
+
let value = this.subject.getValue();
|
|
18
|
+
const propertyName = this.options.propertyName;
|
|
19
|
+
if (value === null || value === undefined) {
|
|
20
|
+
this.addBrokenRule(propertyName, `${propertyName} cannot be null or undefined`);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (this.options.trimWhitespace) {
|
|
24
|
+
value = value.trim();
|
|
25
|
+
}
|
|
26
|
+
if (!this.options.allowEmpty && value === '') {
|
|
27
|
+
this.addBrokenRule(propertyName, `${propertyName} cannot be empty${this.options.trimWhitespace ? ' or contain only whitespace' : ''}`);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (this.options.minLength > 0 && value.length < this.options.minLength) {
|
|
31
|
+
this.addBrokenRule(propertyName, `${propertyName} must be at least ${this.options.minLength} character${this.options.minLength === 1 ? '' : 's'} long (current length: ${value.length})`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.StringNotNullOrEmptyValidator = StringNotNullOrEmptyValidator;
|
|
36
|
+
//# sourceMappingURL=string-notnullorempty.validator.js.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { DddValueObject } from '../valueobject';
|
|
2
|
+
export declare class StringValueObject extends DddValueObject<string> {
|
|
3
|
+
private readonly options;
|
|
4
|
+
protected constructor(value: string, options?: Partial<StringValueObjectOptions>);
|
|
5
|
+
static create(value: string, options?: Partial<StringValueObjectOptions>): StringValueObject;
|
|
6
|
+
static load(value: string, options?: Partial<StringValueObjectOptions>): StringValueObject;
|
|
7
|
+
static empty(options?: Partial<StringValueObjectOptions>): StringValueObject;
|
|
8
|
+
isEmpty(): boolean;
|
|
9
|
+
get length(): number;
|
|
10
|
+
toUpperCase(): string;
|
|
11
|
+
toLowerCase(): string;
|
|
12
|
+
trim(): string;
|
|
13
|
+
contains(substring: string): boolean;
|
|
14
|
+
startsWith(prefix: string): boolean;
|
|
15
|
+
endsWith(suffix: string): boolean;
|
|
16
|
+
toString(): string;
|
|
17
|
+
toJSON(): string;
|
|
18
|
+
protected getEqualityComponents(): Iterable<any>;
|
|
19
|
+
addValidators(): void;
|
|
20
|
+
}
|
|
21
|
+
export interface StringValueObjectOptions {
|
|
22
|
+
allowEmpty: boolean;
|
|
23
|
+
trimWhitespace: boolean;
|
|
24
|
+
minLength: number;
|
|
25
|
+
maxLength: number;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=string.valueobject.d.ts.map
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StringValueObject = void 0;
|
|
4
|
+
const valueobject_1 = require("../valueobject");
|
|
5
|
+
const string_notnullorempty_validator_1 = require("./string-notnullorempty.validator");
|
|
6
|
+
class StringValueObject extends valueobject_1.DddValueObject {
|
|
7
|
+
constructor(value, options) {
|
|
8
|
+
super(value);
|
|
9
|
+
this.options = {
|
|
10
|
+
allowEmpty: false,
|
|
11
|
+
trimWhitespace: false,
|
|
12
|
+
minLength: 0,
|
|
13
|
+
maxLength: Number.MAX_SAFE_INTEGER,
|
|
14
|
+
...options,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
static create(value, options) {
|
|
18
|
+
return new StringValueObject(value, options);
|
|
19
|
+
}
|
|
20
|
+
static load(value, options) {
|
|
21
|
+
return new StringValueObject(value, options);
|
|
22
|
+
}
|
|
23
|
+
static empty(options) {
|
|
24
|
+
return new StringValueObject('', { ...options, allowEmpty: true });
|
|
25
|
+
}
|
|
26
|
+
isEmpty() {
|
|
27
|
+
return this.getValue() === '';
|
|
28
|
+
}
|
|
29
|
+
get length() {
|
|
30
|
+
return this.getValue().length;
|
|
31
|
+
}
|
|
32
|
+
toUpperCase() {
|
|
33
|
+
return this.getValue().toUpperCase();
|
|
34
|
+
}
|
|
35
|
+
toLowerCase() {
|
|
36
|
+
return this.getValue().toLowerCase();
|
|
37
|
+
}
|
|
38
|
+
trim() {
|
|
39
|
+
return this.getValue().trim();
|
|
40
|
+
}
|
|
41
|
+
contains(substring) {
|
|
42
|
+
return this.getValue().includes(substring);
|
|
43
|
+
}
|
|
44
|
+
startsWith(prefix) {
|
|
45
|
+
return this.getValue().startsWith(prefix);
|
|
46
|
+
}
|
|
47
|
+
endsWith(suffix) {
|
|
48
|
+
return this.getValue().endsWith(suffix);
|
|
49
|
+
}
|
|
50
|
+
toString() {
|
|
51
|
+
return this.getValue();
|
|
52
|
+
}
|
|
53
|
+
toJSON() {
|
|
54
|
+
return this.getValue();
|
|
55
|
+
}
|
|
56
|
+
getEqualityComponents() {
|
|
57
|
+
return [this.getValue()];
|
|
58
|
+
}
|
|
59
|
+
addValidators() {
|
|
60
|
+
super.addValidators();
|
|
61
|
+
const options = this.options || {
|
|
62
|
+
allowEmpty: false,
|
|
63
|
+
trimWhitespace: false,
|
|
64
|
+
minLength: 0,
|
|
65
|
+
maxLength: Number.MAX_SAFE_INTEGER,
|
|
66
|
+
};
|
|
67
|
+
this.validatorRules.add(new string_notnullorempty_validator_1.StringNotNullOrEmptyValidator(this, {
|
|
68
|
+
allowEmpty: options.allowEmpty,
|
|
69
|
+
trimWhitespace: options.trimWhitespace,
|
|
70
|
+
minLength: options.minLength,
|
|
71
|
+
}));
|
|
72
|
+
if (options.maxLength !== undefined &&
|
|
73
|
+
options.maxLength < Number.MAX_SAFE_INTEGER) {
|
|
74
|
+
const value = this.getValue();
|
|
75
|
+
if (value && value.length > options.maxLength) {
|
|
76
|
+
this.validatorRules.add({
|
|
77
|
+
addRules: () => {
|
|
78
|
+
this.validatorRules['addBrokenRule']('value', `value must not exceed ${options.maxLength} characters (current length: ${value.length})`);
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.StringValueObject = StringValueObject;
|
|
86
|
+
//# sourceMappingURL=string.valueobject.js.map
|