@earendil-works/chord 1.0.4 → 1.2.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.
Files changed (186) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +77 -194
  3. package/dist/cell.d.ts +101 -0
  4. package/dist/cell.d.ts.map +1 -0
  5. package/dist/cell.js +316 -0
  6. package/dist/cell.js.map +1 -0
  7. package/dist/cluster.d.ts +26 -0
  8. package/dist/cluster.d.ts.map +1 -0
  9. package/dist/cluster.js +214 -0
  10. package/dist/cluster.js.map +1 -0
  11. package/dist/connection.d.ts +157 -0
  12. package/dist/connection.d.ts.map +1 -0
  13. package/dist/connection.js +757 -0
  14. package/dist/connection.js.map +1 -0
  15. package/dist/context/index.d.ts +12 -1
  16. package/dist/context/index.d.ts.map +1 -1
  17. package/dist/context/index.js.map +1 -1
  18. package/dist/contract.d.ts +133 -0
  19. package/dist/contract.d.ts.map +1 -0
  20. package/dist/contract.js +157 -0
  21. package/dist/contract.js.map +1 -0
  22. package/dist/declare.d.ts +70 -0
  23. package/dist/declare.d.ts.map +1 -0
  24. package/dist/declare.js +22 -0
  25. package/dist/declare.js.map +1 -0
  26. package/dist/delta/apply-immutable-trusted.js.map +1 -1
  27. package/dist/delta/diff.d.ts +1 -1
  28. package/dist/delta/diff.d.ts.map +1 -1
  29. package/dist/delta/diff.js.map +1 -1
  30. package/dist/delta/index.d.ts +2 -2
  31. package/dist/delta/index.d.ts.map +1 -1
  32. package/dist/delta/index.js +41 -0
  33. package/dist/delta/index.js.map +1 -1
  34. package/dist/delta/revision-validator.d.ts +1 -1
  35. package/dist/delta/revision-validator.d.ts.map +1 -1
  36. package/dist/delta/revision-validator.js.map +1 -1
  37. package/dist/delta/tracker.d.ts +1 -1
  38. package/dist/delta/tracker.d.ts.map +1 -1
  39. package/dist/delta/tracker.js +40 -4
  40. package/dist/delta/tracker.js.map +1 -1
  41. package/dist/errors.d.ts +27 -0
  42. package/dist/errors.d.ts.map +1 -0
  43. package/dist/errors.js +44 -0
  44. package/dist/errors.js.map +1 -0
  45. package/dist/host.d.ts +254 -0
  46. package/dist/host.d.ts.map +1 -0
  47. package/dist/host.js +795 -0
  48. package/dist/host.js.map +1 -0
  49. package/dist/index.d.ts +17 -10
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +8 -8
  52. package/dist/index.js.map +1 -1
  53. package/dist/json.d.ts +9 -1
  54. package/dist/json.d.ts.map +1 -1
  55. package/dist/json.js.map +1 -1
  56. package/dist/link.d.ts +72 -0
  57. package/dist/link.d.ts.map +1 -0
  58. package/dist/link.js +169 -0
  59. package/dist/link.js.map +1 -0
  60. package/dist/loader.d.ts +4 -0
  61. package/dist/loader.d.ts.map +1 -0
  62. package/dist/loader.js +68 -0
  63. package/dist/loader.js.map +1 -0
  64. package/dist/manager.d.ts +115 -0
  65. package/dist/manager.d.ts.map +1 -0
  66. package/dist/manager.js +319 -0
  67. package/dist/manager.js.map +1 -0
  68. package/dist/node.d.ts +3 -4
  69. package/dist/node.d.ts.map +1 -1
  70. package/dist/node.js +3 -2
  71. package/dist/node.js.map +1 -1
  72. package/dist/publish.d.ts +5 -0
  73. package/dist/publish.d.ts.map +1 -0
  74. package/dist/publish.js +40 -0
  75. package/dist/publish.js.map +1 -0
  76. package/dist/record.d.ts +320 -0
  77. package/dist/record.d.ts.map +1 -0
  78. package/dist/record.js +1292 -0
  79. package/dist/record.js.map +1 -0
  80. package/dist/registry.d.ts +25 -0
  81. package/dist/registry.d.ts.map +1 -0
  82. package/dist/registry.js +6 -0
  83. package/dist/registry.js.map +1 -0
  84. package/dist/reload.d.ts +118 -0
  85. package/dist/reload.d.ts.map +1 -0
  86. package/dist/reload.js +589 -0
  87. package/dist/reload.js.map +1 -0
  88. package/dist/remote.d.ts +70 -0
  89. package/dist/remote.d.ts.map +1 -0
  90. package/dist/remote.js +308 -0
  91. package/dist/remote.js.map +1 -0
  92. package/dist/schema.d.ts +21 -0
  93. package/dist/schema.d.ts.map +1 -0
  94. package/dist/schema.js +228 -0
  95. package/dist/schema.js.map +1 -0
  96. package/dist/state.d.ts +92 -0
  97. package/dist/state.d.ts.map +1 -0
  98. package/dist/{services/state.js → state.js} +28 -138
  99. package/dist/state.js.map +1 -0
  100. package/dist/types.d.ts +62 -262
  101. package/dist/types.d.ts.map +1 -1
  102. package/dist/types.js.map +1 -1
  103. package/dist/websocket.d.ts +16 -0
  104. package/dist/websocket.d.ts.map +1 -0
  105. package/dist/websocket.js +15 -0
  106. package/dist/websocket.js.map +1 -0
  107. package/dist/wire.d.ts +135 -0
  108. package/dist/wire.d.ts.map +1 -0
  109. package/dist/wire.js +112 -0
  110. package/dist/wire.js.map +1 -0
  111. package/docs/guide.md +750 -0
  112. package/docs/spec.md +261 -0
  113. package/docs/tutorial.md +909 -0
  114. package/package.json +10 -11
  115. package/src/delta/README.md +5 -3
  116. package/dist/api.d.ts +0 -20
  117. package/dist/api.d.ts.map +0 -1
  118. package/dist/api.js +0 -77
  119. package/dist/api.js.map +0 -1
  120. package/dist/bundler.d.ts +0 -6
  121. package/dist/bundler.d.ts.map +0 -1
  122. package/dist/bundler.js +0 -3
  123. package/dist/bundler.js.map +0 -1
  124. package/dist/facets/host.d.ts +0 -12
  125. package/dist/facets/host.d.ts.map +0 -1
  126. package/dist/facets/host.js +0 -763
  127. package/dist/facets/host.js.map +0 -1
  128. package/dist/facets/loader.d.ts +0 -3
  129. package/dist/facets/loader.d.ts.map +0 -1
  130. package/dist/facets/loader.js +0 -5
  131. package/dist/facets/loader.js.map +0 -1
  132. package/dist/node/bundle-loader.d.ts +0 -30
  133. package/dist/node/bundle-loader.d.ts.map +0 -1
  134. package/dist/node/bundle-loader.js +0 -377
  135. package/dist/node/bundle-loader.js.map +0 -1
  136. package/dist/node/bundle.d.ts +0 -26
  137. package/dist/node/bundle.d.ts.map +0 -1
  138. package/dist/node/bundle.js +0 -183
  139. package/dist/node/bundle.js.map +0 -1
  140. package/dist/node/manifest.d.ts +0 -36
  141. package/dist/node/manifest.d.ts.map +0 -1
  142. package/dist/node/manifest.js +0 -6
  143. package/dist/node/manifest.js.map +0 -1
  144. package/dist/node/package.d.ts +0 -15
  145. package/dist/node/package.d.ts.map +0 -1
  146. package/dist/node/package.js +0 -199
  147. package/dist/node/package.js.map +0 -1
  148. package/dist/services/consumer.d.ts +0 -11
  149. package/dist/services/consumer.d.ts.map +0 -1
  150. package/dist/services/consumer.js +0 -585
  151. package/dist/services/consumer.js.map +0 -1
  152. package/dist/services/errors.d.ts +0 -8
  153. package/dist/services/errors.d.ts.map +0 -1
  154. package/dist/services/errors.js +0 -22
  155. package/dist/services/errors.js.map +0 -1
  156. package/dist/services/handle.d.ts +0 -15
  157. package/dist/services/handle.d.ts.map +0 -1
  158. package/dist/services/handle.js +0 -101
  159. package/dist/services/handle.js.map +0 -1
  160. package/dist/services/instances.d.ts +0 -26
  161. package/dist/services/instances.d.ts.map +0 -1
  162. package/dist/services/instances.js +0 -140
  163. package/dist/services/instances.js.map +0 -1
  164. package/dist/services/loopback.d.ts +0 -5
  165. package/dist/services/loopback.d.ts.map +0 -1
  166. package/dist/services/loopback.js +0 -15
  167. package/dist/services/loopback.js.map +0 -1
  168. package/dist/services/provider.d.ts +0 -37
  169. package/dist/services/provider.d.ts.map +0 -1
  170. package/dist/services/provider.js +0 -521
  171. package/dist/services/provider.js.map +0 -1
  172. package/dist/services/state-codec.d.ts +0 -15
  173. package/dist/services/state-codec.d.ts.map +0 -1
  174. package/dist/services/state-codec.js +0 -133
  175. package/dist/services/state-codec.js.map +0 -1
  176. package/dist/services/state-internals.d.ts +0 -13
  177. package/dist/services/state-internals.d.ts.map +0 -1
  178. package/dist/services/state-internals.js +0 -10
  179. package/dist/services/state-internals.js.map +0 -1
  180. package/dist/services/state.d.ts +0 -28
  181. package/dist/services/state.d.ts.map +0 -1
  182. package/dist/services/state.js.map +0 -1
  183. package/dist/services/wire.d.ts +0 -63
  184. package/dist/services/wire.d.ts.map +0 -1
  185. package/dist/services/wire.js +0 -186
  186. package/dist/services/wire.js.map +0 -1
