@rotorsoft/act-sse 1.0.1 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,35 +1,29 @@
1
- import type { BroadcastMessage, BroadcastState } from "./types.js";
1
+ import type { BroadcastState, PatchMessage } from "./types.js";
2
2
  /**
3
- * Result of applying a broadcast message to cached client state.
3
+ * Result of applying a patch message to cached client state.
4
4
  */
5
5
  export type ApplyResult<S extends BroadcastState = BroadcastState> = {
6
6
  ok: true;
7
7
  state: S;
8
8
  } | {
9
9
  ok: false;
10
- reason: "stale" | "behind" | "patch-failed";
10
+ reason: "stale" | "behind";
11
11
  };
12
12
  /**
13
- * Apply a broadcast message to the client's cached state.
14
- *
15
- * Handles both full state and incremental patches with version validation.
16
- * Returns the new state on success, or a failure reason that the client
17
- * can use to decide whether to resync.
13
+ * Apply a version-keyed patch message to the client's cached state.
18
14
  *
19
15
  * ## Version logic
20
16
  *
21
- * - **Full state**: accepted if `msg._v >= cachedV` (or no cached state)
22
- * - **Patch**:
23
- * - `_baseV < cachedV`"stale" (client ahead, skip — mutation response arrived first)
24
- * - `_baseV > cachedV` → "behind" (client missed a version, must resync)
25
- * - `_baseV === cachedV` → apply patch ops
17
+ * - All patches older than cached "stale" (client already ahead)
18
+ * - Gap between cached version and first patch → "behind" (client missed versions, must resync)
19
+ * - Contiguous from cached version apply in order
26
20
  *
27
21
  * ## Usage (React Query)
28
22
  *
29
23
  * ```typescript
30
24
  * onData: (msg) => {
31
25
  * const cached = utils.getState.getData({ streamId });
32
- * const result = applyBroadcastMessage(msg, cached);
26
+ * const result = applyPatchMessage(msg, cached);
33
27
  * if (result.ok) {
34
28
  * utils.getState.setData({ streamId }, result.state);
35
29
  * } else if (result.reason === "behind") {
@@ -39,5 +33,5 @@ export type ApplyResult<S extends BroadcastState = BroadcastState> = {
39
33
  * }
40
34
  * ```
41
35
  */
42
- export declare function applyBroadcastMessage<S extends BroadcastState>(msg: BroadcastMessage<S>, cached: S | null | undefined): ApplyResult<S>;
36
+ export declare function applyPatchMessage<S extends BroadcastState>(msg: PatchMessage<S>, cached: S | null | undefined): ApplyResult<S>;
43
37
  //# sourceMappingURL=apply-patch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"apply-patch.d.ts","sourceRoot":"","sources":["../../src/apply-patch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAC7D;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACtB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,cAAc,CAAA;CAAE,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,cAAc,EAC5D,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC,EACxB,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,GAC3B,WAAW,CAAC,CAAC,CAAC,CAyBhB"}
