statewire 0.8.1 → 0.9.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 (95) hide show
  1. package/README.md +2 -2
  2. package/dist/client/connection.d.ts +23 -19
  3. package/dist/client/connection.d.ts.map +1 -1
  4. package/dist/client/connection.js +143 -103
  5. package/dist/client/connection.js.map +1 -1
  6. package/dist/client/core.d.ts +30 -3
  7. package/dist/client/core.d.ts.map +1 -1
  8. package/dist/client/core.js +222 -260
  9. package/dist/client/core.js.map +1 -1
  10. package/dist/client/session.d.ts +34 -39
  11. package/dist/client/session.d.ts.map +1 -1
  12. package/dist/client/session.js +380 -373
  13. package/dist/client/session.js.map +1 -1
  14. package/dist/client/sessionStore.d.ts +1 -0
  15. package/dist/client/sessionStore.d.ts.map +1 -1
  16. package/dist/client/sessionStore.js.map +1 -1
  17. package/dist/client/timing.d.ts +1 -2
  18. package/dist/client/timing.d.ts.map +1 -1
  19. package/dist/client/timing.js +1 -5
  20. package/dist/client/timing.js.map +1 -1
  21. package/dist/host/draft.d.ts +2 -5
  22. package/dist/host/draft.d.ts.map +1 -1
  23. package/dist/host/draft.js.map +1 -1
  24. package/dist/host/host.d.ts +5 -8
  25. package/dist/host/host.d.ts.map +1 -1
  26. package/dist/host/host.js +23 -32
  27. package/dist/host/host.js.map +1 -1
  28. package/dist/host/socket.d.ts +3 -2
  29. package/dist/host/socket.d.ts.map +1 -1
  30. package/dist/host/socket.js +484 -424
  31. package/dist/host/socket.js.map +1 -1
  32. package/dist/host-internal.d.ts +4 -0
  33. package/dist/host-internal.d.ts.map +1 -1
  34. package/dist/host.d.ts +10 -10
  35. package/dist/host.d.ts.map +1 -1
  36. package/dist/host.js +2 -2
  37. package/dist/index.d.ts +1 -2
  38. package/dist/index.js +1 -2
  39. package/dist/statewire.d.ts +29 -24
  40. package/dist/statewire.d.ts.map +1 -1
  41. package/dist/statewire.js +8 -2
  42. package/dist/statewire.js.map +1 -1
  43. package/dist/transports/fake-sse.d.ts +1 -1
  44. package/dist/transports/fake-sse.d.ts.map +1 -1
  45. package/dist/transports/fake-sse.js +5 -2
  46. package/dist/transports/fake-sse.js.map +1 -1
  47. package/dist/transports/fixtures.d.ts +1 -2
  48. package/dist/transports/fixtures.d.ts.map +1 -1
  49. package/dist/transports/fixtures.js +5 -7
  50. package/dist/transports/fixtures.js.map +1 -1
  51. package/dist/transports/remote.d.ts +2 -1
  52. package/dist/transports/remote.d.ts.map +1 -1
  53. package/dist/transports/remote.js +10 -4
  54. package/dist/transports/remote.js.map +1 -1
  55. package/dist/transports/sse.d.ts +32 -46
  56. package/dist/transports/sse.d.ts.map +1 -1
  57. package/dist/transports/sse.js +56 -59
  58. package/dist/transports/sse.js.map +1 -1
  59. package/dist/transports/testing.d.ts +7 -5
  60. package/dist/transports/testing.d.ts.map +1 -1
  61. package/dist/transports/testing.js +41 -14
  62. package/dist/transports/testing.js.map +1 -1
  63. package/dist/transports/ws.d.ts +2 -3
  64. package/dist/transports/ws.d.ts.map +1 -1
  65. package/dist/transports/ws.js +25 -80
  66. package/dist/transports/ws.js.map +1 -1
  67. package/dist/types.d.ts +8 -8
  68. package/dist/types.d.ts.map +1 -1
  69. package/dist/types.js +3 -4
  70. package/dist/types.js.map +1 -1
  71. package/dist/wire/ops.d.ts +1 -5
  72. package/dist/wire/ops.d.ts.map +1 -1
  73. package/dist/wire/ops.js +6 -5
  74. package/dist/wire/ops.js.map +1 -1
  75. package/package.json +1 -1
  76. package/src/client/connection.ts +175 -128
  77. package/src/client/core.ts +287 -278
  78. package/src/client/session.ts +474 -480
  79. package/src/client/sessionStore.ts +1 -0
  80. package/src/client/timing.ts +0 -6
  81. package/src/host/draft.ts +1 -3
  82. package/src/host/host.ts +41 -58
  83. package/src/host/socket.ts +653 -448
  84. package/src/host-internal.ts +4 -0
  85. package/src/host.ts +13 -10
  86. package/src/index.ts +0 -1
  87. package/src/statewire.ts +38 -32
  88. package/src/transports/fake-sse.ts +2 -1
  89. package/src/transports/fixtures.ts +4 -9
  90. package/src/transports/remote.ts +12 -5
  91. package/src/transports/sse.ts +99 -115
  92. package/src/transports/testing.ts +47 -19
  93. package/src/transports/ws.ts +44 -115
  94. package/src/types.ts +15 -14
  95. package/src/wire/ops.ts +13 -16
