@woltz/rich-domain 1.3.2 → 1.5.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 +6 -6
- 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,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PaginatedResult = void 0;
|
|
4
|
+
const id_js_1 = require("./id.js");
|
|
5
|
+
class PaginatedResult {
|
|
6
|
+
data;
|
|
7
|
+
meta;
|
|
8
|
+
constructor(data, meta) {
|
|
9
|
+
this.data = data;
|
|
10
|
+
this.meta = meta;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Creates a PaginatedResult with calculated metadata
|
|
14
|
+
*/
|
|
15
|
+
static create(data, pagination, total) {
|
|
16
|
+
const meta = this.createMeta(pagination, total);
|
|
17
|
+
return new PaginatedResult(data, meta);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Creates pagination metadata from total count
|
|
21
|
+
*/
|
|
22
|
+
static createMeta(pagination, total) {
|
|
23
|
+
const totalPages = Math.ceil(total / pagination.limit);
|
|
24
|
+
return {
|
|
25
|
+
page: pagination.page,
|
|
26
|
+
limit: pagination.limit,
|
|
27
|
+
total,
|
|
28
|
+
totalPages,
|
|
29
|
+
hasNext: pagination.page < totalPages,
|
|
30
|
+
hasPrevious: pagination.page > 1,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Applies criteria to an in-memory array (useful for testing)
|
|
35
|
+
*/
|
|
36
|
+
static fromArray(items, criteria) {
|
|
37
|
+
let result = [...items];
|
|
38
|
+
let total = result.length;
|
|
39
|
+
for (const filter of criteria.getFilters()) {
|
|
40
|
+
result = result.filter((item) => applyFilter(item, filter));
|
|
41
|
+
total = result.length;
|
|
42
|
+
}
|
|
43
|
+
for (const order of criteria.getOrders().reverse()) {
|
|
44
|
+
result.sort((a, b) => {
|
|
45
|
+
const aVal = getNestedValue(a, order.field);
|
|
46
|
+
const bVal = getNestedValue(b, order.field);
|
|
47
|
+
let comparison = 0;
|
|
48
|
+
if (aVal < bVal)
|
|
49
|
+
comparison = -1;
|
|
50
|
+
if (aVal > bVal)
|
|
51
|
+
comparison = 1;
|
|
52
|
+
return order.direction === "desc" ? -comparison : comparison;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
const pagination = criteria.getPagination();
|
|
56
|
+
result = result.slice(pagination.offset, pagination.offset + pagination.limit);
|
|
57
|
+
const search = criteria.getSearch();
|
|
58
|
+
if (search) {
|
|
59
|
+
result = result.filter((item) => {
|
|
60
|
+
const values = Object.values(item);
|
|
61
|
+
return values.some((val) => String(val).toLowerCase().includes(search.toLowerCase()));
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
return PaginatedResult.create(result, pagination, total);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Converts the result to JSON, deeply serializing all entities/aggregates/value objects
|
|
68
|
+
* - Entities/Aggregates → calls toJSON() recursively
|
|
69
|
+
* - Value Objects → calls toJSON()
|
|
70
|
+
* - Id → converts to string
|
|
71
|
+
* - Arrays → maps recursively
|
|
72
|
+
* - Plain objects → serializes properties recursively
|
|
73
|
+
* - Primitives → returns as-is
|
|
74
|
+
*/
|
|
75
|
+
toJSON() {
|
|
76
|
+
return {
|
|
77
|
+
data: this.data.map((item) => this.deepSerialize(item)),
|
|
78
|
+
meta: this.meta,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Deep serialization logic (similar to BaseEntity.deepToJson)
|
|
83
|
+
*/
|
|
84
|
+
deepSerialize(obj) {
|
|
85
|
+
if (obj === null || obj === undefined)
|
|
86
|
+
return obj;
|
|
87
|
+
if (obj instanceof id_js_1.Id)
|
|
88
|
+
return obj.value;
|
|
89
|
+
if (Array.isArray(obj)) {
|
|
90
|
+
return obj.map((item) => this.deepSerialize(item));
|
|
91
|
+
}
|
|
92
|
+
if (obj && typeof obj.toJSON === "function") {
|
|
93
|
+
return obj.toJSON();
|
|
94
|
+
}
|
|
95
|
+
if (typeof obj === "object") {
|
|
96
|
+
const result = {};
|
|
97
|
+
for (const key in obj) {
|
|
98
|
+
if (obj.hasOwnProperty(key)) {
|
|
99
|
+
result[key] = this.deepSerialize(obj[key]);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return result;
|
|
103
|
+
}
|
|
104
|
+
return obj;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Transform each item in the result using a mapper function
|
|
108
|
+
*/
|
|
109
|
+
map(fn) {
|
|
110
|
+
return new PaginatedResult(this.data.map(fn), this.meta);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Check if result has no data
|
|
114
|
+
*/
|
|
115
|
+
get isEmpty() {
|
|
116
|
+
return this.data.length === 0;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Check if there are more pages available
|
|
120
|
+
*/
|
|
121
|
+
get hasMore() {
|
|
122
|
+
return this.meta.hasNext;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
exports.PaginatedResult = PaginatedResult;
|
|
126
|
+
function applyFilter(item, filter) {
|
|
127
|
+
const value = getNestedValue(item, filter.field);
|
|
128
|
+
const isValueDate = value instanceof Date;
|
|
129
|
+
const parseValue = (v) => {
|
|
130
|
+
if (isValueDate && typeof v === "string")
|
|
131
|
+
return new Date(v);
|
|
132
|
+
if (isValueDate && typeof v === "number")
|
|
133
|
+
return new Date(v);
|
|
134
|
+
return v;
|
|
135
|
+
};
|
|
136
|
+
switch (filter.operator) {
|
|
137
|
+
case "equals":
|
|
138
|
+
return value === filter.value;
|
|
139
|
+
case "notEquals":
|
|
140
|
+
return value !== filter.value;
|
|
141
|
+
case "greaterThan": {
|
|
142
|
+
const compareTo = parseValue(filter.value);
|
|
143
|
+
return isValueDate ? value > compareTo : value > filter.value;
|
|
144
|
+
}
|
|
145
|
+
case "greaterThanOrEqual": {
|
|
146
|
+
const compareTo = parseValue(filter.value);
|
|
147
|
+
return isValueDate ? value >= compareTo : value >= filter.value;
|
|
148
|
+
}
|
|
149
|
+
case "lessThan":
|
|
150
|
+
const lt = parseValue(filter.value);
|
|
151
|
+
return isValueDate ? value < lt : value < filter.value;
|
|
152
|
+
case "lessThanOrEqual":
|
|
153
|
+
const lte = parseValue(filter.value);
|
|
154
|
+
return isValueDate ? value <= lte : value <= filter.value;
|
|
155
|
+
case "contains":
|
|
156
|
+
return String(value)
|
|
157
|
+
.toLowerCase()
|
|
158
|
+
.includes(String(filter.value).toLowerCase());
|
|
159
|
+
case "startsWith":
|
|
160
|
+
return String(value)
|
|
161
|
+
.toLowerCase()
|
|
162
|
+
.startsWith(String(filter.value).toLowerCase());
|
|
163
|
+
case "endsWith":
|
|
164
|
+
return String(value)
|
|
165
|
+
.toLowerCase()
|
|
166
|
+
.endsWith(String(filter.value).toLowerCase());
|
|
167
|
+
case "in":
|
|
168
|
+
return Array.isArray(filter.value) && filter.value.includes(value);
|
|
169
|
+
case "notIn":
|
|
170
|
+
return Array.isArray(filter.value) && !filter.value.includes(value);
|
|
171
|
+
case "between":
|
|
172
|
+
if (Array.isArray(filter.value) && filter.value.length === 2) {
|
|
173
|
+
const [min, max] = filter.value.map(parseValue);
|
|
174
|
+
return isValueDate
|
|
175
|
+
? value >= min && value <= max
|
|
176
|
+
: value >= filter.value[0] && value <= filter.value[1];
|
|
177
|
+
}
|
|
178
|
+
return false;
|
|
179
|
+
case "isNull":
|
|
180
|
+
return value === null || value === undefined;
|
|
181
|
+
case "isNotNull":
|
|
182
|
+
return value !== null && value !== undefined;
|
|
183
|
+
default:
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
function getNestedValue(obj, path) {
|
|
188
|
+
return path.split(".").reduce((current, key) => {
|
|
189
|
+
if (current === null || current === undefined)
|
|
190
|
+
return undefined;
|
|
191
|
+
return current[key];
|
|
192
|
+
}, obj);
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=paginated-result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paginated-result.js","sourceRoot":"","sources":["../../src/paginated-result.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { Aggregate } from "../entity";
|
|
2
|
-
import type { Criteria } from "../criteria";
|
|
3
|
-
import { PaginatedResult } from "../paginated-result";
|
|
4
|
-
import { Mapper } from "../mapper";
|
|
1
|
+
import type { Aggregate } from "../entity.js";
|
|
2
|
+
import type { Criteria } from "../criteria.js";
|
|
3
|
+
import { PaginatedResult } from "../paginated-result.js";
|
|
4
|
+
import { Mapper } from "../mapper.js";
|
|
5
5
|
export declare abstract class ReadRepository<Agg extends Aggregate<any>> {
|
|
6
6
|
abstract find(criteria?: Criteria<Agg>): Promise<PaginatedResult<Agg>>;
|
|
7
7
|
abstract findById(id: string): Promise<Agg | null>;
|
|
@@ -21,8 +21,8 @@ export declare abstract class WriteAndRead<Agg extends Aggregate<any>> {
|
|
|
21
21
|
abstract exists(id: string): Promise<boolean>;
|
|
22
22
|
}
|
|
23
23
|
export declare abstract class Repository<TDomain extends Aggregate<any>> extends WriteAndRead<TDomain> {
|
|
24
|
-
protected abstract readonly
|
|
25
|
-
protected abstract readonly
|
|
24
|
+
protected abstract readonly toDomainMapper: Mapper<unknown, TDomain>;
|
|
25
|
+
protected abstract readonly toPersistenceMapper: Mapper<TDomain, unknown>;
|
|
26
26
|
protected abstract get model(): any;
|
|
27
27
|
}
|
|
28
28
|
//# sourceMappingURL=base-repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-repository.d.ts","sourceRoot":"","sources":["../../../src/repository/base-repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,8BAAsB,cAAc,CAAC,GAAG,SAAS,SAAS,CAAC,GAAG,CAAC;IAC7D,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IACtE,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IAClD,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IACzD,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAC9C;AAED,8BAAsB,eAAe,CAAC,GAAG,SAAS,SAAS,CAAC,GAAG,CAAC;IAC9D,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IACzC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAC5C;AAED,8BAAsB,YAAY,CAAC,GAAG,SAAS,SAAS,CAAC,GAAG,CAAC;IAC3D,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IACtE,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IAClD,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IACzC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3C,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IACzD,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAC9C;AAED,8BAAsB,UAAU,CAC9B,OAAO,SAAS,SAAS,CAAC,GAAG,CAAC,CAC9B,SAAQ,YAAY,CAAC,OAAO,CAAC;IAC7B,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1E,SAAS,CAAC,QAAQ,KAAK,KAAK,IAAI,GAAG,CAAC;CACrC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Repository = exports.WriteAndRead = exports.WriteRepository = exports.ReadRepository = void 0;
|
|
4
|
+
class ReadRepository {
|
|
5
|
+
}
|
|
6
|
+
exports.ReadRepository = ReadRepository;
|
|
7
|
+
class WriteRepository {
|
|
8
|
+
}
|
|
9
|
+
exports.WriteRepository = WriteRepository;
|
|
10
|
+
class WriteAndRead {
|
|
11
|
+
}
|
|
12
|
+
exports.WriteAndRead = WriteAndRead;
|
|
13
|
+
class Repository extends WriteAndRead {
|
|
14
|
+
}
|
|
15
|
+
exports.Repository = Repository;
|
|
16
|
+
//# sourceMappingURL=base-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-repository.js","sourceRoot":"","sources":["../../../src/repository/base-repository.ts"],"names":[],"mappings":";;;AAKA,MAAsB,cAAc;CAKnC;AALD,wCAKC;AAED,MAAsB,eAAe;CAGpC;AAHD,0CAGC;AAED,MAAsB,YAAY;CAOjC;AAPD,oCAOC;AAED,MAAsB,UAEpB,SAAQ,YAAqB;CAI9B;AAND,gCAMC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/repository/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.BaseTransactionContext = exports.UnitOfWork = exports.Mapper = void 0;
|
|
18
|
+
var mapper_js_1 = require("../mapper.js");
|
|
19
|
+
Object.defineProperty(exports, "Mapper", { enumerable: true, get: function () { return mapper_js_1.Mapper; } });
|
|
20
|
+
__exportStar(require("./base-repository.js"), exports);
|
|
21
|
+
var unit_of_work_js_1 = require("./unit-of-work.js");
|
|
22
|
+
Object.defineProperty(exports, "UnitOfWork", { enumerable: true, get: function () { return unit_of_work_js_1.UnitOfWork; } });
|
|
23
|
+
Object.defineProperty(exports, "BaseTransactionContext", { enumerable: true, get: function () { return unit_of_work_js_1.BaseTransactionContext; } });
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/repository/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAAsC;AAA7B,mGAAA,MAAM,OAAA;AACf,uDAAqC;AACrC,qDAAuE;AAA9D,6GAAA,UAAU,OAAA;AAAE,yHAAA,sBAAsB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unit-of-work.d.ts","sourceRoot":"","sources":["../../../src/repository/unit-of-work.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEzE;;;GAGG;AACH,8BAAsB,UAAW,YAAW,WAAW;IACrD,SAAS,CAAC,cAAc,EAAE,kBAAkB,GAAG,IAAI,CAAQ;IAC3D,SAAS,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAa;IAExD,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAE7C;;;OAGG;IACG,WAAW,CAAC,CAAC,EACjB,IAAI,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,GAC5C,OAAO,CAAC,CAAC,CAAC;IAkBb;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,KAAK,GAAG,KAAK;IAY3E;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EACvC,eAAe,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,KAAK,GAC7C,KAAK;CACT;AAED;;GAEG;AACH,8BAAsB,sBAAuB,YAAW,kBAAkB;IACxE,SAAS,CAAC,SAAS,UAAQ;IAE3B,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAChC,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAElC,QAAQ,IAAI,OAAO;IAInB,SAAS,CAAC,YAAY,IAAI,IAAI;CAG/B"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseTransactionContext = exports.UnitOfWork = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Abstract Unit of Work
|
|
6
|
+
* Provides transaction management across multiple repositories
|
|
7
|
+
*/
|
|
8
|
+
class UnitOfWork {
|
|
9
|
+
currentContext = null;
|
|
10
|
+
repositoryCache = new Map();
|
|
11
|
+
/**
|
|
12
|
+
* Execute work within a transaction
|
|
13
|
+
* Auto-commits on success, rolls back on error
|
|
14
|
+
*/
|
|
15
|
+
async transaction(work) {
|
|
16
|
+
const ctx = await this.begin();
|
|
17
|
+
try {
|
|
18
|
+
const result = await work(ctx);
|
|
19
|
+
await ctx.commit();
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
if (ctx.isActive()) {
|
|
24
|
+
await ctx.rollback();
|
|
25
|
+
}
|
|
26
|
+
throw error;
|
|
27
|
+
}
|
|
28
|
+
finally {
|
|
29
|
+
this.currentContext = null;
|
|
30
|
+
this.repositoryCache.clear();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get repository instance (cached per transaction)
|
|
35
|
+
*/
|
|
36
|
+
getRepository(RepositoryClass) {
|
|
37
|
+
const key = RepositoryClass.name;
|
|
38
|
+
if (this.repositoryCache.has(key)) {
|
|
39
|
+
return this.repositoryCache.get(key);
|
|
40
|
+
}
|
|
41
|
+
const repo = this.createRepository(RepositoryClass);
|
|
42
|
+
this.repositoryCache.set(key, repo);
|
|
43
|
+
return repo;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.UnitOfWork = UnitOfWork;
|
|
47
|
+
/**
|
|
48
|
+
* Base Transaction Context
|
|
49
|
+
*/
|
|
50
|
+
class BaseTransactionContext {
|
|
51
|
+
_isActive = true;
|
|
52
|
+
isActive() {
|
|
53
|
+
return this._isActive;
|
|
54
|
+
}
|
|
55
|
+
markInactive() {
|
|
56
|
+
this._isActive = false;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.BaseTransactionContext = BaseTransactionContext;
|
|
60
|
+
//# sourceMappingURL=unit-of-work.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unit-of-work.js","sourceRoot":"","sources":["../../../src/repository/unit-of-work.ts"],"names":[],"mappings":";;;AAEA;;;GAGG;AACH,MAAsB,UAAU;IACpB,cAAc,GAA8B,IAAI,CAAC;IACjD,eAAe,GAAqB,IAAI,GAAG,EAAE,CAAC;IAIxD;;;OAGG;IACH,KAAK,CAAC,WAAW,CACf,IAA6C;QAE7C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAE/B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACnB,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC;YACvB,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,aAAa,CAAQ,eAA8C;QACjE,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC;QAEjC,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;QACpD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;CAQF;AAnDD,gCAmDC;AAED;;GAEG;AACH,MAAsB,sBAAsB;IAChC,SAAS,GAAG,IAAI,CAAC;IAK3B,QAAQ;QACN,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAES,YAAY;QACpB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;CACF;AAbD,wDAaC"}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"change-tracker.js","sourceRoot":"","sources":["../../../src/types/change-tracker.ts"],"names":[],"mappings":""}
|