statewire 0.23.0 → 0.24.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.
Files changed (43) hide show
  1. package/dist/client/core.d.ts +4 -3
  2. package/dist/client/core.d.ts.map +1 -1
  3. package/dist/client/core.js +56 -45
  4. package/dist/client/core.js.map +1 -1
  5. package/dist/client/session.d.ts +56 -12
  6. package/dist/client/session.d.ts.map +1 -1
  7. package/dist/client/session.js +632 -260
  8. package/dist/client/session.js.map +1 -1
  9. package/dist/client/sessionStore.d.ts +1 -0
  10. package/dist/client/sessionStore.d.ts.map +1 -1
  11. package/dist/client/sessionStore.js +1 -0
  12. package/dist/client/sessionStore.js.map +1 -1
  13. package/dist/host/host.d.ts +6 -5
  14. package/dist/host/host.d.ts.map +1 -1
  15. package/dist/host/host.js.map +1 -1
  16. package/dist/indexedDb.d.ts +15 -0
  17. package/dist/indexedDb.d.ts.map +1 -0
  18. package/dist/indexedDb.js +171 -0
  19. package/dist/indexedDb.js.map +1 -0
  20. package/dist/statewire.d.ts +117 -59
  21. package/dist/statewire.d.ts.map +1 -1
  22. package/dist/statewire.js +13 -25
  23. package/dist/statewire.js.map +1 -1
  24. package/dist/storage.d.ts +42 -0
  25. package/dist/storage.d.ts.map +1 -1
  26. package/dist/storage.js +387 -125
  27. package/dist/storage.js.map +1 -1
  28. package/dist/transports/remote.d.ts.map +1 -1
  29. package/dist/transports/remote.js +7 -9
  30. package/dist/transports/remote.js.map +1 -1
  31. package/dist/types.d.ts +6 -7
  32. package/dist/types.d.ts.map +1 -1
  33. package/dist/types.js.map +1 -1
  34. package/package.json +2 -1
  35. package/src/client/core.ts +81 -64
  36. package/src/client/session.ts +886 -424
  37. package/src/client/sessionStore.ts +2 -0
  38. package/src/host/host.ts +10 -3
  39. package/src/indexedDb.ts +167 -0
  40. package/src/statewire.ts +133 -86
  41. package/src/storage.ts +548 -112
  42. package/src/transports/remote.ts +13 -14
  43. package/src/types.ts +6 -7
package/dist/storage.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { StatewireClient } from "./statewire.js";
2
+ export declare const STORAGE_FORMAT = 5;
2
3
  /** Persist sessions through a synchronous or asynchronous string storage backend. */
3
4
  export declare const KeyValueSessionStorage: import("@assistant-ui/tap").Resource<StatewireClient.SessionStorage, [options: KeyValueSessionStorage.Options]>;
4
5
  export declare namespace KeyValueSessionStorage {
@@ -9,7 +10,15 @@ export declare namespace KeyValueSessionStorage {
9
10
  getAllKeys?: () => readonly string[] | Promise<readonly string[]>;
10
11
  /** Runs cleanup under exclusive access, skipping keys in use by another runtime. */
11
12
  withUnused?: (key: string, action: () => Promise<void>) => Promise<void>;
13
+ /** Notifies of keys other runtimes wrote; returns unsubscribe. */
14
+ subscribe?: (listener: (key: string) => void) => () => void;
12
15
  };
16
+ /** Transforms the stored string, e.g. encryption or compression. */
17
+ type Codec = {
18
+ encode: (plain: string) => Promise<string>;
19
+ decode: (stored: string) => Promise<string>;
20
+ };
21
+ type EvictEvent = StatewireClient.EvictEvent;
13
22
  type Options = {
14
23
  backend: Backend;
15
24
  key: string;
@@ -21,7 +30,40 @@ export declare namespace KeyValueSessionStorage {
21
30
  maxAgeMs?: number;
22
31
  maxEntries?: number;
23
32
  };
33
+ /** Off by default; a write that adds an entry past one rejects `{ fate: "aborted", cause: "quota" }`. */
34
+ limits?: {
35
+ outboxEntries?: number;
36
+ recordBytes?: number;
37
+ totalBytes?: number;
38
+ };
39
+ codec?: Codec;
24
40
  onError?: (error: unknown) => void;
41
+ /** Reports evicted records and dropped failure notices. */
42
+ onEvict?: (event: EvictEvent) => void;
43
+ };
44
+ }
45
+ /** Session storage in page memory, keyed by scope: the record and client identity survive remounts, not reloads. */
46
+ export declare const MemorySessionStorage: import("@assistant-ui/tap").Resource<StatewireClient.SessionStorage, [MemorySessionStorage.Options]>;
47
+ export declare namespace MemorySessionStorage {
48
+ type Options = {
49
+ scope: string;
50
+ };
51
+ }
52
+ /** Reads the outboxes of every session under `namespace`, mounted or not. */
53
+ export declare const readOutboxes: (backend: KeyValueSessionStorage.Backend, options: ReadOutboxes.Options) => Promise<readonly ReadOutboxes.Outbox[]>;
54
+ /** Calls `listener` with `readOutboxes` now and after every save under `namespace`; returns unsubscribe. */
55
+ export declare const subscribeOutboxes: (backend: KeyValueSessionStorage.Backend, options: ReadOutboxes.Options, listener: (outboxes: readonly ReadOutboxes.Outbox[]) => void, onError: (error: unknown) => void) => (() => void);
56
+ export declare namespace ReadOutboxes {
57
+ type Options = {
58
+ namespace: string;
59
+ codec?: KeyValueSessionStorage.Codec;
60
+ /** The lane that single-lane formats lift into. */
61
+ protocol?: string;
62
+ };
63
+ type Outbox = {
64
+ key: string;
65
+ entries: readonly StatewireClient.OutboxEntry[];
25
66
  };
26
67
  }
68
+ export { IndexedDbSession, indexedDbBackend } from "./indexedDb.js";
27
69
  //# sourceMappingURL=storage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAoB;AA2kBnD,qFAAqF;AACrF,eAAO,MAAM,sBAAsB,iHAAsC,CAAC;AAE1E,yBAAiB,sBAAsB,CAAC;IACtC,KAAY,OAAO,GAAG;QACpB,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QACjE,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9D,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAClD,UAAU,CAAC,EAAE,MAAM,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;QAClE,oFAAoF;QACpF,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC1E,CAAC;IACF,KAAY,OAAO,GAAG;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,iHAAiH;QACjH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,eAAe,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACpD,SAAS,CAAC,EAAE;YAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACvD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;KACpC,CAAC;CACH"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}