@bgord/bun 0.16.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dispatching-event-store.d.ts +3 -2
- package/dist/dispatching-event-store.d.ts.map +1 -1
- package/dist/dispatching-event-store.js +6 -2
- package/dist/dispatching-event-store.js.map +1 -1
- package/dist/event-store.d.ts +6 -2
- package/dist/event-store.d.ts.map +1 -1
- package/dist/event-store.js +20 -1
- package/dist/event-store.js.map +1 -1
- package/dist/event.types.d.ts +1 -0
- package/dist/event.types.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/readme.md +112 -0
- package/src/dispatching-event-store.ts +9 -3
- package/src/event-store.ts +29 -3
- package/src/event.types.ts +1 -0
- package/README.md +0 -1
|
@@ -6,10 +6,11 @@ import type { EventStreamType } from "./event-stream.vo";
|
|
|
6
6
|
import { ToEventMap } from "./to-event-map.types";
|
|
7
7
|
export declare class DispatchingEventStore<AllEvents extends GenericEventSchema> extends BaseStore<AllEvents> {
|
|
8
8
|
private readonly publisher;
|
|
9
|
+
static EMPTY_STREAM_REVISION: number;
|
|
9
10
|
constructor(config: {
|
|
10
11
|
finder: (stream: EventStreamType, names: string[]) => Promise<z.infer<GenericEventSchema>[]>;
|
|
11
|
-
inserter: (events: z.infer<GenericParsedEventSchema>[]) => Promise<
|
|
12
|
+
inserter: (events: z.infer<GenericParsedEventSchema>[]) => Promise<z.infer<GenericParsedEventSchema>[]>;
|
|
12
13
|
}, publisher: EventPublisher<ToEventMap<z.infer<AllEvents>>>);
|
|
13
|
-
save(
|
|
14
|
+
save(_events: z.infer<AllEvents>[]): Promise<z.infer<AllEvents>[]>;
|
|
14
15
|
}
|
|
15
16
|
//# sourceMappingURL=dispatching-event-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatching-event-store.d.ts","sourceRoot":"","sources":["../src/dispatching-event-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,KAAK,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAClF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,UAAU,IAAI,SAAS,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,qBAAa,qBAAqB,CAAC,SAAS,SAAS,kBAAkB,CAAE,SAAQ,SAAS,CAAC,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"dispatching-event-store.d.ts","sourceRoot":"","sources":["../src/dispatching-event-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,KAAK,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAClF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,UAAU,IAAI,SAAS,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,qBAAa,qBAAqB,CAAC,SAAS,SAAS,kBAAkB,CAAE,SAAQ,SAAS,CAAC,SAAS,CAAC;IAQjG,OAAO,CAAC,QAAQ,CAAC,SAAS;IAP5B,MAAM,CAAC,qBAAqB,SAAM;gBAGhC,MAAM,EAAE;QACN,MAAM,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC7F,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;KACzG,EACgB,SAAS,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAKtE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;CAazE"}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { EventStore as BaseStore } from "./event-store";
|
|
2
2
|
export class DispatchingEventStore extends BaseStore {
|
|
3
3
|
publisher;
|
|
4
|
+
static EMPTY_STREAM_REVISION = -1;
|
|
4
5
|
constructor(config, publisher) {
|
|
5
6
|
super(config);
|
|
6
7
|
this.publisher = publisher;
|
|
7
8
|
}
|
|
8
|
-
async save(
|
|
9
|
-
|
|
9
|
+
async save(_events) {
|
|
10
|
+
// We receive the events with the `revision` fields added by the inserter,
|
|
11
|
+
// so the read models can receive them.
|
|
12
|
+
const events = await super.save(_events);
|
|
10
13
|
await Promise.all(events.map((event) => this.publisher.emit(event.name, event)));
|
|
14
|
+
return events;
|
|
11
15
|
}
|
|
12
16
|
}
|
|
13
17
|
//# sourceMappingURL=dispatching-event-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatching-event-store.js","sourceRoot":"","sources":["../src/dispatching-event-store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,IAAI,SAAS,EAAE,MAAM,eAAe,CAAC;AAIxD,MAAM,OAAO,qBAA4D,SAAQ,SAAoB;
|
|
1
|
+
{"version":3,"file":"dispatching-event-store.js","sourceRoot":"","sources":["../src/dispatching-event-store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,IAAI,SAAS,EAAE,MAAM,eAAe,CAAC;AAIxD,MAAM,OAAO,qBAA4D,SAAQ,SAAoB;IAQhF;IAPnB,MAAM,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC;IAElC,YACE,MAGC,EACgB,SAAyD;QAE1E,KAAK,CAAC,MAAM,CAAC,CAAC;QAFG,cAAS,GAAT,SAAS,CAAgD;IAG5E,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAA6B;QACtC,0EAA0E;QAC1E,uCAAuC;QACvC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEzC,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACnB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAA4C,EAAE,KAAY,CAAC,CACtF,CACF,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC"}
|
package/dist/event-store.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { GenericEventSchema, GenericParsedEventSchema } from "./event.types
|
|
|
3
3
|
import type { EventStreamType } from "./event-stream.vo";
|
|
4
4
|
export type EventNameType = z.infer<GenericEventSchema["shape"]["name"]>;
|
|
5
5
|
type FindEventsHandler = (stream: EventStreamType, acceptedEventsNames: EventNameType[]) => Promise<z.infer<GenericEventSchema>[]>;
|
|
6
|
-
type InserterEventsHandler = (events: z.infer<GenericParsedEventSchema>[]) => Promise<
|
|
6
|
+
type InserterEventsHandler = (events: z.infer<GenericParsedEventSchema>[]) => Promise<z.infer<GenericParsedEventSchema>[]>;
|
|
7
7
|
type EventStoreConfigType = {
|
|
8
8
|
finder: FindEventsHandler;
|
|
9
9
|
inserter: InserterEventsHandler;
|
|
@@ -11,8 +11,12 @@ type EventStoreConfigType = {
|
|
|
11
11
|
export declare class EventStore<AllEvents extends GenericEventSchema> {
|
|
12
12
|
private readonly config;
|
|
13
13
|
constructor(config: EventStoreConfigType);
|
|
14
|
+
static EMPTY_STREAM_REVISION: number;
|
|
14
15
|
find<AcceptedEvents extends readonly AllEvents[]>(acceptedEvents: AcceptedEvents, stream: EventStreamType): Promise<z.infer<AcceptedEvents[number]>[]>;
|
|
15
|
-
save(events: z.infer<AllEvents>[]): Promise<
|
|
16
|
+
save(events: z.infer<AllEvents>[]): Promise<z.infer<AllEvents>[]>;
|
|
17
|
+
}
|
|
18
|
+
export declare class EventStoreSaveUniqueStream extends Error {
|
|
19
|
+
constructor();
|
|
16
20
|
}
|
|
17
21
|
export {};
|
|
18
22
|
//# sourceMappingURL=event-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-store.d.ts","sourceRoot":"","sources":["../src/event-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,KAAK,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAEzE,KAAK,iBAAiB,GAAG,CACvB,MAAM,EAAE,eAAe,EACvB,mBAAmB,EAAE,aAAa,EAAE,KACjC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;AAE5C,KAAK,qBAAqB,GAAG,
|
|
1
|
+
{"version":3,"file":"event-store.d.ts","sourceRoot":"","sources":["../src/event-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,KAAK,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAEzE,KAAK,iBAAiB,GAAG,CACvB,MAAM,EAAE,eAAe,EACvB,mBAAmB,EAAE,aAAa,EAAE,KACjC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;AAE5C,KAAK,qBAAqB,GAAG,CAC3B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE,KACxC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;AAElD,KAAK,oBAAoB,GAAG;IAC1B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,qBAAqB,CAAC;CACjC,CAAC;AAEF,qBAAa,UAAU,CAAC,SAAS,SAAS,kBAAkB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,oBAAoB;IAEzD,MAAM,CAAC,qBAAqB,SAAM;IAE5B,IAAI,CAAC,cAAc,SAAS,SAAS,SAAS,EAAE,EACpD,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;IAWvC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;CAuBxE;AAED,qBAAa,0BAA2B,SAAQ,KAAK;;CAKpD"}
|
package/dist/event-store.js
CHANGED
|
@@ -3,6 +3,7 @@ export class EventStore {
|
|
|
3
3
|
constructor(config) {
|
|
4
4
|
this.config = config;
|
|
5
5
|
}
|
|
6
|
+
static EMPTY_STREAM_REVISION = -1;
|
|
6
7
|
async find(acceptedEvents, stream) {
|
|
7
8
|
const acceptedEventsNames = acceptedEvents.map((event) => event.shape.name.value);
|
|
8
9
|
const rows = await this.config.finder(stream, acceptedEventsNames);
|
|
@@ -12,10 +13,28 @@ export class EventStore {
|
|
|
12
13
|
.filter((event) => event !== undefined);
|
|
13
14
|
}
|
|
14
15
|
async save(events) {
|
|
15
|
-
|
|
16
|
+
if (!events[0])
|
|
17
|
+
return [];
|
|
18
|
+
const stream = events[0].stream;
|
|
19
|
+
if (!events.every((event) => event.stream === stream)) {
|
|
20
|
+
throw new EventStoreSaveUniqueStream();
|
|
21
|
+
}
|
|
22
|
+
// The returned variable has the `revision` fields added by the inserter,
|
|
23
|
+
// but we need to re-parse it to keep the contract.
|
|
24
|
+
const processed = await this.config.inserter(events.map((event) => ({
|
|
16
25
|
...event,
|
|
17
26
|
payload: JSON.stringify(event.payload),
|
|
18
27
|
})));
|
|
28
|
+
return processed.map((event) => ({
|
|
29
|
+
...event,
|
|
30
|
+
payload: JSON.parse(event.payload),
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export class EventStoreSaveUniqueStream extends Error {
|
|
35
|
+
constructor() {
|
|
36
|
+
super();
|
|
37
|
+
Object.setPrototypeOf(this, EventStoreSaveUniqueStream.prototype);
|
|
19
38
|
}
|
|
20
39
|
}
|
|
21
40
|
//# sourceMappingURL=event-store.js.map
|
package/dist/event-store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-store.js","sourceRoot":"","sources":["../src/event-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"event-store.js","sourceRoot":"","sources":["../src/event-store.ts"],"names":[],"mappings":"AAoBA,MAAM,OAAO,UAAU;IACQ;IAA7B,YAA6B,MAA4B;QAA5B,WAAM,GAAN,MAAM,CAAsB;IAAG,CAAC;IAE7D,MAAM,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC;IAElC,KAAK,CAAC,IAAI,CACR,cAA8B,EAC9B,MAAuB;QAEvB,MAAM,mBAAmB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAElF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAEnE,OAAO,IAAI;aACR,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;aAC5D,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;aAC7F,MAAM,CAAC,CAAC,KAAK,EAA4C,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAA4B;QACrC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC;QAE1B,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAEhC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,0BAA0B,EAAE,CAAC;QACzC,CAAC;QAED,yEAAyE;QACzE,mDAAmD;QACnD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACrB,GAAG,KAAK;YACR,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC;SACvC,CAAC,CAAC,CACJ,CAAC;QAEF,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC/B,GAAG,KAAK;YACR,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;SACnC,CAAC,CAAyB,CAAC;IAC9B,CAAC;;AAGH,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IACnD;QACE,KAAK,EAAE,CAAC;QACR,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,0BAA0B,CAAC,SAAS,CAAC,CAAC;IACpE,CAAC;CACF"}
|
package/dist/event.types.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export type GenericEventSchema = z.ZodObject<{
|
|
|
4
4
|
correlationId: z.ZodType<string>;
|
|
5
5
|
createdAt: z.ZodType<number>;
|
|
6
6
|
stream: z.ZodString;
|
|
7
|
+
revision: z.ZodOptional<z.ZodType<number>>;
|
|
7
8
|
name: z.ZodLiteral<string>;
|
|
8
9
|
version: z.ZodLiteral<number>;
|
|
9
10
|
payload: z.ZodType<any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.types.d.ts","sourceRoot":"","sources":["../src/event.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,SAAS,CAAC;IAC3C,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtB,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC;IACpB,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC9B,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,SAAS,CAChD,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,GAAG;IAC7C,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC;CACtB,CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"event.types.d.ts","sourceRoot":"","sources":["../src/event.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,SAAS,CAAC;IAC3C,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtB,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC;IACpB,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC9B,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,SAAS,CAChD,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,GAAG;IAC7C,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC;CACtB,CACF,CAAC"}
|