@@ -0,0 +1,157 @@
1
+ import type { HostImpl } from "./host.ts";
2
+ import type { Link } from "./link.ts";
3
+ import { HandleImpl } from "./record.ts";
4
+ import type { RemoteChannel, RemoteHandle, StateSink } from "./remote.ts";
5
+ import type { Principal } from "./types.ts";
6
+ import { type Frame, type RootRef } from "./wire.ts";
7
+ export interface LinkOptions {
8
+ /** Milliseconds between pings (default 15000). */
9
+ readonly pingInterval?: number;
10
+ /** Close the link when nothing arrived for this long (default 45000). Everything held through it is released. */
11
+ readonly pingTimeout?: number;
12
+ }
13
+ export interface AcceptOptions extends LinkOptions {
14
+ /** The principal of whatever connects, from the app's authenticator. Every request on the link acts as it. */
15
+ readonly principal: Principal;
16
+ /**
17
+ * What the peer is, decided here and never by its `hello`: `client` (default; a browser: no roots, no epochs, not
18
+ * a reload participant, not addressable) or `host` (a child host; needs `name`).
19
+ */
20
+ readonly kind?: "host" | "client";
21
+ /** A child host's name: its hello must match, and it is reachable `at` this name. */
22
+ readonly name?: string;
23
+ /** On `invalidatePrincipal`: a new principal keeps the link, `undefined` closes it (default: close). */
24
+ readonly restamp?: (principal: Principal) => Principal | undefined;
25
+ }
26
+ export interface Peer {
27
+ readonly kind: "host" | "client";
28
+ /** Configured (downstream hosts) or announced by the trusted parent (upstream). */
29
+ readonly name: string | undefined;
30
+ }
31
+ /** A hold the peer made on this host: served locally or relayed to another link. */
32
+ type Served = {
33
+ readonly kind: "local";
34
+ readonly handle: HandleImpl;
35
+ readonly principal: Principal;
36
+ readonly feeds: Set<number>;
37
+ } | {
38
+ readonly kind: "relay";
39
+ readonly relay: RelayHold;
40
+ };
41
+ type Pending = {
42
+ readonly resolve: (value: unknown) => void;
43
+ readonly reject: (error: unknown) => void;
44
+ };
45
+ /**
46
+ * A hold relayed from an origin link to a downstream link. It owns everything done through it: subscriptions and
47
+ * calls queued while the route resolves, and the downstream twins once forwarded. `close` undoes all of it exactly
48
+ * once (cancels calls downstream, drops subscriptions, releases the downstream hold, rejects waiters).
49
+ */
50
+ export declare class RelayHold {
51
+ #private;
52
+ readonly origin: Connection;
53
+ readonly frame: Extract<Frame, {
54
+ t: "hold";
55
+ }>;
56
+ readonly principal: Principal;
57
+ readonly client: boolean;
58
+ /** The origin's authorization generation when the hold arrived; a revocation bumps it. */
59
+ readonly generation: number;
60
+ down: Connection | undefined;
61
+ downId: number;
62
+ closed: boolean;
63
+ readonly calls: Map<number, RelayCall>;
64
+ readonly subs: Map<number, {
65
+ readonly member: string;
66
+ downId: number | undefined;
67
+ }>;
68
+ constructor(origin: Connection, frame: Extract<Frame, {
69
+ t: "hold";
70
+ }>, principal: Principal, client: boolean);
71
+ get originId(): number;
72
+ /** Still authorized as it was when it arrived. */
73
+ get current(): boolean;
74
+ /** The downstream connection once the route resolved; rejects if the relay closes first. */
75
+ ready(): Promise<Connection>;
76
+ /** Forwards the hold (and what queued meanwhile) to `down`. */
77
+ open(down: Connection): void;
78
+ subscribe(originSubId: number, member: string): void;
79
+ unsubscribe(originSubId: number, forward?: boolean): void;
80
+ /**
81
+ * Closes the relay. `releaseDown`: the downstream hold is still there (origin released, disconnected, or was
82
+ * revoked): cancel its calls and release it. `notify`: tell the origin the hold is gone.
83
+ */
84
+ close(error: unknown, options: {
85
+ readonly releaseDown: boolean;
86
+ readonly notify: boolean;
87
+ }): void;
88
+ }
89
+ /** One relayed call: settles once, by result, cancellation or the relay closing; removes both mappings. */
90
+ export declare class RelayCall {
91
+ #private;
92
+ readonly relay: RelayHold;
93
+ readonly originId: number;
94
+ readonly downId: number;
95
+ constructor(relay: RelayHold, originId: number, downId: number, pending: Pending);
96
+ finish(error: unknown, value?: unknown): void;
97
+ /** Cancels downstream (when the downstream hold still exists) and settles with `error`. */
98
+ cancel(error: unknown, forward: boolean): void;
99
+ }
100
+ /** One end of a link on a host: consumer of remote handles, provider for the peer's holds, and relay. */
101
+ export declare class Connection implements RemoteChannel {
102
+ #private;
103
+ readonly host: HostImpl;
104
+ readonly link: Link;
105
+ /** `upstream`: the link to this host's parent. `downstream`: a link this host accepted. */
106
+ readonly role: "upstream" | "downstream";
107
+ readonly peer: Peer;
108
+ principal: Principal;
109
+ readonly restamp: ((principal: Principal) => Principal | undefined) | undefined;
110
+ /** Bumped when the stamped principal is revoked or re-stamped: relays from before are refused. */
111
+ generation: number;
112
+ /** The epoch a downstream host peer runs (from its hello, then from commits). */
113
+ peerEpoch: number | undefined;
114
+ /** A downstream host peer is usable once it runs this host's current epoch (see `HostImpl.peerHello`). */
115
+ synced: boolean;
116
+ /** Epochs this child announced while behind this host (fenced): this host never ran them. */
117
+ readonly fencedEpochs: Set<number>;
118
+ readonly remotes: Map<number, RemoteHandle>;
119
+ readonly calls: Map<number, Pending>;
120
+ readonly subs: Map<number, (frame: StateSink) => void>;
121
+ readonly served: Map<number, Served>;
122
+ readonly incoming: Map<number, AbortController>;
123
+ readonly feeds: Map<number, () => void>;
124
+ /** Origin side of relays: the peer's sub ids that are relayed. */
125
+ readonly relaySubs: Map<number, RelayHold>;
126
+ readonly relayedHolds: Map<number, RelayHold>;
127
+ readonly relayedCalls: Map<number, RelayCall>;
128
+ readonly relayedSubs: Map<number, {
129
+ readonly relay: RelayHold;
130
+ readonly originSubId: number;
131
+ }>;
132
+ /** Reload votes awaited from this (child) peer. */
133
+ readonly votes: Map<number, Pending>;
134
+ constructor(host: HostImpl, link: Link, config: {
135
+ readonly role: "upstream" | "downstream";
136
+ readonly principal: Principal;
137
+ readonly peer: Peer;
138
+ readonly restamp?: (principal: Principal) => Principal | undefined;
139
+ } & LinkOptions);
140
+ get open(): boolean;
141
+ /** The peer's name: configured for downstream hosts, announced by the parent upstream. */
142
+ get name(): string | undefined;
143
+ send(frame: Frame): void;
144
+ nextId(): number;
145
+ /** Resolves once the peer is usable (a host peer runs this host's epoch); rejects if the link closes first. */
146
+ whenSynced(): Promise<void>;
147
+ markSynced(epoch: number): void;
148
+ /** Revokes the stamped principal: relays made under it close at once (also those still resolving a route). */
149
+ revoke(next: Principal | undefined): void;
150
+ hold(handle: RemoteHandle): number;
151
+ release(id: number): void;
152
+ call(hold: number, member: string, args: unknown, root: RootRef | undefined, signal: AbortSignal): Promise<unknown>;
153
+ sub(hold: number, member: string, sink: (frame: StateSink) => void): number;
154
+ unsub(id: number): void;
155
+ }
156
+ export {};
157
+ //# sourceMappingURL=connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}