@@ -2,54 +2,51 @@ import { StatewireSessionRecord, StatewireSessionStore, StatewireSessionStoreOpt
2
2
  import { Statewire, StatewireSendError } from "../types.js";
3
3
  import { StatewirePath } from "../wire/ops.js";
4
4
  import { CommandsInvocation, CommandsListener } from "../host/host.js";
5
- import { RemoteLink, StatewireRemoteProps, StatewireWireCommand } from "../transports/sse.js";
5
+ import { RemoteLink, StatewireRemoteProps } from "../transports/sse.js";
6
6
  //#region src/client/session.d.ts
7
- /**
8
- * queued/trying/posted: overlay live, result pending. awaiting-result: acked
9
- * (overlay gone) but the result rides a late res; `posted: false` re-sends.
10
- * settled-live: result settled but the overlay stays until the covering ack.
11
- * done: removed from the queue.
12
- */
13
- type PendingState = {
14
- at: "queued";
15
- pendingMarked: boolean;
16
- } | {
17
- at: "trying";
18
- pendingMarked: boolean;
19
- failedAttempts: number;
20
- } | {
21
- at: "posted";
22
- pendingMarked: boolean;
23
- failedAttempts: number;
24
- } | {
25
- at: "awaiting-result";
26
- posted: boolean;
27
- failedAttempts: number;
28
- } | {
29
- at: "settled-live";
30
- posted: boolean;
31
- failedAttempts: number;
32
- } | {
33
- at: "done";
7
+ type WireCommand = {
8
+ method: string;
9
+ params: unknown[];
10
+ meta?: unknown;
34
11
  };
35
12
  type Pending = {
36
13
  readonly seq: number;
37
- readonly command: StatewireWireCommand;
38
- /** null for context submissions — they carry no command lifecycle. */
39
- readonly inv: CommandsInvocation | null;
40
- state: PendingState;
14
+ readonly command: WireCommand;
15
+ readonly inv: CommandsInvocation;
16
+ /** A send carrying this statement may have reached the server. */
17
+ attempted: boolean;
18
+ /** In the resend queue when false. */
19
+ posted: boolean;
20
+ /** The server acknowledged admission; the terminal verdict is still due. */
21
+ applied: boolean;
41
22
  resolve: (payload: unknown) => void;
42
23
  reject: (error: StatewireSendError) => void;
43
24
  };
25
+ type CtxPending = {
26
+ readonly seq: number;
27
+ readonly ops: unknown[];
28
+ posted: boolean;
29
+ };
44
30
  type AttachState = "detached" | "attached" | "finished";
45
- type StatewireSessionOptions = StatewireSessionStoreOptions;
31
+ type StatewireSessionOptions = StatewireSessionStoreOptions & {
32
+ onDone?: (() => void) | undefined;
33
+ };
46
34
  type Session = {
47
35
  record: StatewireSessionRecord;
48
36
  ctx: StatewireRemoteProps;
49
37
  recordPersisted: boolean;
50
38
  store: StatewireSessionStore;
51
- lastAck: number;
52
- context: Record<string, unknown> | undefined;
39
+ ephemeral: boolean;
40
+ sessionKnown: boolean;
41
+ durableSeq: number;
42
+ resumeAt: number;
43
+ idle: boolean;
44
+ onDone: (() => void) | undefined;
45
+ ctxOps: unknown[] | undefined;
46
+ ctxPending: CtxPending[];
47
+ lanesOnAttach: boolean;
48
+ attachLaneSeqs: readonly [ReadonlySet<number>, ReadonlySet<number>];
49
+ frameFailures: number;
53
50
  pending: Pending[];
54
51
  canonical: unknown;
55
52
  lastPublished: unknown;
@@ -63,13 +60,11 @@ type Session = {
63
60
  waiters: (() => void)[];
64
61
  lifecycle: CommandsListener | null;
65
62
  notify: () => void;
66
- emitEvent: (event: unknown) => void;
67
- send: (command: StatewireWireCommand) => Promise<unknown>;
68
63
  commands: Record<string, (...params: unknown[]) => Promise<unknown>>;
69
64
  };
70
65
  declare const setTransport: (s: Session, transport: RemoteLink) => void;
71
- declare const setContext: (s: Session, value: Record<string, unknown>) => Promise<unknown>;
72
- declare const useStatewireSession: (options: StatewireSessionOptions, emit: (event: unknown) => void) => Session;
66
+ declare const setContext: (s: Session, value: Record<string, unknown>) => void;
67
+ declare const useStatewireSession: (options: StatewireSessionOptions) => Session;
73
68
  //#endregion
74
69
  export { StatewireSessionOptions, setContext, setTransport, useStatewireSession };
75
70
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","names":[],"sources":["../../src/client/session.ts"],"mappings":";;;;;;;;;;;;KA+BK;EACC;EAAc;;EACd;EAAc;EAAwB;;EACtC;EAAc;EAAwB;;EACtC;EAAuB;EAAiB;;EACxC;EAAoB;EAAiB;;EACrC;;KAED;WACM;WACA,SAAS;;WAET,KAAK;EACd,OAAO;EACP,UAAU;EACV,SAAS,OAAO;;KAqGb;KAEO,0BAA0B;KAEjC;EACH,QAAQ;EACR,KAAK;EACL;EACA,OAAO;EACP;EACA,SAAS;EACT,SAAS;EACT;EACA;EACA,SAAS;EACT,QAAQ,UAAU;EAClB,QAAQ;EACR;EACA;EACA;EACA,WAAW;EACX;EACA,WAAW;EACX;EACA,YAAY;EACZ,OAAO,SAAS,yBAAyB;EACzC,UAAU,mBAAmB,sBAAsB;;cAwe/C,eAAgB,GAAG,SAAS,WAAW;cAsDvC,aACJ,GAAG,SACH,OAAO,4BACN;cAQU,sBACX,SAAS,yBACT,OAAO,4BACN"}
1
+ {"version":3,"file":"session.d.ts","names":[],"sources":["../../src/client/session.ts"],"mappings":";;;;;;KAyBK;EACH;EACA;EACA;;KAGG;WACM;WACA,SAAS;WACT,KAAK;;EAEd;;EAEA;;EAEA;EACA,UAAU;EACV,SAAS,OAAO;;KAGb;WACM;WACA;EACT;;KAiBG;KAEO,0BAA0B;EACpC;;KAGG;EACH,QAAQ;EACR,KAAK;EACL;EACA,OAAO;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA,YAAY;EACZ;EACA,0BAA0B,qBAAqB;EAC/C;EACA,SAAS;EACT;EACA;EACA,SAAS;EACT,QAAQ,UAAU;EAClB,QAAQ;EACR;EACA;EACA;EACA,WAAW;EACX;EACA,WAAW;EACX;EACA,UAAU,mBAAmB,sBAAsB;;cA0d/C,eAAgB,GAAG,SAAS,WAAW;cA6DvC,aAAc,GAAG,SAAS,OAAO;cAoB1B,sBACX,SAAS,4BACR"}