@cqrs-ddd/core 0.2.1 → 0.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 +32 -13
- package/dist/application/base.command.d.ts.map +1 -1
- package/dist/application/base.command.js +5 -9
- package/dist/application/base.command.js.map +1 -1
- package/dist/application/base.query.d.ts +1 -1
- package/dist/application/base.query.d.ts.map +1 -1
- package/dist/application/base.query.js +7 -11
- package/dist/application/base.query.js.map +1 -1
- package/dist/application/command-base.handler.d.ts +18 -8
- package/dist/application/command-base.handler.d.ts.map +1 -1
- package/dist/application/command-base.handler.js +19 -12
- package/dist/application/command-base.handler.js.map +1 -1
- package/dist/application/index.d.ts +10 -10
- package/dist/application/index.d.ts.map +1 -1
- package/dist/application/index.js +10 -26
- package/dist/application/index.js.map +1 -1
- package/dist/application/ports/cache.port.js +1 -4
- package/dist/application/ports/cache.port.js.map +1 -1
- package/dist/application/ports/command-repository.port.js +1 -2
- package/dist/application/ports/command-repository.port.js.map +1 -1
- package/dist/application/ports/domain-event-publisher.port.d.ts +4 -2
- package/dist/application/ports/domain-event-publisher.port.d.ts.map +1 -1
- package/dist/application/ports/domain-event-publisher.port.js +1 -2
- package/dist/application/ports/domain-event-publisher.port.js.map +1 -1
- package/dist/application/ports/query-repository.port.d.ts +1 -1
- package/dist/application/ports/query-repository.port.d.ts.map +1 -1
- package/dist/application/ports/query-repository.port.js +1 -2
- package/dist/application/ports/query-repository.port.js.map +1 -1
- package/dist/application/ports/write-side-aggregate-repository.port.d.ts +1 -1
- package/dist/application/ports/write-side-aggregate-repository.port.d.ts.map +1 -1
- package/dist/application/ports/write-side-aggregate-repository.port.js +1 -2
- package/dist/application/ports/write-side-aggregate-repository.port.js.map +1 -1
- package/dist/application/query.options.js +1 -2
- package/dist/application/query.options.js.map +1 -1
- package/dist/application/request-fields.helper.js +2 -6
- package/dist/application/request-fields.helper.js.map +1 -1
- package/dist/application/tenant-resolver.js +5 -10
- package/dist/application/tenant-resolver.js.map +1 -1
- package/dist/domain/decorators/apply-mutation.decorator.d.ts +1 -1
- package/dist/domain/decorators/apply-mutation.decorator.d.ts.map +1 -1
- package/dist/domain/decorators/apply-mutation.decorator.js +1 -4
- package/dist/domain/decorators/apply-mutation.decorator.js.map +1 -1
- package/dist/domain/decorators/mutable.decorator.js +2 -6
- package/dist/domain/decorators/mutable.decorator.js.map +1 -1
- package/dist/domain/events/domain.event.d.ts +1 -1
- package/dist/domain/events/domain.event.d.ts.map +1 -1
- package/dist/domain/events/domain.event.js +3 -7
- package/dist/domain/events/domain.event.js.map +1 -1
- package/dist/domain/events/event.interface.js +1 -2
- package/dist/domain/events/event.interface.js.map +1 -1
- package/dist/domain/events/root-domain.event.d.ts +3 -3
- package/dist/domain/events/root-domain.event.d.ts.map +1 -1
- package/dist/domain/events/root-domain.event.js +3 -8
- package/dist/domain/events/root-domain.event.js.map +1 -1
- package/dist/domain/exceptions/concurrency-conflict.error.d.ts +1 -1
- package/dist/domain/exceptions/concurrency-conflict.error.d.ts.map +1 -1
- package/dist/domain/exceptions/concurrency-conflict.error.js +2 -6
- package/dist/domain/exceptions/concurrency-conflict.error.js.map +1 -1
- package/dist/domain/exceptions/domain.exception.d.ts.map +1 -1
- package/dist/domain/exceptions/domain.exception.js +1 -5
- package/dist/domain/exceptions/domain.exception.js.map +1 -1
- package/dist/domain/exceptions/entity-not-found.exception.d.ts +1 -1
- package/dist/domain/exceptions/entity-not-found.exception.d.ts.map +1 -1
- package/dist/domain/exceptions/entity-not-found.exception.js +2 -6
- package/dist/domain/exceptions/entity-not-found.exception.js.map +1 -1
- package/dist/domain/exceptions/invalid-value.exception.d.ts +2 -2
- package/dist/domain/exceptions/invalid-value.exception.d.ts.map +1 -1
- package/dist/domain/exceptions/invalid-value.exception.js +2 -6
- package/dist/domain/exceptions/invalid-value.exception.js.map +1 -1
- package/dist/domain/exceptions/missing-tenant-context.exception.d.ts +1 -1
- package/dist/domain/exceptions/missing-tenant-context.exception.d.ts.map +1 -1
- package/dist/domain/exceptions/missing-tenant-context.exception.js +2 -6
- package/dist/domain/exceptions/missing-tenant-context.exception.js.map +1 -1
- package/dist/domain/exceptions/transient-operation.error.d.ts.map +1 -1
- package/dist/domain/exceptions/transient-operation.error.js +2 -7
- package/dist/domain/exceptions/transient-operation.error.js.map +1 -1
- package/dist/domain/exceptions/unknown-mutable-field.error.d.ts.map +1 -1
- package/dist/domain/exceptions/unknown-mutable-field.error.js +1 -5
- package/dist/domain/exceptions/unknown-mutable-field.error.js.map +1 -1
- package/dist/domain/index.d.ts +19 -18
- package/dist/domain/index.d.ts.map +1 -1
- package/dist/domain/index.js +19 -34
- package/dist/domain/index.js.map +1 -1
- package/dist/domain/interfaces/aggregate-root.interface.d.ts +41 -0
- package/dist/domain/interfaces/aggregate-root.interface.d.ts.map +1 -0
- package/dist/domain/interfaces/aggregate-root.interface.js +3 -0
- package/dist/domain/interfaces/aggregate-root.interface.js.map +1 -0
- package/dist/domain/interfaces/root-entity-snapshot.interface.js +1 -2
- package/dist/domain/interfaces/root-entity-snapshot.interface.js.map +1 -1
- package/dist/domain/models/aggregate-root.d.ts +34 -22
- package/dist/domain/models/aggregate-root.d.ts.map +1 -1
- package/dist/domain/models/aggregate-root.js +38 -12
- package/dist/domain/models/aggregate-root.js.map +1 -1
- package/dist/domain/models/root.entity.d.ts +3 -3
- package/dist/domain/models/root.entity.d.ts.map +1 -1
- package/dist/domain/models/root.entity.js +9 -13
- package/dist/domain/models/root.entity.js.map +1 -1
- package/dist/domain/rules/number.rule.d.ts +1 -1
- package/dist/domain/rules/number.rule.d.ts.map +1 -1
- package/dist/domain/rules/number.rule.js +4 -7
- package/dist/domain/rules/number.rule.js.map +1 -1
- package/dist/domain/rules/rule-support.d.ts +1 -1
- package/dist/domain/rules/rule-support.d.ts.map +1 -1
- package/dist/domain/rules/rule-support.js +3 -7
- package/dist/domain/rules/rule-support.js.map +1 -1
- package/dist/domain/rules/text.rule.d.ts +1 -1
- package/dist/domain/rules/text.rule.d.ts.map +1 -1
- package/dist/domain/rules/text.rule.js +4 -7
- package/dist/domain/rules/text.rule.js.map +1 -1
- package/dist/domain/rules/value-violation.js +1 -2
- package/dist/domain/rules/value-violation.js.map +1 -1
- package/dist/http/domain-error-http-status.d.ts +1 -1
- package/dist/http/domain-error-http-status.d.ts.map +1 -1
- package/dist/http/domain-error-http-status.js +9 -12
- package/dist/http/domain-error-http-status.js.map +1 -1
- package/dist/http/index.d.ts +1 -1
- package/dist/http/index.d.ts.map +1 -1
- package/dist/http/index.js +1 -17
- package/dist/http/index.js.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -21
- package/dist/index.js.map +1 -1
- package/dist/persistence/cache/cache-logger.js +2 -6
- package/dist/persistence/cache/cache-logger.js.map +1 -1
- package/dist/persistence/cache/memory.cache.d.ts +1 -1
- package/dist/persistence/cache/memory.cache.d.ts.map +1 -1
- package/dist/persistence/cache/memory.cache.js +4 -8
- package/dist/persistence/cache/memory.cache.js.map +1 -1
- package/dist/persistence/command-repository.abstract.d.ts +2 -2
- package/dist/persistence/command-repository.abstract.d.ts.map +1 -1
- package/dist/persistence/command-repository.abstract.js +1 -5
- package/dist/persistence/command-repository.abstract.js.map +1 -1
- package/dist/persistence/decorators/acknowledge-persisted.decorator.d.ts.map +1 -1
- package/dist/persistence/decorators/acknowledge-persisted.decorator.js +1 -4
- package/dist/persistence/decorators/acknowledge-persisted.decorator.js.map +1 -1
- package/dist/persistence/decorators/cache.decorator.d.ts +1 -1
- package/dist/persistence/decorators/cache.decorator.d.ts.map +1 -1
- package/dist/persistence/decorators/cache.decorator.js +22 -26
- package/dist/persistence/decorators/cache.decorator.js.map +1 -1
- package/dist/persistence/decorators/from-cache.decorator.d.ts +3 -3
- package/dist/persistence/decorators/from-cache.decorator.d.ts.map +1 -1
- package/dist/persistence/decorators/from-cache.decorator.js +16 -20
- package/dist/persistence/decorators/from-cache.decorator.js.map +1 -1
- package/dist/persistence/decorators/map-persistence-errors.decorator.d.ts +1 -1
- package/dist/persistence/decorators/map-persistence-errors.decorator.d.ts.map +1 -1
- package/dist/persistence/decorators/map-persistence-errors.decorator.js +3 -6
- package/dist/persistence/decorators/map-persistence-errors.decorator.js.map +1 -1
- package/dist/persistence/decorators/persisted-write.decorator.d.ts +4 -4
- package/dist/persistence/decorators/persisted-write.decorator.d.ts.map +1 -1
- package/dist/persistence/decorators/persisted-write.decorator.js +7 -10
- package/dist/persistence/decorators/persisted-write.decorator.js.map +1 -1
- package/dist/persistence/helpers/cache-barrier.helper.js +4 -8
- package/dist/persistence/helpers/cache-barrier.helper.js.map +1 -1
- package/dist/persistence/helpers/cache-key.helper.d.ts +1 -1
- package/dist/persistence/helpers/cache-key.helper.d.ts.map +1 -1
- package/dist/persistence/helpers/cache-key.helper.js +11 -15
- package/dist/persistence/helpers/cache-key.helper.js.map +1 -1
- package/dist/persistence/helpers/cache-owner.helper.d.ts +1 -1
- package/dist/persistence/helpers/cache-owner.helper.d.ts.map +1 -1
- package/dist/persistence/helpers/cache-owner.helper.js +4 -7
- package/dist/persistence/helpers/cache-owner.helper.js.map +1 -1
- package/dist/persistence/helpers/cache-snapshot.helper.js +1 -4
- package/dist/persistence/helpers/cache-snapshot.helper.js.map +1 -1
- package/dist/persistence/helpers/cache-version.helper.js +5 -8
- package/dist/persistence/helpers/cache-version.helper.js.map +1 -1
- package/dist/persistence/index.d.ts +14 -14
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +14 -30
- package/dist/persistence/index.js.map +1 -1
- package/dist/persistence/persistence-dialect.js +2 -6
- package/dist/persistence/persistence-dialect.js.map +1 -1
- package/dist/persistence/query-repository.abstract.d.ts +3 -3
- package/dist/persistence/query-repository.abstract.d.ts.map +1 -1
- package/dist/persistence/query-repository.abstract.js +1 -5
- package/dist/persistence/query-repository.abstract.js.map +1 -1
- package/dist/types/Method.type.js +1 -2
- package/dist/types/Method.type.js.map +1 -1
- package/package.json +10 -8
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/* Copyright (C) 2026-present Aristotelis — see repository license. */
|
|
3
|
-
|
|
4
|
-
exports.textRule = textRule;
|
|
5
|
-
const rule_support_1 = require("./rule-support");
|
|
2
|
+
import { assertField, violationThrower } from './rule-support.js';
|
|
6
3
|
const CONTROL_CHARACTER = /\p{Cc}/u;
|
|
7
4
|
const CONTROL_CHARACTER_EXCEPT_LINE_BREAK = /(?![\t\n\r])\p{Cc}/u;
|
|
8
5
|
const UNPAIRED_SURROGATE = /[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/;
|
|
@@ -53,8 +50,8 @@ function assertLength(name, value) {
|
|
|
53
50
|
* z.string().trim().min(User.rules.username.minLength); // a request schema
|
|
54
51
|
* ```
|
|
55
52
|
*/
|
|
56
|
-
function textRule(options) {
|
|
57
|
-
|
|
53
|
+
export function textRule(options) {
|
|
54
|
+
assertField(options.field, 'textRule');
|
|
58
55
|
assertLength('minLength', options.minLength);
|
|
59
56
|
assertLength('maxLength', options.maxLength);
|
|
60
57
|
const { field, required = true, minLength, maxLength, pattern, multiline = false, } = options;
|
|
@@ -66,7 +63,7 @@ function textRule(options) {
|
|
|
66
63
|
if (pattern !== undefined && (pattern.global || pattern.sticky)) {
|
|
67
64
|
throw new TypeError('textRule: pattern must not use the g or y flag.');
|
|
68
65
|
}
|
|
69
|
-
const fail =
|
|
66
|
+
const fail = violationThrower(options.error);
|
|
70
67
|
const controlCharacter = multiline
|
|
71
68
|
? CONTROL_CHARACTER_EXCEPT_LINE_BREAK
|
|
72
69
|
: CONTROL_CHARACTER;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.rule.js","sourceRoot":"","sources":["../../../domain/rules/text.rule.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"text.rule.js","sourceRoot":"","sources":["../../../domain/rules/text.rule.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AA8DlE,MAAM,iBAAiB,GAAG,SAAS,CAAC;AACpC,MAAM,mCAAmC,GAAG,qBAAqB,CAAC;AAClE,MAAM,kBAAkB,GACtB,wEAAwE,CAAC;AAE3E,SAAS,YAAY,CAAC,IAAY,EAAE,KAAyB;IAC3D,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,SAAS,CAAC,aAAa,IAAI,kCAAkC,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,MAAM,UAAU,QAAQ,CACtB,OAAiB;IAEjB,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACvC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7C,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,EACJ,KAAK,EACL,QAAQ,GAAG,IAAI,EACf,SAAS,EACT,SAAS,EACT,OAAO,EACP,SAAS,GAAG,KAAK,GAClB,GAAG,OAAO,CAAC;IACZ,IACE,SAAS,KAAK,SAAS;QACvB,SAAS,KAAK,SAAS;QACvB,SAAS,GAAG,SAAS,EACrB,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,gBAAgB,GAAG,SAAS;QAChC,CAAC,CAAC,mCAAmC;QACrC,CAAC,CAAC,iBAAiB,CAAC;IAEtB,MAAM,KAAK,GAAG,CAAC,KAAc,EAAiB,EAAE;QAC9C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7D,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7D,CAAC;QACD,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAuB,CAAC;AACpE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value-violation.js","sourceRoot":"","sources":["../../../domain/rules/value-violation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"value-violation.js","sourceRoot":"","sources":["../../../domain/rules/value-violation.ts"],"names":[],"mappings":"AAAA,sEAAsE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DomainException } from '../domain/exceptions/domain.exception';
|
|
1
|
+
import { DomainException } from '../domain/exceptions/domain.exception.js';
|
|
2
2
|
/** HTTP answer for a {@link DomainException}, as plain values. */
|
|
3
3
|
export interface DomainErrorHttpStatus {
|
|
4
4
|
/** HTTP status code. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-error-http-status.d.ts","sourceRoot":"","sources":["../../http/domain-error-http-status.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"domain-error-http-status.d.ts","sourceRoot":"","sources":["../../http/domain-error-http-status.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAI3E,kEAAkE;AAClE,MAAM,WAAW,qBAAqB;IACpC,wBAAwB;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,GACrB,qBAAqB,CAAC;AACzB,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,GACb,qBAAqB,GAAG,SAAS,CAAC"}
|
|
@@ -1,25 +1,22 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/* Copyright (C) 2026-present Aristotelis — see repository license. */
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
function domainErrorHttpStatus(error) {
|
|
10
|
-
if (!(error instanceof domain_exception_1.DomainException))
|
|
2
|
+
import { ConcurrencyConflictError } from '../domain/exceptions/concurrency-conflict.error.js';
|
|
3
|
+
import { DomainException } from '../domain/exceptions/domain.exception.js';
|
|
4
|
+
import { EntityNotFoundException } from '../domain/exceptions/entity-not-found.exception.js';
|
|
5
|
+
import { MissingTenantContextError } from '../domain/exceptions/missing-tenant-context.exception.js';
|
|
6
|
+
export function domainErrorHttpStatus(error) {
|
|
7
|
+
if (!(error instanceof DomainException))
|
|
11
8
|
return undefined;
|
|
12
|
-
if (error instanceof
|
|
9
|
+
if (error instanceof MissingTenantContextError) {
|
|
13
10
|
return {
|
|
14
11
|
statusCode: 500,
|
|
15
12
|
error: 'Internal Server Error',
|
|
16
13
|
message: 'Internal server error',
|
|
17
14
|
};
|
|
18
15
|
}
|
|
19
|
-
if (error instanceof
|
|
16
|
+
if (error instanceof ConcurrencyConflictError) {
|
|
20
17
|
return { statusCode: 409, error: 'Conflict', message: error.message };
|
|
21
18
|
}
|
|
22
|
-
if (error instanceof
|
|
19
|
+
if (error instanceof EntityNotFoundException) {
|
|
23
20
|
return { statusCode: 404, error: 'Not Found', message: error.message };
|
|
24
21
|
}
|
|
25
22
|
return { statusCode: 400, error: 'Bad Request', message: error.message };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-error-http-status.js","sourceRoot":"","sources":["../../http/domain-error-http-status.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"domain-error-http-status.js","sourceRoot":"","sources":["../../http/domain-error-http-status.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,EAAE,yBAAyB,EAAE,MAAM,0DAA0D,CAAC;AAgDrG,MAAM,UAAU,qBAAqB,CACnC,KAAc;IAEd,IAAI,CAAC,CAAC,KAAK,YAAY,eAAe,CAAC;QAAE,OAAO,SAAS,CAAC;IAE1D,IAAI,KAAK,YAAY,yBAAyB,EAAE,CAAC;QAC/C,OAAO;YACL,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,uBAAuB;YAC9B,OAAO,EAAE,uBAAuB;SACjC,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,YAAY,wBAAwB,EAAE,CAAC;QAC9C,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;IACxE,CAAC;IACD,IAAI,KAAK,YAAY,uBAAuB,EAAE,CAAC;QAC7C,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;IACzE,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;AAC3E,CAAC"}
|
package/dist/http/index.d.ts
CHANGED
package/dist/http/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../http/index.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../http/index.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,cAAc,+BAA+B,CAAC"}
|
package/dist/http/index.js
CHANGED
|
@@ -1,20 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/* Copyright (C) 2026-present Aristotelis — see repository license. */
|
|
3
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
-
if (k2 === undefined) k2 = k;
|
|
5
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
-
}
|
|
9
|
-
Object.defineProperty(o, k2, desc);
|
|
10
|
-
}) : (function(o, m, k, k2) {
|
|
11
|
-
if (k2 === undefined) k2 = k;
|
|
12
|
-
o[k2] = m[k];
|
|
13
|
-
}));
|
|
14
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
15
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
16
|
-
};
|
|
17
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
2
|
/**
|
|
19
3
|
* HTTP status mapping for this package's errors.
|
|
20
4
|
*
|
|
@@ -22,5 +6,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
22
6
|
* application's own error handler or exception filter decides how to send it.
|
|
23
7
|
* HTTP stays out of `/domain` and `/application`.
|
|
24
8
|
*/
|
|
25
|
-
|
|
9
|
+
export * from './domain-error-http-status.js';
|
|
26
10
|
//# sourceMappingURL=index.js.map
|
package/dist/http/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../http/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../http/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE;;;;;;GAMG;AAEH,cAAc,+BAA+B,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
* `.../application` — in domain and CQRS code so the layering is expressed by
|
|
6
6
|
* the import itself rather than only by convention.
|
|
7
7
|
*/
|
|
8
|
-
export * from './application/index';
|
|
9
|
-
export * from './domain/index';
|
|
10
|
-
export * from './http/index';
|
|
11
|
-
export * from './persistence/index';
|
|
12
|
-
export * from './types/Method.type';
|
|
8
|
+
export * from './application/index.js';
|
|
9
|
+
export * from './domain/index.js';
|
|
10
|
+
export * from './http/index.js';
|
|
11
|
+
export * from './persistence/index.js';
|
|
12
|
+
export * from './types/Method.type.js';
|
|
13
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,20 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/* Copyright (C) 2026-present Aristotelis — see repository license. */
|
|
3
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
-
if (k2 === undefined) k2 = k;
|
|
5
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
-
}
|
|
9
|
-
Object.defineProperty(o, k2, desc);
|
|
10
|
-
}) : (function(o, m, k, k2) {
|
|
11
|
-
if (k2 === undefined) k2 = k;
|
|
12
|
-
o[k2] = m[k];
|
|
13
|
-
}));
|
|
14
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
15
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
16
|
-
};
|
|
17
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
2
|
/**
|
|
19
3
|
* Convenience barrel re-exporting every layer.
|
|
20
4
|
*
|
|
@@ -22,9 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
22
6
|
* `.../application` — in domain and CQRS code so the layering is expressed by
|
|
23
7
|
* the import itself rather than only by convention.
|
|
24
8
|
*/
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
9
|
+
export * from './application/index.js';
|
|
10
|
+
export * from './domain/index.js';
|
|
11
|
+
export * from './http/index.js';
|
|
12
|
+
export * from './persistence/index.js';
|
|
13
|
+
export * from './types/Method.type.js';
|
|
30
14
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE;;;;;;GAMG;AAEH,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/* Copyright (C) 2026-present Aristotelis — see repository license. */
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.consoleCacheLogger = consoleCacheLogger;
|
|
5
|
-
exports.safeWarn = safeWarn;
|
|
6
2
|
/** The default {@link ICacheLogger}: `console.warn` with a `[context]` prefix. */
|
|
7
|
-
function consoleCacheLogger(context) {
|
|
3
|
+
export function consoleCacheLogger(context) {
|
|
8
4
|
return { warn: (message) => console.warn(`[${context}] ${message}`) };
|
|
9
5
|
}
|
|
10
6
|
/**
|
|
@@ -12,7 +8,7 @@ function consoleCacheLogger(context) {
|
|
|
12
8
|
* cache maintenance runs after a durable write, and a throwing logger must not
|
|
13
9
|
* turn that success into an error.
|
|
14
10
|
*/
|
|
15
|
-
function safeWarn(logger, message) {
|
|
11
|
+
export function safeWarn(logger, message) {
|
|
16
12
|
try {
|
|
17
13
|
logger.warn(message);
|
|
18
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-logger.js","sourceRoot":"","sources":["../../../persistence/cache/cache-logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cache-logger.js","sourceRoot":"","sources":["../../../persistence/cache/cache-logger.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAuBtE,kFAAkF;AAClF,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,OAAO,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC,EAAE,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAoB,EAAE,OAAe;IAC5D,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,uEAAuE;IACzE,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CacheFillOptions, CacheSetOptions, CacheStateEntry, IVersionedCache } from '../../application/ports/cache.port';
|
|
1
|
+
import type { CacheFillOptions, CacheSetOptions, CacheStateEntry, IVersionedCache } from '../../application/ports/cache.port.js';
|
|
2
2
|
export declare const CACHE_TOKEN: unique symbol;
|
|
3
3
|
export type MemoryCacheSetOptions = CacheSetOptions;
|
|
4
4
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.cache.d.ts","sourceRoot":"","sources":["../../../persistence/cache/memory.cache.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,eAAe,EAChB,MAAM,
|
|
1
|
+
{"version":3,"file":"memory.cache.d.ts","sourceRoot":"","sources":["../../../persistence/cache/memory.cache.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,eAAe,EAChB,MAAM,uCAAuC,CAAC;AAE/C,eAAO,MAAM,WAAW,eAAwB,CAAC;AAEjD,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,mBAAmB,QAAS,CAAC;AA6B1C;;;;;;;;;;GAUG;AACH,qBAAa,WAAW,CAAC,CAAC,CAAE,YAAW,eAAe,CAAC,CAAC,CAAC;IACvD,QAAQ,CAAC,WAAW,OAAiB;IAErC,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,YAAY,OAAO,CAAC,EAAE;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,EAGA;IAED,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACH,OAAO,CAAC,KAAK;IAmBb;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAkBxD;IAED;;OAEG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAY7C;IAED;;;OAGG;IACG,OAAO,CACX,GAAG,EAAE,MAAM,EACX,gBAAgB,EAAE,MAAM,EACxB,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,OAAO,CAAC,CAYlB;IAED;;;OAGG;IACG,GAAG,CACP,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAWf;IAED,OAAO,CAAC,KAAK;IAoBb;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAQ7C;IAED;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvC;IAED;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAG3B;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/* Copyright (C) 2026-present Aristotelis — see repository license. */
|
|
3
|
-
|
|
4
|
-
exports.MemoryCache = exports.DEFAULT_MAX_ENTRIES = exports.CACHE_TOKEN = void 0;
|
|
5
|
-
exports.CACHE_TOKEN = Symbol('MemoryCache');
|
|
2
|
+
export const CACHE_TOKEN = Symbol('MemoryCache');
|
|
6
3
|
/**
|
|
7
4
|
* Upper bound on retained keys, including revision-only entries.
|
|
8
5
|
*/
|
|
9
|
-
|
|
6
|
+
export const DEFAULT_MAX_ENTRIES = 10_000;
|
|
10
7
|
function detach(value) {
|
|
11
8
|
if (value === undefined || value === null || typeof value !== 'object') {
|
|
12
9
|
return value;
|
|
@@ -32,7 +29,7 @@ function clearValue(entry) {
|
|
|
32
29
|
* whenever an entry is evicted or the cache is cleared, so dropping a key's
|
|
33
30
|
* metadata never returns it to a revision a reader observed before the drop.
|
|
34
31
|
*/
|
|
35
|
-
class MemoryCache {
|
|
32
|
+
export class MemoryCache {
|
|
36
33
|
isVersioned = true;
|
|
37
34
|
store = new Map();
|
|
38
35
|
lastRevision = 0n;
|
|
@@ -41,7 +38,7 @@ class MemoryCache {
|
|
|
41
38
|
maxEntries;
|
|
42
39
|
constructor(options) {
|
|
43
40
|
this.defaultTtlMs = options?.defaultTtlMs ?? 60_000;
|
|
44
|
-
this.maxEntries = options?.maxEntries ??
|
|
41
|
+
this.maxEntries = options?.maxEntries ?? DEFAULT_MAX_ENTRIES;
|
|
45
42
|
}
|
|
46
43
|
nextRevision() {
|
|
47
44
|
this.lastRevision += 1n;
|
|
@@ -179,5 +176,4 @@ class MemoryCache {
|
|
|
179
176
|
return this.store.size;
|
|
180
177
|
}
|
|
181
178
|
}
|
|
182
|
-
exports.MemoryCache = MemoryCache;
|
|
183
179
|
//# sourceMappingURL=memory.cache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.cache.js","sourceRoot":"","sources":["../../../persistence/cache/memory.cache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"memory.cache.js","sourceRoot":"","sources":["../../../persistence/cache/memory.cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ICache } from '../application/ports/cache.port';
|
|
2
|
-
import { ICommandRepository } from '../application/ports/command-repository.port';
|
|
1
|
+
import { ICache } from '../application/ports/cache.port.js';
|
|
2
|
+
import { ICommandRepository } from '../application/ports/command-repository.port.js';
|
|
3
3
|
/**
|
|
4
4
|
* Base class for write-side (command) repositories.
|
|
5
5
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-repository.abstract.d.ts","sourceRoot":"","sources":["../../persistence/command-repository.abstract.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"command-repository.abstract.d.ts","sourceRoot":"","sources":["../../persistence/command-repository.abstract.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAErF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,8BAAsB,iBAAiB,CACrC,OAAO,GAAG,OAAO,EACjB,OAAO,GAAG,OAAO,GAAG,IAAI,EACxB,MAAM,GAAG,OAAO,CAChB,YAAW,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC;IAEnC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;IAApD,YAA+B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAI;IAExD,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;CACzD"}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/* Copyright (C) 2026-present Aristotelis — see repository license. */
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.CommandRepository = void 0;
|
|
5
2
|
/**
|
|
6
3
|
* Base class for write-side (command) repositories.
|
|
7
4
|
*
|
|
@@ -33,11 +30,10 @@ exports.CommandRepository = void 0;
|
|
|
33
30
|
* }
|
|
34
31
|
* ```
|
|
35
32
|
*/
|
|
36
|
-
class CommandRepository {
|
|
33
|
+
export class CommandRepository {
|
|
37
34
|
cache;
|
|
38
35
|
constructor(cache) {
|
|
39
36
|
this.cache = cache;
|
|
40
37
|
}
|
|
41
38
|
}
|
|
42
|
-
exports.CommandRepository = CommandRepository;
|
|
43
39
|
//# sourceMappingURL=command-repository.abstract.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-repository.abstract.js","sourceRoot":"","sources":["../../persistence/command-repository.abstract.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"command-repository.abstract.js","sourceRoot":"","sources":["../../persistence/command-repository.abstract.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAKtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,OAAgB,iBAAiB;IAMN,KAAK;IAApC,YAA+B,KAAqB;qBAArB,KAAK;IAAmB,CAAC;CAGzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acknowledge-persisted.decorator.d.ts","sourceRoot":"","sources":["../../../persistence/decorators/acknowledge-persisted.decorator.ts"],"names":[],"mappings":"AACA;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,oBAAoB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,SAAS,OAAO,EAAE,EAAE,OAAO,EAAE;IACrE,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,kBAAkB,CAAC;CAC7C,IACS,OAAO,
|
|
1
|
+
{"version":3,"file":"acknowledge-persisted.decorator.d.ts","sourceRoot":"","sources":["../../../persistence/decorators/acknowledge-persisted.decorator.ts"],"names":[],"mappings":"AACA;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,oBAAoB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,SAAS,OAAO,EAAE,EAAE,OAAO,EAAE;IACrE,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,kBAAkB,CAAC;CAC7C,IACS,OAAO,WACJ,MAAM,QACT,MAAM,GAAG,MAAM,cACT,uBAAuB,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,KACxE,IAAI,CAYR"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AcknowledgePersisted = AcknowledgePersisted;
|
|
4
1
|
/**
|
|
5
2
|
* Method decorator that guarantees an aggregate's persisted version baseline is updated
|
|
6
3
|
* upon successful completion of a repository write operation.
|
|
@@ -65,7 +62,7 @@ exports.AcknowledgePersisted = AcknowledgePersisted;
|
|
|
65
62
|
* }
|
|
66
63
|
* ```
|
|
67
64
|
*/
|
|
68
|
-
function AcknowledgePersisted(options) {
|
|
65
|
+
export function AcknowledgePersisted(options) {
|
|
69
66
|
return (_target, _key, descriptor) => {
|
|
70
67
|
const original = descriptor.value;
|
|
71
68
|
if (typeof original !== 'function')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acknowledge-persisted.decorator.js","sourceRoot":"","sources":["../../../persistence/decorators/acknowledge-persisted.decorator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"acknowledge-persisted.decorator.js","sourceRoot":"","sources":["../../../persistence/decorators/acknowledge-persisted.decorator.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AACH,MAAM,UAAU,oBAAoB,CAA0B,OAE7D;IACC,OAAO,CACL,OAAe,EACf,IAAqB,EACrB,UAAyE,EACnE,EAAE;QACR,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;QAClC,IAAI,OAAO,QAAQ,KAAK,UAAU;YAChC,MAAM,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;QAClE,UAAU,CAAC,KAAK,GAAG,KAAK,WAAW,GAAG,IAAW;YAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAC/B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAChD,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.decorator.d.ts","sourceRoot":"","sources":["../../../persistence/decorators/cache.decorator.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"cache.decorator.d.ts","sourceRoot":"","sources":["../../../persistence/decorators/cache.decorator.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AA2C7D;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,OAAO,GAAG,OAAO;IAC7C;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC;IAE9C;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IAEpD;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IAExD;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,IAAI,CAAC;IAEnE;;;;;;;;;;OAUG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,EAC/D,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,EAC7E,YAAY,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,EAAE,CAAC,GAAG,IAAI,EACrD,gBAAgB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,EAAE,CAAC,GAAG,IAAI,GACxD,eAAe,CAmKjB"}
|
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/* Copyright (C) 2026-present Aristotelis — see repository license. */
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
const cache_snapshot_helper_1 = require("../helpers/cache-snapshot.helper");
|
|
11
|
-
const cache_version_helper_1 = require("../helpers/cache-version.helper");
|
|
12
|
-
const defaultLogger = (0, cache_logger_1.consoleCacheLogger)('CacheDecorator');
|
|
2
|
+
import { isVersionedCache, } from '../../application/ports/cache.port.js';
|
|
3
|
+
import { consoleCacheLogger, safeWarn } from '../cache/cache-logger.js';
|
|
4
|
+
import { createCacheMutationBarrier, } from '../helpers/cache-barrier.helper.js';
|
|
5
|
+
import { reportMissingCacheProperty } from '../helpers/cache-owner.helper.js';
|
|
6
|
+
import { toCacheSnapshot } from '../helpers/cache-snapshot.helper.js';
|
|
7
|
+
import { isCacheNewer } from '../helpers/cache-version.helper.js';
|
|
8
|
+
const defaultLogger = consoleCacheLogger('CacheDecorator');
|
|
13
9
|
function errorMessage(err) {
|
|
14
10
|
return err instanceof Error ? err.message : String(err);
|
|
15
11
|
}
|
|
@@ -24,11 +20,11 @@ function errorMessage(err) {
|
|
|
24
20
|
* and wherever it meets a barrier it treats it as a miss, never as a snapshot.
|
|
25
21
|
*/
|
|
26
22
|
async function evictKey(cache, key, reason, entity, barrierTtl) {
|
|
27
|
-
if (
|
|
23
|
+
if (isVersionedCache(cache)) {
|
|
28
24
|
await cache.invalidate(key);
|
|
29
25
|
return;
|
|
30
26
|
}
|
|
31
|
-
const barrier =
|
|
27
|
+
const barrier = createCacheMutationBarrier(reason, entity);
|
|
32
28
|
await cache.set(key, barrier, { ttl: barrierTtl });
|
|
33
29
|
}
|
|
34
30
|
/**
|
|
@@ -36,7 +32,7 @@ async function evictKey(cache, key, reason, entity, barrierTtl) {
|
|
|
36
32
|
* that started before the mutation, short enough that deleted aggregates do not
|
|
37
33
|
* accumulate keys indefinitely.
|
|
38
34
|
*/
|
|
39
|
-
|
|
35
|
+
export const DEFAULT_BARRIER_TTL_MS = 60_000;
|
|
40
36
|
/**
|
|
41
37
|
* Write-through cache decorator for a {@link CommandRepository} `save` method.
|
|
42
38
|
*
|
|
@@ -76,7 +72,7 @@ exports.DEFAULT_BARRIER_TTL_MS = 60_000;
|
|
|
76
72
|
* async save(user: User): Promise<null> { ... }
|
|
77
73
|
* ```
|
|
78
74
|
*/
|
|
79
|
-
function Cache(setKeyOrOptions, deleteKeysFn, invalidateKeysFn) {
|
|
75
|
+
export function Cache(setKeyOrOptions, deleteKeysFn, invalidateKeysFn) {
|
|
80
76
|
const options = typeof setKeyOrOptions === 'function' || setKeyOrOptions === null
|
|
81
77
|
? {
|
|
82
78
|
setKey: setKeyOrOptions,
|
|
@@ -91,9 +87,9 @@ function Cache(setKeyOrOptions, deleteKeysFn, invalidateKeysFn) {
|
|
|
91
87
|
const resolvedDeleteKeys = options.deleteKeys ?? null;
|
|
92
88
|
const resolvedInvalidateKeys = options.invalidateKeys ?? null;
|
|
93
89
|
const resolvedTtl = options.ttl;
|
|
94
|
-
const resolvedBarrierTtl = options.barrierTtl ??
|
|
90
|
+
const resolvedBarrierTtl = options.barrierTtl ?? DEFAULT_BARRIER_TTL_MS;
|
|
95
91
|
const logger = options.logger ?? defaultLogger;
|
|
96
|
-
const resolvedIsNewer = options.isNewer === null ? undefined : (options.isNewer ??
|
|
92
|
+
const resolvedIsNewer = options.isNewer === null ? undefined : (options.isNewer ?? isCacheNewer);
|
|
97
93
|
if (!resolvedSetKey && !resolvedDeleteKeys && !resolvedInvalidateKeys) {
|
|
98
94
|
throw new Error('@Cache decorator requires at least one of setKey, deleteKeys, or invalidateKeys to be specified.');
|
|
99
95
|
}
|
|
@@ -107,7 +103,7 @@ function Cache(setKeyOrOptions, deleteKeysFn, invalidateKeysFn) {
|
|
|
107
103
|
let observedKey;
|
|
108
104
|
let observedRevision;
|
|
109
105
|
let observedValue;
|
|
110
|
-
if (this.cache && resolvedSetKey &&
|
|
106
|
+
if (this.cache && resolvedSetKey && isVersionedCache(this.cache)) {
|
|
111
107
|
try {
|
|
112
108
|
observedKey = resolvedSetKey(entity);
|
|
113
109
|
const state = await this.cache.readState(observedKey);
|
|
@@ -121,7 +117,7 @@ function Cache(setKeyOrOptions, deleteKeysFn, invalidateKeysFn) {
|
|
|
121
117
|
}
|
|
122
118
|
const result = await original.call(this, entity);
|
|
123
119
|
if (!this.cache) {
|
|
124
|
-
|
|
120
|
+
reportMissingCacheProperty(this, '@Cache', options.logger);
|
|
125
121
|
return result;
|
|
126
122
|
}
|
|
127
123
|
// Cache maintenance is best-effort: the DB write already succeeded,
|
|
@@ -137,7 +133,7 @@ function Cache(setKeyOrOptions, deleteKeysFn, invalidateKeysFn) {
|
|
|
137
133
|
catch (err) {
|
|
138
134
|
const keyOption = deleting ? 'deleteKeys' : 'invalidateKeys';
|
|
139
135
|
const operation = deleting ? 'cache eviction' : 'cache maintenance';
|
|
140
|
-
|
|
136
|
+
safeWarn(logger, `Failed resolving ${keyOption} during ${operation}: ${errorMessage(err)}`);
|
|
141
137
|
}
|
|
142
138
|
for (const key of keys) {
|
|
143
139
|
try {
|
|
@@ -145,7 +141,7 @@ function Cache(setKeyOrOptions, deleteKeysFn, invalidateKeysFn) {
|
|
|
145
141
|
}
|
|
146
142
|
catch (err) {
|
|
147
143
|
const action = deleting ? 'evicting deletion' : 'invalidating';
|
|
148
|
-
|
|
144
|
+
safeWarn(logger, `Failed ${action} key "${key}": ${errorMessage(err)}`);
|
|
149
145
|
}
|
|
150
146
|
}
|
|
151
147
|
}
|
|
@@ -157,12 +153,12 @@ function Cache(setKeyOrOptions, deleteKeysFn, invalidateKeysFn) {
|
|
|
157
153
|
setKey = resolvedSetKey(entity);
|
|
158
154
|
}
|
|
159
155
|
catch (err) {
|
|
160
|
-
|
|
156
|
+
safeWarn(logger, `Failed resolving setKey during cache maintenance: ${errorMessage(err)}`);
|
|
161
157
|
}
|
|
162
158
|
if (setKey) {
|
|
163
159
|
try {
|
|
164
|
-
const snapshot =
|
|
165
|
-
if (
|
|
160
|
+
const snapshot = toCacheSnapshot(result);
|
|
161
|
+
if (isVersionedCache(this.cache)) {
|
|
166
162
|
if (observedRevision !== undefined && setKey === observedKey) {
|
|
167
163
|
// Skip the write-through when the snapshot observed before
|
|
168
164
|
// persistence is already newer; otherwise commit it only if
|
|
@@ -185,13 +181,13 @@ function Cache(setKeyOrOptions, deleteKeysFn, invalidateKeysFn) {
|
|
|
185
181
|
}
|
|
186
182
|
}
|
|
187
183
|
catch (err) {
|
|
188
|
-
|
|
184
|
+
safeWarn(logger, `Failed setting cache key "${setKey}": ${errorMessage(err)}`);
|
|
189
185
|
}
|
|
190
186
|
}
|
|
191
187
|
}
|
|
192
188
|
}
|
|
193
189
|
catch (err) {
|
|
194
|
-
|
|
190
|
+
safeWarn(logger, `Unexpected error during cache maintenance: ${errorMessage(err)}`);
|
|
195
191
|
}
|
|
196
192
|
return result;
|
|
197
193
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.decorator.js","sourceRoot":"","sources":["../../../persistence/decorators/cache.decorator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cache.decorator.js","sourceRoot":"","sources":["../../../persistence/decorators/cache.decorator.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAEL,gBAAgB,GACjB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAExE,OAAO,EAEL,0BAA0B,GAC3B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE,MAAM,aAAa,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;AAE3D,SAAS,YAAY,CAAC,GAAY;IAChC,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;;;;GASG;AACH,KAAK,UAAU,QAAQ,CACrB,KAAsB,EACtB,GAAW,EACX,MAA0B,EAC1B,MAAe,EACf,UAAkB;IAElB,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3D,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;AACrD,CAAC;AAsDD;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,UAAU,KAAK,CACnB,eAA6E,EAC7E,YAAqD,EACrD,gBAAyD;IAEzD,MAAM,OAAO,GACX,OAAO,eAAe,KAAK,UAAU,IAAI,eAAe,KAAK,IAAI;QAC/D,CAAC,CAAC;YACE,MAAM,EAAE,eAAe;YACvB,UAAU,EAAE,YAAY;YACxB,cAAc,EAAE,gBAAgB;SACjC;QACH,CAAC,CAAC,eAAe,CAAC;IACtB,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC;IAC9C,MAAM,kBAAkB,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC;IACtD,MAAM,sBAAsB,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC;IAC9D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAChC,MAAM,kBAAkB,GAAG,OAAO,CAAC,UAAU,IAAI,sBAAsB,CAAC;IACxE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC;IAC/C,MAAM,eAAe,GACnB,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,YAAY,CAAC,CAAC;IAE3E,IAAI,CAAC,cAAc,IAAI,CAAC,kBAAkB,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CACb,kGAAkG,CACnG,CAAC;IACJ,CAAC;IAED,OAAO,CACL,OAAe,EACf,YAA6B,EAC7B,UAA8B,EAC9B,EAAE;QACF,MAAM,QAAQ,GAAG,UAAU,CAAC,KAEA,CAAC;QAE7B,UAAU,CAAC,KAAK,GAAG,KAAK,WAEtB,MAAe;YAEf,yEAAyE;YACzE,0EAA0E;YAC1E,wEAAwE;YACxE,qEAAqE;YACrE,IAAI,WAA+B,CAAC;YACpC,IAAI,gBAAoC,CAAC;YACzC,IAAI,aAAsB,CAAC;YAE3B,IAAI,IAAI,CAAC,KAAK,IAAI,cAAc,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjE,IAAI,CAAC;oBACH,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;oBACrC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;oBACtD,gBAAgB,GAAG,KAAK,CAAC,QAAQ,CAAC;oBAClC,aAAa,GAAG,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;gBACnE,CAAC;gBAAC,MAAM,CAAC;oBACP,WAAW,GAAG,SAAS,CAAC;oBACxB,gBAAgB,GAAG,SAAS,CAAC;gBAC/B,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAEjD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAChB,0BAA0B,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC3D,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,oEAAoE;YACpE,4DAA4D;YAC5D,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,CAAC;gBACzD,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,sBAAsB,CAAC;gBACtE,IAAI,MAAM,EAAE,CAAC;oBACX,IAAI,IAAI,GAAa,EAAE,CAAC;oBACxB,IAAI,CAAC;wBACH,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;oBAC9B,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC;wBAC7D,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,mBAAmB,CAAC;wBACpE,QAAQ,CACN,MAAM,EACN,oBAAoB,SAAS,WAAW,SAAS,KAAK,YAAY,CAAC,GAAG,CAAC,EAAE,CAC1E,CAAC;oBACJ,CAAC;oBACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;wBACvB,IAAI,CAAC;4BACH,MAAM,QAAQ,CACZ,IAAI,CAAC,KAAK,EACV,GAAG,EACH,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,EACpC,MAAM,EACN,kBAAkB,CACnB,CAAC;wBACJ,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,cAAc,CAAC;4BAC/D,QAAQ,CACN,MAAM,EACN,UAAU,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,EAAE,CACtD,CAAC;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,IAAI,QAAQ;oBAAE,OAAO,MAAM,CAAC;gBAE5B,IAAI,cAAc,EAAE,CAAC;oBACnB,IAAI,MAA0B,CAAC;oBAC/B,IAAI,CAAC;wBACH,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;oBAClC,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,QAAQ,CACN,MAAM,EACN,qDAAqD,YAAY,CAAC,GAAG,CAAC,EAAE,CACzE,CAAC;oBACJ,CAAC;oBACD,IAAI,MAAM,EAAE,CAAC;wBACX,IAAI,CAAC;4BACH,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;4BAEzC,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gCACjC,IAAI,gBAAgB,KAAK,SAAS,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;oCAC7D,2DAA2D;oCAC3D,4DAA4D;oCAC5D,6DAA6D;oCAC7D,IAAI,CAAC,eAAe,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,CAAC;wCAChD,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CACtB,MAAM,EACN,gBAAgB,EAChB,QAAiB,EACjB,EAAE,GAAG,EAAE,WAAW,EAAE,CACrB,CAAC;oCACJ,CAAC;gCACH,CAAC;qCAAM,CAAC;oCACN,6DAA6D;oCAC7D,6DAA6D;oCAC7D,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gCACtC,CAAC;4BACH,CAAC;iCAAM,CAAC;gCACN,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE;oCACrC,GAAG,EAAE,WAAW;oCAChB,OAAO,EAAE,eAAe;iCACzB,CAAC,CAAC;4BACL,CAAC;wBACH,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,QAAQ,CACN,MAAM,EACN,6BAA6B,MAAM,MAAM,YAAY,CAAC,GAAG,CAAC,EAAE,CAC7D,CAAC;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CACN,MAAM,EACN,8CAA8C,YAAY,CAAC,GAAG,CAAC,EAAE,CAClE,CAAC;YACJ,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { IQueryOptions } from '../../application/query.options';
|
|
2
|
-
import type { ICacheLogger } from '../cache/cache-logger';
|
|
3
|
-
import { isCacheNewer } from '../helpers/cache-version.helper';
|
|
1
|
+
import { IQueryOptions } from '../../application/query.options.js';
|
|
2
|
+
import type { ICacheLogger } from '../cache/cache-logger.js';
|
|
3
|
+
import { isCacheNewer } from '../helpers/cache-version.helper.js';
|
|
4
4
|
export { isCacheNewer };
|
|
5
5
|
/**
|
|
6
6
|
* Options for configuring read-through caching and rehydration via {@link FromCache}.
|