@cqrs-ddd/core 0.3.0 → 0.4.1
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 +2 -705
- 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 +2 -2
- package/dist/application/command-base.handler.d.ts.map +1 -1
- package/dist/application/command-base.handler.js +3 -7
- 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 +1 -1
- 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.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.js +2 -7
- package/dist/domain/exceptions/transient-operation.error.js.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 -19
- package/dist/domain/index.d.ts.map +1 -1
- package/dist/domain/index.js +19 -35
- package/dist/domain/index.js.map +1 -1
- package/dist/domain/interfaces/aggregate-root.interface.d.ts +1 -1
- package/dist/domain/interfaces/aggregate-root.interface.d.ts.map +1 -1
- package/dist/domain/interfaces/aggregate-root.interface.js +1 -2
- package/dist/domain/interfaces/aggregate-root.interface.js.map +1 -1
- 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 +2 -2
- package/dist/domain/models/aggregate-root.d.ts.map +1 -1
- package/dist/domain/models/aggregate-root.js +1 -5
- package/dist/domain/models/aggregate-root.js.map +1 -1
- package/dist/domain/models/root.entity.d.ts +4 -4
- package/dist/domain/models/root.entity.d.ts.map +1 -1
- package/dist/domain/models/root.entity.js +10 -14
- 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 +3 -3
- package/dist/persistence/command-repository.abstract.d.ts.map +1 -1
- package/dist/persistence/command-repository.abstract.js +2 -6
- package/dist/persistence/command-repository.abstract.js.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 +2 -2
- 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 +4 -4
- package/dist/persistence/query-repository.abstract.d.ts.map +1 -1
- package/dist/persistence/query-repository.abstract.js +2 -6
- 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 +6 -4
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/* Copyright (C) 2026-present Aristotelis — see repository license. */
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const node_crypto_1 = require("node:crypto");
|
|
7
|
-
const safe_stringify_1 = require("@cqrs-ddd/safe-stringify");
|
|
8
|
-
const tenant_resolver_1 = require("../../application/tenant-resolver");
|
|
2
|
+
import { createHash } from 'node:crypto';
|
|
3
|
+
import { escapeKeySegment, stableStringify } from '@cqrs-ddd/safe-stringify';
|
|
4
|
+
import { requireTenant, } from '../../application/tenant-resolver.js';
|
|
9
5
|
/**
|
|
10
6
|
* Normalizes filter conditions for canonical tuple construction:
|
|
11
7
|
* - Omits undefined properties.
|
|
@@ -50,8 +46,8 @@ function normalizeFilterConditions(conditions) {
|
|
|
50
46
|
* @throws {MissingTenantContextError} When tenant identity cannot be resolved.
|
|
51
47
|
* @throws {TypeError} When conditions contain non-serializable values.
|
|
52
48
|
*/
|
|
53
|
-
function cacheKey(resourceOrEntity, conditions, tenantOrContext) {
|
|
54
|
-
const schema =
|
|
49
|
+
export function cacheKey(resourceOrEntity, conditions, tenantOrContext) {
|
|
50
|
+
const schema = requireTenant('cache key derivation', tenantOrContext);
|
|
55
51
|
let resource;
|
|
56
52
|
if (typeof resourceOrEntity === 'string') {
|
|
57
53
|
resource = resourceOrEntity;
|
|
@@ -67,8 +63,8 @@ function cacheKey(resourceOrEntity, conditions, tenantOrContext) {
|
|
|
67
63
|
resource = resource.replace(/:+$/, '');
|
|
68
64
|
const normalizedFilter = normalizeFilterConditions(conditions);
|
|
69
65
|
const tuple = [schema, resource, normalizedFilter];
|
|
70
|
-
const serializedTuple =
|
|
71
|
-
const hash =
|
|
66
|
+
const serializedTuple = stableStringify(tuple);
|
|
67
|
+
const hash = createHash('sha256').update(serializedTuple).digest('hex');
|
|
72
68
|
return `${schema}:${resource}:v1:${hash}`;
|
|
73
69
|
}
|
|
74
70
|
/**
|
|
@@ -81,9 +77,9 @@ function cacheKey(resourceOrEntity, conditions, tenantOrContext) {
|
|
|
81
77
|
*/
|
|
82
78
|
function canonicalizeValue(val) {
|
|
83
79
|
if (typeof val === 'object') {
|
|
84
|
-
return
|
|
80
|
+
return stableStringify(val);
|
|
85
81
|
}
|
|
86
|
-
return
|
|
82
|
+
return escapeKeySegment(String(val));
|
|
87
83
|
}
|
|
88
84
|
/**
|
|
89
85
|
* Resolves a template string (e.g. `user:{userId}`) against a query/command payload,
|
|
@@ -109,13 +105,13 @@ function canonicalizeValue(val) {
|
|
|
109
105
|
* // tenant-a:user:019...
|
|
110
106
|
* ```
|
|
111
107
|
*/
|
|
112
|
-
function cacheKeyTemplate(template, tenantOrContext) {
|
|
108
|
+
export function cacheKeyTemplate(template, tenantOrContext) {
|
|
113
109
|
return (source) => {
|
|
114
110
|
const ctx = source && typeof source === 'object' && 'request' in source
|
|
115
111
|
? source
|
|
116
112
|
: undefined;
|
|
117
113
|
const data = (ctx ? ctx.request : source);
|
|
118
|
-
const schema =
|
|
114
|
+
const schema = requireTenant('cache key derivation', tenantOrContext ?? ctx);
|
|
119
115
|
const resolved = template.replace(/\{(\w+)(\?)?\}/g, (_, prop, optional) => {
|
|
120
116
|
const val = data?.[prop];
|
|
121
117
|
if (val !== undefined && val !== null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-key.helper.js","sourceRoot":"","sources":["../../../persistence/helpers/cache-key.helper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cache-key.helper.js","sourceRoot":"","sources":["../../../persistence/helpers/cache-key.helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ICacheLogger } from '../cache/cache-logger';
|
|
1
|
+
import type { ICacheLogger } from '../cache/cache-logger.js';
|
|
2
2
|
/**
|
|
3
3
|
* Reports, once per repository class, a cache decorator running on an instance
|
|
4
4
|
* that has no `cache` property. Such a repository is miswired: cache
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-owner.helper.d.ts","sourceRoot":"","sources":["../../../persistence/helpers/cache-owner.helper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"cache-owner.helper.d.ts","sourceRoot":"","sources":["../../../persistence/helpers/cache-owner.helper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAM7D;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,QAAQ,GAAG,YAAY,EAClC,MAAM,GAAE,YAA4B,GACnC,IAAI,CASN"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/* Copyright (C) 2026-present Aristotelis — see repository license. */
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const cache_logger_1 = require("../cache/cache-logger");
|
|
6
|
-
const defaultLogger = (0, cache_logger_1.consoleCacheLogger)('CacheDecorators');
|
|
2
|
+
import { consoleCacheLogger, safeWarn } from '../cache/cache-logger.js';
|
|
3
|
+
const defaultLogger = consoleCacheLogger('CacheDecorators');
|
|
7
4
|
const reportedOwners = new WeakSet();
|
|
8
5
|
/**
|
|
9
6
|
* Reports, once per repository class, a cache decorator running on an instance
|
|
@@ -11,12 +8,12 @@ const reportedOwners = new WeakSet();
|
|
|
11
8
|
* maintenance and read-through are skipped. An instance that declares `cache`
|
|
12
9
|
* and leaves it unset is intentionally uncached and is not reported.
|
|
13
10
|
*/
|
|
14
|
-
function reportMissingCacheProperty(instance, decorator, logger = defaultLogger) {
|
|
11
|
+
export function reportMissingCacheProperty(instance, decorator, logger = defaultLogger) {
|
|
15
12
|
const owner = instance.constructor;
|
|
16
13
|
if ('cache' in instance || reportedOwners.has(owner))
|
|
17
14
|
return;
|
|
18
15
|
reportedOwners.add(owner);
|
|
19
|
-
|
|
16
|
+
safeWarn(logger, `${owner.name} uses ${decorator} but has no \`cache\` property, so caching is skipped. ` +
|
|
20
17
|
'Extend CommandRepository/QueryRepository or declare a `cache` property.');
|
|
21
18
|
}
|
|
22
19
|
//# sourceMappingURL=cache-owner.helper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-owner.helper.js","sourceRoot":"","sources":["../../../persistence/helpers/cache-owner.helper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cache-owner.helper.js","sourceRoot":"","sources":["../../../persistence/helpers/cache-owner.helper.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAGtE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAExE,MAAM,aAAa,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;AAC5D,MAAM,cAAc,GAAG,IAAI,OAAO,EAAU,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CACxC,QAAgB,EAChB,SAAkC,EAClC,MAAM,GAAiB,aAAa;IAEpC,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC;IACnC,IAAI,OAAO,IAAI,QAAQ,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO;IAC7D,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,QAAQ,CACN,MAAM,EACN,GAAG,KAAK,CAAC,IAAI,SAAS,SAAS,yDAAyD;QACtF,yEAAyE,CAC5E,CAAC;AACJ,CAAC"}
|
|
@@ -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.toCacheSnapshot = toCacheSnapshot;
|
|
5
2
|
/**
|
|
6
3
|
* Extracts a detached, serializable snapshot from a domain entity, aggregate root,
|
|
7
4
|
* or arbitrary value before storing in cache or performing version comparisons.
|
|
@@ -28,7 +25,7 @@ exports.toCacheSnapshot = toCacheSnapshot;
|
|
|
28
25
|
* @param serializeFn - Optional custom serialization function.
|
|
29
26
|
* @returns Pure, detached serializable snapshot.
|
|
30
27
|
*/
|
|
31
|
-
function toCacheSnapshot(value, serializeFn) {
|
|
28
|
+
export function toCacheSnapshot(value, serializeFn) {
|
|
32
29
|
if (serializeFn) {
|
|
33
30
|
return serializeFn(value);
|
|
34
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-snapshot.helper.js","sourceRoot":"","sources":["../../../persistence/helpers/cache-snapshot.helper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cache-snapshot.helper.js","sourceRoot":"","sources":["../../../persistence/helpers/cache-snapshot.helper.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAQ,EACR,WAA4C;IAE5C,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,OAAQ,KAA8B,CAAC,MAAM,KAAK,UAAU;QACjE,CAAC,CAAE,KAA0C,CAAC,MAAM,EAAE;QACtD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/* Copyright (C) 2026-present Aristotelis — see repository license. */
|
|
3
|
-
|
|
4
|
-
exports.isCacheNewer = isCacheNewer;
|
|
5
|
-
const cache_barrier_helper_1 = require("./cache-barrier.helper");
|
|
2
|
+
import { isCacheMutationBarrier } from './cache-barrier.helper.js';
|
|
6
3
|
/**
|
|
7
4
|
* Checks whether a cached snapshot or record is strictly newer than an incoming
|
|
8
5
|
* record based on explicit version numbers, generation counters, or updatedAt timestamps.
|
|
@@ -30,7 +27,7 @@ const cache_barrier_helper_1 = require("./cache-barrier.helper");
|
|
|
30
27
|
* @param incoming - The incoming data being written or compared.
|
|
31
28
|
* @returns `true` if `cached` is strictly newer than `incoming`, `false` otherwise.
|
|
32
29
|
*/
|
|
33
|
-
function isCacheNewer(cached, incoming) {
|
|
30
|
+
export function isCacheNewer(cached, incoming) {
|
|
34
31
|
if (!cached ||
|
|
35
32
|
typeof cached !== 'object' ||
|
|
36
33
|
!incoming ||
|
|
@@ -41,15 +38,15 @@ function isCacheNewer(cached, incoming) {
|
|
|
41
38
|
// outranks any snapshot: a write-through that started before a concurrent
|
|
42
39
|
// delete must not overwrite it, or the deleted aggregate would reappear in the
|
|
43
40
|
// cache as an ordinary hit.
|
|
44
|
-
if (
|
|
45
|
-
if (!
|
|
41
|
+
if (isCacheMutationBarrier(cached)) {
|
|
42
|
+
if (!isCacheMutationBarrier(incoming))
|
|
46
43
|
return true;
|
|
47
44
|
// Between two barriers the later one wins, so a fresh mutation can still
|
|
48
45
|
// supersede an older one.
|
|
49
46
|
return incoming.createdAt <= cached.createdAt;
|
|
50
47
|
}
|
|
51
48
|
// A barrier arriving over a snapshot must always be applied.
|
|
52
|
-
if (
|
|
49
|
+
if (isCacheMutationBarrier(incoming))
|
|
53
50
|
return false;
|
|
54
51
|
const c = cached;
|
|
55
52
|
const inc = incoming;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-version.helper.js","sourceRoot":"","sources":["../../../persistence/helpers/cache-version.helper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cache-version.helper.js","sourceRoot":"","sources":["../../../persistence/helpers/cache-version.helper.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,YAAY,CAAC,MAAe,EAAE,QAAiB;IAC7D,IACE,CAAC,MAAM;QACP,OAAO,MAAM,KAAK,QAAQ;QAC1B,CAAC,QAAQ;QACT,OAAO,QAAQ,KAAK,QAAQ,EAC5B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4EAA4E;IAC5E,0EAA0E;IAC1E,+EAA+E;IAC/E,4BAA4B;IAC5B,IAAI,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QACnD,yEAAyE;QACzE,0BAA0B;QAC1B,OAAO,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC;IAChD,CAAC;IAED,6DAA6D;IAC7D,IAAI,sBAAsB,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAEnD,MAAM,CAAC,GAAG,MAAiC,CAAC;IAC5C,MAAM,GAAG,GAAG,QAAmC,CAAC;IAEhD,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACrE,OAAO,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IACjC,CAAC;IAED,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACjE,OAAO,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAC7D,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAmC,CAAC,CAAC,OAAO,EAAE,CAAC;QACxE,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,SAAmC,CAAC,CAAC,OAAO,EAAE,CAAC;QAC5E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,OAAO,KAAK,GAAG,OAAO,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -6,18 +6,18 @@
|
|
|
6
6
|
* should import those and leave this entry point to the adapters. ORM adapters
|
|
7
7
|
* live in their own packages, such as `@cqrs-ddd/mikro-orm`.
|
|
8
8
|
*/
|
|
9
|
-
export * from './cache/cache-logger';
|
|
10
|
-
export * from './cache/memory.cache';
|
|
11
|
-
export * from './command-repository.abstract';
|
|
12
|
-
export * from './decorators/acknowledge-persisted.decorator';
|
|
13
|
-
export * from './decorators/cache.decorator';
|
|
14
|
-
export * from './decorators/from-cache.decorator';
|
|
15
|
-
export * from './decorators/map-persistence-errors.decorator';
|
|
16
|
-
export * from './decorators/persisted-write.decorator';
|
|
17
|
-
export * from './helpers/cache-barrier.helper';
|
|
18
|
-
export * from './helpers/cache-key.helper';
|
|
19
|
-
export * from './helpers/cache-snapshot.helper';
|
|
20
|
-
export * from './helpers/cache-version.helper';
|
|
21
|
-
export * from './persistence-dialect';
|
|
22
|
-
export * from './query-repository.abstract';
|
|
9
|
+
export * from './cache/cache-logger.js';
|
|
10
|
+
export * from './cache/memory.cache.js';
|
|
11
|
+
export * from './command-repository.abstract.js';
|
|
12
|
+
export * from './decorators/acknowledge-persisted.decorator.js';
|
|
13
|
+
export * from './decorators/cache.decorator.js';
|
|
14
|
+
export * from './decorators/from-cache.decorator.js';
|
|
15
|
+
export * from './decorators/map-persistence-errors.decorator.js';
|
|
16
|
+
export * from './decorators/persisted-write.decorator.js';
|
|
17
|
+
export * from './helpers/cache-barrier.helper.js';
|
|
18
|
+
export * from './helpers/cache-key.helper.js';
|
|
19
|
+
export * from './helpers/cache-snapshot.helper.js';
|
|
20
|
+
export * from './helpers/cache-version.helper.js';
|
|
21
|
+
export * from './persistence-dialect.js';
|
|
22
|
+
export * from './query-repository.abstract.js';
|
|
23
23
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../persistence/index.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../persistence/index.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,iDAAiD,CAAC;AAChE,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kDAAkD,CAAC;AACjE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC"}
|
|
@@ -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
|
* ORM-neutral persistence building blocks: the repository base classes, the
|
|
20
4
|
* lifecycle decorators, the cache protocol and its in-memory adapter.
|
|
@@ -23,18 +7,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
23
7
|
* should import those and leave this entry point to the adapters. ORM adapters
|
|
24
8
|
* live in their own packages, such as `@cqrs-ddd/mikro-orm`.
|
|
25
9
|
*/
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
10
|
+
export * from './cache/cache-logger.js';
|
|
11
|
+
export * from './cache/memory.cache.js';
|
|
12
|
+
export * from './command-repository.abstract.js';
|
|
13
|
+
export * from './decorators/acknowledge-persisted.decorator.js';
|
|
14
|
+
export * from './decorators/cache.decorator.js';
|
|
15
|
+
export * from './decorators/from-cache.decorator.js';
|
|
16
|
+
export * from './decorators/map-persistence-errors.decorator.js';
|
|
17
|
+
export * from './decorators/persisted-write.decorator.js';
|
|
18
|
+
export * from './helpers/cache-barrier.helper.js';
|
|
19
|
+
export * from './helpers/cache-key.helper.js';
|
|
20
|
+
export * from './helpers/cache-snapshot.helper.js';
|
|
21
|
+
export * from './helpers/cache-version.helper.js';
|
|
22
|
+
export * from './persistence-dialect.js';
|
|
23
|
+
export * from './query-repository.abstract.js';
|
|
40
24
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../persistence/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../persistence/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE;;;;;;;GAOG;AAEH,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,iDAAiD,CAAC;AAChE,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kDAAkD,CAAC;AACjE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/* Copyright (C) 2026-present Aristotelis — see repository license. */
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.setPersistenceDialect = setPersistenceDialect;
|
|
5
|
-
exports.persistenceDialect = persistenceDialect;
|
|
6
2
|
let registered;
|
|
7
3
|
/**
|
|
8
4
|
* Registers the dialect that `@MapPersistenceErrors` and `@PersistedWrite` use
|
|
@@ -14,7 +10,7 @@ let registered;
|
|
|
14
10
|
* setPersistenceDialect(new MikroOrmDialect(orm));
|
|
15
11
|
* ```
|
|
16
12
|
*/
|
|
17
|
-
function setPersistenceDialect(dialect) {
|
|
13
|
+
export function setPersistenceDialect(dialect) {
|
|
18
14
|
registered = dialect;
|
|
19
15
|
}
|
|
20
16
|
/**
|
|
@@ -25,7 +21,7 @@ function setPersistenceDialect(dialect) {
|
|
|
25
21
|
* const dialect = options.dialect ?? persistenceDialect();
|
|
26
22
|
* ```
|
|
27
23
|
*/
|
|
28
|
-
function persistenceDialect() {
|
|
24
|
+
export function persistenceDialect() {
|
|
29
25
|
return registered;
|
|
30
26
|
}
|
|
31
27
|
//# sourceMappingURL=persistence-dialect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistence-dialect.js","sourceRoot":"","sources":["../../persistence/persistence-dialect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"persistence-dialect.js","sourceRoot":"","sources":["../../persistence/persistence-dialect.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAiBtE,IAAI,UAA2C,CAAC;AAEhD;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAwC;IAExC,UAAU,GAAG,OAAO,CAAC;AACvB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ICache } from '../application/ports/cache.port';
|
|
2
|
-
import { IQueryRepository } from '../application/ports/query-repository.port';
|
|
3
|
-
import { IQueryOptions } from '../application/query.options';
|
|
1
|
+
import { ICache } from '../application/ports/cache.port.js';
|
|
2
|
+
import { IQueryRepository } from '../application/ports/query-repository.port.js';
|
|
3
|
+
import { IQueryOptions } from '../application/query.options.js';
|
|
4
4
|
/**
|
|
5
5
|
* Repository-wide snapshot policy applied by {@link FromCache} to methods that
|
|
6
6
|
* do not declare their own `hydrateFn` / `serializeFn`.
|
|
@@ -24,7 +24,7 @@ export interface QueryRepositoryHydration<TResult> {
|
|
|
24
24
|
* @typeParam TQuery - The query/options type accepted by {@link find}.
|
|
25
25
|
* @typeParam TResult - The result type returned by {@link find}.
|
|
26
26
|
*
|
|
27
|
-
* @example Creating a query repository with
|
|
27
|
+
* @example Creating a query repository with the FromCache decorator
|
|
28
28
|
* ```typescript
|
|
29
29
|
* @Injectable()
|
|
30
30
|
* export class GetUserQueryRepository extends QueryRepository<GetUserQuery, User | null> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-repository.abstract.d.ts","sourceRoot":"","sources":["../../persistence/query-repository.abstract.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"query-repository.abstract.d.ts","sourceRoot":"","sources":["../../persistence/query-repository.abstract.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE;;;GAGG;AACH,MAAM,WAAW,wBAAwB,CAAC,OAAO;IAC/C;;;OAGG;IACH,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAExC,4DAA4D;IAC5D,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;CAC5C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,8BAAsB,eAAe,CAAC,MAAM,GAAG,aAAa,EAAE,OAAO,GAAG,OAAO,CAC7E,YAAW,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC;IAG1C,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,wBAAwB,CAAC,OAAO,CAAC;IAFlE,YACqB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,EACtB,SAAS,CAAC,EAAE,wBAAwB,CAAC,OAAO,CAAC,YAAA,EAC9D;IAEJ,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAChD"}
|
|
@@ -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.QueryRepository = void 0;
|
|
5
2
|
/**
|
|
6
3
|
* Base class for read-side (query) repositories.
|
|
7
4
|
*
|
|
@@ -12,7 +9,7 @@ exports.QueryRepository = void 0;
|
|
|
12
9
|
* @typeParam TQuery - The query/options type accepted by {@link find}.
|
|
13
10
|
* @typeParam TResult - The result type returned by {@link find}.
|
|
14
11
|
*
|
|
15
|
-
* @example Creating a query repository with
|
|
12
|
+
* @example Creating a query repository with the FromCache decorator
|
|
16
13
|
* ```typescript
|
|
17
14
|
* @Injectable()
|
|
18
15
|
* export class GetUserQueryRepository extends QueryRepository<GetUserQuery, User | null> {
|
|
@@ -55,7 +52,7 @@ exports.QueryRepository = void 0;
|
|
|
55
52
|
* A method that declares `hydrateFn` (including `null`) or `serializeFn`
|
|
56
53
|
* uses its own value instead of the repository default.
|
|
57
54
|
*/
|
|
58
|
-
class QueryRepository {
|
|
55
|
+
export class QueryRepository {
|
|
59
56
|
cache;
|
|
60
57
|
hydration;
|
|
61
58
|
constructor(cache, hydration) {
|
|
@@ -63,5 +60,4 @@ class QueryRepository {
|
|
|
63
60
|
this.hydration = hydration;
|
|
64
61
|
}
|
|
65
62
|
}
|
|
66
|
-
exports.QueryRepository = QueryRepository;
|
|
67
63
|
//# sourceMappingURL=query-repository.abstract.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-repository.abstract.js","sourceRoot":"","sources":["../../persistence/query-repository.abstract.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"query-repository.abstract.js","sourceRoot":"","sources":["../../persistence/query-repository.abstract.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAqBtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,MAAM,OAAgB,eAAe;IAId,KAAK;IACL,SAAS;IAF9B,YACqB,KAAsB,EACtB,SAA6C;qBAD7C,KAAK;yBACL,SAAS;IAC3B,CAAC;CAGL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Method.type.js","sourceRoot":"","sources":["../../types/Method.type.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Method.type.js","sourceRoot":"","sources":["../../types/Method.type.ts"],"names":[],"mappings":"AAAA,sEAAsE"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cqrs-ddd/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Framework- and ORM-neutral DDD building blocks for TypeScript: aggregates and domain events, CQRS base classes and repository ports, and a revision-fenced repository cache, as separate entry points.",
|
|
5
5
|
"author": "Aristotelis",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
7
|
+
"type": "module",
|
|
7
8
|
"engines": {
|
|
8
9
|
"node": ">=22.12.0"
|
|
9
10
|
},
|
|
@@ -47,7 +48,8 @@
|
|
|
47
48
|
"./http": {
|
|
48
49
|
"types": "./dist/http/index.d.ts",
|
|
49
50
|
"default": "./dist/http/index.js"
|
|
50
|
-
}
|
|
51
|
+
},
|
|
52
|
+
"./package.json": "./package.json"
|
|
51
53
|
},
|
|
52
54
|
"files": [
|
|
53
55
|
"dist",
|
|
@@ -59,8 +61,8 @@
|
|
|
59
61
|
"access": "public"
|
|
60
62
|
},
|
|
61
63
|
"dependencies": {
|
|
62
|
-
"@cqrs-ddd/
|
|
63
|
-
"@cqrs-ddd/
|
|
64
|
+
"@cqrs-ddd/uuidv7": "^0.4.1",
|
|
65
|
+
"@cqrs-ddd/safe-stringify": "^0.4.1"
|
|
64
66
|
},
|
|
65
67
|
"devDependencies": {
|
|
66
68
|
"@vitest/coverage-v8": "^5.0.2",
|