@ddd-ts/event-sourcing-esdb 0.0.0-feat.alpha.045d9c5
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/dist/esdb.event-store.d.ts +25 -0
- package/dist/esdb.event-store.d.ts.map +1 -0
- package/dist/esdb.event-store.js +140 -0
- package/dist/esdb.event-store.js.map +1 -0
- package/dist/esdb.event-store.spec.d.ts +2 -0
- package/dist/esdb.event-store.spec.d.ts.map +1 -0
- package/dist/esdb.event-store.spec.js +8 -0
- package/dist/esdb.event-store.spec.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/test/bank.spec.d.ts +2 -0
- package/dist/test/bank.spec.d.ts.map +1 -0
- package/dist/test/bank.spec.js +24 -0
- package/dist/test/bank.spec.js.map +1 -0
- package/package.json +22 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { EventStoreDBClient } from "@eventstore/db-client";
|
|
2
|
+
import { EsAggregate, Event, Competitor, Constructor, EsChange, EsFact, EventStore, Follower, ProjectedStreamConfiguration } from "@ddd-ts/event-sourcing";
|
|
3
|
+
export declare class ESDBEventStore extends EventStore {
|
|
4
|
+
client: EventStoreDBClient;
|
|
5
|
+
namespace: string;
|
|
6
|
+
constructor();
|
|
7
|
+
private readonly subscriptions;
|
|
8
|
+
close(): Promise<void>;
|
|
9
|
+
clear(): Promise<void>;
|
|
10
|
+
private getAggregateStreamName;
|
|
11
|
+
appendToAggregateStream(AGGREGATE: Constructor<EsAggregate>, id: {
|
|
12
|
+
toString(): string;
|
|
13
|
+
}, changes: EsChange[], expectedRevision: bigint): Promise<void>;
|
|
14
|
+
readAggregateStream(AGGREGATE: Constructor<EsAggregate<{
|
|
15
|
+
toString(): string;
|
|
16
|
+
}, Event>, any[]>, id: {
|
|
17
|
+
toString(): string;
|
|
18
|
+
}, from?: bigint): AsyncIterable<EsFact>;
|
|
19
|
+
private getProjectedStreamName;
|
|
20
|
+
private ensureProjectedStream;
|
|
21
|
+
readProjectedStream(config: ProjectedStreamConfiguration, from?: bigint): AsyncIterable<EsFact>;
|
|
22
|
+
followProjectedStream(AGGREGATE: ProjectedStreamConfiguration, from?: bigint): Promise<Follower>;
|
|
23
|
+
competeForProjectedStream(AGGREGATE: ProjectedStreamConfiguration, competitionName: string): Promise<Competitor>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=esdb.event-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esdb.event-store.d.ts","sourceRoot":"","sources":["../src/esdb.event-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAa,MAAM,uBAAuB,CAAC;AACtE,OAAO,EACL,WAAW,EACX,KAAK,EAIL,UAAU,EACV,WAAW,EACX,QAAQ,EACR,MAAM,EACN,UAAU,EACV,QAAQ,EACR,4BAA4B,EAC7B,MAAM,wBAAwB,CAAC;AAEhC,qBAAa,cAAe,SAAQ,UAAU;IAC5C,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;;IAUlB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiC;IAEzD,KAAK;IAKL,KAAK;IAIX,OAAO,CAAC,sBAAsB;IAOxB,uBAAuB,CAC3B,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,EACnC,EAAE,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,EAC1B,OAAO,EAAE,QAAQ,EAAE,EACnB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC;IAcT,mBAAmB,CACxB,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,EACzE,EAAE,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,EAC1B,IAAI,CAAC,EAAE,MAAM,GACZ,aAAa,CAAC,MAAM,CAAC;IAmBxB,OAAO,CAAC,sBAAsB;YAIhB,qBAAqB;IA4C5B,mBAAmB,CACxB,MAAM,EAAE,4BAA4B,EACpC,IAAI,CAAC,EAAE,MAAM,GACZ,aAAa,CAAC,MAAM,CAAC;IAwBlB,qBAAqB,CACzB,SAAS,EAAE,4BAA4B,EACvC,IAAI,GAAE,MAAW,GAChB,OAAO,CAAC,QAAQ,CAAC;IAoCpB,yBAAyB,CACvB,SAAS,EAAE,4BAA4B,EACvC,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,UAAU,CAAC;CAwEvB"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ESDBEventStore = void 0;
|
|
4
|
+
const db_client_1 = require("@eventstore/db-client");
|
|
5
|
+
const event_sourcing_1 = require("@ddd-ts/event-sourcing");
|
|
6
|
+
process.env.DEBUG = "esdb:*";
|
|
7
|
+
class ESDBEventStore extends event_sourcing_1.EventStore {
|
|
8
|
+
client;
|
|
9
|
+
namespace;
|
|
10
|
+
constructor() {
|
|
11
|
+
super();
|
|
12
|
+
this.namespace = Math.random().toString().substring(2, 8);
|
|
13
|
+
this.client = new db_client_1.EventStoreDBClient({ endpoint: { address: "localhost", port: 2113 } }, { insecure: true });
|
|
14
|
+
}
|
|
15
|
+
subscriptions = new Set();
|
|
16
|
+
async close() {
|
|
17
|
+
await Promise.all([...this.subscriptions.values()].map((s) => s()));
|
|
18
|
+
this.client.dispose();
|
|
19
|
+
}
|
|
20
|
+
async clear() {
|
|
21
|
+
this.namespace = Math.random().toString().substring(2, 8);
|
|
22
|
+
}
|
|
23
|
+
getAggregateStreamName(AGGREGATE, id) {
|
|
24
|
+
return this.namespace + "." + AGGREGATE.name + "-" + id;
|
|
25
|
+
}
|
|
26
|
+
async appendToAggregateStream(AGGREGATE, id, changes, expectedRevision) {
|
|
27
|
+
const r = expectedRevision === -1n ? "no_stream" : expectedRevision;
|
|
28
|
+
const events = changes.map((c) => (0, db_client_1.jsonEvent)({ id: c.id, type: c.type, data: c.payload }));
|
|
29
|
+
const streamName = this.getAggregateStreamName(AGGREGATE, id.toString());
|
|
30
|
+
await this.client.appendToStream(streamName, events, {
|
|
31
|
+
expectedRevision: r,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
async *readAggregateStream(AGGREGATE, id, from) {
|
|
35
|
+
const streamName = this.getAggregateStreamName(AGGREGATE, id.toString());
|
|
36
|
+
for await (const event of this.client.readStream(streamName, {
|
|
37
|
+
fromRevision: from,
|
|
38
|
+
})) {
|
|
39
|
+
if (!event.event) {
|
|
40
|
+
throw new Error("no event");
|
|
41
|
+
}
|
|
42
|
+
yield {
|
|
43
|
+
id: event.event.id,
|
|
44
|
+
payload: event.event.data,
|
|
45
|
+
type: event.event.type,
|
|
46
|
+
revision: event.event.revision,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
getProjectedStreamName(AGGREGATE) {
|
|
51
|
+
return "$ce-" + this.namespace + "." + AGGREGATE.name;
|
|
52
|
+
}
|
|
53
|
+
async ensureProjectedStream(config) {
|
|
54
|
+
if (config.length === 1) {
|
|
55
|
+
return this.getProjectedStreamName(config[0]);
|
|
56
|
+
}
|
|
57
|
+
const projectionNameSuffix = config
|
|
58
|
+
.map((a) => a.name)
|
|
59
|
+
.sort()
|
|
60
|
+
.join("-");
|
|
61
|
+
const stableProjectionName = this.namespace + "." + "pj-" + projectionNameSuffix;
|
|
62
|
+
const streams = config.map((a) => this.getProjectedStreamName(a));
|
|
63
|
+
const query = `
|
|
64
|
+
fromStreams(${streams
|
|
65
|
+
.map((s) => `'${s}'`)
|
|
66
|
+
.join(", ")}).when({ $any: function(state, event) { linkTo('${stableProjectionName}', event) }})
|
|
67
|
+
`;
|
|
68
|
+
await this.client.createProjection(stableProjectionName, query, {
|
|
69
|
+
emitEnabled: true,
|
|
70
|
+
});
|
|
71
|
+
let status;
|
|
72
|
+
let attempts = 0;
|
|
73
|
+
do {
|
|
74
|
+
status = await this.client.getProjectionStatus(stableProjectionName);
|
|
75
|
+
if (status.progress < 100) {
|
|
76
|
+
await new Promise((resolve) => setTimeout(resolve, 200));
|
|
77
|
+
}
|
|
78
|
+
attempts++;
|
|
79
|
+
if (attempts > 20) {
|
|
80
|
+
throw new Error("projection not stable");
|
|
81
|
+
}
|
|
82
|
+
} while (status.progress < 100);
|
|
83
|
+
return stableProjectionName;
|
|
84
|
+
}
|
|
85
|
+
async *readProjectedStream(config, from) {
|
|
86
|
+
const stream = await this.ensureProjectedStream(config);
|
|
87
|
+
for await (const event of this.client.readStream(stream, {
|
|
88
|
+
fromRevision: from,
|
|
89
|
+
resolveLinkTos: true,
|
|
90
|
+
direction: "forwards",
|
|
91
|
+
})) {
|
|
92
|
+
if (!event.event) {
|
|
93
|
+
throw new Error("no event");
|
|
94
|
+
}
|
|
95
|
+
if (!event.link) {
|
|
96
|
+
throw new Error("no link");
|
|
97
|
+
}
|
|
98
|
+
yield {
|
|
99
|
+
id: event.event.id,
|
|
100
|
+
payload: event.event.data,
|
|
101
|
+
type: event.event.type,
|
|
102
|
+
revision: event.link.revision,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
async followProjectedStream(AGGREGATE, from = 0n) {
|
|
107
|
+
const streamName = await this.ensureProjectedStream(AGGREGATE);
|
|
108
|
+
const position = from - 1n;
|
|
109
|
+
const fromRevision = position < 0n ? "start" : position;
|
|
110
|
+
const stream = this.client.subscribeToStream(streamName, {
|
|
111
|
+
fromRevision,
|
|
112
|
+
resolveLinkTos: true,
|
|
113
|
+
});
|
|
114
|
+
const hook = async () => void stream.destroy();
|
|
115
|
+
this.subscriptions.add(hook);
|
|
116
|
+
const mapped = (0, event_sourcing_1.map)(stream, (e) => {
|
|
117
|
+
if (!e.event) {
|
|
118
|
+
throw new Error("no event");
|
|
119
|
+
}
|
|
120
|
+
if (!e.link) {
|
|
121
|
+
throw new Error("no link");
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
id: e.event.id,
|
|
125
|
+
payload: e.event.data,
|
|
126
|
+
type: e.event.type,
|
|
127
|
+
revision: e.link.revision,
|
|
128
|
+
};
|
|
129
|
+
});
|
|
130
|
+
return (0, event_sourcing_1.closeable)(mapped, async () => {
|
|
131
|
+
await stream.unsubscribe();
|
|
132
|
+
this.subscriptions.delete(hook);
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
competeForProjectedStream(AGGREGATE, competitionName) {
|
|
136
|
+
throw new Error("Method not implemented.");
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
exports.ESDBEventStore = ESDBEventStore;
|
|
140
|
+
//# sourceMappingURL=esdb.event-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esdb.event-store.js","sourceRoot":"","sources":["../src/esdb.event-store.ts"],"names":[],"mappings":";;;AAAA,qDAAsE;AACtE,2DAagC;AAChC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC;AAC7B,MAAa,cAAe,SAAQ,2BAAU;IAC5C,MAAM,CAAqB;IAC3B,SAAS,CAAS;IAClB;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,IAAI,8BAAkB,CAClC,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAClD,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB,CAAC;IACJ,CAAC;IAEgB,aAAa,GAAG,IAAI,GAAG,EAAsB,CAAC;IAE/D,KAAK,CAAC,KAAK;QACT,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5D,CAAC;IAEO,sBAAsB,CAC5B,SAAmC,EACnC,EAAU;QAEV,OAAO,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,SAAS,CAAC,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,uBAAuB,CAC3B,SAAmC,EACnC,EAA0B,EAC1B,OAAmB,EACnB,gBAAwB;QAExB,MAAM,CAAC,GAAG,gBAAgB,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC;QAEpE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/B,IAAA,qBAAS,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CACvD,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEzE,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE;YACnD,gBAAgB,EAAE,CAAC;SACpB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,CAAC,mBAAmB,CACxB,SAAyE,EACzE,EAA0B,EAC1B,IAAa;QAEb,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEzE,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE;YAC3D,YAAY,EAAE,IAAI;SACnB,CAAC,EAAE;YACF,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;aAC7B;YAED,MAAM;gBACJ,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;gBAClB,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,IAAoB;gBACzC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;gBACtB,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ;aAC/B,CAAC;SACH;IACH,CAAC;IAEO,sBAAsB,CAAC,SAA0C;QACvE,OAAO,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC;IACxD,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,MAAoC;QACtE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/C;QAED,MAAM,oBAAoB,GAAG,MAAM;aAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aAClB,IAAI,EAAE;aACN,IAAI,CAAC,GAAG,CAAC,CAAC;QAEb,MAAM,oBAAoB,GACxB,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,KAAK,GAAG,oBAAoB,CAAC;QAEtD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;QAElE,MAAM,KAAK,GAAG;oBACE,OAAO;aAClB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;aACpB,IAAI,CACH,IAAI,CACL,mDAAmD,oBAAoB;KAC3E,CAAC;QAEF,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,KAAK,EAAE;YAC9D,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC;QAEX,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,GAAG;YACD,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;YACrE,IAAI,MAAM,CAAC,QAAQ,GAAG,GAAG,EAAE;gBACzB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;aAC1D;YACD,QAAQ,EAAE,CAAC;YACX,IAAI,QAAQ,GAAG,EAAE,EAAE;gBACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;aAC1C;SACF,QAAQ,MAAM,CAAC,QAAQ,GAAG,GAAG,EAAE;QAEhC,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,CAAC,mBAAmB,CACxB,MAAoC,EACpC,IAAa;QAEb,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAExD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE;YACvD,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,IAAI;YACpB,SAAS,EAAE,UAAU;SACtB,CAAC,EAAE;YACF,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;aAC7B;YACD,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;gBACf,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;aAC5B;YAED,MAAM;gBACJ,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;gBAClB,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,IAAoB;gBACzC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;gBACtB,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ;aAC9B,CAAC;SACH;IACH,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,SAAuC,EACvC,OAAe,EAAE;QAEjB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAE/D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;QAExD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE;YACvD,YAAY;YACZ,cAAc,EAAE,IAAI;SACrB,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;QAE/C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE7B,MAAM,MAAM,GAAG,IAAA,oBAAG,EAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YAC/B,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;gBACZ,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;aAC7B;YACD,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;aAC5B;YACD,OAAO;gBACL,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE;gBACd,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,IAAoB;gBACrC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;gBAClB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ;aAC1B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,IAAA,0BAAS,EAAC,MAAM,EAAE,KAAK,IAAI,EAAE;YAClC,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;YAC3B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,yBAAyB,CACvB,SAAuC,EACvC,eAAuB;QAEvB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;CAsEF;AArQD,wCAqQC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esdb.event-store.spec.d.ts","sourceRoot":"","sources":["../src/esdb.event-store.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tests_1 = require("@ddd-ts/tests");
|
|
4
|
+
const esdb_event_store_1 = require("./esdb.event-store");
|
|
5
|
+
describe("ESDBEventStore", () => {
|
|
6
|
+
(0, tests_1.EsAggregateStoreSuite)(new esdb_event_store_1.ESDBEventStore());
|
|
7
|
+
});
|
|
8
|
+
//# sourceMappingURL=esdb.event-store.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esdb.event-store.spec.js","sourceRoot":"","sources":["../src/esdb.event-store.spec.ts"],"names":[],"mappings":";;AAAA,yCAAsD;AACtD,yDAAoD;AAEpD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAA,6BAAqB,EAAC,IAAI,iCAAc,EAAE,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ESDBEventStore = void 0;
|
|
4
|
+
var esdb_event_store_1 = require("./esdb.event-store");
|
|
5
|
+
Object.defineProperty(exports, "ESDBEventStore", { enumerable: true, get: function () { return esdb_event_store_1.ESDBEventStore; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uDAAoD;AAA3C,kHAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bank.spec.d.ts","sourceRoot":"","sources":["../../src/test/bank.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tests_1 = require("@ddd-ts/tests");
|
|
4
|
+
const esdb_event_store_1 = require("../esdb.event-store");
|
|
5
|
+
const event_sourcing_inmemory_1 = require("@ddd-ts/event-sourcing-inmemory");
|
|
6
|
+
const event_sourcing_1 = require("@ddd-ts/event-sourcing");
|
|
7
|
+
describe("EventSourcingESDB", () => {
|
|
8
|
+
const es = new esdb_event_store_1.ESDBEventStore();
|
|
9
|
+
const database = new event_sourcing_inmemory_1.InMemoryDatabase();
|
|
10
|
+
const checkpoint = new event_sourcing_inmemory_1.InMemoryCheckpoint(database);
|
|
11
|
+
const transaction = new event_sourcing_inmemory_1.InMemoryTransactionPerformer(database);
|
|
12
|
+
(0, tests_1.BankSuite)(es, checkpoint, transaction, (serializer, name) => {
|
|
13
|
+
const Store = class extends (0, event_sourcing_inmemory_1.InMemoryStore)(name) {
|
|
14
|
+
};
|
|
15
|
+
const store = new Store(database, serializer);
|
|
16
|
+
return store;
|
|
17
|
+
}, (AGGREGATE, serializer) => {
|
|
18
|
+
const persistor = class extends (0, event_sourcing_1.EsAggregatePersistorWithSnapshots)(AGGREGATE) {
|
|
19
|
+
};
|
|
20
|
+
const snapshotter = new event_sourcing_inmemory_1.InMemorySnapshotter(database, serializer);
|
|
21
|
+
return new persistor(es, snapshotter);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=bank.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bank.spec.js","sourceRoot":"","sources":["../../src/test/bank.spec.ts"],"names":[],"mappings":";;AAAA,yCAA0C;AAC1C,0DAAqD;AAErD,6EAMyC;AACzC,2DAA2E;AAE3E,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,MAAM,EAAE,GAAG,IAAI,iCAAc,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAG,IAAI,0CAAgB,EAAE,CAAC;IACxC,MAAM,UAAU,GAAG,IAAI,4CAAkB,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,IAAI,sDAA4B,CAAC,QAAQ,CAAC,CAAC;IAC/D,IAAA,iBAAS,EACP,EAAE,EACF,UAAU,EACV,WAAW,EACX,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE;QACnB,MAAM,KAAK,GAAG,KAAM,SAAQ,IAAA,uCAAa,EAAC,IAAI,CAAC;SAAG,CAAC;QACnD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAQ,CAAC;QACrD,OAAO,KAAK,CAAC;IACf,CAAC,EACD,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE;QACxB,MAAM,SAAS,GAAG,KAAM,SAAQ,IAAA,kDAAiC,EAC/D,SAAS,CACV;SAAG,CAAC;QACL,MAAM,WAAW,GAAG,IAAI,6CAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAClE,OAAO,IAAI,SAAS,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IACxC,CAAC,CACF,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ddd-ts/event-sourcing-esdb",
|
|
3
|
+
"version": "0.0.0-feat.alpha.045d9c5",
|
|
4
|
+
"main": "dist/index.js",
|
|
5
|
+
"types": "dist/index.d.ts",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"pretest": "docker compose -f docker/docker-compose.yml up -d",
|
|
9
|
+
"test": "yarn pretest; test-runner; e=$?;yarn posttest; exit $e",
|
|
10
|
+
"posttest": "docker compose -f docker/docker-compose.yml down",
|
|
11
|
+
"build": "builder"
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"@ddd-ts/event-sourcing": "*",
|
|
15
|
+
"@eventstore/db-client": "^5.0.0"
|
|
16
|
+
},
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@ddd-ts/dev": "*",
|
|
19
|
+
"@ddd-ts/event-sourcing-inmemory": "*",
|
|
20
|
+
"@ddd-ts/tests": "*"
|
|
21
|
+
}
|
|
22
|
+
}
|