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
package/dist/runtime/app.d.ts
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { type AsUseCaseBag, type ChannelSession, type CheckUseCase, type DerivedContract, type EventChannelCtor, type EventUseCaseCtor, type UseCaseBag } from '../app/index.js';
|
|
2
|
-
import type { BusAdapter, CatalogKind, ChannelAdapter, Envelope, EventAdapter, EventCatalog, EventClass, PortToken, QueueAdapter } from '../domain/index.js';
|
|
3
|
-
import { type ChannelGateways } from './channel.js';
|
|
4
|
-
import type { NestedClient } from './client.js';
|
|
5
|
-
import type { ChannelKindError, DuplicateCatalogError, DuplicateChannelError, DuplicatePortError, MissingMessages } from './completeness.js';
|
|
6
|
-
import { type Interceptor } from './interceptor.js';
|
|
7
|
-
import type { ApiMiddleware } from './middleware.js';
|
|
8
|
-
import { type RpcContract } from './rpc.js';
|
|
9
|
-
/** Built app: in-process client, HTTP RPC, event lifecycle, and routed channels. */
|
|
10
|
-
export type AppInstance<Bag extends UseCaseBag, Ctx = unknown, Routed = never> = {
|
|
11
|
-
/** Nested API contract (`incident.close` → `contract.incident.close`). Event and internal use cases are omitted (`trigger !== 'external'`). */
|
|
12
|
-
contract: DerivedContract<Bag>;
|
|
13
|
-
/** `fetch` handler for `POST /rpc/...`. Event handlers still require `start()`. */
|
|
14
|
-
router: {
|
|
15
|
-
fetch: (request: Request) => Promise<Response>;
|
|
16
|
-
};
|
|
17
|
-
/** In-process nested client. Same keys as `contract`; pass `{ ctx, signal }` as the second argument. */
|
|
18
|
-
local: NestedClient<Bag, Ctx>;
|
|
19
|
-
/** Event use-case constructors grouped by catalog key then event key. They subscribe only after `start()`. */
|
|
20
|
-
handlers: Record<string, Record<string, EventUseCaseCtor[]>>;
|
|
21
|
-
/** Routed channel gateways keyed by catalog key. Routing starts on `start()`. */
|
|
22
|
-
channels: ChannelGateways<Routed>;
|
|
23
|
-
/** Publish an envelope to its bound adapter now. Does not start handlers. */
|
|
24
|
-
publish(envelope: Envelope): Promise<void>;
|
|
25
|
-
/** Subscribe event handlers and start channel routing. Throws if called twice without `stop()`. */
|
|
26
|
-
start(): Promise<void>;
|
|
27
|
-
/** Stop channel and event adapters. Safe to call more than once. */
|
|
28
|
-
stop(): Promise<void>;
|
|
29
|
-
/** Nested RPC catalog (`rpc.incident.close.path`) plus flat `routes`. */
|
|
30
|
-
readonly rpc: RpcContract<Bag>;
|
|
31
|
-
};
|
|
32
|
-
/** Adapter `bind` expects for a catalog kind. */
|
|
33
|
-
export type AdapterFor<K extends CatalogKind> = K extends 'bus' ? BusAdapter : K extends 'queue' ? QueueAdapter : EventAdapter;
|
|
34
|
-
type ChannelCatalogKind<C> = C extends {
|
|
35
|
-
catalog: EventCatalog<string, infer Kind, infer _E, infer _Ctx>;
|
|
36
|
-
} ? Kind : CatalogKind;
|
|
37
|
-
type ChannelCatalogKey<C> = C extends {
|
|
38
|
-
catalog: EventCatalog<infer K extends string, infer _Kind, infer _E, infer _Ctx>;
|
|
39
|
-
} ? K : string;
|
|
40
|
-
/** Fluent composition. `build` is callable only after every required port, catalog, and channel is wired. */
|
|
41
|
-
export declare class AppBuilder<Bag extends UseCaseBag, Provided = never, Bound = never, Ctx = unknown, Routed = never> {
|
|
42
|
-
#private;
|
|
43
|
-
private constructor();
|
|
44
|
-
/** Start composition from a map of use-case classes. */
|
|
45
|
-
static from<Bag extends {
|
|
46
|
-
[K in keyof Bag]: CheckUseCase<Bag[K]>;
|
|
47
|
-
}>(useCases: Bag): AppBuilder<AsUseCaseBag<Bag>, never, never, unknown>;
|
|
48
|
-
/** Register a port implementation. A second `provide` for the same token is a compile-time error and a runtime throw. */
|
|
49
|
-
provide<I>(token: [PortToken<I>] extends [Provided] ? DuplicatePortError : PortToken<I>, impl: I): AppBuilder<Bag, Provided | PortToken<I>, Bound, Ctx, Routed>;
|
|
50
|
-
/** Bind an event adapter to a catalog. Adapter `kind` must match; a second bind of the same catalog fails. */
|
|
51
|
-
bind<Key extends string, Kind extends CatalogKind, Events extends EventClass = never, CatCtx = undefined>(catalog: [EventCatalog<Key, Kind, Events, CatCtx>] extends [Bound] ? DuplicateCatalogError<Key> : EventCatalog<Key, Kind, Events, CatCtx>, adapter: AdapterFor<Kind>): AppBuilder<Bag, Provided, Bound | EventCatalog<Key, Kind, Events, CatCtx>, Ctx, Routed>;
|
|
52
|
-
/** Route a channel class to a presence adapter. The channel catalog must be a bus and still needs `bind`. */
|
|
53
|
-
route<C extends EventChannelCtor>(channel: ChannelCatalogKind<C> extends 'bus' ? [C] extends [Routed] ? DuplicateChannelError<ChannelCatalogKey<C>> : C : ChannelKindError<ChannelCatalogKey<C>, ChannelCatalogKind<C> & string>, adapter: ChannelAdapter<ChannelSession<C>>): AppBuilder<Bag, Provided, Bound, Ctx, Routed | C>;
|
|
54
|
-
/** Set the default request context for `local`, HTTP, and event handlers. Per-call `ctx` overrides it. */
|
|
55
|
-
ctx<C>(defaults?: C): AppBuilder<Bag, Provided, Bound, C, Routed>;
|
|
56
|
-
/**
|
|
57
|
-
* Set HTTP request context from the `Request`. `body.ctx` is ignored.
|
|
58
|
-
* Call `.ctx<C>()` first so `ctx` is typed. `local` still uses `.ctx()` / per-call `{ ctx }`.
|
|
59
|
-
*/
|
|
60
|
-
ctxFrom(fn: (args: {
|
|
61
|
-
request: Request;
|
|
62
|
-
ctx: Ctx;
|
|
63
|
-
}) => Ctx | Promise<Ctx>): this;
|
|
64
|
-
/**
|
|
65
|
-
* Provide a factory from `Adapter.of` by calling `create(...deps)`.
|
|
66
|
-
* Same as `.provide(factory.token, factory.create(...deps))`.
|
|
67
|
-
*/
|
|
68
|
-
adapt<I, Deps extends unknown[]>(factory: {
|
|
69
|
-
token: [PortToken<I>] extends [Provided] ? DuplicatePortError : PortToken<I>;
|
|
70
|
-
create: (...deps: Deps) => I;
|
|
71
|
-
}, ...deps: Deps): AppBuilder<Bag, Provided | PortToken<I>, Bound, Ctx, Routed>;
|
|
72
|
-
/** Register middleware around external `execute` (`local` and HTTP) — not event handlers or nested `run`. */
|
|
73
|
-
use(middleware: ApiMiddleware): this;
|
|
74
|
-
/** Register an interceptor. First registered is outer for execute, adapter, publish, and dispatch. Duplicate `key` throws. */
|
|
75
|
-
intercept(interceptor: Interceptor): this;
|
|
76
|
-
/**
|
|
77
|
-
* Complete the graph. Incomplete builders expose `build` as the missing
|
|
78
|
-
* port/catalog message (not callable). Runtime throws the same sentences.
|
|
79
|
-
*/
|
|
80
|
-
get build(): [MissingMessages<Bag, Provided, Bound, Routed>] extends [never] ? () => AppInstance<Bag, Ctx, Routed> : MissingMessages<Bag, Provided, Bound, Routed>;
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Composition root. `build()` is only callable when every required port
|
|
84
|
-
* and event catalog is provided.
|
|
85
|
-
*
|
|
86
|
-
* ```ts
|
|
87
|
-
* const app = App.from({ close: CloseIncident })
|
|
88
|
-
* .provide(IncidentRepository, repo)
|
|
89
|
-
* .provide(Clock, clock)
|
|
90
|
-
* .bind(DomainEvents, bus)
|
|
91
|
-
* .build()
|
|
92
|
-
* await app.local.incident.close({ id: '1' })
|
|
93
|
-
* ```
|
|
94
|
-
*/
|
|
95
|
-
export declare const App: {
|
|
96
|
-
/** Start composition from a map of use-case classes. */
|
|
97
|
-
from: typeof AppBuilder.from;
|
|
98
|
-
};
|
|
99
|
-
export {};
|
|
100
|
-
//# sourceMappingURL=app.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/runtime/app.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/app.js
DELETED
|
@@ -1,292 +0,0 @@
|
|
|
1
|
-
import { deriveContract, isEventUseCase, isExternalUseCase, isInternalUseCase, nestByKey, } from '../app/index.js';
|
|
2
|
-
import { createChannelHandle, resolveChannelPorts, startChannels, stopChannelAdapters, } from './channel.js';
|
|
3
|
-
import { startHandlers, stopAdapters } from './events.js';
|
|
4
|
-
import { createFetchHandler } from './http.js';
|
|
5
|
-
import { requireCapability } from './interceptor.js';
|
|
6
|
-
import { invokeExternal, publishNow } from './invoke.js';
|
|
7
|
-
import { deriveRpc } from './rpc.js';
|
|
8
|
-
/** Fluent composition. `build` is callable only after every required port, catalog, and channel is wired. */
|
|
9
|
-
export class AppBuilder {
|
|
10
|
-
#useCases;
|
|
11
|
-
#provided = new Map();
|
|
12
|
-
#bound = new Map();
|
|
13
|
-
#routed = new Map();
|
|
14
|
-
#interceptors = [];
|
|
15
|
-
#middleware = [];
|
|
16
|
-
#defaultCtx;
|
|
17
|
-
#ctxFrom;
|
|
18
|
-
constructor(useCases) {
|
|
19
|
-
this.#useCases = useCases;
|
|
20
|
-
}
|
|
21
|
-
/** Start composition from a map of use-case classes. */
|
|
22
|
-
static from(useCases) {
|
|
23
|
-
return new AppBuilder(useCases);
|
|
24
|
-
}
|
|
25
|
-
/** Register a port implementation. A second `provide` for the same token is a compile-time error and a runtime throw. */
|
|
26
|
-
provide(token, impl) {
|
|
27
|
-
const port = token;
|
|
28
|
-
if (this.#provided.has(port)) {
|
|
29
|
-
throw new Error(`hexok: port "${port.key}" already provided`);
|
|
30
|
-
}
|
|
31
|
-
for (const existing of this.#provided.keys()) {
|
|
32
|
-
if (existing.key === port.key && existing !== port) {
|
|
33
|
-
throw new Error(`hexok: two tokens share the key "${port.key}"`);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
if (port.capabilities.transactional) {
|
|
37
|
-
requireCapability(port, impl, 'bindTo', 'Transactional');
|
|
38
|
-
}
|
|
39
|
-
if (port.capabilities.requestScoped) {
|
|
40
|
-
requireCapability(port, impl, 'fork', 'RequestScoped');
|
|
41
|
-
}
|
|
42
|
-
this.#provided.set(port, impl);
|
|
43
|
-
return this;
|
|
44
|
-
}
|
|
45
|
-
/** Bind an event adapter to a catalog. Adapter `kind` must match; a second bind of the same catalog fails. */
|
|
46
|
-
bind(catalog, adapter) {
|
|
47
|
-
const cat = catalog;
|
|
48
|
-
if (this.#bound.has(cat)) {
|
|
49
|
-
throw new Error(`hexok: catalog "${cat.key}" already bound`);
|
|
50
|
-
}
|
|
51
|
-
if (adapter.kind !== cat.kind) {
|
|
52
|
-
throw new Error(`hexok: catalog "${cat.key}" is kind "${cat.kind}" but the adapter is "${adapter.kind}"`);
|
|
53
|
-
}
|
|
54
|
-
cat.freeze();
|
|
55
|
-
this.#bound.set(cat, adapter);
|
|
56
|
-
return this;
|
|
57
|
-
}
|
|
58
|
-
/** Route a channel class to a presence adapter. The channel catalog must be a bus and still needs `bind`. */
|
|
59
|
-
route(channel, adapter) {
|
|
60
|
-
const ctor = channel;
|
|
61
|
-
const catalog = ctor.catalog;
|
|
62
|
-
if (catalog.kind !== 'bus') {
|
|
63
|
-
throw new Error(`hexok: channel catalog "${catalog.key}" is kind "${catalog.kind}". Channels require a bus catalog.`);
|
|
64
|
-
}
|
|
65
|
-
if (this.#routed.has(catalog)) {
|
|
66
|
-
throw new Error(`hexok: catalog "${catalog.key}" already routed`);
|
|
67
|
-
}
|
|
68
|
-
catalog.freeze();
|
|
69
|
-
const instance = new ctor();
|
|
70
|
-
this.#routed.set(catalog, {
|
|
71
|
-
ctor,
|
|
72
|
-
instance,
|
|
73
|
-
adapter: adapter,
|
|
74
|
-
ports: {},
|
|
75
|
-
});
|
|
76
|
-
return this;
|
|
77
|
-
}
|
|
78
|
-
/** Set the default request context for `local`, HTTP, and event handlers. Per-call `ctx` overrides it. */
|
|
79
|
-
ctx(defaults) {
|
|
80
|
-
this.#defaultCtx = defaults;
|
|
81
|
-
return this;
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Set HTTP request context from the `Request`. `body.ctx` is ignored.
|
|
85
|
-
* Call `.ctx<C>()` first so `ctx` is typed. `local` still uses `.ctx()` / per-call `{ ctx }`.
|
|
86
|
-
*/
|
|
87
|
-
ctxFrom(fn) {
|
|
88
|
-
this.#ctxFrom = fn;
|
|
89
|
-
return this;
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Provide a factory from `Adapter.of` by calling `create(...deps)`.
|
|
93
|
-
* Same as `.provide(factory.token, factory.create(...deps))`.
|
|
94
|
-
*/
|
|
95
|
-
adapt(factory, ...deps) {
|
|
96
|
-
return this.provide(factory.token, factory.create(...deps));
|
|
97
|
-
}
|
|
98
|
-
/** Register middleware around external `execute` (`local` and HTTP) — not event handlers or nested `run`. */
|
|
99
|
-
use(middleware) {
|
|
100
|
-
this.#middleware.push(middleware);
|
|
101
|
-
return this;
|
|
102
|
-
}
|
|
103
|
-
/** Register an interceptor. First registered is outer for execute, adapter, publish, and dispatch. Duplicate `key` throws. */
|
|
104
|
-
intercept(interceptor) {
|
|
105
|
-
if (this.#interceptors.some((item) => item.key === interceptor.key)) {
|
|
106
|
-
throw new Error(`hexok: duplicate interceptor key "${interceptor.key}"`);
|
|
107
|
-
}
|
|
108
|
-
this.#interceptors.push(interceptor);
|
|
109
|
-
return this;
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Complete the graph. Incomplete builders expose `build` as the missing
|
|
113
|
-
* port/catalog message (not callable). Runtime throws the same sentences.
|
|
114
|
-
*/
|
|
115
|
-
get build() {
|
|
116
|
-
return (() => this.#build());
|
|
117
|
-
}
|
|
118
|
-
#build() {
|
|
119
|
-
this.#assertComplete();
|
|
120
|
-
const adapted = new Map();
|
|
121
|
-
for (const [token, impl] of this.#provided) {
|
|
122
|
-
let current = impl;
|
|
123
|
-
for (let i = this.#interceptors.length - 1; i >= 0; i--) {
|
|
124
|
-
const interceptor = this.#interceptors[i];
|
|
125
|
-
if (interceptor?.aroundAdapter) {
|
|
126
|
-
current = interceptor.aroundAdapter(token, current);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
adapted.set(token, current);
|
|
130
|
-
}
|
|
131
|
-
for (const routed of this.#routed.values()) {
|
|
132
|
-
routed.ports = resolveChannelPorts(routed.ctor, adapted);
|
|
133
|
-
}
|
|
134
|
-
const catalog = deriveContract(this.#useCases);
|
|
135
|
-
const rpc = deriveRpc(catalog);
|
|
136
|
-
const external = new Map();
|
|
137
|
-
const eventHandlers = new Map();
|
|
138
|
-
const handlersView = {};
|
|
139
|
-
for (const ctor of Object.values(this.#useCases)) {
|
|
140
|
-
if (isExternalUseCase(ctor)) {
|
|
141
|
-
external.set(ctor.key, ctor);
|
|
142
|
-
continue;
|
|
143
|
-
}
|
|
144
|
-
if (isInternalUseCase(ctor)) {
|
|
145
|
-
continue;
|
|
146
|
-
}
|
|
147
|
-
if (isEventUseCase(ctor)) {
|
|
148
|
-
const handlerKey = `${ctor.catalog.key}:${ctor.on.key}`;
|
|
149
|
-
const list = eventHandlers.get(handlerKey) ?? [];
|
|
150
|
-
list.push(ctor);
|
|
151
|
-
eventHandlers.set(handlerKey, list);
|
|
152
|
-
const byCatalog = handlersView[ctor.catalog.key] ?? {};
|
|
153
|
-
const byEvent = byCatalog[ctor.on.key] ?? [];
|
|
154
|
-
byEvent.push(ctor);
|
|
155
|
-
byCatalog[ctor.on.key] = byEvent;
|
|
156
|
-
handlersView[ctor.catalog.key] = byCatalog;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
const channelHandles = {};
|
|
160
|
-
for (const [cat, routed] of this.#routed) {
|
|
161
|
-
channelHandles[cat.key] = createChannelHandle(routed.ctor, routed.instance, routed.adapter, routed.ports);
|
|
162
|
-
}
|
|
163
|
-
const started = { value: false };
|
|
164
|
-
const handlerKeys = new Set(eventHandlers.keys());
|
|
165
|
-
const deps = () => ({
|
|
166
|
-
ports: adapted,
|
|
167
|
-
catalogs: this.#bound,
|
|
168
|
-
interceptors: this.#interceptors,
|
|
169
|
-
middleware: this.#middleware,
|
|
170
|
-
defaultCtx: this.#defaultCtx,
|
|
171
|
-
channels: channelHandles,
|
|
172
|
-
started,
|
|
173
|
-
handlerKeys,
|
|
174
|
-
...(this.#ctxFrom !== undefined ? { ctxFrom: this.#ctxFrom } : {}),
|
|
175
|
-
});
|
|
176
|
-
const local = nestByKey([...external.entries()].map(([key, ctor]) => [
|
|
177
|
-
key,
|
|
178
|
-
(input, opts) => invokeExternal(ctor, input, deps(), opts),
|
|
179
|
-
]));
|
|
180
|
-
const instance = {
|
|
181
|
-
contract: nestedContract(catalog),
|
|
182
|
-
rpc,
|
|
183
|
-
router: { fetch: createFetchHandler(external, deps()) },
|
|
184
|
-
local,
|
|
185
|
-
handlers: handlersView,
|
|
186
|
-
channels: channelHandles,
|
|
187
|
-
publish: (envelope) => publishNow(envelope, deps()),
|
|
188
|
-
start: async () => {
|
|
189
|
-
if (started.value)
|
|
190
|
-
throw new Error('hexok: start() called twice');
|
|
191
|
-
started.value = true;
|
|
192
|
-
await startHandlers(this.#bound, eventHandlers, deps());
|
|
193
|
-
startChannels(this.#routed, this.#bound);
|
|
194
|
-
},
|
|
195
|
-
stop: async () => {
|
|
196
|
-
await stopChannelAdapters(this.#routed);
|
|
197
|
-
if (!started.value)
|
|
198
|
-
return;
|
|
199
|
-
await stopAdapters(this.#bound);
|
|
200
|
-
started.value = false;
|
|
201
|
-
},
|
|
202
|
-
};
|
|
203
|
-
return instance;
|
|
204
|
-
}
|
|
205
|
-
#assertComplete() {
|
|
206
|
-
const requiredPorts = new Map();
|
|
207
|
-
const requiredCatalogs = new Map();
|
|
208
|
-
const requiredChannels = new Map();
|
|
209
|
-
for (const ctor of Object.values(this.#useCases)) {
|
|
210
|
-
const ports = (ctor.ports ?? {});
|
|
211
|
-
for (const token of Object.values(ports)) {
|
|
212
|
-
const rec = requiredPorts.get(token.key) ?? { token, usedBy: [] };
|
|
213
|
-
rec.usedBy.push(ctor.key);
|
|
214
|
-
requiredPorts.set(token.key, rec);
|
|
215
|
-
}
|
|
216
|
-
const catalogs = [
|
|
217
|
-
...(ctor.publishes ?? []),
|
|
218
|
-
...('catalog' in ctor && ctor.catalog ? [ctor.catalog] : []),
|
|
219
|
-
];
|
|
220
|
-
for (const catalog of catalogs) {
|
|
221
|
-
const rec = requiredCatalogs.get(catalog.key) ?? {
|
|
222
|
-
catalog,
|
|
223
|
-
usedBy: [],
|
|
224
|
-
};
|
|
225
|
-
rec.usedBy.push(ctor.key);
|
|
226
|
-
requiredCatalogs.set(catalog.key, rec);
|
|
227
|
-
}
|
|
228
|
-
for (const channel of ctor.channels ?? []) {
|
|
229
|
-
const rec = requiredChannels.get(channel.catalog.key) ?? {
|
|
230
|
-
ctor: channel,
|
|
231
|
-
usedBy: [],
|
|
232
|
-
};
|
|
233
|
-
rec.usedBy.push(ctor.key);
|
|
234
|
-
requiredChannels.set(channel.catalog.key, rec);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
for (const routed of this.#routed.values()) {
|
|
238
|
-
const ports = (routed.ctor.ports ?? {});
|
|
239
|
-
for (const token of Object.values(ports)) {
|
|
240
|
-
const rec = requiredPorts.get(token.key) ?? {
|
|
241
|
-
token,
|
|
242
|
-
usedBy: [],
|
|
243
|
-
};
|
|
244
|
-
rec.usedBy.push(routed.ctor.catalog.key);
|
|
245
|
-
requiredPorts.set(token.key, rec);
|
|
246
|
-
}
|
|
247
|
-
const catalog = routed.ctor.catalog;
|
|
248
|
-
const rec = requiredCatalogs.get(catalog.key) ?? {
|
|
249
|
-
catalog,
|
|
250
|
-
usedBy: [],
|
|
251
|
-
};
|
|
252
|
-
rec.usedBy.push('channel');
|
|
253
|
-
requiredCatalogs.set(catalog.key, rec);
|
|
254
|
-
}
|
|
255
|
-
for (const { token, usedBy } of requiredPorts.values()) {
|
|
256
|
-
if (!this.#provided.has(token)) {
|
|
257
|
-
throw new Error(`hexok: unprovided port "${token.key}" (used by ${usedBy.join(', ')})`);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
for (const { catalog, usedBy } of requiredCatalogs.values()) {
|
|
261
|
-
if (!this.#bound.has(catalog)) {
|
|
262
|
-
throw new Error(`hexok: unbound catalog "${catalog.key}" (used by ${usedBy.join(', ')})`);
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
for (const { ctor, usedBy } of requiredChannels.values()) {
|
|
266
|
-
if (!this.#routed.has(ctor.catalog)) {
|
|
267
|
-
throw new Error(`hexok: unrouted channel "${ctor.catalog.key}" (used by ${usedBy.join(', ')}). Call .route(...) before .build()`);
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
/**
|
|
273
|
-
* Composition root. `build()` is only callable when every required port
|
|
274
|
-
* and event catalog is provided.
|
|
275
|
-
*
|
|
276
|
-
* ```ts
|
|
277
|
-
* const app = App.from({ close: CloseIncident })
|
|
278
|
-
* .provide(IncidentRepository, repo)
|
|
279
|
-
* .provide(Clock, clock)
|
|
280
|
-
* .bind(DomainEvents, bus)
|
|
281
|
-
* .build()
|
|
282
|
-
* await app.local.incident.close({ id: '1' })
|
|
283
|
-
* ```
|
|
284
|
-
*/
|
|
285
|
-
export const App = {
|
|
286
|
-
/** Start composition from a map of use-case classes. */
|
|
287
|
-
from: AppBuilder.from,
|
|
288
|
-
};
|
|
289
|
-
function nestedContract(catalog) {
|
|
290
|
-
return nestByKey(Object.entries(catalog.entries));
|
|
291
|
-
}
|
|
292
|
-
//# sourceMappingURL=app.js.map
|
package/dist/runtime/app.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/runtime/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import type { ChannelControl, ChannelSession, EventChannelCtor } from '../app/index.js';
|
|
2
|
-
import { type Infer, type StandardSchemaV1 } from '../core/index.js';
|
|
3
|
-
import type { AnyEventCatalog, ChannelAdapter, ChannelConnection, Envelope, EventAdapter, EventCatalog, PortToken } from '../domain/index.js';
|
|
4
|
-
/** Presence handle for one routed channel: join, list, eject, refresh, update. */
|
|
5
|
-
export type ChannelGateway<C extends EventChannelCtor> = ChannelControl<ChannelSession<C>> & {
|
|
6
|
-
/** Admit a connection after validating `joinInput`. Routing of events starts on `app.start()`. */
|
|
7
|
-
join(input: C extends {
|
|
8
|
-
joinInput: infer S extends StandardSchemaV1;
|
|
9
|
-
} ? Infer<S> : unknown, connection: ChannelConnection): Promise<ChannelSession<C>>;
|
|
10
|
-
};
|
|
11
|
-
type UnionToIntersection<U> = (U extends unknown ? (x: U) => void : never) extends (x: infer I) => void ? I : never;
|
|
12
|
-
/** Routed channel gateways keyed by catalog key (`app.channels.client`). */
|
|
13
|
-
export type ChannelGateways<Routed> = [Routed] extends [never] ? Record<string, never> : UnionToIntersection<Routed extends infer C ? C extends EventChannelCtor ? C extends {
|
|
14
|
-
catalog: EventCatalog<infer K extends string, infer _Kind, infer _E, infer _Ctx>;
|
|
15
|
-
} ? {
|
|
16
|
-
[P in K]: ChannelGateway<C>;
|
|
17
|
-
} : never : never : never>;
|
|
18
|
-
export type RoutedChannel = {
|
|
19
|
-
ctor: EventChannelCtor;
|
|
20
|
-
instance: {
|
|
21
|
-
join(ctx: never): Promise<unknown>;
|
|
22
|
-
refresh(ctx: never): Promise<unknown>;
|
|
23
|
-
route(ctx: never): Promise<void>;
|
|
24
|
-
};
|
|
25
|
-
adapter: ChannelAdapter<unknown>;
|
|
26
|
-
ports: Record<string, unknown>;
|
|
27
|
-
};
|
|
28
|
-
export declare function serializeChannelEnvelope(envelope: Envelope): string;
|
|
29
|
-
export declare function createChannelHandle(ctor: EventChannelCtor, instance: RoutedChannel['instance'], adapter: ChannelAdapter<unknown>, ports: Record<string, unknown>): ChannelGateway<EventChannelCtor>;
|
|
30
|
-
export declare function startChannels(routed: Map<AnyEventCatalog, RoutedChannel>, bound: Map<AnyEventCatalog, EventAdapter>): void;
|
|
31
|
-
export declare function stopChannelAdapters(routed: Map<AnyEventCatalog, RoutedChannel>): Promise<void>;
|
|
32
|
-
export declare function resolveChannelPorts(ctor: EventChannelCtor, provided: Map<PortToken<unknown>, unknown>): Record<string, unknown>;
|
|
33
|
-
export {};
|
|
34
|
-
//# sourceMappingURL=channel.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/runtime/channel.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/channel.js
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import { errorFactories } from '../app/error-factory.js';
|
|
2
|
-
import { CodedError, validate, } from '../core/index.js';
|
|
3
|
-
import { aliasPorts } from './invoke.js';
|
|
4
|
-
export function serializeChannelEnvelope(envelope) {
|
|
5
|
-
return JSON.stringify({
|
|
6
|
-
key: envelope.key,
|
|
7
|
-
catalog: envelope.catalog,
|
|
8
|
-
payload: envelope.payload,
|
|
9
|
-
occurredAt: envelope.occurredAt,
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
export function createChannelHandle(ctor, instance, adapter, ports) {
|
|
13
|
-
const errors = errorFactories(ctor.errors ?? {});
|
|
14
|
-
const refreshOne = async (id, session) => {
|
|
15
|
-
const next = await instance.refresh({
|
|
16
|
-
session,
|
|
17
|
-
ports,
|
|
18
|
-
errors,
|
|
19
|
-
});
|
|
20
|
-
if (next === 'eject') {
|
|
21
|
-
adapter.eject(id);
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
adapter.update(id, next);
|
|
25
|
-
};
|
|
26
|
-
return {
|
|
27
|
-
list: () => adapter.list(),
|
|
28
|
-
eject: (id) => {
|
|
29
|
-
adapter.eject(id);
|
|
30
|
-
},
|
|
31
|
-
ejectWhere: (pred) => {
|
|
32
|
-
for (const { id, session } of [...adapter.list()]) {
|
|
33
|
-
if (pred(session))
|
|
34
|
-
adapter.eject(id);
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
refresh: async (id) => {
|
|
38
|
-
const row = adapter.list().find((item) => item.id === id);
|
|
39
|
-
if (!row)
|
|
40
|
-
return;
|
|
41
|
-
await refreshOne(id, row.session);
|
|
42
|
-
},
|
|
43
|
-
refreshWhere: async (pred) => {
|
|
44
|
-
for (const { id, session } of [...adapter.list()]) {
|
|
45
|
-
if (pred(session))
|
|
46
|
-
await refreshOne(id, session);
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
update: (id, session) => {
|
|
50
|
-
adapter.update(id, session);
|
|
51
|
-
},
|
|
52
|
-
join: async (input, connection) => {
|
|
53
|
-
const parsed = validate(ctor.joinInput, input);
|
|
54
|
-
if (!parsed.ok) {
|
|
55
|
-
throw new CodedError({
|
|
56
|
-
code: 'VALIDATION',
|
|
57
|
-
message: 'Validation failed',
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
const session = await instance.join({
|
|
61
|
-
input: parsed.value,
|
|
62
|
-
ports,
|
|
63
|
-
errors,
|
|
64
|
-
});
|
|
65
|
-
const id = crypto.randomUUID();
|
|
66
|
-
adapter.join(id, session, connection);
|
|
67
|
-
connection.addEventListener('close', () => {
|
|
68
|
-
adapter.leave(id);
|
|
69
|
-
});
|
|
70
|
-
return session;
|
|
71
|
-
},
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
export function startChannels(routed, bound) {
|
|
75
|
-
for (const [catalog, { instance, adapter, ports }] of routed) {
|
|
76
|
-
const eventAdapter = bound.get(catalog);
|
|
77
|
-
if (eventAdapter?.kind !== 'bus') {
|
|
78
|
-
throw new Error(`hexok: channel catalog "${catalog.key}" must be bound as a bus`);
|
|
79
|
-
}
|
|
80
|
-
const bus = eventAdapter;
|
|
81
|
-
for (const eventClass of catalog.list()) {
|
|
82
|
-
bus.subscribe(eventClass.key, async (envelope) => {
|
|
83
|
-
const payload = serializeChannelEnvelope(envelope);
|
|
84
|
-
await instance.route({
|
|
85
|
-
event: envelope,
|
|
86
|
-
ctx: envelope.ctx,
|
|
87
|
-
clients: adapter.list(),
|
|
88
|
-
ports,
|
|
89
|
-
send: async (id) => {
|
|
90
|
-
try {
|
|
91
|
-
adapter.send(id, payload);
|
|
92
|
-
}
|
|
93
|
-
catch {
|
|
94
|
-
adapter.leave(id);
|
|
95
|
-
}
|
|
96
|
-
},
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
export async function stopChannelAdapters(routed) {
|
|
103
|
-
for (const { adapter } of routed.values()) {
|
|
104
|
-
await adapter.stop?.();
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
export function resolveChannelPorts(ctor, provided) {
|
|
108
|
-
return aliasPorts(ctor.ports ?? {}, provided);
|
|
109
|
-
}
|
|
110
|
-
//# sourceMappingURL=channel.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/runtime/channel.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/client.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { UseCaseBag } from '../app/index.js';
|
|
2
|
-
import type { PathTo, UnionToIntersection } from '../app/nest.js';
|
|
3
|
-
import type { Infer, StandardSchemaV1 } from '../core/index.js';
|
|
4
|
-
type ExternalCall<C, Ctx> = C extends {
|
|
5
|
-
input: infer Input extends StandardSchemaV1;
|
|
6
|
-
output: infer Output extends StandardSchemaV1;
|
|
7
|
-
} ? (input: Infer<Input>, opts?: {
|
|
8
|
-
ctx?: Ctx;
|
|
9
|
-
signal?: AbortSignal;
|
|
10
|
-
}) => Promise<Infer<Output>> : never;
|
|
11
|
-
/**
|
|
12
|
-
* In-process client nested by use-case key. Event and internal use cases are omitted.
|
|
13
|
-
*/
|
|
14
|
-
export type NestedClient<Bag extends UseCaseBag, Ctx> = UnionToIntersection<{
|
|
15
|
-
[K in keyof Bag]: Bag[K] extends {
|
|
16
|
-
trigger: 'external';
|
|
17
|
-
key: infer Id extends string;
|
|
18
|
-
} ? PathTo<Id, ExternalCall<Bag[K], Ctx>> : never;
|
|
19
|
-
}[keyof Bag]>;
|
|
20
|
-
export {};
|
|
21
|
-
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/runtime/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEhE,KAAK,YAAY,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS;IACpC,KAAK,EAAE,MAAM,KAAK,SAAS,gBAAgB,CAAC;IAC5C,MAAM,EAAE,MAAM,MAAM,SAAS,gBAAgB,CAAC;CAC/C,GACG,CACE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EACnB,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,KACvC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAC3B,KAAK,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,GAAG,SAAS,UAAU,EAAE,GAAG,IAAI,mBAAmB,CACzE;KACG,CAAC,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS;QAC/B,OAAO,EAAE,UAAU,CAAC;QACpB,GAAG,EAAE,MAAM,EAAE,SAAS,MAAM,CAAC;KAC9B,GACG,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GACrC,KAAK;CACV,CAAC,MAAM,GAAG,CAAC,CACb,CAAC"}
|
package/dist/runtime/client.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/runtime/client.ts"],"names":[],"mappings":""}
|