@cqrs-ddd/mikro-orm 0.4.2 → 0.5.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/COMMERCIAL_LICENSE.txt +14 -10
- package/README.md +4 -4
- package/dist/cache/mikro-orm.cache.d.ts +7 -8
- package/dist/cache/mikro-orm.cache.d.ts.map +1 -1
- package/dist/cache/mikro-orm.cache.js +81 -68
- package/dist/cache/mikro-orm.cache.js.map +1 -1
- package/dist/concurrency/conditioned-write.d.ts +10 -1
- package/dist/concurrency/conditioned-write.d.ts.map +1 -1
- package/dist/concurrency/conditioned-write.js +1 -1
- package/dist/concurrency/conditioned-write.js.map +1 -1
- package/dist/concurrency/optimistic-delete.d.ts.map +1 -1
- package/dist/concurrency/optimistic-delete.js +7 -1
- package/dist/concurrency/optimistic-delete.js.map +1 -1
- package/dist/concurrency/optimistic-update.d.ts.map +1 -1
- package/dist/concurrency/optimistic-update.js +7 -1
- package/dist/concurrency/optimistic-update.js.map +1 -1
- package/dist/errors/mikro-orm.dialect.d.ts.map +1 -1
- package/dist/errors/mikro-orm.dialect.js.map +1 -1
- package/dist/mapping/unix-timestamp.type.d.ts.map +1 -1
- package/dist/mapping/unix-timestamp.type.js.map +1 -1
- package/dist/repository/aggregate.repository.d.ts +1 -6
- package/dist/repository/aggregate.repository.d.ts.map +1 -1
- package/dist/repository/aggregate.repository.js +1 -6
- package/dist/repository/aggregate.repository.js.map +1 -1
- package/package.json +11 -11
package/COMMERCIAL_LICENSE.txt
CHANGED
|
@@ -9,21 +9,25 @@ This Commercial License Agreement ("Agreement") is a legal agreement between You
|
|
|
9
9
|
Upon acceptance of this Agreement and compliance with the Payment Terms in Section 2, the Licensor grants You a non-exclusive, worldwide, non-transferable license to use, modify, integrate, and distribute the Software in commercial applications WITHOUT the copyleft obligations of the GNU Affero General Public License v3 (AGPLv3). Under this Agreement, You are NOT required to open-source Your proprietary code that integrates with the Software.
|
|
10
10
|
|
|
11
11
|
2. PAYMENT TERMS AND REVENUE TIERS
|
|
12
|
-
This license requires an annual fee based on Your (or Your organization's) total gross global revenue for the most recently completed fiscal year.
|
|
12
|
+
This license requires an annual fee based on Your (or Your organization's) total gross global revenue for the most recently completed fiscal year.
|
|
13
13
|
|
|
14
|
-
The annual fee is calculated using the following
|
|
14
|
+
The annual fee is calculated using the following marginal brackets. Each rate applies only to the portion of gross revenue that falls within its bracket, and the annual fee is the sum of the amounts for all brackets:
|
|
15
15
|
|
|
16
|
-
a) Tier 1:
|
|
17
|
-
|
|
16
|
+
a) Tier 1: The portion of gross revenue up to $500,000 USD
|
|
17
|
+
Rate: 0% (Free Commercial Use). If gross revenue does not exceed $500,000 USD, the fee is $0.
|
|
18
18
|
|
|
19
|
-
b) Tier 2:
|
|
20
|
-
|
|
19
|
+
b) Tier 2: The portion of gross revenue above $500,000 USD and up to $10,000,000 USD
|
|
20
|
+
Rate: 0.1% of that portion.
|
|
21
21
|
|
|
22
|
-
c) Tier 3:
|
|
23
|
-
|
|
22
|
+
c) Tier 3: The portion of gross revenue above $10,000,000 USD and up to $50,000,000 USD
|
|
23
|
+
Rate: 0.05% of that portion.
|
|
24
24
|
|
|
25
|
-
d) Tier 4:
|
|
26
|
-
|
|
25
|
+
d) Tier 4: The portion of gross revenue above $50,000,000 USD
|
|
26
|
+
Rate: 0.01% of that portion.
|
|
27
|
+
|
|
28
|
+
The total annual fee never exceeds a maximum hard cap of $50,000 USD per year.
|
|
29
|
+
|
|
30
|
+
Example: for gross revenue of $20,000,000 USD, the annual fee is 0.1% of $9,500,000 USD ($9,500) plus 0.05% of $10,000,000 USD ($5,000), a total of $14,500 USD.
|
|
27
31
|
|
|
28
32
|
3. REPORTING AND REMITTANCE
|
|
29
33
|
- Fees are calculated annually and must be remitted to the Licensor within ninety (90) days following the close of Your fiscal year.
|
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ authoritative aggregate loading, version-conditioned writes, the persistence dia
|
|
|
8
8
|
that maps unique violations and transient failures, a revision-fenced cache stored in
|
|
9
9
|
the database, and the `EntitySchema` mapping of `RootEntity`.
|
|
10
10
|
|
|
11
|
-
**Documentation:** [guide](https://aristoteliss.github.io/
|
|
11
|
+
**Documentation:** [guide](https://aristoteliss.github.io/ddd-cqrs/packages/mikro-orm/) · [API reference](https://aristoteliss.github.io/ddd-cqrs/api/cqrs-ddd/mikro-orm/) · [all packages](https://aristoteliss.github.io/ddd-cqrs/)
|
|
12
12
|
|
|
13
13
|
## Installation
|
|
14
14
|
|
|
@@ -16,13 +16,13 @@ the database, and the `EntitySchema` mapping of `RootEntity`.
|
|
|
16
16
|
pnpm add @cqrs-ddd/mikro-orm @cqrs-ddd/core @mikro-orm/core
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
Requires Node.js 22.17 or later, as MikroORM 7 does. `@cqrs-ddd/core` `^0.
|
|
19
|
+
Requires Node.js 22.17 or later, as MikroORM 7 does. `@cqrs-ddd/core` `^0.5.1` and `@mikro-orm/core` `^7.2.3` are peer
|
|
20
20
|
dependencies; add the MikroORM driver you use, such as `@mikro-orm/postgresql`.
|
|
21
21
|
|
|
22
|
-
Published as an ES module; a CommonJS application loads it with `require()`.
|
|
22
|
+
Published as an ES module; a CommonJS application loads it with `require()`.
|
|
23
23
|
|
|
24
24
|
## License
|
|
25
25
|
|
|
26
26
|
Dual-licensed under **AGPL-3.0-or-later** or a **Commercial License**. See
|
|
27
|
-
[`LICENSE`](https://github.com/aristoteliss/
|
|
27
|
+
[`LICENSE`](https://github.com/aristoteliss/ddd-cqrs/blob/master/LICENSE) and [`COMMERCIAL_LICENSE.txt`](https://github.com/aristoteliss/ddd-cqrs/blob/master/COMMERCIAL_LICENSE.txt)
|
|
28
28
|
at the repository root.
|
|
@@ -31,17 +31,11 @@ export interface MikroOrmCacheOptions {
|
|
|
31
31
|
* bypassing the identity map across all read and mutation operations. Reads use
|
|
32
32
|
* `store.em`; every write runs in `store.transactional(...)`.
|
|
33
33
|
*
|
|
34
|
-
* A plain class with no framework dependency.
|
|
35
|
-
* it with a factory:
|
|
34
|
+
* A plain class with no framework dependency.
|
|
36
35
|
*
|
|
37
36
|
* @example
|
|
38
37
|
* ```ts
|
|
39
|
-
* {
|
|
40
|
-
* provide: CACHE_TOKEN,
|
|
41
|
-
* useFactory: (store: AppStore) =>
|
|
42
|
-
* new MikroOrmCache(store, { logger: new Logger('MikroOrmCache') }),
|
|
43
|
-
* inject: [STORE],
|
|
44
|
-
* }
|
|
38
|
+
* const cache = new MikroOrmCache<UserSnapshot>(store, { defaultTtlMs: 60_000 });
|
|
45
39
|
* ```
|
|
46
40
|
*/
|
|
47
41
|
export declare class MikroOrmCache<T> implements IVersionedCache<T> {
|
|
@@ -78,5 +72,10 @@ export declare class MikroOrmCache<T> implements IVersionedCache<T> {
|
|
|
78
72
|
* row is kept.
|
|
79
73
|
*/
|
|
80
74
|
delete(key: string): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* The parsed value of an entry that holds one and has not expired; an
|
|
77
|
+
* unparsable value is reported and read as absent.
|
|
78
|
+
*/
|
|
79
|
+
private unexpiredValue;
|
|
81
80
|
}
|
|
82
81
|
//# sourceMappingURL=mikro-orm.cache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mikro-orm.cache.d.ts","sourceRoot":"","sources":["../../src/cache/mikro-orm.cache.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAenF;;;;;;;GAOG;AACH,MAAM,WAAW,iCACf,SAAQ,oBAAoB;IAC5B,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACvE;AAED,yCAAyC;AACzC,MAAM,WAAW,oBAAoB;IACnC,gGAAgG;IAChG,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;CAChC;AAmBD
|
|
1
|
+
{"version":3,"file":"mikro-orm.cache.d.ts","sourceRoot":"","sources":["../../src/cache/mikro-orm.cache.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAenF;;;;;;;GAOG;AACH,MAAM,WAAW,iCACf,SAAQ,oBAAoB;IAC5B,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACvE;AAED,yCAAyC;AACzC,MAAM,WAAW,oBAAoB;IACnC,gGAAgG;IAChG,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;CAChC;AAmBD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,aAAa,CAAC,CAAC,CAAE,YAAW,eAAe,CAAC,CAAC,CAAC;IAOvD,OAAO,CAAC,QAAQ,CAAC,KAAK;IANxB,QAAQ,CAAC,WAAW,OAAiB;IAErC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IAEtC,YACmB,KAAK,EAAE,iCAAiC,EACzD,OAAO,CAAC,EAAE,oBAAoB,EAI/B;IAED;;;OAGG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CA0BxD;IAED;;;OAGG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE7C;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,CAwBlB;IAED;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAG7C;IAED;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCzE;IAED;;;OAGG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvC;IAED;;;OAGG;IACH,OAAO,CAAC,cAAc;CAgBvB"}
|
|
@@ -30,17 +30,11 @@ class CacheCasExhaustedError extends Error {
|
|
|
30
30
|
* bypassing the identity map across all read and mutation operations. Reads use
|
|
31
31
|
* `store.em`; every write runs in `store.transactional(...)`.
|
|
32
32
|
*
|
|
33
|
-
* A plain class with no framework dependency.
|
|
34
|
-
* it with a factory:
|
|
33
|
+
* A plain class with no framework dependency.
|
|
35
34
|
*
|
|
36
35
|
* @example
|
|
37
36
|
* ```ts
|
|
38
|
-
* {
|
|
39
|
-
* provide: CACHE_TOKEN,
|
|
40
|
-
* useFactory: (store: AppStore) =>
|
|
41
|
-
* new MikroOrmCache(store, { logger: new Logger('MikroOrmCache') }),
|
|
42
|
-
* inject: [STORE],
|
|
43
|
-
* }
|
|
37
|
+
* const cache = new MikroOrmCache<UserSnapshot>(store, { defaultTtlMs: 60_000 });
|
|
44
38
|
* ```
|
|
45
39
|
*/
|
|
46
40
|
export class MikroOrmCache {
|
|
@@ -80,32 +74,7 @@ export class MikroOrmCache {
|
|
|
80
74
|
* Retains the entry to prevent ABA races during concurrent fills.
|
|
81
75
|
*/
|
|
82
76
|
async invalidate(key) {
|
|
83
|
-
return this.store.transactional(
|
|
84
|
-
for (let attempt = 0; attempt < MAX_CAS_ATTEMPTS; attempt++) {
|
|
85
|
-
const existing = await readCommittedEntry(em, key);
|
|
86
|
-
if (!existing) {
|
|
87
|
-
// `onConflictAction: 'ignore'` keeps a lost insert race from aborting
|
|
88
|
-
// the surrounding transaction, so the loop can re-read and retry.
|
|
89
|
-
await em.upsert(CacheEntry, { key, value: '', expiresAt: null, revision: '1' }, { onConflictAction: 'ignore' });
|
|
90
|
-
const inserted = await readCommittedEntry(em, key);
|
|
91
|
-
if (inserted && (inserted.revision ?? '0').toString() === '1') {
|
|
92
|
-
return '1';
|
|
93
|
-
}
|
|
94
|
-
continue;
|
|
95
|
-
}
|
|
96
|
-
const currentRev = (existing.revision ?? '0').toString();
|
|
97
|
-
const nextRevision = (BigInt(currentRev) + 1n).toString();
|
|
98
|
-
const affected = await em.nativeUpdate(CacheEntry, { key, revision: existing.revision }, {
|
|
99
|
-
value: '',
|
|
100
|
-
expiresAt: null,
|
|
101
|
-
revision: nextRevision,
|
|
102
|
-
});
|
|
103
|
-
if (affected > 0) {
|
|
104
|
-
return nextRevision;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
throw new CacheCasExhaustedError('invalidate', key);
|
|
108
|
-
});
|
|
77
|
+
return this.store.transactional((em) => invalidateEntry(em, key));
|
|
109
78
|
}
|
|
110
79
|
/**
|
|
111
80
|
* Atomically checks that current revision matches `observedRevision`, writes
|
|
@@ -118,23 +87,7 @@ export class MikroOrmCache {
|
|
|
118
87
|
return this.store.transactional(async (em) => {
|
|
119
88
|
const nextRevision = (BigInt(observedRevision) + 1n).toString();
|
|
120
89
|
if (observedRevision === '0') {
|
|
121
|
-
|
|
122
|
-
if (!existing) {
|
|
123
|
-
await em.upsert(CacheEntry, { key, value: serialized, expiresAt, revision: '1' }, { onConflictAction: 'ignore' });
|
|
124
|
-
const inserted = await readCommittedEntry(em, key);
|
|
125
|
-
// A competing writer won the insert; this fill observed revision 0
|
|
126
|
-
// and must not overwrite it.
|
|
127
|
-
return inserted !== null && inserted.value === serialized;
|
|
128
|
-
}
|
|
129
|
-
if ((existing.revision ?? '0').toString() === '0') {
|
|
130
|
-
const affected = await em.nativeUpdate(CacheEntry, { key, revision: existing.revision }, {
|
|
131
|
-
value: serialized,
|
|
132
|
-
expiresAt,
|
|
133
|
-
revision: '1',
|
|
134
|
-
});
|
|
135
|
-
return affected > 0;
|
|
136
|
-
}
|
|
137
|
-
return false;
|
|
90
|
+
return fillFirstRevision(em, { key, serialized, expiresAt });
|
|
138
91
|
}
|
|
139
92
|
const affected = await em.nativeUpdate(CacheEntry, { key, revision: observedRevision }, {
|
|
140
93
|
value: serialized,
|
|
@@ -159,28 +112,16 @@ export class MikroOrmCache {
|
|
|
159
112
|
const expiresAt = ttl > 0 ? Date.now() + ttl : null;
|
|
160
113
|
const isNewer = options?.isNewer;
|
|
161
114
|
const serialized = JSON.stringify(value);
|
|
162
|
-
|
|
115
|
+
const writeWithCas = async (em) => {
|
|
163
116
|
for (let attempt = 0; attempt < MAX_CAS_ATTEMPTS; attempt++) {
|
|
164
117
|
const existing = await readCommittedEntry(em, key);
|
|
165
118
|
if (!existing) {
|
|
166
119
|
await em.upsert(CacheEntry, { key, value: serialized, expiresAt, revision: '1' }, { onConflictAction: 'ignore' });
|
|
167
120
|
continue;
|
|
168
121
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
try {
|
|
173
|
-
parsed = JSON.parse(existing.value);
|
|
174
|
-
}
|
|
175
|
-
catch {
|
|
176
|
-
// An unparsable entry is treated as absent so the CAS update can heal corrupted data.
|
|
177
|
-
safeWarn(this.logger, `Failed to parse cached value (key digest: ${createHash('sha256').update(key).digest('hex')}); treating as absent.`);
|
|
178
|
-
}
|
|
179
|
-
if (parsed !== undefined && isNewer(parsed, value)) {
|
|
180
|
-
return;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
}
|
|
122
|
+
const cached = isNewer ? this.unexpiredValue(existing, key) : undefined;
|
|
123
|
+
if (isNewer && cached !== undefined && isNewer(cached, value))
|
|
124
|
+
return;
|
|
184
125
|
const currentRev = (existing.revision ?? '0').toString();
|
|
185
126
|
const nextRevision = (BigInt(currentRev) + 1n).toString();
|
|
186
127
|
const affected = await em.nativeUpdate(CacheEntry, { key, revision: existing.revision }, {
|
|
@@ -192,7 +133,8 @@ export class MikroOrmCache {
|
|
|
192
133
|
return;
|
|
193
134
|
}
|
|
194
135
|
throw new CacheCasExhaustedError('set', key);
|
|
195
|
-
}
|
|
136
|
+
};
|
|
137
|
+
await this.store.transactional(writeWithCas);
|
|
196
138
|
}
|
|
197
139
|
/**
|
|
198
140
|
* Removes the value and advances the key's revision, as invalidate() does; the
|
|
@@ -201,5 +143,76 @@ export class MikroOrmCache {
|
|
|
201
143
|
async delete(key) {
|
|
202
144
|
await this.invalidate(key);
|
|
203
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* The parsed value of an entry that holds one and has not expired; an
|
|
148
|
+
* unparsable value is reported and read as absent.
|
|
149
|
+
*/
|
|
150
|
+
unexpiredValue(entry, key) {
|
|
151
|
+
const hasLiveValue = !!entry.value &&
|
|
152
|
+
(entry.expiresAt === null || entry.expiresAt >= Date.now());
|
|
153
|
+
if (!hasLiveValue)
|
|
154
|
+
return undefined;
|
|
155
|
+
try {
|
|
156
|
+
return JSON.parse(entry.value);
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
// An unparsable entry is treated as absent so the CAS update can heal corrupted data.
|
|
160
|
+
safeWarn(this.logger, `Failed to parse cached value (key digest: ${createHash('sha256').update(key).digest('hex')}); treating as absent.`);
|
|
161
|
+
return undefined;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Advances the revision of `key` and clears its value in one compare-and-set
|
|
167
|
+
* loop, inserting the row at revision 1 when it does not exist.
|
|
168
|
+
*/
|
|
169
|
+
async function invalidateEntry(em, key) {
|
|
170
|
+
for (let attempt = 0; attempt < MAX_CAS_ATTEMPTS; attempt++) {
|
|
171
|
+
const existing = await readCommittedEntry(em, key);
|
|
172
|
+
if (!existing) {
|
|
173
|
+
// `onConflictAction: 'ignore'` keeps a lost insert race from aborting
|
|
174
|
+
// the surrounding transaction, so the loop can re-read and retry.
|
|
175
|
+
await em.upsert(CacheEntry, { key, value: '', expiresAt: null, revision: '1' }, { onConflictAction: 'ignore' });
|
|
176
|
+
const inserted = await readCommittedEntry(em, key);
|
|
177
|
+
if (inserted && (inserted.revision ?? '0').toString() === '1') {
|
|
178
|
+
return '1';
|
|
179
|
+
}
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
const currentRev = (existing.revision ?? '0').toString();
|
|
183
|
+
const nextRevision = (BigInt(currentRev) + 1n).toString();
|
|
184
|
+
const affected = await em.nativeUpdate(CacheEntry, { key, revision: existing.revision }, {
|
|
185
|
+
value: '',
|
|
186
|
+
expiresAt: null,
|
|
187
|
+
revision: nextRevision,
|
|
188
|
+
});
|
|
189
|
+
if (affected > 0) {
|
|
190
|
+
return nextRevision;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
throw new CacheCasExhaustedError('invalidate', key);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Fills a key observed at revision 0, absent or never revised, as revision 1;
|
|
197
|
+
* a row that a competing writer revised first is left as it is.
|
|
198
|
+
*/
|
|
199
|
+
async function fillFirstRevision(em, { key, serialized, expiresAt }) {
|
|
200
|
+
const existing = await readCommittedEntry(em, key);
|
|
201
|
+
if (!existing) {
|
|
202
|
+
await em.upsert(CacheEntry, { key, value: serialized, expiresAt, revision: '1' }, { onConflictAction: 'ignore' });
|
|
203
|
+
const inserted = await readCommittedEntry(em, key);
|
|
204
|
+
// A competing writer won the insert; this fill observed revision 0
|
|
205
|
+
// and must not overwrite it.
|
|
206
|
+
return inserted !== null && inserted.value === serialized;
|
|
207
|
+
}
|
|
208
|
+
if ((existing.revision ?? '0').toString() === '0') {
|
|
209
|
+
const affected = await em.nativeUpdate(CacheEntry, { key, revision: existing.revision }, {
|
|
210
|
+
value: serialized,
|
|
211
|
+
expiresAt,
|
|
212
|
+
revision: '1',
|
|
213
|
+
});
|
|
214
|
+
return affected > 0;
|
|
215
|
+
}
|
|
216
|
+
return false;
|
|
204
217
|
}
|
|
205
218
|
//# sourceMappingURL=mikro-orm.cache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mikro-orm.cache.js","sourceRoot":"","sources":["../../src/cache/mikro-orm.cache.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQzC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAG1E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;GAGG;AACH,SAAS,kBAAkB,CAAC,EAAiB,EAAE,GAAW;IACxD,OAAO,EAAE,CAAC,OAAO,CACf,UAAU,EACV,EAAE,GAAG,EAAE,EACP,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAC5C,CAAC;AACJ,CAAC;AA0BD;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B,0DAA0D;AAC1D,MAAM,sBAAuB,SAAQ,KAAK;IACxC,YAAY,SAAiB,EAAE,GAAW;QACxC,KAAK,CACH,iBAAiB,SAAS,0BAA0B,GAAG,WAAW,gBAAgB,YAAY,CAC/F,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED
|
|
1
|
+
{"version":3,"file":"mikro-orm.cache.js","sourceRoot":"","sources":["../../src/cache/mikro-orm.cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,14 @@ export interface ConditionedRow {
|
|
|
10
10
|
readonly id: string;
|
|
11
11
|
readonly expectedVersion: number;
|
|
12
12
|
}
|
|
13
|
+
/** A version-conditioned write that has run: where, on which row, and how. */
|
|
14
|
+
interface ConditionedWrite<TEntity> {
|
|
15
|
+
readonly em: EntityManager;
|
|
16
|
+
readonly entityType: EntityName<TEntity>;
|
|
17
|
+
readonly row: ConditionedRow;
|
|
18
|
+
readonly entityName: string;
|
|
19
|
+
readonly verb: 'updated' | 'deleted';
|
|
20
|
+
}
|
|
13
21
|
/**
|
|
14
22
|
* Checks the row count of a write filtered on `{ id, version }`: one row is
|
|
15
23
|
* success; none is diagnosed with one refreshed read on the same manager as
|
|
@@ -19,5 +27,6 @@ export interface ConditionedRow {
|
|
|
19
27
|
* @throws {ConcurrencyConflictError} No row matched because the version diverged.
|
|
20
28
|
* @throws {Error} More than one row was affected.
|
|
21
29
|
*/
|
|
22
|
-
export declare function expectOneRow<TEntity extends VersionedAggregate>(affected: number, em
|
|
30
|
+
export declare function expectOneRow<TEntity extends VersionedAggregate>(affected: number, { em, entityType, row: { id, expectedVersion }, entityName, verb, }: ConditionedWrite<TEntity>): Promise<void>;
|
|
31
|
+
export {};
|
|
23
32
|
//# sourceMappingURL=conditioned-write.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditioned-write.d.ts","sourceRoot":"","sources":["../../src/concurrency/conditioned-write.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAe,MAAM,iBAAiB,CAAC;AAE9E,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,kBAAkB,IAAI,MAAM,CAAC;CAC9B;AAED,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED
|
|
1
|
+
{"version":3,"file":"conditioned-write.d.ts","sourceRoot":"","sources":["../../src/concurrency/conditioned-write.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAe,MAAM,iBAAiB,CAAC;AAE9E,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,kBAAkB,IAAI,MAAM,CAAC;CAC9B;AAED,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,8EAA8E;AAC9E,UAAU,gBAAgB,CAAC,OAAO;IAChC,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IACzC,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;CACtC;AAED;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,OAAO,SAAS,kBAAkB,EACnE,QAAQ,EAAE,MAAM,EAChB,EACE,EAAE,EACF,UAAU,EACV,GAAG,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,EAC5B,UAAU,EACV,IAAI,GACL,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC,CAiBf"}
|
|
@@ -9,7 +9,7 @@ import { ConcurrencyConflictError, EntityNotFoundException, } from '@cqrs-ddd/co
|
|
|
9
9
|
* @throws {ConcurrencyConflictError} No row matched because the version diverged.
|
|
10
10
|
* @throws {Error} More than one row was affected.
|
|
11
11
|
*/
|
|
12
|
-
export async function expectOneRow(affected, em, entityType, { id, expectedVersion }, entityName, verb) {
|
|
12
|
+
export async function expectOneRow(affected, { em, entityType, row: { id, expectedVersion }, entityName, verb, }) {
|
|
13
13
|
if (affected === 1)
|
|
14
14
|
return;
|
|
15
15
|
if (affected === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditioned-write.js","sourceRoot":"","sources":["../../src/concurrency/conditioned-write.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EACL,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"conditioned-write.js","sourceRoot":"","sources":["../../src/concurrency/conditioned-write.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EACL,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAyB/B;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAgB,EAChB,EACE,EAAE,EACF,UAAU,EACV,GAAG,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,EAC5B,UAAU,EACV,IAAI,GACsB;IAE5B,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO;IAC3B,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,OAAO,CAC/B,UAAU,EACV,EAAE,EAAE,EAA0B,EAC9B,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;QACF,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,uBAAuB,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACjE,MAAM,IAAI,wBAAwB,CAChC,UAAU,EACV,EAAE,EACF,eAAe,EACf,QAAQ,CAAC,OAAO,CACjB,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,IAAI,UAAU,cAAc,QAAQ,GAAG,CAAC,CAAC;AAC/E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optimistic-delete.d.ts","sourceRoot":"","sources":["../../src/concurrency/optimistic-delete.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAe,MAAM,iBAAiB,CAAC;AAE9E,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,SAAS,kBAAkB,EACvE,EAAE,EAAE,aAAa,EACjB,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,EAC/B,SAAS,EAAE,OAAO,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"optimistic-delete.d.ts","sourceRoot":"","sources":["../../src/concurrency/optimistic-delete.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAe,MAAM,iBAAiB,CAAC;AAE9E,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,SAAS,kBAAkB,EACvE,EAAE,EAAE,aAAa,EACjB,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,EAC/B,SAAS,EAAE,OAAO,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAiBf"}
|
|
@@ -59,6 +59,12 @@ export async function optimisticDelete(em, entityType, aggregate, entityName) {
|
|
|
59
59
|
id: row.id,
|
|
60
60
|
version: row.expectedVersion,
|
|
61
61
|
});
|
|
62
|
-
await expectOneRow(affected,
|
|
62
|
+
await expectOneRow(affected, {
|
|
63
|
+
em,
|
|
64
|
+
entityType,
|
|
65
|
+
row,
|
|
66
|
+
entityName,
|
|
67
|
+
verb: 'deleted',
|
|
68
|
+
});
|
|
63
69
|
}
|
|
64
70
|
//# sourceMappingURL=optimistic-delete.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optimistic-delete.js","sourceRoot":"","sources":["../../src/concurrency/optimistic-delete.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAGtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAA2B,MAAM,wBAAwB,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAiB,EACjB,UAA+B,EAC/B,SAAkB,EAClB,UAAkB;IAElB,gBAAgB,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG;QACV,EAAE,EAAE,SAAS,CAAC,EAAE;QAChB,eAAe,EAAE,SAAS,CAAC,kBAAkB,EAAE;KAChD,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE;QACjD,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,OAAO,EAAE,GAAG,CAAC,eAAe;KACL,CAAC,CAAC;IAC3B,MAAM,YAAY,CAAC,QAAQ,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"optimistic-delete.js","sourceRoot":"","sources":["../../src/concurrency/optimistic-delete.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAGtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAA2B,MAAM,wBAAwB,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAiB,EACjB,UAA+B,EAC/B,SAAkB,EAClB,UAAkB;IAElB,gBAAgB,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG;QACV,EAAE,EAAE,SAAS,CAAC,EAAE;QAChB,eAAe,EAAE,SAAS,CAAC,kBAAkB,EAAE;KAChD,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE;QACjD,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,OAAO,EAAE,GAAG,CAAC,eAAe;KACL,CAAC,CAAC;IAC3B,MAAM,YAAY,CAAC,QAAQ,EAAE;QAC3B,EAAE;QACF,UAAU;QACV,GAAG;QACH,UAAU;QACV,IAAI,EAAE,SAAS;KAChB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optimistic-update.d.ts","sourceRoot":"","sources":["../../src/concurrency/optimistic-update.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,aAAa,EACb,UAAU,EAEX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,SAAS,kBAAkB,EACvE,EAAE,EAAE,aAAa,EACjB,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,EAC/B,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,EACzB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"optimistic-update.d.ts","sourceRoot":"","sources":["../../src/concurrency/optimistic-update.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,aAAa,EACb,UAAU,EAEX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,SAAS,kBAAkB,EACvE,EAAE,EAAE,aAAa,EACjB,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,EAC/B,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,EACzB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAef"}
|
|
@@ -52,6 +52,12 @@ export async function optimisticUpdate(em, entityType, entity, data, entityName)
|
|
|
52
52
|
assertAutocommit(em, 'optimisticUpdate');
|
|
53
53
|
const row = { id: entity.id, expectedVersion: entity.getExpectedVersion() };
|
|
54
54
|
const affected = await em.nativeUpdate(entityType, { id: row.id, version: row.expectedVersion }, { ...data, version: entity.version });
|
|
55
|
-
await expectOneRow(affected,
|
|
55
|
+
await expectOneRow(affected, {
|
|
56
|
+
em,
|
|
57
|
+
entityType,
|
|
58
|
+
row,
|
|
59
|
+
entityName,
|
|
60
|
+
verb: 'updated',
|
|
61
|
+
});
|
|
56
62
|
}
|
|
57
63
|
//# sourceMappingURL=optimistic-update.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optimistic-update.js","sourceRoot":"","sources":["../../src/concurrency/optimistic-update.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAQtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAA2B,MAAM,wBAAwB,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAiB,EACjB,UAA+B,EAC/B,MAAe,EACf,IAAyB,EACzB,UAAkB;IAElB,gBAAgB,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,kBAAkB,EAAE,EAAE,CAAC;IAC5E,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,YAAY,CACpC,UAAU,EACV,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,eAAe,EAA0B,EACpE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAyB,CAC5D,CAAC;IACF,MAAM,YAAY,CAAC,QAAQ,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"optimistic-update.js","sourceRoot":"","sources":["../../src/concurrency/optimistic-update.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAQtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAA2B,MAAM,wBAAwB,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAiB,EACjB,UAA+B,EAC/B,MAAe,EACf,IAAyB,EACzB,UAAkB;IAElB,gBAAgB,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,kBAAkB,EAAE,EAAE,CAAC;IAC5E,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,YAAY,CACpC,UAAU,EACV,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,eAAe,EAA0B,EACpE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAyB,CAC5D,CAAC;IACF,MAAM,YAAY,CAAC,QAAQ,EAAE;QAC3B,EAAE;QACF,UAAU;QACV,GAAG;QACH,UAAU;QACV,IAAI,EAAE,SAAS;KAChB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mikro-orm.dialect.d.ts","sourceRoot":"","sources":["../../src/errors/mikro-orm.dialect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAGL,KAAK,QAAQ,EAGd,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"mikro-orm.dialect.d.ts","sourceRoot":"","sources":["../../src/errors/mikro-orm.dialect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAGL,KAAK,QAAQ,EAGd,MAAM,iBAAiB,CAAC;AA6EzB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,eAAgB,YAAW,mBAAmB;IACzD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAGxB;IACJ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAE3C,YAAY,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,aAAa,GAAG,QAAQ,CAAC,EASxD;IAED,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAclE;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mikro-orm.dialect.js","sourceRoot":"","sources":["../../src/errors/mikro-orm.dialect.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAGtE,OAAO,EAKL,kCAAkC,GACnC,MAAM,iBAAiB,CAAC;AAWzB,MAAM,cAAc,GAAG,kCAAkC,CAAC;AAE1D,SAAS,aAAa,CACpB,IAAoB,EACpB,MAAsB;IAEtB,MAAM,QAAQ,GAAG,CACf,GAAW,EACX,UAAoB,EACpB,IAAwB,EACN,EAAE;QACpB,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAC/B,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,UAAU,CACnD,CAAC;QACF,OAAO;YACL,GAAG;YACH,IAAI,EAAE,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC;YAChE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;SACxE,CAAC;IACJ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"mikro-orm.dialect.js","sourceRoot":"","sources":["../../src/errors/mikro-orm.dialect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unix-timestamp.type.d.ts","sourceRoot":"","sources":["../../src/mapping/unix-timestamp.type.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,cAAc,EACnB,QAAQ,EACR,KAAK,gBAAgB,EACrB,IAAI,EACL,MAAM,iBAAiB,CAAC;AAEzB;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"unix-timestamp.type.d.ts","sourceRoot":"","sources":["../../src/mapping/unix-timestamp.type.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,cAAc,EACnB,QAAQ,EACR,KAAK,gBAAgB,EACrB,IAAI,EACL,MAAM,iBAAiB,CAAC;AAEzB;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AA4BxD;;;;;;;GAOG;AACH,qBAAa,iBAAkB,SAAQ,IAAI,CACzC,IAAI,GAAG,IAAI,GAAG,SAAS,EACvB,MAAM,GAAG,IAAI,GAAG,SAAS,CAC1B;IACC,sBAAsB,CACpB,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,EACnC,SAAS,CAAC,EAAE,QAAQ,EACpB,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,MAAM,GAAG,IAAI,GAAG,SAAS,CAG3B;IAED,gBAAgB,CACd,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,EACnC,SAAS,CAAC,EAAE,QAAQ,EACpB,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,IAAI,GAAG,IAAI,GAAG,SAAS,CAIzB;IAED,aAAa,CACX,IAAI,GAAE,cAAqC,EAC3C,QAAQ,CAAC,EAAE,QAAQ,GAClB,MAAM,CAER;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unix-timestamp.type.js","sourceRoot":"","sources":["../../src/mapping/unix-timestamp.type.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,OAAO,EAIL,IAAI,GACL,MAAM,iBAAiB,CAAC;AAQzB;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC;IAC9B,IAAI,KAAK,YAAY,IAAI;QAAE,YAAY,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;SACrD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,YAAY,GAAG,KAAK,CAAC;SACpD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;SAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACrE,CAAC;
|
|
1
|
+
{"version":3,"file":"unix-timestamp.type.js","sourceRoot":"","sources":["../../src/mapping/unix-timestamp.type.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,OAAO,EAIL,IAAI,GACL,MAAM,iBAAiB,CAAC;AAQzB;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC;IAC9B,IAAI,KAAK,YAAY,IAAI;QAAE,YAAY,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;SACrD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,YAAY,GAAG,KAAK,CAAC;SACpD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;SAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACrE,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,SAAS,CACjB,iCAAiC,OAAO,KAAK,UAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,kBAAkB,CACvG,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,iBAAkB,SAAQ,IAGtC;IACC,sBAAsB,CACpB,KAAmC,EACnC,SAAoB,EACpB,QAA2B;QAE3B,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO,KAAK,CAAC;QAChC,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,gBAAgB,CACd,KAAmC,EACnC,SAAoB,EACpB,QAA2B;QAE3B,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO,KAAK,CAAC;QAChC,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAChD,OAAO,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;IAChE,CAAC;IAED,aAAa,CACX,IAAI,GAAmB,EAAoB,EAC3C,QAAmB;QAEnB,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC1E,CAAC;CACF"}
|
|
@@ -22,17 +22,12 @@ import type { IEntityManagerSource } from '../interfaces/entity-manager-source.j
|
|
|
22
22
|
*
|
|
23
23
|
* @example
|
|
24
24
|
* ```typescript
|
|
25
|
-
* // A NestJS provider; STORE is the application's IEntityManagerSource token.
|
|
26
|
-
* @Injectable()
|
|
27
25
|
* export class UpdateUserCommandRepository extends AggregateRepository<
|
|
28
26
|
* UserSnapshot,
|
|
29
27
|
* User,
|
|
30
28
|
* UserSnapshot
|
|
31
29
|
* > {
|
|
32
|
-
* constructor(
|
|
33
|
-
* @Inject(CACHE_TOKEN) cache: ICache<UserSnapshot>,
|
|
34
|
-
* @Inject(STORE) store: IEntityManagerSource,
|
|
35
|
-
* ) {
|
|
30
|
+
* constructor(cache: ICache<UserSnapshot>, store: IEntityManagerSource) {
|
|
36
31
|
* super(cache, store, User, User.aggregateName, User.fromJSON);
|
|
37
32
|
* }
|
|
38
33
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate.repository.d.ts","sourceRoot":"","sources":["../../src/repository/aggregate.repository.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,MAAM,EACN,6BAA6B,EAC9B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EACL,iBAAiB,EAElB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,iBAAiB,CAAC;AAE/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAEnF
|
|
1
|
+
{"version":3,"file":"aggregate.repository.d.ts","sourceRoot":"","sources":["../../src/repository/aggregate.repository.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,MAAM,EACN,6BAA6B,EAC9B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EACL,iBAAiB,EAElB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,iBAAiB,CAAC;AAE/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAEnF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,8BAAsB,mBAAmB,CACrC,SAAS,SAAS,OAAO,CAAC,kBAAkB,CAAC,EAC7C,OAAO,SAAS,UAAU,CAAC,SAAS,CAAC,EACrC,OAAO,GAAG,OAAO,CAEnB,SAAQ,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CACrD,YAAW,6BAA6B,CAAC,OAAO,CAAC;IAI/C,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,oBAAoB;IAC9C,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC;IACnD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM;IACxC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,OAAO;IALhE,YACE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,EACL,KAAK,EAAE,oBAAoB,EAC3B,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,EAChC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,OAAO,EAG/D;IAED;;;;;;;;;;;OAWG;IAYG,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAclD;CACF"}
|
|
@@ -29,17 +29,12 @@ import { mapPersistenceError } from '../errors/transient-error.js';
|
|
|
29
29
|
*
|
|
30
30
|
* @example
|
|
31
31
|
* ```typescript
|
|
32
|
-
* // A NestJS provider; STORE is the application's IEntityManagerSource token.
|
|
33
|
-
* @Injectable()
|
|
34
32
|
* export class UpdateUserCommandRepository extends AggregateRepository<
|
|
35
33
|
* UserSnapshot,
|
|
36
34
|
* User,
|
|
37
35
|
* UserSnapshot
|
|
38
36
|
* > {
|
|
39
|
-
* constructor(
|
|
40
|
-
* @Inject(CACHE_TOKEN) cache: ICache<UserSnapshot>,
|
|
41
|
-
* @Inject(STORE) store: IEntityManagerSource,
|
|
42
|
-
* ) {
|
|
37
|
+
* constructor(cache: ICache<UserSnapshot>, store: IEntityManagerSource) {
|
|
43
38
|
* super(cache, store, User, User.aggregateName, User.fromJSON);
|
|
44
39
|
* }
|
|
45
40
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate.repository.js","sourceRoot":"","sources":["../../src/repository/aggregate.repository.ts"],"names":[],"mappings":"AAAA,sEAAsE;;;;;;;;;;AAOtE,OAAO,EACL,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGnE
|
|
1
|
+
{"version":3,"file":"aggregate.repository.js","sourceRoot":"","sources":["../../src/repository/aggregate.repository.ts"],"names":[],"mappings":"AAAA,sEAAsE;;;;;;;;;;AAOtE,OAAO,EACL,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,OAAgB,mBAKpB,SAAQ,iBAA8C;IAKjC,KAAK;IACL,WAAW;IACX,aAAa;IACb,SAAS;IAL9B,YACE,KAAwB,EACL,KAA2B,EAC3B,WAAgC,EAChC,aAAqB,EACrB,SAA2C;QAE9D,KAAK,CAAC,KAAK,CAAC,CAAC;qBALM,KAAK;2BACL,WAAW;6BACX,aAAa;yBACb,SAAS;IAG9B,CAAC;IAED;;;;;;;;;;;OAWG;IAYG,AAAN,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CACxC,IAAI,CAAC,WAAW,EAChB,EAAE,EAAE,EAA0B,EAC9B,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAe,CAAC;QAE9C,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;CACF;AAfO;IAXL,oBAAoB,CAKnB;QACA,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;QACpB,SAAS,CAAC,KAAK,EAAE,EAAE;YACjB,OAAO,mBAAmB,CAAC,KAAK,EAAE,WAAW,IAAI,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC,CAAC;QAC3E,CAAC;KACF,CAAC;;;;mDAeD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cqrs-ddd/mikro-orm",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"description": "MikroORM persistence adapters for @cqrs-ddd/core: authoritative aggregate loading, version-conditioned writes, a revision-fenced cache and root-entity schema mapping.",
|
|
5
5
|
"author": "Aristotelis",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -10,12 +10,12 @@
|
|
|
10
10
|
},
|
|
11
11
|
"repository": {
|
|
12
12
|
"type": "git",
|
|
13
|
-
"url": "git+https://github.com/aristoteliss/
|
|
14
|
-
"directory": "packages/
|
|
13
|
+
"url": "git+https://github.com/aristoteliss/ddd-cqrs.git",
|
|
14
|
+
"directory": "packages/mikro-orm"
|
|
15
15
|
},
|
|
16
|
-
"homepage": "https://aristoteliss.github.io/
|
|
16
|
+
"homepage": "https://aristoteliss.github.io/ddd-cqrs/packages/mikro-orm/",
|
|
17
17
|
"bugs": {
|
|
18
|
-
"url": "https://github.com/aristoteliss/
|
|
18
|
+
"url": "https://github.com/aristoteliss/ddd-cqrs/issues"
|
|
19
19
|
},
|
|
20
20
|
"keywords": [
|
|
21
21
|
"ddd",
|
|
@@ -44,15 +44,15 @@
|
|
|
44
44
|
"access": "public"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
|
-
"@mikro-orm/core": "^7.2.
|
|
48
|
-
"@cqrs-ddd/core": "^0.
|
|
47
|
+
"@mikro-orm/core": "^7.2.3",
|
|
48
|
+
"@cqrs-ddd/core": "^0.5.1"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@mikro-orm/core": "^7.2.
|
|
52
|
-
"@vitest/coverage-v8": "^5.0.
|
|
51
|
+
"@mikro-orm/core": "^7.2.3",
|
|
52
|
+
"@vitest/coverage-v8": "^5.0.5",
|
|
53
53
|
"typescript": "^7.0.2",
|
|
54
|
-
"vitest": "^5.0.
|
|
55
|
-
"@cqrs-ddd/core": "^0.
|
|
54
|
+
"vitest": "^5.0.5",
|
|
55
|
+
"@cqrs-ddd/core": "^0.5.1"
|
|
56
56
|
},
|
|
57
57
|
"scripts": {
|
|
58
58
|
"build": "tsc -p tsconfig.build.json",
|