hexok 1.0.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -0
- package/dist/adapter.d.ts +18 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +21 -0
- package/dist/adapter.js.map +1 -0
- package/dist/catalog.d.ts +88 -0
- package/dist/catalog.d.ts.map +1 -0
- package/dist/catalog.js +79 -0
- package/dist/catalog.js.map +1 -0
- package/dist/{core/coded-error.d.ts → coded-error.d.ts} +9 -4
- package/dist/coded-error.d.ts.map +1 -0
- package/dist/{core/coded-error.js → coded-error.js} +9 -4
- package/dist/coded-error.js.map +1 -0
- package/dist/cow-draft.d.ts.map +1 -0
- package/dist/cow-draft.js.map +1 -0
- package/dist/entity.d.ts +63 -0
- package/dist/entity.d.ts.map +1 -0
- package/dist/{domain/entity.js → entity.js} +52 -80
- package/dist/entity.js.map +1 -0
- package/dist/error-map.d.ts +22 -0
- package/dist/error-map.d.ts.map +1 -0
- package/dist/error-map.js +2 -0
- package/dist/error-map.js.map +1 -0
- package/dist/errors.d.ts +85 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +85 -0
- package/dist/errors.js.map +1 -0
- package/dist/event-handler.d.ts +31 -0
- package/dist/event-handler.d.ts.map +1 -0
- package/dist/event-handler.js +28 -0
- package/dist/event-handler.js.map +1 -0
- package/dist/event.d.ts +37 -0
- package/dist/event.d.ts.map +1 -0
- package/dist/event.js +44 -0
- package/dist/event.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/mapper.d.ts +100 -0
- package/dist/mapper.d.ts.map +1 -0
- package/dist/mapper.js +167 -0
- package/dist/mapper.js.map +1 -0
- package/dist/port.d.ts +20 -0
- package/dist/port.d.ts.map +1 -0
- package/dist/port.js +25 -0
- package/dist/port.js.map +1 -0
- package/dist/result.d.ts.map +1 -0
- package/dist/result.js.map +1 -0
- package/dist/schema.d.ts +37 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +50 -0
- package/dist/schema.js.map +1 -0
- package/dist/{core/standard-schema.d.ts → standard-schema.d.ts} +1 -1
- package/dist/standard-schema.d.ts.map +1 -0
- package/dist/standard-schema.js.map +1 -0
- package/dist/use-case.d.ts +183 -0
- package/dist/use-case.d.ts.map +1 -0
- package/dist/use-case.js +221 -0
- package/dist/use-case.js.map +1 -0
- package/dist/{core/schema.d.ts → validate.d.ts} +1 -1
- package/dist/validate.d.ts.map +1 -0
- package/dist/{core/schema.js → validate.js} +1 -1
- package/dist/validate.js.map +1 -0
- package/package.json +16 -26
- package/dist/app/api-use-case.d.ts +0 -52
- package/dist/app/api-use-case.d.ts.map +0 -1
- package/dist/app/api-use-case.js +0 -59
- package/dist/app/api-use-case.js.map +0 -1
- package/dist/app/callable-use-case.d.ts +0 -34
- package/dist/app/callable-use-case.d.ts.map +0 -1
- package/dist/app/callable-use-case.js +0 -41
- package/dist/app/callable-use-case.js.map +0 -1
- package/dist/app/contract.d.ts +0 -46
- package/dist/app/contract.d.ts.map +0 -1
- package/dist/app/contract.js +0 -28
- package/dist/app/contract.js.map +0 -1
- package/dist/app/error-factory.d.ts +0 -9
- package/dist/app/error-factory.d.ts.map +0 -1
- package/dist/app/error-factory.js +0 -30
- package/dist/app/error-factory.js.map +0 -1
- package/dist/app/event-channel.d.ts +0 -133
- package/dist/app/event-channel.d.ts.map +0 -1
- package/dist/app/event-channel.js +0 -49
- package/dist/app/event-channel.js.map +0 -1
- package/dist/app/event-use-case.d.ts +0 -47
- package/dist/app/event-use-case.d.ts.map +0 -1
- package/dist/app/event-use-case.js +0 -54
- package/dist/app/event-use-case.js.map +0 -1
- package/dist/app/execute-ctx.d.ts +0 -92
- package/dist/app/execute-ctx.d.ts.map +0 -1
- package/dist/app/execute-ctx.js +0 -2
- package/dist/app/execute-ctx.js.map +0 -1
- package/dist/app/external-use-case.d.ts +0 -25
- package/dist/app/external-use-case.d.ts.map +0 -1
- package/dist/app/external-use-case.js +0 -25
- package/dist/app/external-use-case.js.map +0 -1
- package/dist/app/index.d.ts +0 -9
- package/dist/app/index.d.ts.map +0 -1
- package/dist/app/index.js +0 -8
- package/dist/app/index.js.map +0 -1
- package/dist/app/internal-use-case.d.ts +0 -26
- package/dist/app/internal-use-case.d.ts.map +0 -1
- package/dist/app/internal-use-case.js +0 -26
- package/dist/app/internal-use-case.js.map +0 -1
- package/dist/app/nest.d.ts +0 -9
- package/dist/app/nest.d.ts.map +0 -1
- package/dist/app/nest.js +0 -28
- package/dist/app/nest.js.map +0 -1
- package/dist/app/types.d.ts +0 -153
- package/dist/app/types.d.ts.map +0 -1
- package/dist/app/types.js +0 -17
- package/dist/app/types.js.map +0 -1
- package/dist/core/coded-error.d.ts.map +0 -1
- package/dist/core/coded-error.js.map +0 -1
- package/dist/core/error-map.d.ts +0 -21
- package/dist/core/error-map.d.ts.map +0 -1
- package/dist/core/error-map.js +0 -5
- package/dist/core/error-map.js.map +0 -1
- package/dist/core/index.d.ts +0 -6
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -5
- package/dist/core/index.js.map +0 -1
- package/dist/core/result.d.ts.map +0 -1
- package/dist/core/result.js.map +0 -1
- package/dist/core/schema.d.ts.map +0 -1
- package/dist/core/schema.js.map +0 -1
- package/dist/core/standard-schema.d.ts.map +0 -1
- package/dist/core/standard-schema.js.map +0 -1
- package/dist/domain/capabilities.d.ts +0 -42
- package/dist/domain/capabilities.d.ts.map +0 -1
- package/dist/domain/capabilities.js +0 -2
- package/dist/domain/capabilities.js.map +0 -1
- package/dist/domain/catalog.d.ts +0 -46
- package/dist/domain/catalog.d.ts.map +0 -1
- package/dist/domain/catalog.js +0 -114
- package/dist/domain/catalog.js.map +0 -1
- package/dist/domain/channel.d.ts +0 -36
- package/dist/domain/channel.d.ts.map +0 -1
- package/dist/domain/channel.js +0 -2
- package/dist/domain/channel.js.map +0 -1
- package/dist/domain/cow-draft.d.ts.map +0 -1
- package/dist/domain/cow-draft.js.map +0 -1
- package/dist/domain/entity.d.ts +0 -120
- package/dist/domain/entity.d.ts.map +0 -1
- package/dist/domain/entity.js.map +0 -1
- package/dist/domain/envelope.d.ts +0 -59
- package/dist/domain/envelope.d.ts.map +0 -1
- package/dist/domain/envelope.js +0 -2
- package/dist/domain/envelope.js.map +0 -1
- package/dist/domain/event.d.ts +0 -44
- package/dist/domain/event.d.ts.map +0 -1
- package/dist/domain/event.js +0 -21
- package/dist/domain/event.js.map +0 -1
- package/dist/domain/index.d.ts +0 -8
- package/dist/domain/index.d.ts.map +0 -1
- package/dist/domain/index.js +0 -5
- package/dist/domain/index.js.map +0 -1
- package/dist/domain/port.d.ts +0 -45
- package/dist/domain/port.d.ts.map +0 -1
- package/dist/domain/port.js +0 -41
- package/dist/domain/port.js.map +0 -1
- package/dist/infra/adapter.d.ts +0 -22
- package/dist/infra/adapter.d.ts.map +0 -1
- package/dist/infra/adapter.js +0 -18
- package/dist/infra/adapter.js.map +0 -1
- package/dist/infra/index.d.ts +0 -3
- package/dist/infra/index.d.ts.map +0 -1
- package/dist/infra/index.js +0 -3
- package/dist/infra/index.js.map +0 -1
- package/dist/infra/mapper.d.ts +0 -48
- package/dist/infra/mapper.d.ts.map +0 -1
- package/dist/infra/mapper.js +0 -77
- package/dist/infra/mapper.js.map +0 -1
- package/dist/runtime/app.d.ts +0 -100
- package/dist/runtime/app.d.ts.map +0 -1
- package/dist/runtime/app.js +0 -292
- package/dist/runtime/app.js.map +0 -1
- package/dist/runtime/channel.d.ts +0 -34
- package/dist/runtime/channel.d.ts.map +0 -1
- package/dist/runtime/channel.js +0 -110
- package/dist/runtime/channel.js.map +0 -1
- package/dist/runtime/client.d.ts +0 -21
- package/dist/runtime/client.d.ts.map +0 -1
- package/dist/runtime/client.js +0 -2
- package/dist/runtime/client.js.map +0 -1
- package/dist/runtime/completeness.d.ts +0 -89
- package/dist/runtime/completeness.d.ts.map +0 -1
- package/dist/runtime/completeness.js +0 -2
- package/dist/runtime/completeness.js.map +0 -1
- package/dist/runtime/envelope.d.ts +0 -7
- package/dist/runtime/envelope.d.ts.map +0 -1
- package/dist/runtime/envelope.js +0 -69
- package/dist/runtime/envelope.js.map +0 -1
- package/dist/runtime/events.d.ts +0 -6
- package/dist/runtime/events.d.ts.map +0 -1
- package/dist/runtime/events.js +0 -48
- package/dist/runtime/events.js.map +0 -1
- package/dist/runtime/http-status.d.ts +0 -3
- package/dist/runtime/http-status.d.ts.map +0 -1
- package/dist/runtime/http-status.js +0 -11
- package/dist/runtime/http-status.js.map +0 -1
- package/dist/runtime/http.d.ts +0 -4
- package/dist/runtime/http.d.ts.map +0 -1
- package/dist/runtime/http.js +0 -58
- package/dist/runtime/http.js.map +0 -1
- package/dist/runtime/index.d.ts +0 -10
- package/dist/runtime/index.d.ts.map +0 -1
- package/dist/runtime/index.js +0 -6
- package/dist/runtime/index.js.map +0 -1
- package/dist/runtime/interceptor.d.ts +0 -61
- package/dist/runtime/interceptor.d.ts.map +0 -1
- package/dist/runtime/interceptor.js +0 -7
- package/dist/runtime/interceptor.js.map +0 -1
- package/dist/runtime/invoke.d.ts +0 -34
- package/dist/runtime/invoke.d.ts.map +0 -1
- package/dist/runtime/invoke.js +0 -235
- package/dist/runtime/invoke.js.map +0 -1
- package/dist/runtime/middleware.d.ts +0 -20
- package/dist/runtime/middleware.d.ts.map +0 -1
- package/dist/runtime/middleware.js +0 -2
- package/dist/runtime/middleware.js.map +0 -1
- package/dist/runtime/rpc.d.ts +0 -24
- package/dist/runtime/rpc.d.ts.map +0 -1
- package/dist/runtime/rpc.js +0 -16
- package/dist/runtime/rpc.js.map +0 -1
- package/dist/testing/app-test.d.ts +0 -77
- package/dist/testing/app-test.d.ts.map +0 -1
- package/dist/testing/app-test.js +0 -109
- package/dist/testing/app-test.js.map +0 -1
- package/dist/testing/in-memory-broker.d.ts +0 -18
- package/dist/testing/in-memory-broker.d.ts.map +0 -1
- package/dist/testing/in-memory-broker.js +0 -42
- package/dist/testing/in-memory-broker.js.map +0 -1
- package/dist/testing/in-memory-bus.d.ts +0 -19
- package/dist/testing/in-memory-bus.d.ts.map +0 -1
- package/dist/testing/in-memory-bus.js +0 -31
- package/dist/testing/in-memory-bus.js.map +0 -1
- package/dist/testing/in-memory-channel.d.ts +0 -32
- package/dist/testing/in-memory-channel.d.ts.map +0 -1
- package/dist/testing/in-memory-channel.js +0 -65
- package/dist/testing/in-memory-channel.js.map +0 -1
- package/dist/testing/in-memory-queue.d.ts +0 -24
- package/dist/testing/in-memory-queue.d.ts.map +0 -1
- package/dist/testing/in-memory-queue.js +0 -66
- package/dist/testing/in-memory-queue.js.map +0 -1
- package/dist/testing/in-memory-repository.d.ts +0 -44
- package/dist/testing/in-memory-repository.d.ts.map +0 -1
- package/dist/testing/in-memory-repository.js +0 -60
- package/dist/testing/in-memory-repository.js.map +0 -1
- package/dist/testing/index.d.ts +0 -6
- package/dist/testing/index.d.ts.map +0 -1
- package/dist/testing/index.js +0 -6
- package/dist/testing/index.js.map +0 -1
- /package/dist/{domain/cow-draft.d.ts → cow-draft.d.ts} +0 -0
- /package/dist/{domain/cow-draft.js → cow-draft.js} +0 -0
- /package/dist/{core/result.d.ts → result.d.ts} +0 -0
- /package/dist/{core/result.js → result.js} +0 -0
- /package/dist/{core/standard-schema.js → standard-schema.js} +0 -0
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* In-process bus. Records `published`. `stop()` clears subscribers.
|
|
3
|
-
*/
|
|
4
|
-
export class InMemoryBus {
|
|
5
|
-
kind = 'bus';
|
|
6
|
-
/** Envelopes passed to `publish`, in order. */
|
|
7
|
-
published = [];
|
|
8
|
-
#subscribers = new Map();
|
|
9
|
-
/** Empty bus. Pass to `.bind(catalog, InMemoryBus.create())`. */
|
|
10
|
-
static create() {
|
|
11
|
-
return new InMemoryBus();
|
|
12
|
-
}
|
|
13
|
-
/** Record the envelope, then await each subscriber for its key. */
|
|
14
|
-
async publish(envelope) {
|
|
15
|
-
this.published.push(envelope);
|
|
16
|
-
for (const handler of this.#subscribers.get(envelope.key) ?? []) {
|
|
17
|
-
await handler(envelope);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
/** Register a handler for `key`. Cleared by `stop()`. */
|
|
21
|
-
subscribe(key, handler) {
|
|
22
|
-
const list = this.#subscribers.get(key) ?? [];
|
|
23
|
-
list.push(handler);
|
|
24
|
-
this.#subscribers.set(key, list);
|
|
25
|
-
}
|
|
26
|
-
/** Drop all subscribers. Does not clear `published`. */
|
|
27
|
-
async stop() {
|
|
28
|
-
this.#subscribers.clear();
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=in-memory-bus.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-bus.js","sourceRoot":"","sources":["../../src/testing/in-memory-bus.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,OAAO,WAAW;IACb,IAAI,GAAG,KAAc,CAAC;IAC/B,+CAA+C;IACtC,SAAS,GAAe,EAAE,CAAC;IACpC,YAAY,GAAG,IAAI,GAAG,EAGnB,CAAC;IAEJ,iEAAiE;IACjE,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,WAAW,EAAE,CAAC;IAC3B,CAAC;IAED,mEAAmE;IACnE,KAAK,CAAC,OAAO,CAAC,QAAkB;QAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YAChE,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,SAAS,CAAC,GAAW,EAAE,OAA8C;QACnE,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,wDAAwD;IACxD,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;CACF"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import type { ChannelAdapter, ChannelConnection } from '../domain/index.js';
|
|
2
|
-
/**
|
|
3
|
-
* In-process channel adapter. Records `sent`. `stop()` closes connections.
|
|
4
|
-
*/
|
|
5
|
-
export declare class InMemoryChannel<Session = unknown> implements ChannelAdapter<Session> {
|
|
6
|
-
#private;
|
|
7
|
-
/** `{ id, payload }` records from `send`, in order. */
|
|
8
|
-
readonly sent: Array<{
|
|
9
|
-
id: string;
|
|
10
|
-
payload: string;
|
|
11
|
-
}>;
|
|
12
|
-
/** Empty channel. Pass to `.route(Channel, InMemoryChannel.create())`. */
|
|
13
|
-
static create<S>(): InMemoryChannel<S>;
|
|
14
|
-
/** Track a connected client. Replaces an existing row with the same `id`. */
|
|
15
|
-
join(id: string, session: Session, connection: ChannelConnection): void;
|
|
16
|
-
/** Drop the client without closing the connection. */
|
|
17
|
-
leave(id: string): void;
|
|
18
|
-
/** Close the connection; the `close` listener then `leave`s. */
|
|
19
|
-
eject(id: string): void;
|
|
20
|
-
/** Replace session claims for a connected client. No-op if unknown `id`. */
|
|
21
|
-
update(id: string, session: Session): void;
|
|
22
|
-
/** Snapshot of connected `{ id, session }` rows. */
|
|
23
|
-
list(): Array<{
|
|
24
|
-
id: string;
|
|
25
|
-
session: Session;
|
|
26
|
-
}>;
|
|
27
|
-
/** Record and deliver `payload` to `id`. Leaves the client if `send` throws. */
|
|
28
|
-
send(id: string, payload: string): void;
|
|
29
|
-
/** Close every connection and clear clients. Does not clear `sent`. */
|
|
30
|
-
stop(): Promise<void>;
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=in-memory-channel.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-channel.d.ts","sourceRoot":"","sources":["../../src/testing/in-memory-channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAO5E;;GAEG;AACH,qBAAa,eAAe,CAAC,OAAO,GAAG,OAAO,CAC5C,YAAW,cAAc,CAAC,OAAO,CAAC;;IAElC,uDAAuD;IACvD,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAM;IAG3D,0EAA0E;IAC1E,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC;IAItC,6EAA6E;IAC7E,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAOvE,sDAAsD;IACtD,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIvB,gEAAgE;IAChE,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAMvB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAM1C,oDAAoD;IACpD,IAAI,IAAI,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAO/C,gFAAgF;IAChF,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAWvC,uEAAuE;IACjE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAM5B"}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* In-process channel adapter. Records `sent`. `stop()` closes connections.
|
|
3
|
-
*/
|
|
4
|
-
export class InMemoryChannel {
|
|
5
|
-
/** `{ id, payload }` records from `send`, in order. */
|
|
6
|
-
sent = [];
|
|
7
|
-
#clients = new Map();
|
|
8
|
-
/** Empty channel. Pass to `.route(Channel, InMemoryChannel.create())`. */
|
|
9
|
-
static create() {
|
|
10
|
-
return new InMemoryChannel();
|
|
11
|
-
}
|
|
12
|
-
/** Track a connected client. Replaces an existing row with the same `id`. */
|
|
13
|
-
join(id, session, connection) {
|
|
14
|
-
this.#clients.set(id, { session, connection });
|
|
15
|
-
connection.addEventListener('close', () => {
|
|
16
|
-
this.leave(id);
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
/** Drop the client without closing the connection. */
|
|
20
|
-
leave(id) {
|
|
21
|
-
this.#clients.delete(id);
|
|
22
|
-
}
|
|
23
|
-
/** Close the connection; the `close` listener then `leave`s. */
|
|
24
|
-
eject(id) {
|
|
25
|
-
const row = this.#clients.get(id);
|
|
26
|
-
if (!row)
|
|
27
|
-
return;
|
|
28
|
-
row.connection.close();
|
|
29
|
-
}
|
|
30
|
-
/** Replace session claims for a connected client. No-op if unknown `id`. */
|
|
31
|
-
update(id, session) {
|
|
32
|
-
const row = this.#clients.get(id);
|
|
33
|
-
if (!row)
|
|
34
|
-
return;
|
|
35
|
-
row.session = session;
|
|
36
|
-
}
|
|
37
|
-
/** Snapshot of connected `{ id, session }` rows. */
|
|
38
|
-
list() {
|
|
39
|
-
return [...this.#clients.entries()].map(([id, row]) => ({
|
|
40
|
-
id,
|
|
41
|
-
session: row.session,
|
|
42
|
-
}));
|
|
43
|
-
}
|
|
44
|
-
/** Record and deliver `payload` to `id`. Leaves the client if `send` throws. */
|
|
45
|
-
send(id, payload) {
|
|
46
|
-
const row = this.#clients.get(id);
|
|
47
|
-
if (!row)
|
|
48
|
-
return;
|
|
49
|
-
this.sent.push({ id, payload });
|
|
50
|
-
try {
|
|
51
|
-
row.connection.send(payload);
|
|
52
|
-
}
|
|
53
|
-
catch {
|
|
54
|
-
this.leave(id);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
/** Close every connection and clear clients. Does not clear `sent`. */
|
|
58
|
-
async stop() {
|
|
59
|
-
for (const { connection } of this.#clients.values()) {
|
|
60
|
-
connection.close();
|
|
61
|
-
}
|
|
62
|
-
this.#clients.clear();
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
//# sourceMappingURL=in-memory-channel.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-channel.js","sourceRoot":"","sources":["../../src/testing/in-memory-channel.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,OAAO,eAAe;IAG1B,uDAAuD;IAC9C,IAAI,GAA2C,EAAE,CAAC;IAC3D,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;IAE3C,0EAA0E;IAC1E,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,eAAe,EAAK,CAAC;IAClC,CAAC;IAED,6EAA6E;IAC7E,IAAI,CAAC,EAAU,EAAE,OAAgB,EAAE,UAA6B;QAC9D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QAC/C,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YACxC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,sDAAsD;IACtD,KAAK,CAAC,EAAU;QACd,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,gEAAgE;IAChE,KAAK,CAAC,EAAU;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,4EAA4E;IAC5E,MAAM,CAAC,EAAU,EAAE,OAAgB;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;IAED,oDAAoD;IACpD,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YACtD,EAAE;YACF,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,gFAAgF;IAChF,IAAI,CAAC,EAAU,EAAE,OAAe;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC;YACH,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,KAAK,CAAC,IAAI;QACR,KAAK,MAAM,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACpD,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACF"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { Envelope, QueueAdapter, QueueConsumeCtx } from '../domain/index.js';
|
|
2
|
-
type Consumer = (envelope: Envelope, ctx: QueueConsumeCtx) => Promise<void>;
|
|
3
|
-
/**
|
|
4
|
-
* In-process queue. `nack` (or a throw) redelivers with `attempt + 1` up to
|
|
5
|
-
* `maxAttempts` (default 3). `stop()` clears consumers.
|
|
6
|
-
*/
|
|
7
|
-
export declare class InMemoryQueue implements QueueAdapter {
|
|
8
|
-
#private;
|
|
9
|
-
readonly kind: "queue";
|
|
10
|
-
/** Envelopes passed to `publish`, in order (one entry per publish, not per attempt). */
|
|
11
|
-
readonly published: Envelope[];
|
|
12
|
-
/** Stop redelivering after this many attempts. */
|
|
13
|
-
maxAttempts: number;
|
|
14
|
-
/** Empty queue. Pass to `.bind(catalog, InMemoryQueue.create())`. */
|
|
15
|
-
static create(): InMemoryQueue;
|
|
16
|
-
/** Record the envelope and dispatch every consumer group for its key. */
|
|
17
|
-
publish(envelope: Envelope): Promise<void>;
|
|
18
|
-
/** Register the consumer for `key`+`group`. Later calls replace that group. */
|
|
19
|
-
consume(key: string, group: string, handler: Consumer): void;
|
|
20
|
-
/** Drop all consumers. Does not clear `published`. */
|
|
21
|
-
stop(): Promise<void>;
|
|
22
|
-
}
|
|
23
|
-
export {};
|
|
24
|
-
//# sourceMappingURL=in-memory-queue.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-queue.d.ts","sourceRoot":"","sources":["../../src/testing/in-memory-queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAE5B,KAAK,QAAQ,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5E;;;GAGG;AACH,qBAAa,aAAc,YAAW,YAAY;;IAChD,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IACjC,wFAAwF;IACxF,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAM;IAEpC,kDAAkD;IAClD,WAAW,SAAK;IAEhB,qEAAqE;IACrE,MAAM,CAAC,MAAM,IAAI,aAAa;IAI9B,yEAAyE;IACnE,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAuChD,+EAA+E;IAC/E,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI;IAM5D,sDAAsD;IAChD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* In-process queue. `nack` (or a throw) redelivers with `attempt + 1` up to
|
|
3
|
-
* `maxAttempts` (default 3). `stop()` clears consumers.
|
|
4
|
-
*/
|
|
5
|
-
export class InMemoryQueue {
|
|
6
|
-
kind = 'queue';
|
|
7
|
-
/** Envelopes passed to `publish`, in order (one entry per publish, not per attempt). */
|
|
8
|
-
published = [];
|
|
9
|
-
#consumers = new Map();
|
|
10
|
-
/** Stop redelivering after this many attempts. */
|
|
11
|
-
maxAttempts = 3;
|
|
12
|
-
/** Empty queue. Pass to `.bind(catalog, InMemoryQueue.create())`. */
|
|
13
|
-
static create() {
|
|
14
|
-
return new InMemoryQueue();
|
|
15
|
-
}
|
|
16
|
-
/** Record the envelope and dispatch every consumer group for its key. */
|
|
17
|
-
async publish(envelope) {
|
|
18
|
-
this.published.push(envelope);
|
|
19
|
-
const groups = this.#consumers.get(envelope.key);
|
|
20
|
-
if (!groups)
|
|
21
|
-
return;
|
|
22
|
-
for (const consumer of groups.values()) {
|
|
23
|
-
await this.#deliver(envelope, consumer, 1);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
async #deliver(envelope, consumer, attempt) {
|
|
27
|
-
let outcome = 'none';
|
|
28
|
-
let thrown;
|
|
29
|
-
const ctx = {
|
|
30
|
-
attempt,
|
|
31
|
-
ack: async () => {
|
|
32
|
-
outcome = 'ack';
|
|
33
|
-
},
|
|
34
|
-
nack: async () => {
|
|
35
|
-
outcome = 'nack';
|
|
36
|
-
},
|
|
37
|
-
};
|
|
38
|
-
try {
|
|
39
|
-
await consumer(envelope, ctx);
|
|
40
|
-
}
|
|
41
|
-
catch (error) {
|
|
42
|
-
thrown = error;
|
|
43
|
-
if (outcome === 'none')
|
|
44
|
-
outcome = 'nack';
|
|
45
|
-
}
|
|
46
|
-
if (outcome !== 'nack')
|
|
47
|
-
return;
|
|
48
|
-
if (attempt < this.maxAttempts) {
|
|
49
|
-
await this.#deliver(envelope, consumer, attempt + 1);
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
if (thrown !== undefined)
|
|
53
|
-
throw thrown;
|
|
54
|
-
}
|
|
55
|
-
/** Register the consumer for `key`+`group`. Later calls replace that group. */
|
|
56
|
-
consume(key, group, handler) {
|
|
57
|
-
const groups = this.#consumers.get(key) ?? new Map();
|
|
58
|
-
groups.set(group, handler);
|
|
59
|
-
this.#consumers.set(key, groups);
|
|
60
|
-
}
|
|
61
|
-
/** Drop all consumers. Does not clear `published`. */
|
|
62
|
-
async stop() {
|
|
63
|
-
this.#consumers.clear();
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=in-memory-queue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-queue.js","sourceRoot":"","sources":["../../src/testing/in-memory-queue.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,MAAM,OAAO,aAAa;IACf,IAAI,GAAG,OAAgB,CAAC;IACjC,wFAAwF;IAC/E,SAAS,GAAe,EAAE,CAAC;IACpC,UAAU,GAAG,IAAI,GAAG,EAAiC,CAAC;IACtD,kDAAkD;IAClD,WAAW,GAAG,CAAC,CAAC;IAEhB,qEAAqE;IACrE,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,aAAa,EAAE,CAAC;IAC7B,CAAC;IAED,yEAAyE;IACzE,KAAK,CAAC,OAAO,CAAC,QAAkB;QAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,QAAkB,EAClB,QAAkB,EAClB,OAAe;QAEf,IAAI,OAAO,GAA4B,MAAM,CAAC;QAC9C,IAAI,MAAe,CAAC;QACpB,MAAM,GAAG,GAAoB;YAC3B,OAAO;YACP,GAAG,EAAE,KAAK,IAAI,EAAE;gBACd,OAAO,GAAG,KAAK,CAAC;YAClB,CAAC;YACD,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,OAAO,GAAG,MAAM,CAAC;YACnB,CAAC;SACF,CAAC;QACF,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,KAAK,CAAC;YACf,IAAI,OAAO,KAAK,MAAM;gBAAE,OAAO,GAAG,MAAM,CAAC;QAC3C,CAAC;QACD,IAAI,OAAO,KAAK,MAAM;YAAE,OAAO;QAC/B,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;YACrD,OAAO;QACT,CAAC;QACD,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,MAAM,CAAC;IACzC,CAAC;IAED,+EAA+E;IAC/E,OAAO,CAAC,GAAW,EAAE,KAAa,EAAE,OAAiB;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAoB,CAAC;QACvE,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,sDAAsD;IACtD,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import type { CrudRepository, Entity, PortToken } from '../domain/index.js';
|
|
2
|
-
type CrudKeys = 'get' | 'save' | 'list' | 'delete';
|
|
3
|
-
type ExtraKeys<I> = Exclude<keyof I, CrudKeys | 'bindTo' | 'fork'>;
|
|
4
|
-
type ExtraOption<I> = [ExtraKeys<I>] extends [never] ? unknown : {
|
|
5
|
-
extra: Pick<I, ExtraKeys<I>>;
|
|
6
|
-
};
|
|
7
|
-
type RepoEntity<I> = I extends {
|
|
8
|
-
get: (id: string) => Promise<infer E>;
|
|
9
|
-
} ? NonNullable<E> : Entity<Record<string, unknown>>;
|
|
10
|
-
type EntityKey<E> = E extends {
|
|
11
|
-
toProps(): infer P;
|
|
12
|
-
} ? P extends object ? keyof P & string : string : string;
|
|
13
|
-
type AssertCrud<I> = 'get' | 'save' extends keyof I ? I : `hexok: InMemoryRepository.of expects a CRUD repository port`;
|
|
14
|
-
/**
|
|
15
|
-
* In-memory fake for the standard CRUD port `{ get, save, list, delete }`.
|
|
16
|
-
* Clones on get/save so tests do not mutate the store by accident.
|
|
17
|
-
*
|
|
18
|
-
* ```ts
|
|
19
|
-
* .provide(IncidentRepository, InMemoryRepository.of(IncidentRepository, {
|
|
20
|
-
* keyBy: 'id',
|
|
21
|
-
* seed: [Incident.open('1')],
|
|
22
|
-
* }))
|
|
23
|
-
* ```
|
|
24
|
-
*/
|
|
25
|
-
export declare class InMemoryRepository<E extends Entity<Record<string, unknown>>> implements CrudRepository<E> {
|
|
26
|
-
#private;
|
|
27
|
-
private constructor();
|
|
28
|
-
/** Fake a CRUD port. Extra methods beyond get/save/list/delete go in `extra`. */
|
|
29
|
-
static of<I>(_token: [AssertCrud<I>] extends [I] ? PortToken<I> : AssertCrud<I>, options: {
|
|
30
|
-
keyBy: EntityKey<RepoEntity<I>>;
|
|
31
|
-
seed?: RepoEntity<I>[];
|
|
32
|
-
} & ExtraOption<I>): I;
|
|
33
|
-
/** Clone of the stored entity, or `null`. */
|
|
34
|
-
get(id: string): Promise<E | null>;
|
|
35
|
-
/** Clone into the store and `commit()` the working entity. */
|
|
36
|
-
save(entity: E): Promise<void>;
|
|
37
|
-
/** Clones of every stored entity. */
|
|
38
|
-
list(): Promise<E[]>;
|
|
39
|
-
/** Remove by id. No-op if missing. */
|
|
40
|
-
delete(id: string): Promise<void>;
|
|
41
|
-
private keyOf;
|
|
42
|
-
}
|
|
43
|
-
export {};
|
|
44
|
-
//# sourceMappingURL=in-memory-repository.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-repository.d.ts","sourceRoot":"","sources":["../../src/testing/in-memory-repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,MAAM,EAEN,SAAS,EACV,MAAM,oBAAoB,CAAC;AAE5B,KAAK,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEnD,KAAK,SAAS,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAC;AAEnE,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAChD,OAAO,GACP;IAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC;AAErC,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS;IAC7B,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;CACvC,GACG,WAAW,CAAC,CAAC,CAAC,GACd,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEpC,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,OAAO,IAAI,MAAM,CAAC,CAAA;CAAE,GAChD,CAAC,SAAS,MAAM,GACd,MAAM,CAAC,GAAG,MAAM,GAChB,MAAM,GACR,MAAM,CAAC;AAEX,KAAK,UAAU,CAAC,CAAC,IAAI,KAAK,GAAG,MAAM,SAAS,MAAM,CAAC,GAC/C,CAAC,GACD,6DAA6D,CAAC;AAElE;;;;;;;;;;GAUG;AACH,qBAAa,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CACvE,YAAW,cAAc,CAAC,CAAC,CAAC;;IAK5B,OAAO;IAOP,iFAAiF;IACjF,MAAM,CAAC,EAAE,CAAC,CAAC,EACT,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAClE,OAAO,EAAE;QACP,KAAK,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;KACxB,GAAG,WAAW,CAAC,CAAC,CAAC,GACjB,CAAC;IAWJ,6CAA6C;IACvC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAKxC,8DAA8D;IACxD,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpC,qCAAqC;IAC/B,IAAI,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;IAI1B,sCAAsC;IAChC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,OAAO,CAAC,KAAK;CAUd"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* In-memory fake for the standard CRUD port `{ get, save, list, delete }`.
|
|
3
|
-
* Clones on get/save so tests do not mutate the store by accident.
|
|
4
|
-
*
|
|
5
|
-
* ```ts
|
|
6
|
-
* .provide(IncidentRepository, InMemoryRepository.of(IncidentRepository, {
|
|
7
|
-
* keyBy: 'id',
|
|
8
|
-
* seed: [Incident.open('1')],
|
|
9
|
-
* }))
|
|
10
|
-
* ```
|
|
11
|
-
*/
|
|
12
|
-
export class InMemoryRepository {
|
|
13
|
-
#keyBy;
|
|
14
|
-
#store = new Map();
|
|
15
|
-
constructor(keyBy, seed) {
|
|
16
|
-
this.#keyBy = keyBy;
|
|
17
|
-
for (const entity of seed) {
|
|
18
|
-
this.#store.set(this.keyOf(entity), cloneEntity(entity));
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
/** Fake a CRUD port. Extra methods beyond get/save/list/delete go in `extra`. */
|
|
22
|
-
static of(_token, options) {
|
|
23
|
-
const repo = new InMemoryRepository(options.keyBy, (options.seed ?? []));
|
|
24
|
-
if ('extra' in options && options.extra !== undefined) {
|
|
25
|
-
return Object.assign(repo, options.extra);
|
|
26
|
-
}
|
|
27
|
-
return repo;
|
|
28
|
-
}
|
|
29
|
-
/** Clone of the stored entity, or `null`. */
|
|
30
|
-
async get(id) {
|
|
31
|
-
const found = this.#store.get(id);
|
|
32
|
-
return found ? cloneEntity(found) : null;
|
|
33
|
-
}
|
|
34
|
-
/** Clone into the store and `commit()` the working entity. */
|
|
35
|
-
async save(entity) {
|
|
36
|
-
this.#store.set(this.keyOf(entity), cloneEntity(entity));
|
|
37
|
-
entity.commit();
|
|
38
|
-
}
|
|
39
|
-
/** Clones of every stored entity. */
|
|
40
|
-
async list() {
|
|
41
|
-
return [...this.#store.values()].map((entity) => cloneEntity(entity));
|
|
42
|
-
}
|
|
43
|
-
/** Remove by id. No-op if missing. */
|
|
44
|
-
async delete(id) {
|
|
45
|
-
this.#store.delete(id);
|
|
46
|
-
}
|
|
47
|
-
keyOf(entity) {
|
|
48
|
-
const props = entity.toProps();
|
|
49
|
-
const key = props[this.#keyBy];
|
|
50
|
-
if (typeof key !== 'string') {
|
|
51
|
-
throw new Error(`hexok: InMemoryRepository keyBy "${this.#keyBy}" is not a string`);
|
|
52
|
-
}
|
|
53
|
-
return key;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
function cloneEntity(entity) {
|
|
57
|
-
const Ctor = entity.constructor;
|
|
58
|
-
return Ctor.restore(entity.toProps());
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=in-memory-repository.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-repository.js","sourceRoot":"","sources":["../../src/testing/in-memory-repository.ts"],"names":[],"mappings":"AA+BA;;;;;;;;;;GAUG;AACH,MAAM,OAAO,kBAAkB;IAGpB,MAAM,CAAS;IACf,MAAM,GAAG,IAAI,GAAG,EAAa,CAAC;IAEvC,YAAoB,KAAa,EAAE,IAAS;QAC1C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,iFAAiF;IACjF,MAAM,CAAC,EAAE,CACP,MAAkE,EAClE,OAGkB;QAElB,MAAM,IAAI,GAAG,IAAI,kBAAkB,CACjC,OAAO,CAAC,KAAK,EACb,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAsC,CAC1D,CAAC;QACF,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACtD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAiB,CAAC;QAC5D,CAAC;QACD,OAAO,IAAoB,CAAC;IAC9B,CAAC;IAED,6CAA6C;IAC7C,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClC,OAAO,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC;IAED,8DAA8D;IAC9D,KAAK,CAAC,IAAI,CAAC,MAAS;QAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;IAED,qCAAqC;IACrC,KAAK,CAAC,IAAI;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;IAEO,KAAK,CAAC,MAAS;QACrB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAA6B,CAAC;QAC1D,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,oCAAoC,IAAI,CAAC,MAAM,mBAAmB,CACnE,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAED,SAAS,WAAW,CAA4C,MAAS;IACvE,MAAM,IAAI,GAAG,MAAM,CAAC,WAEnB,CAAC;IACF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AACxC,CAAC"}
|
package/dist/testing/index.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { App, TestAppBuilder, type TestAppInstance } from './app-test.js';
|
|
2
|
-
export { InMemoryBus } from './in-memory-bus.js';
|
|
3
|
-
export { InMemoryChannel } from './in-memory-channel.js';
|
|
4
|
-
export { InMemoryQueue } from './in-memory-queue.js';
|
|
5
|
-
export { InMemoryRepository } from './in-memory-repository.js';
|
|
6
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
|
package/dist/testing/index.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { App, TestAppBuilder } from './app-test.js';
|
|
2
|
-
export { InMemoryBus } from './in-memory-bus.js';
|
|
3
|
-
export { InMemoryChannel } from './in-memory-channel.js';
|
|
4
|
-
export { InMemoryQueue } from './in-memory-queue.js';
|
|
5
|
-
export { InMemoryRepository } from './in-memory-repository.js';
|
|
6
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,cAAc,EAAwB,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|