@woltz/rich-domain 1.3.2 → 1.4.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.
- package/README.md +21 -0
- package/dist/{aggregate-changes.d.ts → cjs/aggregate-changes.d.ts} +2 -2
- package/dist/cjs/aggregate-changes.d.ts.map +1 -0
- package/dist/cjs/aggregate-changes.js +365 -0
- package/dist/cjs/aggregate-changes.js.map +1 -0
- package/dist/{base-entity.d.ts → cjs/base-entity.d.ts} +5 -5
- package/dist/cjs/base-entity.d.ts.map +1 -0
- package/dist/cjs/base-entity.js +328 -0
- package/dist/cjs/base-entity.js.map +1 -0
- package/dist/{change-tracker.d.ts → cjs/change-tracker.d.ts} +2 -2
- package/dist/cjs/change-tracker.d.ts.map +1 -0
- package/dist/cjs/change-tracker.js +789 -0
- package/dist/cjs/change-tracker.js.map +1 -0
- package/dist/cjs/constants.d.ts.map +1 -0
- package/dist/cjs/constants.js +74 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/{criteria.d.ts → cjs/criteria.d.ts} +1 -1
- package/dist/cjs/criteria.d.ts.map +1 -0
- package/dist/cjs/criteria.js +335 -0
- package/dist/{criteria.js.map → cjs/criteria.js.map} +1 -1
- package/dist/cjs/crypto.d.ts.map +1 -0
- package/dist/cjs/crypto.js +32 -0
- package/dist/cjs/crypto.js.map +1 -0
- package/dist/cjs/domain-event-bus.d.ts.map +1 -0
- package/dist/cjs/domain-event-bus.js +108 -0
- package/dist/cjs/domain-event-bus.js.map +1 -0
- package/dist/{domain-event.d.ts → cjs/domain-event.d.ts} +1 -1
- package/dist/cjs/domain-event.d.ts.map +1 -0
- package/dist/cjs/domain-event.js +47 -0
- package/dist/cjs/domain-event.js.map +1 -0
- package/dist/{entity-changes.d.ts → cjs/entity-changes.d.ts} +1 -1
- package/dist/cjs/entity-changes.d.ts.map +1 -0
- package/dist/cjs/entity-changes.js +136 -0
- package/dist/cjs/entity-changes.js.map +1 -0
- package/dist/{entity-schema-registry.d.ts → cjs/entity-schema-registry.d.ts} +2 -2
- package/dist/cjs/entity-schema-registry.d.ts.map +1 -0
- package/dist/cjs/entity-schema-registry.js +370 -0
- package/dist/cjs/entity-schema-registry.js.map +1 -0
- package/dist/{entity.d.ts → cjs/entity.d.ts} +2 -2
- package/dist/cjs/entity.d.ts.map +1 -0
- package/dist/cjs/entity.js +11 -0
- package/dist/cjs/entity.js.map +1 -0
- package/dist/cjs/exceptions.d.ts.map +1 -0
- package/dist/cjs/exceptions.js +365 -0
- package/dist/cjs/exceptions.js.map +1 -0
- package/dist/cjs/id.d.ts.map +1 -0
- package/dist/cjs/id.js +80 -0
- package/dist/cjs/id.js.map +1 -0
- package/dist/{index.d.ts → cjs/index.d.ts} +16 -16
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +47 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/mapper.d.ts.map +1 -0
- package/dist/cjs/mapper.js +7 -0
- package/dist/cjs/mapper.js.map +1 -0
- package/dist/{paginated-result.d.ts → cjs/paginated-result.d.ts} +2 -2
- package/dist/cjs/paginated-result.d.ts.map +1 -0
- package/dist/cjs/paginated-result.js +194 -0
- package/dist/cjs/paginated-result.js.map +1 -0
- package/dist/{repository → cjs/repository}/base-repository.d.ts +4 -4
- package/dist/cjs/repository/base-repository.d.ts.map +1 -0
- package/dist/cjs/repository/base-repository.js +16 -0
- package/dist/cjs/repository/base-repository.js.map +1 -0
- package/dist/cjs/repository/index.d.ts +4 -0
- package/dist/cjs/repository/index.d.ts.map +1 -0
- package/dist/cjs/repository/index.js +24 -0
- package/dist/cjs/repository/index.js.map +1 -0
- package/dist/{repository → cjs/repository}/unit-of-work.d.ts +1 -1
- package/dist/cjs/repository/unit-of-work.d.ts.map +1 -0
- package/dist/cjs/repository/unit-of-work.js +60 -0
- package/dist/cjs/repository/unit-of-work.js.map +1 -0
- package/dist/cjs/types/change-tracker.d.ts +226 -0
- package/dist/cjs/types/change-tracker.d.ts.map +1 -0
- package/dist/cjs/types/change-tracker.js +3 -0
- package/dist/cjs/types/change-tracker.js.map +1 -0
- package/dist/cjs/types/criteria.d.ts +60 -0
- package/dist/cjs/types/criteria.d.ts.map +1 -0
- package/dist/cjs/types/criteria.js +20 -0
- package/dist/cjs/types/criteria.js.map +1 -0
- package/dist/cjs/types/domain-event.d.ts +32 -0
- package/dist/cjs/types/domain-event.d.ts.map +1 -0
- package/dist/cjs/types/domain-event.js +3 -0
- package/dist/{types → cjs/types}/domain-event.js.map +1 -1
- package/dist/{types → cjs/types}/domain.d.ts +2 -2
- package/dist/cjs/types/domain.d.ts.map +1 -0
- package/dist/cjs/types/domain.js +3 -0
- package/dist/{types → cjs/types}/domain.js.map +1 -1
- package/dist/cjs/types/index.d.ts +8 -0
- package/dist/cjs/types/index.d.ts.map +1 -0
- package/dist/cjs/types/index.js +24 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/standard-schema.d.ts.map +1 -0
- package/dist/cjs/types/standard-schema.js +3 -0
- package/dist/cjs/types/standard-schema.js.map +1 -0
- package/dist/{types → cjs/types}/unit-of-work.d.ts +2 -2
- package/dist/cjs/types/unit-of-work.d.ts.map +1 -0
- package/dist/cjs/types/unit-of-work.js +3 -0
- package/dist/{types → cjs/types}/unit-of-work.js.map +1 -1
- package/dist/{types → cjs/types}/utils.d.ts +1 -1
- package/dist/cjs/types/utils.d.ts.map +1 -0
- package/dist/cjs/types/utils.js +3 -0
- package/dist/{types → cjs/types}/utils.js.map +1 -1
- package/dist/{utils → cjs/utils}/criteria-operator-validation.d.ts +1 -1
- package/dist/cjs/utils/criteria-operator-validation.d.ts.map +1 -0
- package/dist/cjs/utils/criteria-operator-validation.js +171 -0
- package/dist/cjs/utils/criteria-operator-validation.js.map +1 -0
- package/dist/cjs/utils/helpers.d.ts.map +1 -0
- package/dist/cjs/utils/helpers.js +37 -0
- package/dist/cjs/utils/helpers.js.map +1 -0
- package/dist/cjs/validation-error.d.ts.map +1 -0
- package/dist/cjs/validation-error.js +117 -0
- package/dist/cjs/validation-error.js.map +1 -0
- package/dist/{value-object.d.ts → cjs/value-object.d.ts} +2 -2
- package/dist/cjs/value-object.d.ts.map +1 -0
- package/dist/cjs/value-object.js +192 -0
- package/dist/cjs/value-object.js.map +1 -0
- package/dist/esm/aggregate-changes.d.ts +206 -0
- package/dist/esm/aggregate-changes.d.ts.map +1 -0
- package/dist/{aggregate-changes.js → esm/aggregate-changes.js} +1 -1
- package/dist/esm/aggregate-changes.js.map +1 -0
- package/dist/esm/base-entity.d.ts +91 -0
- package/dist/esm/base-entity.d.ts.map +1 -0
- package/dist/{base-entity.js → esm/base-entity.js} +5 -5
- package/dist/esm/base-entity.js.map +1 -0
- package/dist/esm/change-tracker.d.ts +98 -0
- package/dist/esm/change-tracker.d.ts.map +1 -0
- package/dist/{change-tracker.js → esm/change-tracker.js} +4 -4
- package/dist/esm/change-tracker.js.map +1 -0
- package/dist/esm/constants.d.ts +9 -0
- package/dist/esm/constants.d.ts.map +1 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/criteria.d.ts +62 -0
- package/dist/esm/criteria.d.ts.map +1 -0
- package/dist/{criteria.js → esm/criteria.js} +3 -3
- package/dist/esm/criteria.js.map +1 -0
- package/dist/esm/crypto.d.ts +3 -0
- package/dist/esm/crypto.d.ts.map +1 -0
- package/dist/esm/crypto.js.map +1 -0
- package/dist/esm/domain-event-bus.d.ts +56 -0
- package/dist/esm/domain-event-bus.d.ts.map +1 -0
- package/dist/esm/domain-event-bus.js.map +1 -0
- package/dist/esm/domain-event.d.ts +25 -0
- package/dist/esm/domain-event.d.ts.map +1 -0
- package/dist/{domain-event.js → esm/domain-event.js} +1 -1
- package/dist/esm/domain-event.js.map +1 -0
- package/dist/esm/entity-changes.d.ts +84 -0
- package/dist/esm/entity-changes.d.ts.map +1 -0
- package/dist/esm/entity-changes.js.map +1 -0
- package/dist/esm/entity-schema-registry.d.ts +282 -0
- package/dist/esm/entity-schema-registry.d.ts.map +1 -0
- package/dist/{entity-schema-registry.js → esm/entity-schema-registry.js} +5 -5
- package/dist/esm/entity-schema-registry.js.map +1 -0
- package/dist/esm/entity.d.ts +7 -0
- package/dist/esm/entity.d.ts.map +1 -0
- package/dist/{entity.js → esm/entity.js} +1 -1
- package/dist/esm/entity.js.map +1 -0
- package/dist/esm/exceptions.d.ts +251 -0
- package/dist/esm/exceptions.d.ts.map +1 -0
- package/dist/esm/exceptions.js.map +1 -0
- package/dist/esm/id.d.ts +52 -0
- package/dist/esm/id.d.ts.map +1 -0
- package/dist/{id.js → esm/id.js} +1 -1
- package/dist/esm/id.js.map +1 -0
- package/dist/esm/index.d.ts +17 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +16 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/mapper.d.ts +4 -0
- package/dist/esm/mapper.d.ts.map +1 -0
- package/dist/esm/mapper.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/paginated-result.d.ts +62 -0
- package/dist/esm/paginated-result.d.ts.map +1 -0
- package/dist/{paginated-result.js → esm/paginated-result.js} +1 -1
- package/dist/esm/paginated-result.js.map +1 -0
- package/dist/esm/repository/base-repository.d.ts +28 -0
- package/dist/esm/repository/base-repository.d.ts.map +1 -0
- package/dist/esm/repository/base-repository.js.map +1 -0
- package/dist/esm/repository/index.d.ts +4 -0
- package/dist/esm/repository/index.d.ts.map +1 -0
- package/dist/esm/repository/index.js +4 -0
- package/dist/esm/repository/index.js.map +1 -0
- package/dist/esm/repository/unit-of-work.d.ts +34 -0
- package/dist/esm/repository/unit-of-work.d.ts.map +1 -0
- package/dist/esm/repository/unit-of-work.js.map +1 -0
- package/dist/esm/types/change-tracker.d.ts +226 -0
- package/dist/esm/types/change-tracker.d.ts.map +1 -0
- package/dist/esm/types/change-tracker.js.map +1 -0
- package/dist/esm/types/criteria.d.ts +60 -0
- package/dist/esm/types/criteria.d.ts.map +1 -0
- package/dist/esm/types/criteria.js.map +1 -0
- package/dist/esm/types/domain-event.d.ts +32 -0
- package/dist/esm/types/domain-event.d.ts.map +1 -0
- package/dist/esm/types/domain-event.js.map +1 -0
- package/dist/esm/types/domain.d.ts +29 -0
- package/dist/esm/types/domain.d.ts.map +1 -0
- package/dist/esm/types/domain.js.map +1 -0
- package/dist/esm/types/index.d.ts +8 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/types/index.js +8 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/standard-schema.d.ts +15 -0
- package/dist/esm/types/standard-schema.d.ts.map +1 -0
- package/dist/esm/types/standard-schema.js.map +1 -0
- package/dist/esm/types/unit-of-work.d.ts +39 -0
- package/dist/esm/types/unit-of-work.d.ts.map +1 -0
- package/dist/esm/types/unit-of-work.js.map +1 -0
- package/dist/esm/types/utils.d.ts +13 -0
- package/dist/esm/types/utils.d.ts.map +1 -0
- package/dist/esm/types/utils.js.map +1 -0
- package/dist/esm/utils/criteria-operator-validation.d.ts +6 -0
- package/dist/esm/utils/criteria-operator-validation.d.ts.map +1 -0
- package/dist/{utils → esm/utils}/criteria-operator-validation.js +1 -1
- package/dist/esm/utils/criteria-operator-validation.js.map +1 -0
- package/dist/esm/utils/helpers.d.ts +3 -0
- package/dist/esm/utils/helpers.d.ts.map +1 -0
- package/dist/esm/utils/helpers.js.map +1 -0
- package/dist/esm/validation-error.d.ts +56 -0
- package/dist/esm/validation-error.d.ts.map +1 -0
- package/dist/esm/validation-error.js.map +1 -0
- package/dist/esm/value-object.d.ts +96 -0
- package/dist/esm/value-object.d.ts.map +1 -0
- package/dist/{value-object.js → esm/value-object.js} +3 -3
- package/dist/esm/value-object.js.map +1 -0
- package/dist/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/tsconfig.esm.tsbuildinfo +1 -0
- package/dist/tsconfig.types.tsbuildinfo +1 -0
- package/dist/types/aggregate-changes.d.ts +206 -0
- package/dist/types/aggregate-changes.d.ts.map +1 -0
- package/dist/types/base-entity.d.ts +91 -0
- package/dist/types/base-entity.d.ts.map +1 -0
- package/dist/types/change-tracker.d.ts +90 -218
- package/dist/types/change-tracker.d.ts.map +1 -1
- package/dist/types/constants.d.ts +9 -0
- package/dist/types/constants.d.ts.map +1 -0
- package/dist/types/criteria.d.ts +59 -57
- package/dist/types/criteria.d.ts.map +1 -1
- package/dist/types/crypto.d.ts +3 -0
- package/dist/types/crypto.d.ts.map +1 -0
- package/dist/types/domain-event-bus.d.ts +56 -0
- package/dist/types/domain-event-bus.d.ts.map +1 -0
- package/dist/types/domain-event.d.ts +14 -21
- package/dist/types/domain-event.d.ts.map +1 -1
- package/dist/types/entity-changes.d.ts +84 -0
- package/dist/types/entity-changes.d.ts.map +1 -0
- package/dist/types/entity-schema-registry.d.ts +282 -0
- package/dist/types/entity-schema-registry.d.ts.map +1 -0
- package/dist/types/entity.d.ts +7 -0
- package/dist/types/entity.d.ts.map +1 -0
- package/dist/types/exceptions.d.ts +251 -0
- package/dist/types/exceptions.d.ts.map +1 -0
- package/dist/types/id.d.ts +52 -0
- package/dist/types/id.d.ts.map +1 -0
- package/dist/types/index.d.ts +16 -7
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/mapper.d.ts +4 -0
- package/dist/types/mapper.d.ts.map +1 -0
- package/dist/types/paginated-result.d.ts +62 -0
- package/dist/types/paginated-result.d.ts.map +1 -0
- package/dist/types/repository/base-repository.d.ts +28 -0
- package/dist/types/repository/base-repository.d.ts.map +1 -0
- package/dist/types/repository/index.d.ts +4 -0
- package/dist/types/repository/index.d.ts.map +1 -0
- package/dist/types/repository/unit-of-work.d.ts +34 -0
- package/dist/types/repository/unit-of-work.d.ts.map +1 -0
- package/dist/types/types/change-tracker.d.ts +226 -0
- package/dist/types/types/change-tracker.d.ts.map +1 -0
- package/dist/types/types/criteria.d.ts +60 -0
- package/dist/types/types/criteria.d.ts.map +1 -0
- package/dist/types/types/domain-event.d.ts +32 -0
- package/dist/types/types/domain-event.d.ts.map +1 -0
- package/dist/types/types/domain.d.ts +29 -0
- package/dist/types/types/domain.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +8 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/types/standard-schema.d.ts +15 -0
- package/dist/types/types/standard-schema.d.ts.map +1 -0
- package/dist/types/types/unit-of-work.d.ts +39 -0
- package/dist/types/types/unit-of-work.d.ts.map +1 -0
- package/dist/types/types/utils.d.ts +13 -0
- package/dist/types/types/utils.d.ts.map +1 -0
- package/dist/types/utils/criteria-operator-validation.d.ts +6 -0
- package/dist/types/utils/criteria-operator-validation.d.ts.map +1 -0
- package/dist/types/utils/helpers.d.ts +3 -0
- package/dist/types/utils/helpers.d.ts.map +1 -0
- package/dist/types/validation-error.d.ts +56 -0
- package/dist/types/validation-error.d.ts.map +1 -0
- package/dist/types/value-object.d.ts +96 -0
- package/dist/types/value-object.d.ts.map +1 -0
- package/package.json +13 -8
- package/dist/aggregate-changes.d.ts.map +0 -1
- package/dist/aggregate-changes.js.map +0 -1
- package/dist/base-entity.d.ts.map +0 -1
- package/dist/base-entity.js.map +0 -1
- package/dist/change-tracker.d.ts.map +0 -1
- package/dist/change-tracker.js.map +0 -1
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js.map +0 -1
- package/dist/criteria.d.ts.map +0 -1
- package/dist/crypto.d.ts.map +0 -1
- package/dist/crypto.js.map +0 -1
- package/dist/domain-event-bus.d.ts.map +0 -1
- package/dist/domain-event-bus.js.map +0 -1
- package/dist/domain-event.d.ts.map +0 -1
- package/dist/domain-event.js.map +0 -1
- package/dist/entity-changes.d.ts.map +0 -1
- package/dist/entity-changes.js.map +0 -1
- package/dist/entity-schema-registry.d.ts.map +0 -1
- package/dist/entity-schema-registry.js.map +0 -1
- package/dist/entity.d.ts.map +0 -1
- package/dist/entity.js.map +0 -1
- package/dist/exceptions.d.ts.map +0 -1
- package/dist/exceptions.js.map +0 -1
- package/dist/id.d.ts.map +0 -1
- package/dist/id.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -16
- package/dist/index.js.map +0 -1
- package/dist/mapper.d.ts.map +0 -1
- package/dist/mapper.js.map +0 -1
- package/dist/paginated-result.d.ts.map +0 -1
- package/dist/paginated-result.js.map +0 -1
- package/dist/repository/base-repository.d.ts.map +0 -1
- package/dist/repository/base-repository.js.map +0 -1
- package/dist/repository/index.d.ts +0 -4
- package/dist/repository/index.d.ts.map +0 -1
- package/dist/repository/index.js +0 -4
- package/dist/repository/index.js.map +0 -1
- package/dist/repository/unit-of-work.d.ts.map +0 -1
- package/dist/repository/unit-of-work.js.map +0 -1
- package/dist/types/change-tracker.js.map +0 -1
- package/dist/types/criteria.js.map +0 -1
- package/dist/types/domain.d.ts.map +0 -1
- package/dist/types/index.js +0 -8
- package/dist/types/index.js.map +0 -1
- package/dist/types/standard-schema.d.ts.map +0 -1
- package/dist/types/standard-schema.js.map +0 -1
- package/dist/types/unit-of-work.d.ts.map +0 -1
- package/dist/types/utils.d.ts.map +0 -1
- package/dist/utils/criteria-operator-validation.d.ts.map +0 -1
- package/dist/utils/criteria-operator-validation.js.map +0 -1
- package/dist/utils/helpers.d.ts.map +0 -1
- package/dist/utils/helpers.js.map +0 -1
- package/dist/validation-error.d.ts.map +0 -1
- package/dist/validation-error.js.map +0 -1
- package/dist/value-object.d.ts.map +0 -1
- package/dist/value-object.js.map +0 -1
- /package/dist/{constants.d.ts → cjs/constants.d.ts} +0 -0
- /package/dist/{crypto.d.ts → cjs/crypto.d.ts} +0 -0
- /package/dist/{domain-event-bus.d.ts → cjs/domain-event-bus.d.ts} +0 -0
- /package/dist/{exceptions.d.ts → cjs/exceptions.d.ts} +0 -0
- /package/dist/{id.d.ts → cjs/id.d.ts} +0 -0
- /package/dist/{mapper.d.ts → cjs/mapper.d.ts} +0 -0
- /package/dist/{types → cjs/types}/standard-schema.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/helpers.d.ts +0 -0
- /package/dist/{validation-error.d.ts → cjs/validation-error.d.ts} +0 -0
- /package/dist/{constants.js → esm/constants.js} +0 -0
- /package/dist/{crypto.js → esm/crypto.js} +0 -0
- /package/dist/{domain-event-bus.js → esm/domain-event-bus.js} +0 -0
- /package/dist/{entity-changes.js → esm/entity-changes.js} +0 -0
- /package/dist/{exceptions.js → esm/exceptions.js} +0 -0
- /package/dist/{mapper.js → esm/mapper.js} +0 -0
- /package/dist/{repository → esm/repository}/base-repository.js +0 -0
- /package/dist/{repository → esm/repository}/unit-of-work.js +0 -0
- /package/dist/{types → esm/types}/change-tracker.js +0 -0
- /package/dist/{types → esm/types}/criteria.js +0 -0
- /package/dist/{types → esm/types}/domain-event.js +0 -0
- /package/dist/{types → esm/types}/domain.js +0 -0
- /package/dist/{types → esm/types}/standard-schema.js +0 -0
- /package/dist/{types → esm/types}/unit-of-work.js +0 -0
- /package/dist/{types → esm/types}/utils.js +0 -0
- /package/dist/{utils → esm/utils}/helpers.js +0 -0
- /package/dist/{validation-error.js → esm/validation-error.js} +0 -0
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { Entity } from "../entity.js";
|
|
2
|
+
import { ValueObject } from "../value-object.js";
|
|
3
|
+
/**
|
|
4
|
+
* Base operation with common information.
|
|
5
|
+
*/
|
|
6
|
+
export interface BaseOperation {
|
|
7
|
+
/** Entity name in the domain (e.g., 'User', 'Post', 'Comment') */
|
|
8
|
+
entity: string;
|
|
9
|
+
/** Depth in the aggregate tree (0 = root, 1 = direct children, etc.) */
|
|
10
|
+
depth: number;
|
|
11
|
+
/** Name of the relation field in the parent entity (e.g., 'tags', 'comments') */
|
|
12
|
+
relationField?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Create operation.
|
|
16
|
+
*/
|
|
17
|
+
export interface CreateOperation<T = any> extends BaseOperation {
|
|
18
|
+
type: "create";
|
|
19
|
+
/** Entity data to be created */
|
|
20
|
+
data: T;
|
|
21
|
+
/** Parent ID (for FK) */
|
|
22
|
+
parentId?: string;
|
|
23
|
+
/** Parent entity name */
|
|
24
|
+
parentEntity?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Update operation.
|
|
28
|
+
*/
|
|
29
|
+
export interface UpdateOperation<T = any> extends BaseOperation {
|
|
30
|
+
type: "update";
|
|
31
|
+
/** Entity ID */
|
|
32
|
+
id: string;
|
|
33
|
+
/** Current entity instance */
|
|
34
|
+
data: T;
|
|
35
|
+
/** Only fields that have changed */
|
|
36
|
+
changedFields: Record<string, any>;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Delete operation.
|
|
40
|
+
*/
|
|
41
|
+
export interface DeleteOperation<T = any> extends BaseOperation {
|
|
42
|
+
type: "delete";
|
|
43
|
+
/** Entity ID to be deleted */
|
|
44
|
+
id: string;
|
|
45
|
+
/** Entity data (for reference) */
|
|
46
|
+
data: T;
|
|
47
|
+
/** Parent entity name */
|
|
48
|
+
parentEntity?: string;
|
|
49
|
+
/** Parent ID */
|
|
50
|
+
parentId?: string;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Union of all possible operations.
|
|
54
|
+
*/
|
|
55
|
+
export type Operation<T = any> = CreateOperation<T> | UpdateOperation<T> | DeleteOperation<T>;
|
|
56
|
+
/**
|
|
57
|
+
* Item for batch creation.
|
|
58
|
+
*/
|
|
59
|
+
export interface BatchCreateItem<T = any> {
|
|
60
|
+
/** Entity data */
|
|
61
|
+
data: T;
|
|
62
|
+
/** Parent ID (for FK) */
|
|
63
|
+
parentId?: string;
|
|
64
|
+
/** Parent entity name */
|
|
65
|
+
parentEntity?: string;
|
|
66
|
+
/** Relation field name */
|
|
67
|
+
relationField?: string;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Item for batch update.
|
|
71
|
+
*/
|
|
72
|
+
export interface BatchUpdateItem {
|
|
73
|
+
/** Entity ID */
|
|
74
|
+
id: string;
|
|
75
|
+
/** Fields that have changed */
|
|
76
|
+
changedFields: Record<string, any>;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Item for batch delete.
|
|
80
|
+
*/
|
|
81
|
+
export interface BatchDeleteItem {
|
|
82
|
+
/** Entity ID */
|
|
83
|
+
id: string;
|
|
84
|
+
/** Relation field name */
|
|
85
|
+
relationField?: string;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Grouped and ordered operations for batch execution.
|
|
89
|
+
*/
|
|
90
|
+
export interface BatchOperations {
|
|
91
|
+
/**
|
|
92
|
+
* Deletes grouped by entity, ordered by depth descending (leaf → root).
|
|
93
|
+
*/
|
|
94
|
+
deletes: Array<{
|
|
95
|
+
entity: string;
|
|
96
|
+
depth: number;
|
|
97
|
+
ids: string[];
|
|
98
|
+
parentId?: string;
|
|
99
|
+
/** Relation field name (for determining owned vs reference) */
|
|
100
|
+
relationField?: string;
|
|
101
|
+
/** Parent entity name */
|
|
102
|
+
parentEntity?: string;
|
|
103
|
+
/** Individual items with their relation fields (when mixed) */
|
|
104
|
+
items?: BatchDeleteItem[];
|
|
105
|
+
}>;
|
|
106
|
+
/**
|
|
107
|
+
* Creates grouped by entity, ordered by depth ascending (root → leaf).
|
|
108
|
+
*/
|
|
109
|
+
creates: Array<{
|
|
110
|
+
entity: string;
|
|
111
|
+
depth: number;
|
|
112
|
+
items: BatchCreateItem[];
|
|
113
|
+
/** Relation field name (for determining owned vs reference) */
|
|
114
|
+
relationField?: string;
|
|
115
|
+
/** Parent entity name */
|
|
116
|
+
parentEntity?: string;
|
|
117
|
+
}>;
|
|
118
|
+
/**
|
|
119
|
+
* Updates grouped by entity.
|
|
120
|
+
*/
|
|
121
|
+
updates: Array<{
|
|
122
|
+
entity: string;
|
|
123
|
+
items: BatchUpdateItem[];
|
|
124
|
+
}>;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Changes detected in a collection (1:N).
|
|
128
|
+
*/
|
|
129
|
+
export interface CollectionChanges<T = any> {
|
|
130
|
+
/** Created items */
|
|
131
|
+
created: T[];
|
|
132
|
+
/** Updated items with their changes */
|
|
133
|
+
updated: Array<{
|
|
134
|
+
entity: T;
|
|
135
|
+
changes: Record<string, {
|
|
136
|
+
from: any;
|
|
137
|
+
to: any;
|
|
138
|
+
}>;
|
|
139
|
+
}>;
|
|
140
|
+
/** Deleted items */
|
|
141
|
+
deleted: T[];
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Possible states for a 1:1 relationship.
|
|
145
|
+
*/
|
|
146
|
+
export type EntityChangeState = "created" | "updated" | "deleted" | "replaced" | "unchanged";
|
|
147
|
+
/**
|
|
148
|
+
* Change in a 1:1 entity relationship.
|
|
149
|
+
*/
|
|
150
|
+
export interface EntityChange<T = any> {
|
|
151
|
+
/** State of the change */
|
|
152
|
+
state: EntityChangeState;
|
|
153
|
+
/** Current entity (null if deleted) */
|
|
154
|
+
current: T | null;
|
|
155
|
+
/** Previous entity (null if created) */
|
|
156
|
+
previous: T | null;
|
|
157
|
+
/** Field changes (if state === 'updated') */
|
|
158
|
+
changes?: Record<string, {
|
|
159
|
+
from: any;
|
|
160
|
+
to: any;
|
|
161
|
+
}>;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Change in a primitive field.
|
|
165
|
+
*/
|
|
166
|
+
export interface FieldChange<T = any> {
|
|
167
|
+
from: T;
|
|
168
|
+
to: T;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Extracts the props type from an Entity or ValueObject.
|
|
172
|
+
*/
|
|
173
|
+
export type ExtractProps<T> = T extends Entity<infer P> ? P : T extends ValueObject<infer P> ? P : never;
|
|
174
|
+
/**
|
|
175
|
+
* Keys of primitive properties (not Entity, ValueObject or Array).
|
|
176
|
+
*/
|
|
177
|
+
export type PrimitiveKeys<T> = {
|
|
178
|
+
[K in keyof T]: T[K] extends Entity<any> | ValueObject<any> | Array<any> | undefined ? never : K;
|
|
179
|
+
}[keyof T];
|
|
180
|
+
/**
|
|
181
|
+
* Keys of collections (arrays).
|
|
182
|
+
*/
|
|
183
|
+
export type CollectionKeys<T> = {
|
|
184
|
+
[K in keyof T]: T[K] extends Array<any> ? K : never;
|
|
185
|
+
}[keyof T];
|
|
186
|
+
/**
|
|
187
|
+
* Keys of single entities (1:1).
|
|
188
|
+
*/
|
|
189
|
+
export type SingleEntityKeys<T> = {
|
|
190
|
+
[K in keyof T]: T[K] extends Entity<any> | ValueObject<any> | null | undefined ? T[K] extends Array<any> ? never : K : never;
|
|
191
|
+
}[keyof T];
|
|
192
|
+
/**
|
|
193
|
+
* Change history entry.
|
|
194
|
+
*/
|
|
195
|
+
export interface HistoryEntry {
|
|
196
|
+
path: string;
|
|
197
|
+
previousValue: any;
|
|
198
|
+
currentValue: any;
|
|
199
|
+
timestamp: number;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Metadata from a tracked entity/VO.
|
|
203
|
+
*/
|
|
204
|
+
export interface TrackedEntityMetadata {
|
|
205
|
+
/** Entity name */
|
|
206
|
+
entityName: string;
|
|
207
|
+
/** Depth in the tree */
|
|
208
|
+
depth: number;
|
|
209
|
+
/** Parent ID */
|
|
210
|
+
parentId?: string;
|
|
211
|
+
/** Parent entity name */
|
|
212
|
+
parentEntity?: string;
|
|
213
|
+
/** Path in the object (e.g., 'posts[0].comments[1]') */
|
|
214
|
+
path: string;
|
|
215
|
+
}
|
|
216
|
+
export interface TrackedItem {
|
|
217
|
+
entity: any;
|
|
218
|
+
metadata: TrackedEntityMetadata;
|
|
219
|
+
originalState: any;
|
|
220
|
+
}
|
|
221
|
+
export interface ArrayState {
|
|
222
|
+
cloned: any[];
|
|
223
|
+
original: any[];
|
|
224
|
+
metadata: TrackedEntityMetadata;
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=change-tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"change-tracker.d.ts","sourceRoot":"","sources":["../../../src/types/change-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Primitive } from "./utils.js";
|
|
2
|
+
export declare const FILTER_OPERATORS: readonly ["equals", "notEquals", "greaterThan", "greaterThanOrEqual", "lessThan", "lessThanOrEqual", "contains", "startsWith", "endsWith", "in", "notIn", "between", "isNull", "isNotNull"];
|
|
3
|
+
export type FilterOperator = (typeof FILTER_OPERATORS)[number];
|
|
4
|
+
export type StringOperators = "equals" | "notEquals" | "contains" | "startsWith" | "endsWith" | "in" | "notIn" | "isNull" | "isNotNull";
|
|
5
|
+
export type NumberOperators = "equals" | "notEquals" | "greaterThan" | "greaterThanOrEqual" | "lessThan" | "lessThanOrEqual" | "in" | "notIn" | "between" | "isNull" | "isNotNull";
|
|
6
|
+
export type DateOperators = "equals" | "notEquals" | "greaterThan" | "greaterThanOrEqual" | "lessThan" | "lessThanOrEqual" | "in" | "notIn" | "between" | "isNull" | "isNotNull";
|
|
7
|
+
export type BooleanOperators = "equals" | "notEquals" | "isNull" | "isNotNull";
|
|
8
|
+
export type ArrayOperators = "in" | "notIn" | "isNull" | "isNotNull";
|
|
9
|
+
export type OperatorsForType<T> = T extends string ? StringOperators : T extends number ? NumberOperators : T extends Date ? DateOperators : T extends boolean ? BooleanOperators : T extends Array<any> ? ArrayOperators : FilterOperator;
|
|
10
|
+
export type FilterValueFor<T> = T | (T extends number | Date ? [T, T] : never) | T[] | null;
|
|
11
|
+
export type PathValue<T, P extends string> = P extends `${infer K}.${infer Rest}` ? K extends keyof T ? T[K] extends Array<infer U> ? PathValue<U, Rest> : PathValue<T[K], Rest> : never : P extends keyof T ? T[P] : never;
|
|
12
|
+
export interface Filter<TField = string, TValue = unknown> {
|
|
13
|
+
field: TField;
|
|
14
|
+
operator: unknown extends TValue ? FilterOperator : OperatorsForType<TValue>;
|
|
15
|
+
value: TValue;
|
|
16
|
+
options?: CriteriaOptions;
|
|
17
|
+
}
|
|
18
|
+
export type TypedFilter<T> = {
|
|
19
|
+
[K in FieldPath<T>]: {
|
|
20
|
+
field: K;
|
|
21
|
+
operator: OperatorsForType<NonNullable<PathValue<T, K>>>;
|
|
22
|
+
value: FilterValueFor<NonNullable<PathValue<T, K>>>;
|
|
23
|
+
options?: CriteriaOptions;
|
|
24
|
+
};
|
|
25
|
+
}[FieldPath<T>];
|
|
26
|
+
export type CriteriaAdapter<Input, Output> = {
|
|
27
|
+
[K in FieldPath<Input>]?: FieldPath<Output>;
|
|
28
|
+
};
|
|
29
|
+
export type OrderDirection = "asc" | "desc";
|
|
30
|
+
export interface Order {
|
|
31
|
+
field: string;
|
|
32
|
+
direction: OrderDirection;
|
|
33
|
+
}
|
|
34
|
+
export type TypedOrder<T> = {
|
|
35
|
+
field: FieldPath<T>;
|
|
36
|
+
direction: OrderDirection;
|
|
37
|
+
};
|
|
38
|
+
export interface Pagination {
|
|
39
|
+
page: number;
|
|
40
|
+
limit: number;
|
|
41
|
+
offset: number;
|
|
42
|
+
}
|
|
43
|
+
export type Search = string;
|
|
44
|
+
export interface PaginationMeta {
|
|
45
|
+
page: number;
|
|
46
|
+
limit: number;
|
|
47
|
+
total: number;
|
|
48
|
+
totalPages: number;
|
|
49
|
+
hasNext: boolean;
|
|
50
|
+
hasPrevious: boolean;
|
|
51
|
+
}
|
|
52
|
+
export interface CriteriaOptions {
|
|
53
|
+
quantifier?: "some" | "every" | "none";
|
|
54
|
+
}
|
|
55
|
+
type ExcludeBuiltInKeys<T> = Exclude<keyof T, keyof any[] | number | symbol>;
|
|
56
|
+
export type FieldPath<T> = T extends Primitive ? never : {
|
|
57
|
+
[K in ExcludeBuiltInKeys<T> & string]: NonNullable<T[K]> extends Primitive ? K : NonNullable<T[K]> extends Array<infer U> ? U extends Primitive ? K : K | `${K}.${FieldPath<U>}` : `${K}.${FieldPath<NonNullable<T[K]>>}`;
|
|
58
|
+
}[ExcludeBuiltInKeys<T> & string];
|
|
59
|
+
export {};
|
|
60
|
+
//# sourceMappingURL=criteria.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"criteria.d.ts","sourceRoot":"","sources":["../../../src/types/criteria.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,eAAO,MAAM,gBAAgB,6LAenB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,MAAM,MAAM,eAAe,GACvB,QAAQ,GACR,WAAW,GACX,UAAU,GACV,YAAY,GACZ,UAAU,GACV,IAAI,GACJ,OAAO,GACP,QAAQ,GACR,WAAW,CAAC;AAEhB,MAAM,MAAM,eAAe,GACvB,QAAQ,GACR,WAAW,GACX,aAAa,GACb,oBAAoB,GACpB,UAAU,GACV,iBAAiB,GACjB,IAAI,GACJ,OAAO,GACP,SAAS,GACT,QAAQ,GACR,WAAW,CAAC;AAEhB,MAAM,MAAM,aAAa,GACrB,QAAQ,GACR,WAAW,GACX,aAAa,GACb,oBAAoB,GACpB,UAAU,GACV,iBAAiB,GACjB,IAAI,GACJ,OAAO,GACP,SAAS,GACT,QAAQ,GACR,WAAW,CAAC;AAEhB,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE/E,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;AAErE,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAC9C,eAAe,GACf,CAAC,SAAS,MAAM,GAChB,eAAe,GACf,CAAC,SAAS,IAAI,GACd,aAAa,GACb,CAAC,SAAS,OAAO,GACjB,gBAAgB,GAChB,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,GACpB,cAAc,GACd,cAAc,CAAC;AAEnB,MAAM,MAAM,cAAc,CAAC,CAAC,IACxB,CAAC,GACD,CAAC,CAAC,SAAS,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,GAC1C,CAAC,EAAE,GACH,IAAI,CAAC;AAET,MAAM,MAAM,SAAS,CACnB,CAAC,EACD,CAAC,SAAS,MAAM,IACd,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,MAAM,IAAI,EAAE,GACpC,CAAC,SAAS,MAAM,CAAC,GACf,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GACzB,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,GAClB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GACvB,KAAK,GACP,CAAC,SAAS,MAAM,CAAC,GACjB,CAAC,CAAC,CAAC,CAAC,GACJ,KAAK,CAAC;AAEV,MAAM,WAAW,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,OAAO;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,SAAS,MAAM,GAAG,cAAc,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG;QACnB,KAAK,EAAE,CAAC,CAAC;QACT,QAAQ,EAAE,gBAAgB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,KAAK,EAAE,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,EAAE,eAAe,CAAC;KAC3B;CACF,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhB,MAAM,MAAM,eAAe,CAAC,KAAK,EAAE,MAAM,IAAI;KAC1C,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,CAAC;AAE5C,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC1B,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACpB,SAAS,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAE5B,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;CACxC;AAED,KAAK,kBAAkB,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;AAE7E,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAC1C,KAAK,GACL;KACG,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,GACtE,CAAC,GACD,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GACxC,CAAC,SAAS,SAAS,GACjB,CAAC,GACD,CAAC,GAAG,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,GAC5B,GAAG,CAAC,IAAI,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;CAC3C,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface for all domain events
|
|
3
|
+
*/
|
|
4
|
+
export interface IDomainEvent {
|
|
5
|
+
/**
|
|
6
|
+
* Unique identifier for this event occurrence
|
|
7
|
+
*/
|
|
8
|
+
readonly eventId: string;
|
|
9
|
+
/**
|
|
10
|
+
* When the event occurred
|
|
11
|
+
*/
|
|
12
|
+
readonly occurredOn: Date;
|
|
13
|
+
/**
|
|
14
|
+
* Name/type of the event (e.g., "UserCreated", "OrderPlaced")
|
|
15
|
+
*/
|
|
16
|
+
readonly eventName: string;
|
|
17
|
+
/**
|
|
18
|
+
* ID of the aggregate that raised this event
|
|
19
|
+
*/
|
|
20
|
+
readonly aggregateId: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Event handler function type
|
|
24
|
+
*/
|
|
25
|
+
export type DomainEventHandler<T extends IDomainEvent = IDomainEvent> = (event: T) => void | Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Event handler class type
|
|
28
|
+
*/
|
|
29
|
+
export interface IDomainEventHandler<T extends IDomainEvent = IDomainEvent> {
|
|
30
|
+
handle(event: T): void | Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=domain-event.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-event.d.ts","sourceRoot":"","sources":["../../../src/types/domain-event.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI,CACtE,KAAK,EAAE,CAAC,KACL,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY;IACxE,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Id } from "../id.js";
|
|
2
|
+
import { StandardSchema } from "./standard-schema.js";
|
|
3
|
+
export interface BaseProps {
|
|
4
|
+
id: Id;
|
|
5
|
+
}
|
|
6
|
+
interface DomainValidation<T> {
|
|
7
|
+
schema: StandardSchema<T>;
|
|
8
|
+
config?: ValidationConfig;
|
|
9
|
+
}
|
|
10
|
+
export type EntityValidation<T> = DomainValidation<T>;
|
|
11
|
+
export type VOValidation<T> = DomainValidation<T>;
|
|
12
|
+
export interface VOHooks<T, E> {
|
|
13
|
+
onBeforeCreate?: (props: T) => void;
|
|
14
|
+
onCreate?: (entity: E) => void;
|
|
15
|
+
rules?: (entity: E) => void;
|
|
16
|
+
}
|
|
17
|
+
export interface EntityHooks<T extends BaseProps, E> {
|
|
18
|
+
onBeforeCreate?: (props: T) => void;
|
|
19
|
+
onBeforeUpdate?: (entity: E, snapshot: T) => boolean;
|
|
20
|
+
onCreate?: (entity: E) => void;
|
|
21
|
+
rules?: (entity: E) => void;
|
|
22
|
+
}
|
|
23
|
+
export interface ValidationConfig {
|
|
24
|
+
onCreate?: boolean;
|
|
25
|
+
onUpdate?: boolean;
|
|
26
|
+
throwOnError?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=domain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../src/types/domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,EAAE,CAAC;CACR;AAED,UAAU,gBAAgB,CAAC,CAAC;IAC1B,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACtD,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAElD,MAAM,WAAW,OAAO,CAAC,CAAC,EAAE,CAAC;IAC3B,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IACpC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAC/B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC;IACjD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IACpC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,OAAO,CAAC;IACrD,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAC/B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from "./criteria.js";
|
|
2
|
+
export * from "./domain.js";
|
|
3
|
+
export * from "./standard-schema.js";
|
|
4
|
+
export * from "./utils.js";
|
|
5
|
+
export * from "./unit-of-work.js";
|
|
6
|
+
export * from "./domain-event.js";
|
|
7
|
+
export * from "./change-tracker.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface StandardSchemaIssue {
|
|
2
|
+
message: string;
|
|
3
|
+
path?: ReadonlyArray<unknown>;
|
|
4
|
+
}
|
|
5
|
+
export interface StandardSchemaResult<T> {
|
|
6
|
+
value?: T;
|
|
7
|
+
issues?: ReadonlyArray<StandardSchemaIssue>;
|
|
8
|
+
}
|
|
9
|
+
export interface StandardSchemaProps<T> {
|
|
10
|
+
validate: (value: unknown) => StandardSchemaResult<T> | Promise<StandardSchemaResult<T>>;
|
|
11
|
+
}
|
|
12
|
+
export interface StandardSchema<T = unknown> {
|
|
13
|
+
"~standard": StandardSchemaProps<T>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=standard-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standard-schema.d.ts","sourceRoot":"","sources":["../../../src/types/standard-schema.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,MAAM,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,QAAQ,EAAE,CACR,KAAK,EAAE,OAAO,KACX,oBAAoB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO;IACzC,WAAW,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;CACrC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Aggregate } from "../entity.js";
|
|
2
|
+
import { Repository } from "../repository/base-repository.js";
|
|
3
|
+
/**
|
|
4
|
+
* Transaction context for Unit of Work
|
|
5
|
+
*/
|
|
6
|
+
export interface TransactionContext {
|
|
7
|
+
/**
|
|
8
|
+
* Commit all changes
|
|
9
|
+
*/
|
|
10
|
+
commit(): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Rollback all changes
|
|
13
|
+
*/
|
|
14
|
+
rollback(): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Check if transaction is active
|
|
17
|
+
*/
|
|
18
|
+
isActive(): boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Unit of Work interface
|
|
22
|
+
* Manages transactions across multiple repositories
|
|
23
|
+
*/
|
|
24
|
+
export interface IUnitOfWork {
|
|
25
|
+
/**
|
|
26
|
+
* Start a new transaction
|
|
27
|
+
*/
|
|
28
|
+
begin(): Promise<TransactionContext>;
|
|
29
|
+
/**
|
|
30
|
+
* Execute work within a transaction
|
|
31
|
+
* Auto-commits on success, rolls back on error
|
|
32
|
+
*/
|
|
33
|
+
transaction<T>(work: (ctx: TransactionContext) => Promise<T>): Promise<T>;
|
|
34
|
+
/**
|
|
35
|
+
* Get repository within transaction context
|
|
36
|
+
*/
|
|
37
|
+
getRepository<TDomain extends Aggregate<any>>(repository: new (...args: any[]) => Repository<TDomain>): Repository<TDomain>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=unit-of-work.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unit-of-work.d.ts","sourceRoot":"","sources":["../../../src/types/unit-of-work.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAExB;;OAEG;IACH,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1B;;OAEG;IACH,QAAQ,IAAI,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAErC;;;OAGG;IACH,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAE1E;;OAEG;IACH,aAAa,CAAC,OAAO,SAAS,SAAS,CAAC,GAAG,CAAC,EAC1C,UAAU,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,UAAU,CAAC,OAAO,CAAC,GACtD,UAAU,CAAC,OAAO,CAAC,CAAC;CACxB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Id } from "../id.js";
|
|
2
|
+
export type DeepJsonResult<T> = {
|
|
3
|
+
[K in keyof T]: T[K] extends Id ? string : T[K] extends {
|
|
4
|
+
toJSON(): infer U;
|
|
5
|
+
} ? U : T[K] extends Array<infer U> ? U extends {
|
|
6
|
+
toJSON(): infer V;
|
|
7
|
+
} ? V[] : U extends Id ? string[] : U[] : T[K];
|
|
8
|
+
};
|
|
9
|
+
export type Primitive = string | number | boolean | Date | null | undefined;
|
|
10
|
+
export type UnwrapArray<T> = T extends Array<infer U> ? U : never;
|
|
11
|
+
export type IsArray<T> = T extends Array<any> ? true : false;
|
|
12
|
+
export type NonUndefined<T> = T extends undefined ? never : T;
|
|
13
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/types/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAE9B,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;KAC7B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAC3B,MAAM,GACN,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,MAAM,IAAI,MAAM,CAAC,CAAA;KAAE,GAClC,CAAC,GACD,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAC3B,CAAC,SAAS;QAAE,MAAM,IAAI,MAAM,CAAC,CAAA;KAAE,GAC7B,CAAC,EAAE,GACH,CAAC,SAAS,EAAE,GACZ,MAAM,EAAE,GACR,CAAC,EAAE,GACL,CAAC,CAAC,CAAC,CAAC;CACT,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;AAC5E,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAClE,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAC7D,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { FilterOperator } from "../types/index.js";
|
|
2
|
+
export declare function sanitizeFieldValue(value: unknown, operator: FilterOperator): unknown;
|
|
3
|
+
export declare function isValidOperatorForType(value: unknown, operator: FilterOperator): boolean;
|
|
4
|
+
export declare function getValidOperatorsForType(value: unknown): FilterOperator[];
|
|
5
|
+
export declare function isOperator(value: string): value is FilterOperator;
|
|
6
|
+
//# sourceMappingURL=criteria-operator-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"criteria-operator-validation.d.ts","sourceRoot":"","sources":["../../../src/utils/criteria-operator-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,cAAc,EAGf,MAAM,mBAAmB,CAAC;AAI3B,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,cAAc,GACvB,OAAO,CAsCT;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,cAAc,GACvB,OAAO,CAkFT;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,EAAE,CA8DzE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,cAAc,CAEjE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/utils/helpers.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAKlD;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA0BhE"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export interface ValidationIssue {
|
|
2
|
+
path: string[];
|
|
3
|
+
message: string;
|
|
4
|
+
}
|
|
5
|
+
export declare class ValidationError extends Error {
|
|
6
|
+
readonly issues: ValidationIssue[];
|
|
7
|
+
readonly __isValidationError = true;
|
|
8
|
+
readonly entityName?: string;
|
|
9
|
+
constructor(issues: ValidationIssue[], options?: {
|
|
10
|
+
message?: string;
|
|
11
|
+
entityName?: string;
|
|
12
|
+
});
|
|
13
|
+
private static formatMessage;
|
|
14
|
+
/**
|
|
15
|
+
* Check if an error is a ValidationError (works across module boundaries)
|
|
16
|
+
*/
|
|
17
|
+
static isValidationError(error: unknown): error is ValidationError;
|
|
18
|
+
/**
|
|
19
|
+
* Get all error messages as a simple array
|
|
20
|
+
*/
|
|
21
|
+
getMessages(): string[];
|
|
22
|
+
/**
|
|
23
|
+
* Get errors for a specific field path
|
|
24
|
+
*/
|
|
25
|
+
getErrorsForPath(path: string): ValidationIssue[];
|
|
26
|
+
/**
|
|
27
|
+
* Check if a specific path has errors
|
|
28
|
+
*/
|
|
29
|
+
hasErrorsForPath(path: string): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Convert to a plain object for serialization
|
|
32
|
+
*/
|
|
33
|
+
toJSON(): {
|
|
34
|
+
name: string;
|
|
35
|
+
message: string;
|
|
36
|
+
issues: ValidationIssue[];
|
|
37
|
+
entityName?: string;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Get a formatted string with all validation errors
|
|
41
|
+
*/
|
|
42
|
+
getFormattedErrors(): string;
|
|
43
|
+
/**
|
|
44
|
+
* Get a summary of the error for logging
|
|
45
|
+
*/
|
|
46
|
+
getSummary(): string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Helper to create a single validation issue
|
|
50
|
+
*/
|
|
51
|
+
export declare function createValidationIssue(path: string | string[], message: string): ValidationIssue;
|
|
52
|
+
/**
|
|
53
|
+
* Helper to throw a validation error with a single issue
|
|
54
|
+
*/
|
|
55
|
+
export declare function throwValidationError(path: string | string[], message: string): never;
|
|
56
|
+
//# sourceMappingURL=validation-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation-error.d.ts","sourceRoot":"","sources":["../../src/validation-error.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,SAAgB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1C,SAAgB,mBAAmB,QAAQ;IAC3C,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;gBAExB,MAAM,EAAE,eAAe,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAY1F,OAAO,CAAC,MAAM,CAAC,aAAa;IAqB5B;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe;IAYlE;;OAEG;IACH,WAAW,IAAI,MAAM,EAAE;IAIvB;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE;IAIjD;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIvC;;OAEG;IACH,MAAM,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,eAAe,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAS3F;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAO5B;;OAEG;IACH,UAAU,IAAI,MAAM;CAarB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EACvB,OAAO,EAAE,MAAM,GACd,eAAe,CAKjB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EACvB,OAAO,EAAE,MAAM,GACd,KAAK,CAEP"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { ValidationError } from "./validation-error.js";
|
|
2
|
+
import { IDomainEvent } from ".";
|
|
3
|
+
import { VOHooks, EntityValidation } from "./types/index.js";
|
|
4
|
+
/**
|
|
5
|
+
* Identity key type for a Value Object. Can be a single key or an array of keys (composite key).
|
|
6
|
+
*/
|
|
7
|
+
export type IdentityKeyDefinition<T> = (keyof T)[] | keyof T;
|
|
8
|
+
export declare abstract class ValueObject<T> {
|
|
9
|
+
protected readonly props: T;
|
|
10
|
+
private validationConfig;
|
|
11
|
+
private domainHooks?;
|
|
12
|
+
private domainSchema?;
|
|
13
|
+
private domainEvents;
|
|
14
|
+
protected static validation?: EntityValidation<any>;
|
|
15
|
+
protected static hooks?: VOHooks<any, any>;
|
|
16
|
+
/**
|
|
17
|
+
* Identity key for identification in collections.
|
|
18
|
+
* Used by ChangeTracker to track changes in arrays of Value Objects.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* // Simple key
|
|
23
|
+
* class TagReference extends ValueObject<{ tagId: string }> {
|
|
24
|
+
* static readonly identityKey = 'tagId';
|
|
25
|
+
* }
|
|
26
|
+
*
|
|
27
|
+
* // Composite key
|
|
28
|
+
* class Like extends ValueObject<{ postId: string; userId: string }> {
|
|
29
|
+
* static readonly identityKey = ['postId', 'userId'];
|
|
30
|
+
* }
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
protected static identityKey?: IdentityKeyDefinition<any>;
|
|
34
|
+
constructor(props: T);
|
|
35
|
+
private validateProps;
|
|
36
|
+
private extractPathKey;
|
|
37
|
+
/**
|
|
38
|
+
* Returns true if the value object has validation errors (when throwOnError is false).
|
|
39
|
+
*/
|
|
40
|
+
get hasValidationErrors(): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Returns the validation errors (when throwOnError is false).
|
|
43
|
+
*/
|
|
44
|
+
get validationErrors(): ValidationError | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Compare this ValueObject with another for equality based on their properties.
|
|
47
|
+
*/
|
|
48
|
+
equals(other: ValueObject<T>): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Returns the identity key for this Value Object.
|
|
51
|
+
* Used for identification in collections when identityKey is set.
|
|
52
|
+
*
|
|
53
|
+
* @returns String with the identity key or null if not defined
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* const like = new Like({ postId: 'p1', userId: 'u1' });
|
|
58
|
+
* like.getIdentityKey(); // 'p1:u1'
|
|
59
|
+
*
|
|
60
|
+
* const tag = new TagReference({ tagId: 'tag-123' });
|
|
61
|
+
* tag.getIdentityKey(); // 'tag-123'
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
getIdentityKey(): string | null;
|
|
65
|
+
/**
|
|
66
|
+
* Returns true if this Value Object has an identity key defined.
|
|
67
|
+
*/
|
|
68
|
+
hasIdentityKey(): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Returns the identity key definition (if any).
|
|
71
|
+
*/
|
|
72
|
+
static getIdentityKeyDefinition<P>(): IdentityKeyDefinition<P> | undefined;
|
|
73
|
+
/**
|
|
74
|
+
* Adds a domain event to this value object.
|
|
75
|
+
*/
|
|
76
|
+
protected addDomainEvent(event: IDomainEvent): void;
|
|
77
|
+
/**
|
|
78
|
+
* Returns all uncommitted domain events.
|
|
79
|
+
*/
|
|
80
|
+
getUncommittedEvents(): IDomainEvent[];
|
|
81
|
+
/**
|
|
82
|
+
* Clears all domain events (call after publishing).
|
|
83
|
+
*/
|
|
84
|
+
clearEvents(): void;
|
|
85
|
+
/**
|
|
86
|
+
* Returns true if the value object has uncommitted events.
|
|
87
|
+
*/
|
|
88
|
+
hasUncommittedEvents(): boolean;
|
|
89
|
+
toJSON(): T;
|
|
90
|
+
/**
|
|
91
|
+
* Creates a new ValueObject with updated properties.
|
|
92
|
+
* ValueObjects are immutable, so this returns a new instance.
|
|
93
|
+
*/
|
|
94
|
+
protected clone(updates: Partial<T>): this;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=value-object.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"value-object.d.ts","sourceRoot":"","sources":["../../src/value-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,CAAC;AACjC,OAAO,EACL,OAAO,EAGP,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAW1B;;GAEG;AACH,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;AAE7D,8BAAsB,WAAW,CAAC,CAAC;IACjC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAG,CAAC,CAAC;IAC7B,OAAO,CAAC,gBAAgB,CAA6B;IAErD,OAAO,CAAC,WAAW,CAAC,CAAkB;IACtC,OAAO,CAAC,YAAY,CAAC,CAAoB;IACzC,OAAO,CAAC,YAAY,CAAsB;IAE1C,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACpD,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAE3C;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC;gBAE9C,KAAK,EAAE,CAAC;IAyCpB,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED;;OAEG;IACH,IAAI,gBAAgB,IAAI,eAAe,GAAG,SAAS,CAElD;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO;IAKtC;;;;;;;;;;;;;;OAcG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI;IAiB/B;;OAEG;IACH,cAAc,IAAI,OAAO;IAOzB;;OAEG;IACH,MAAM,CAAC,wBAAwB,CAAC,CAAC,KAAK,qBAAqB,CAAC,CAAC,CAAC,GAAG,SAAS;IAI1E;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAInD;;OAEG;IACH,oBAAoB,IAAI,YAAY,EAAE;IAItC;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAI/B,MAAM,IAAI,CAAC;IAIX;;;OAGG;IACH,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;CAI3C"}
|