1
+ {"version":3,"file":"apply-patch.d.ts","sourceRoot":"","sources":["../../src/apply-patch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/D;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAC7D;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACtB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,CAAA;CAAE,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,cAAc,EACxD,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,EACpB,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,GAC3B,WAAW,CAAC,CAAC,CAAC,CAuBhB"}
@@ -1,12 +1,11 @@
1
1
  import { StateCache } from "./state-cache.js";
2
- import type { BroadcastMessage, BroadcastOptions, BroadcastState, Subscriber } from "./types.js";
2
+ import type { BroadcastState, PatchMessage, Subscriber } from "./types.js";
3
3
  /**
4
4
  * Server-side broadcast channel for incremental state sync over SSE.
5
5
  *
6
6
  * Manages per-stream subscriber sets and an LRU state cache. When state
7
- * changes, computes an RFC 6902 JSON Patch against the previous cached
8
- * state and pushes either a patch (small diff) or full state (large diff
9
- * or first broadcast) to all subscribers.
7
+ * changes, forwards domain patches (from event handlers) to all subscribers
8
+ * as version-keyed messages.
10
9
  *
11
10
  * ## Usage
12
11
  *
@@ -14,9 +13,10 @@ import type { BroadcastMessage, BroadcastOptions, BroadcastState, Subscriber } f
14
13
  * const broadcast = new BroadcastChannel<MyState>();
15
14
  *
16
15
  * // After every app.do():
17
- * const snap = await doAction(...);
18
- * const state = deriveState(snap); // app-specific state derivation
19
- * broadcast.publish(streamId, state); // computes patch + pushes to SSE
16
+ * const snaps = await app.do(...);
17
+ * const patches = snaps.map(s => s.patch).filter(Boolean);
18
+ * const state = deriveState(snaps.at(-1));
19
+ * broadcast.publish(streamId, state, patches);
20
20
  *
21
21
  * // In SSE subscription:
22
22
  * const cleanup = broadcast.subscribe(streamId, (msg) => {
@@ -26,7 +26,6 @@ import type { BroadcastMessage, BroadcastOptions, BroadcastState, Subscriber } f
26
26
  *
27
27
  * // Initial state for reconnects:
28
28
  * const cached = broadcast.getState(streamId);
29
- * if (cached) yield { _type: "full", ...cached, serverTime: ... };
30
29
  * ```
31
30
  *
32
31
  * ## Version Contract
@@ -38,25 +37,24 @@ import type { BroadcastMessage, BroadcastOptions, BroadcastState, Subscriber } f
38
37
  export declare class BroadcastChannel<S extends BroadcastState = BroadcastState> {
39
38
  private channels;
40
39
  private stateCache;
41
- private maxPatchOps;
42
- constructor(options?: BroadcastOptions & {
40
+ constructor(options?: {
43
41
  cacheSize?: number;
44
42
  });
45
43
  /**
46
- * Publish new state for a stream. Computes a patch against the previously
47
- * cached state and pushes to all subscribers.
44
+ * Publish domain patches from a commit.
45
+ * patches[i] corresponds to version baseV + i + 1.
48
46
  *
49
47
  * @param streamId - The event store stream ID
50
48
  * @param state - Full state with `_v` set from `snap.event.version`
51
- * @returns The broadcast message that was sent (or undefined if no subscribers and no cache change)
49
+ * @param patches - Array of domain patches, one per emitted event
52
50
  */
53
- publish(streamId: string, state: S): BroadcastMessage<S>;
51
+ publish(streamId: string, state: S, patches?: Partial<S>[]): PatchMessage<S>;
54
52
  /**
55
53
  * Publish a state update that doesn't change the event version
56
54
  * (e.g. presence overlay, computed field refresh).
57
- * Uses the same version as the cached state for _baseV and _v.
55
+ * Uses the same version as the cached state, single entry.
58
56
  */
59
- publishOverlay(streamId: string, state: S): BroadcastMessage<S> | undefined;
57
+ publishOverlay(streamId: string, overlayPatch: Partial<S>): PatchMessage<S> | undefined;
60
58
  /**
61
59
  * Subscribe to broadcast messages for a stream.
62
60
  * Returns a cleanup function that removes the subscription.
@@ -68,6 +66,5 @@ export declare class BroadcastChannel<S extends BroadcastState = BroadcastState>
68
66
  getState(streamId: string): S | undefined;
69
67
  /** Direct access to the state cache (for app-specific reads like presence). */
70
68
  get cache(): StateCache<S>;
71
- private computeMessage;
72
69
  }
73
70
  //# sourceMappingURL=broadcast.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../src/broadcast.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,UAAU,EACX,MAAM,YAAY,CAAC;AAIpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBAAa,gBAAgB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc;IACrE,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,CAAC,EAAE,gBAAgB,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;IAK/D;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;IAYxD;;;;OAIG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,SAAS;IAc3E;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAW1D,kDAAkD;IAClD,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI5C,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAIzC,+EAA+E;IAC/E,IAAI,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC,CAEzB;IAID,OAAO,CAAC,cAAc;CAwBvB"}
1
+ {"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../src/broadcast.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,qBAAa,gBAAgB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc;IACrE,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,UAAU,CAAgB;gBAEtB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;IAI5C;;;;;;;OAOG;IACH,OAAO,CACL,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,CAAC,EACR,OAAO,GAAE,OAAO,CAAC,CAAC,CAAC,EAAO,GACzB,YAAY,CAAC,CAAC,CAAC;IAgBlB;;;;OAIG;IACH,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,GACvB,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS;IAe9B;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAW1D,kDAAkD;IAClD,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI5C,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAIzC,+EAA+E;IAC/E,IAAI,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC,CAEzB;CACF"}
@@ -4,34 +4,31 @@
4
4
  *
5
5
  * Incremental state broadcast over SSE for act event-sourced apps.
6
6
  *
7
- * Provides server-side broadcast with automatic RFC 6902 JSON Patch
8
- * computation, an LRU state cache, presence tracking, and a client-side
7
+ * Provides server-side broadcast with domain patch forwarding,
8
+ * an LRU state cache, presence tracking, and a client-side
9
9
  * patch applicator with version validation and resync detection.
10
10
  *
11
11
  * ## Architecture
12
12
  *
13
13
  * ```
14
- * app.do() → snap
14
+ * app.do() → snapshots (each carries its domain patch)
15
15
  * │
16
16
  * ▼
17
17
  * deriveState(snap) ← app-specific (overlay presence, deadlines, etc.)
18
18
  * state._v = snap.event.version
19
19
  * │
20
20
  * ▼
21
- * broadcast.publish(streamId, state)
21
+ * broadcast.publish(streamId, state, patches)
22
22
  * │
23
- * ├── compare(prev, state) RFC 6902 ops
24
- * ├── if ops ≤ threshold → PatchMessage { _baseV, _v, _patch }
25
- * ├── if ops > threshold → FullStateMessage { _v, ...state }
23
+ * ├── version-key each patch: { [baseV+1]: patch1, [baseV+2]: patch2 }
26
24
  * └── push to all SSE subscribers
27
25
  * │
28
26
  * ▼
29
- * Client: applyBroadcastMessage(msg, cached)
27
+ * Client: applyPatchMessage(msg, cached)
30
28
  * │
31
- * ├── full accept if _v cachedV
32
- * ├── patch apply if _baseV === cachedV
33
- * ├── stale skip (_baseV < cachedV, mutation response arrived first)
34
- * └── behind → resync (_baseV > cachedV, client missed a version)
29
+ * ├── contiguous deep-merge patches in version order
30
+ * ├── stale skip (client already ahead)
31
+ * └── behind resync (client missed versions)
35
32
  * ```
36
33
  *
37
34
  * ## Version Contract
@@ -39,10 +36,11 @@
39
36
  * `_v` is always the event store stream version (`snap.event.version`).
40
37
  * No separate version counters. The event store is the single source of truth.
41
38
  */
42
- export { applyBroadcastMessage } from "./apply-patch.js";
39
+ export { applyPatchMessage } from "./apply-patch.js";
43
40
  export type { ApplyResult } from "./apply-patch.js";
44
41
  export { BroadcastChannel } from "./broadcast.js";
42
+ export { patch } from "./patch.js";
45
43
  export { PresenceTracker } from "./presence.js";
46
44
  export { StateCache } from "./state-cache.js";
47
- export type { BroadcastMessage, BroadcastOptions, BroadcastState, FullStateMessage, PatchMessage, Subscriber, } from "./types.js";
45
+ export type { BroadcastState, PatchMessage, Subscriber } from "./types.js";
48
46
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,UAAU,GACX,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Browser-safe deep merge utility — identical semantics to @rotorsoft/act's patch().
3
+ * Inlined here so act-sse has zero Node dependencies.
4
+ */
5
+ type Schema = Record<string, any>;
6
+ type Patch<T> = {
7
+ [K in keyof T]?: T[K] extends Schema ? Patch<T[K]> : T[K];
8
+ };
9
+ /** Immutably deep-merge `patches` into `original`. */
10
+ export declare const patch: <S extends Schema>(original: Readonly<S>, patches: Readonly<Patch<S>>) => Readonly<S>;
11
+ export {};
12
+ //# sourceMappingURL=patch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch.d.ts","sourceRoot":"","sources":["../../src/patch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,KAAK,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAClC,KAAK,KAAK,CAAC,CAAC,IAAI;KACb,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC1D,CAAC;AA8BF,sDAAsD;AACtD,eAAO,MAAM,KAAK,GAAI,CAAC,SAAS,MAAM,EACpC,UAAU,QAAQ,CAAC,CAAC,CAAC,EACrB,SAAS,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAC1B,QAAQ,CAAC,CAAC,CAgBZ,CAAC"}
@@ -1,4 +1,3 @@
1
- import type { Operation } from "fast-json-patch";
2
1
  /**
3
2
  * Base constraint for state objects managed by the broadcast system.
4
3
  * Apps extend this with their own domain state shape.
@@ -8,39 +7,20 @@ export type BroadcastState = Record<string, unknown> & {
8
7
  _v: number;
9
8
  };
10
9
  /**
11
- * Full state messagesent on initial connect, resync, or when patch is too large.
10
+ * Recursive deep partialmirrors act core's Patch<T>.
12
11
  */
13
- export type FullStateMessage<S extends BroadcastState = BroadcastState> = S & {
14
- _type: "full";
15
- serverTime: string;
12
+ type DeepPartial<T> = {
13
+ [K in keyof T]?: T[K] extends Record<string, any> ? DeepPartial<T[K]> : T[K];
16
14
  };
17
15
  /**
18
- * Incremental patch message sent when the diff is small enough.
19
- * Client applies RFC 6902 operations to its cached state at _baseV to reach _v.
16
+ * SSE message: version-keyed domain patches.
17
+ * Keys are stringified version numbers, values are domain patches (deep partials).
18
+ * Multi-event commits produce multiple version-keyed entries.
20
19
  */
21
- export type PatchMessage = {
22
- _type: "patch";
23
- /** Target version after applying the patch */
24
- _v: number;
25
- /** Version the patch applies to (client must have this version cached) */
26
- _baseV: number;
27
- /** RFC 6902 JSON Patch operations */
28
- _patch: Operation[];
29
- serverTime: string;
30
- };
31
- /**
32
- * Discriminated union sent over SSE — client switches on `_type`.
33
- */
34
- export type BroadcastMessage<S extends BroadcastState = BroadcastState> = FullStateMessage<S> | PatchMessage;
20
+ export type PatchMessage<S extends BroadcastState = BroadcastState> = Record<number, DeepPartial<S>>;
35
21
  /**
36
- * Subscriber callback — receives either a patch or full state message.
22
+ * Subscriber callback — receives version-keyed patch messages.
37
23
  */
38
- export type Subscriber<S extends BroadcastState = BroadcastState> = (msg: BroadcastMessage<S>) => void;
39
- /**
40
- * Options for creating a broadcast channel.
41
- */
42
- export type BroadcastOptions = {
43
- /** Max RFC 6902 operations before falling back to full state (default: 50) */
44
- maxPatchOps?: number;
45
- };
24
+ export type Subscriber<S extends BroadcastState = BroadcastState> = (msg: PatchMessage<S>) => void;
25
+ export {};
46
26
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACrD,sFAAsF;IACtF,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAAI,CAAC,GAAG;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,8CAA8C;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAClE,gBAAgB,CAAC,CAAC,CAAC,GACnB,YAAY,CAAC;AAEjB;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAAI,CAClE,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC,KACrB,IAAI,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACrD,sFAAsF;IACtF,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF;;GAEG;AAEH,KAAK,WAAW,CAAC,CAAC,IAAI;KACnB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC7E,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAAI,MAAM,CAC1E,MAAM,EACN,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAAI,CAClE,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,KACjB,IAAI,CAAC"}