@enbox/dwn-clients 0.0.4 → 0.0.6

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 (44) hide show
  1. package/dist/esm/dwn-registrar.js +81 -0
  2. package/dist/esm/dwn-registrar.js.map +1 -1
  3. package/dist/esm/http-dwn-rpc-client.js +9 -1
  4. package/dist/esm/http-dwn-rpc-client.js.map +1 -1
  5. package/dist/esm/index.js +1 -0
  6. package/dist/esm/index.js.map +1 -1
  7. package/dist/esm/json-rpc-socket.js +187 -35
  8. package/dist/esm/json-rpc-socket.js.map +1 -1
  9. package/dist/esm/json-rpc.js +12 -0
  10. package/dist/esm/json-rpc.js.map +1 -1
  11. package/dist/esm/provider-directory-types.js +2 -0
  12. package/dist/esm/provider-directory-types.js.map +1 -0
  13. package/dist/esm/web-socket-clients.js +102 -16
  14. package/dist/esm/web-socket-clients.js.map +1 -1
  15. package/dist/types/dwn-registrar.d.ts +29 -0
  16. package/dist/types/dwn-registrar.d.ts.map +1 -1
  17. package/dist/types/dwn-rpc-types.d.ts +54 -4
  18. package/dist/types/dwn-rpc-types.d.ts.map +1 -1
  19. package/dist/types/http-dwn-rpc-client.d.ts.map +1 -1
  20. package/dist/types/index.d.ts +1 -0
  21. package/dist/types/index.d.ts.map +1 -1
  22. package/dist/types/json-rpc-socket.d.ts +63 -0
  23. package/dist/types/json-rpc-socket.d.ts.map +1 -1
  24. package/dist/types/json-rpc.d.ts +5 -0
  25. package/dist/types/json-rpc.d.ts.map +1 -1
  26. package/dist/types/provider-directory-types.d.ts +40 -0
  27. package/dist/types/provider-directory-types.d.ts.map +1 -0
  28. package/dist/types/registration-types.d.ts +46 -2
  29. package/dist/types/registration-types.d.ts.map +1 -1
  30. package/dist/types/server-info-types.d.ts +26 -0
  31. package/dist/types/server-info-types.d.ts.map +1 -1
  32. package/dist/types/web-socket-clients.d.ts +12 -2
  33. package/dist/types/web-socket-clients.d.ts.map +1 -1
  34. package/package.json +4 -4
  35. package/src/dwn-registrar.ts +98 -1
  36. package/src/dwn-rpc-types.ts +69 -4
  37. package/src/http-dwn-rpc-client.ts +12 -1
  38. package/src/index.ts +1 -0
  39. package/src/json-rpc-socket.ts +244 -36
  40. package/src/json-rpc.ts +16 -0
  41. package/src/provider-directory-types.ts +41 -0
  42. package/src/registration-types.ts +50 -3
  43. package/src/server-info-types.ts +27 -0
  44. package/src/web-socket-clients.ts +156 -20
@@ -9,10 +9,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import { CryptoUtils } from '@enbox/crypto';
11
11
  import { JsonRpcSocket } from './json-rpc-socket.js';
12
- import { createJsonRpcRequest, createJsonRpcSubscriptionRequest } from './json-rpc.js';
12
+ import { createJsonRpcAck, createJsonRpcRequest, createJsonRpcSubscriptionRequest } from './json-rpc.js';
13
13
  export class WebSocketDwnRpcClient {
14
14
  get transportProtocols() { return ['ws:', 'wss:']; }
15
- sendDwnRequest(request, jsonRpcSocketOptions) {
15
+ sendDwnRequest(request) {
16
16
  return __awaiter(this, void 0, void 0, function* () {
17
17
  // validate that the dwn URL provided is a valid WebSocket URL
18
18
  const url = new URL(request.dwnUrl);
@@ -23,22 +23,53 @@ export class WebSocketDwnRpcClient {
23
23
  const hasConnection = WebSocketDwnRpcClient.connections.has(url.host);
24
24
  if (!hasConnection) {
25
25
  try {
26
- const socket = yield JsonRpcSocket.connect(url.toString(), jsonRpcSocketOptions);
27
- const subscriptions = new Map();
28
- WebSocketDwnRpcClient.connections.set(url.host, { socket, subscriptions });
26
+ const connection = yield WebSocketDwnRpcClient.createConnection(url);
27
+ WebSocketDwnRpcClient.connections.set(url.host, connection);
29
28
  }
30
29
  catch (error) {
31
30
  throw new Error(`Error connecting to ${url.host}: ${error.message}`);
32
31
  }
33
32
  }
34
33
  const connection = WebSocketDwnRpcClient.connections.get(url.host);
35
- const { targetDid, message, subscriptionHandler } = request;
36
- if (subscriptionHandler) {
37
- return WebSocketDwnRpcClient.subscriptionRequest(connection, targetDid, message, subscriptionHandler);
34
+ const { targetDid, message, subscription } = request;
35
+ if (subscription) {
36
+ return WebSocketDwnRpcClient.subscriptionRequest(connection, targetDid, message, subscription.handler, subscription.resubscribeFactory);
38
37
  }
39
38
  return WebSocketDwnRpcClient.processMessage(connection, targetDid, message);
40
39
  });
41
40
  }
41
+ /**
42
+ * Creates a new `SocketConnection` with lifecycle wiring for reconnection.
43
+ */
44
+ static createConnection(url) {
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ const host = url.host;
47
+ const subscriptions = new Map();
48
+ const socket = yield JsonRpcSocket.connect(url.toString(), {
49
+ onclose: () => {
50
+ // Remove the stale connection from the map so new requests create a fresh one.
51
+ WebSocketDwnRpcClient.connections.delete(host);
52
+ // Notify all subscription handlers of disconnection.
53
+ for (const tracked of subscriptions.values()) {
54
+ tracked.handler({ type: 'disconnected' });
55
+ }
56
+ },
57
+ onreconnecting: (attempt) => {
58
+ for (const tracked of subscriptions.values()) {
59
+ tracked.handler({ type: 'reconnecting', attempt });
60
+ }
61
+ },
62
+ onreconnected: () => {
63
+ // Re-register this connection in the map (it was deleted on close).
64
+ const conn = { socket, subscriptions, url: url.toString() };
65
+ WebSocketDwnRpcClient.connections.set(host, conn);
66
+ // Resubscribe all tracked subscriptions with their last known cursor.
67
+ WebSocketDwnRpcClient.resubscribeAll(conn);
68
+ },
69
+ });
70
+ return { socket, subscriptions, url: url.toString() };
71
+ });
72
+ }
42
73
  static processMessage(connection, target, message) {
43
74
  return __awaiter(this, void 0, void 0, function* () {
44
75
  const requestId = CryptoUtils.randomUuid();
@@ -52,7 +83,7 @@ export class WebSocketDwnRpcClient {
52
83
  return result.reply;
53
84
  });
54
85
  }
55
- static subscriptionRequest(connection, target, message, messageHandler) {
86
+ static subscriptionRequest(connection, target, message, handler, resubscribeFactory) {
56
87
  return __awaiter(this, void 0, void 0, function* () {
57
88
  const requestId = CryptoUtils.randomUuid();
58
89
  const subscriptionId = CryptoUtils.randomUuid();
@@ -62,15 +93,24 @@ export class WebSocketDwnRpcClient {
62
93
  const { result, error } = response;
63
94
  if (error) {
64
95
  // if there is an error, close the subscription and delete it from the connection
65
- const subscription = subscriptions.get(subscriptionId);
66
- if (subscription) {
67
- subscription.close();
96
+ const tracked = subscriptions.get(subscriptionId);
97
+ if (tracked) {
98
+ tracked.subscription.close();
68
99
  }
69
100
  subscriptions.delete(subscriptionId);
70
101
  return;
71
102
  }
72
- const { event } = result;
73
- messageHandler(event);
103
+ const subscriptionMessage = result.subscription;
104
+ handler(subscriptionMessage);
105
+ // Track the latest cursor for reconnection.
106
+ if ('cursor' in subscriptionMessage && subscriptionMessage.cursor) {
107
+ const tracked = subscriptions.get(subscriptionId);
108
+ if (tracked) {
109
+ tracked.lastCursor = subscriptionMessage.cursor;
110
+ }
111
+ // Send rpc.ack to advance the server's flow-control window.
112
+ socket.send(createJsonRpcAck(subscriptionId, subscriptionMessage.cursor));
113
+ }
74
114
  });
75
115
  const { error, result } = response;
76
116
  if (error) {
@@ -78,12 +118,58 @@ export class WebSocketDwnRpcClient {
78
118
  }
79
119
  const { reply } = result;
80
120
  if (reply.subscription && close) {
81
- subscriptions.set(subscriptionId, Object.assign(Object.assign({}, reply.subscription), { close }));
82
- reply.subscription.close = close;
121
+ const wrappedClose = () => __awaiter(this, void 0, void 0, function* () {
122
+ subscriptions.delete(subscriptionId);
123
+ yield close();
124
+ });
125
+ const tracked = {
126
+ subscription: Object.assign(Object.assign({}, reply.subscription), { close: wrappedClose }),
127
+ target,
128
+ message,
129
+ handler,
130
+ resubscribeFactory,
131
+ };
132
+ subscriptions.set(subscriptionId, tracked);
133
+ reply.subscription.close = wrappedClose;
83
134
  }
84
135
  return reply;
85
136
  });
86
137
  }
138
+ /**
139
+ * Resubscribes all tracked subscriptions on a reconnected socket.
140
+ * Uses the `resubscribeFactory` (if provided) to construct a properly signed
141
+ * message with the last known cursor. Falls back to the original message
142
+ * for anonymous/unsigned subscriptions.
143
+ */
144
+ static resubscribeAll(connection) {
145
+ return __awaiter(this, void 0, void 0, function* () {
146
+ // Snapshot the current subscriptions — resubscription will re-populate the map.
147
+ const entries = [...connection.subscriptions.entries()];
148
+ connection.subscriptions.clear();
149
+ for (const [, tracked] of entries) {
150
+ try {
151
+ let resumeMessage;
152
+ if (tracked.resubscribeFactory) {
153
+ // Reconstruct and re-sign the message with the cursor.
154
+ resumeMessage = yield tracked.resubscribeFactory(tracked.lastCursor);
155
+ }
156
+ else {
157
+ // No factory — reuse the original message as-is.
158
+ // This only works for anonymous (unsigned) subscriptions.
159
+ resumeMessage = tracked.message;
160
+ }
161
+ yield WebSocketDwnRpcClient.subscriptionRequest(connection, tracked.target, resumeMessage, tracked.handler, tracked.resubscribeFactory);
162
+ // Notify the handler that reconnection is complete for this subscription.
163
+ tracked.handler({ type: 'reconnected' });
164
+ }
165
+ catch (_a) {
166
+ // If resubscription fails for one subscription, continue with the rest.
167
+ // The subscription is effectively lost — the handler was already
168
+ // notified of disconnection.
169
+ }
170
+ }
171
+ });
172
+ }
87
173
  }
88
174
  // a map of dwn host to WebSocket connection
89
175
  WebSocketDwnRpcClient.connections = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"web-socket-clients.js","sourceRoot":"","sources":["../../src/web-socket-clients.ts"],"names":[],"mappings":";;;;;;;;;AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,gCAAgC,EAAE,MAAM,eAAe,CAAC;AAOvF,MAAM,OAAO,qBAAqB;IAChC,IAAW,kBAAkB,KAAe,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAI/D,cAAc,CAAC,OAAsB,EAAE,oBAA2C;;YAEtF,8DAA8D;YAC9D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACtD,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChE,CAAC;YAED,uGAAuG;YACvG,MAAM,aAAa,GAAG,qBAAqB,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACtE,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,oBAAoB,CAAC,CAAC;oBACjF,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;oBAChC,qBAAqB,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;gBAC7E,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAC,IAAI,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC;YAED,MAAM,UAAU,GAAG,qBAAqB,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;YACpE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;YAE5D,IAAI,mBAAmB,EAAE,CAAC;gBACxB,OAAO,qBAAqB,CAAC,mBAAmB,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;YACxG,CAAC;YAED,OAAO,qBAAqB,CAAC,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9E,CAAC;KAAA;IAEO,MAAM,CAAO,cAAc,CACjC,UAA4B,EAAE,MAAc,EAAE,OAAuB;;YAErE,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,oBAAoB,CAAC,SAAS,EAAE,oBAAoB,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;YAE3F,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;YAC9B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAE/C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;YACnC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACjE,CAAC;YAED,OAAO,MAAM,CAAC,KAAuB,CAAC;QACxC,CAAC;KAAA;IAEO,MAAM,CAAO,mBAAmB,CACtC,UAA4B,EAAE,MAAa,EAAE,OAAuB,EAAE,cAAsC;;YAE5G,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC;YAC3C,MAAM,cAAc,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,gCAAgC,CAC9C,SAAS,EAAE,kCAAkC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,cAAc,CACnF,CAAC;YAEF,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,UAAU,CAAC;YAC7C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACvE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC;gBACnC,IAAI,KAAK,EAAE,CAAC;oBAEV,iFAAiF;oBACjF,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;oBACvD,IAAI,YAAY,EAAE,CAAC;wBACjB,YAAY,CAAC,KAAK,EAAE,CAAC;oBACvB,CAAC;oBAED,aAAa,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;oBACrC,OAAO;gBACT,CAAC;gBAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;gBACzB,cAAc,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC;YAEH,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;YACnC,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,2CAA2C,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9E,CAAC;YAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAsC,CAAC;YACzD,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,EAAE,CAAC;gBAChC,aAAa,CAAC,GAAG,CAAC,cAAc,kCAAO,KAAK,CAAC,YAAY,KAAE,KAAK,IAAG,CAAC;gBACpE,KAAK,CAAC,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;YACnC,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;KAAA;;AA1FD,4CAA4C;AAC7B,iCAAW,GAAG,IAAI,GAAG,EAA4B,CAAC"}
1
+ {"version":3,"file":"web-socket-clients.js","sourceRoot":"","sources":["../../src/web-socket-clients.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { TokenExchangeResponse } from './registration-types.js';
1
2
  /**
2
3
  * A client for registering tenants with a DWN.
3
4
  */
@@ -24,5 +25,33 @@ export declare class DwnRegistrar {
24
25
  * Generates 32 random bytes expressed as a HEX string.
25
26
  */
26
27
  static generateNonce(): Promise<string>;
28
+ /**
29
+ * Exchange an authorization code (from the provider's auth redirect) for a registration token.
30
+ * The wallet calls this after the user completes the provider's auth flow.
31
+ *
32
+ * @param tokenUrl - The provider's token endpoint URL (from ServerInfo.providerAuth.tokenUrl)
33
+ * @param code - The authorization code from the provider redirect
34
+ * @param redirectUri - The redirect URI used in the authorize request (must match exactly)
35
+ * @returns Token exchange response containing the registration token and optional refresh token
36
+ */
37
+ static exchangeAuthCode(tokenUrl: string, code: string, redirectUri: string): Promise<TokenExchangeResponse>;
38
+ /**
39
+ * Refresh an expired registration token using a refresh token.
40
+ *
41
+ * @param refreshUrl - The provider's refresh endpoint URL (from ServerInfo.providerAuth.refreshUrl)
42
+ * @param refreshToken - The refresh token from a previous token exchange
43
+ * @returns New token exchange response with fresh registration token
44
+ */
45
+ static refreshRegistrationToken(refreshUrl: string, refreshToken: string): Promise<TokenExchangeResponse>;
46
+ /**
47
+ * Register a DID as a tenant on a DWN server using a provider auth registration token.
48
+ * This is the paid-tier alternative to the PoW-based {@link registerTenant}.
49
+ *
50
+ * @param dwnEndpoint - The DWN server base URL
51
+ * @param did - The DID to register as a tenant
52
+ * @param registrationToken - The opaque registration token from the provider
53
+ * @param termsOfServiceHash - Optional ToS hash if the server requires it alongside provider auth
54
+ */
55
+ static registerTenantWithToken(dwnEndpoint: string, did: string, registrationToken: string, termsOfServiceHash?: string): Promise<void>;
27
56
  }
28
57
  //# sourceMappingURL=dwn-registrar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dwn-registrar.d.ts","sourceRoot":"","sources":["../../src/dwn-registrar.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,qBAAa,YAAY;IACvB;;;;OAIG;WACiB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8DnF;;OAEG;WACiB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMnE;;OAEG;WACiB,0BAA0B,CAAC,KAAK,EAAE;QACpD,uBAAuB,EAAE,MAAM,CAAC;QAChC,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,MAAM,CAAC;IA2BnB;;OAEG;WACiB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;CAKrD"}
1
+ {"version":3,"file":"dwn-registrar.d.ts","sourceRoot":"","sources":["../../src/dwn-registrar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAMvI;;GAEG;AACH,qBAAa,YAAY;IACvB;;;;OAIG;WACiB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8DnF;;OAEG;WACiB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMnE;;OAEG;WACiB,0BAA0B,CAAC,KAAK,EAAE;QACpD,uBAAuB,EAAE,MAAM,CAAC;QAChC,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,MAAM,CAAC;IA2BnB;;OAEG;WACiB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAMpD;;;;;;;;OAQG;WACiB,gBAAgB,CAClC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,CAAC;IAmBjC;;;;;;OAMG;WACiB,wBAAwB,CAC1C,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,qBAAqB,CAAC;IAkBjC;;;;;;;;OAQG;WACiB,uBAAuB,CACzC,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,iBAAiB,EAAE,MAAM,EACzB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,OAAO,CAAC,IAAI,CAAC;CAsBjB"}
@@ -1,8 +1,44 @@
1
- import type { MessageSubscriptionHandler, RecordsReadReply, RecordSubscriptionHandler, UnionMessageReply } from '@enbox/dwn-sdk-js';
1
+ import type { GenericMessage, RecordsReadReply, SubscriptionMessage, UnionMessageReply } from '@enbox/dwn-sdk-js';
2
2
  export interface SerializableDwnMessage {
3
3
  toJSON(): string;
4
4
  }
5
- export type DwnSubscriptionHandler = MessageSubscriptionHandler | RecordSubscriptionHandler;
5
+ /** Notifies that the transport connection has been lost. */
6
+ export type TransportDisconnected = {
7
+ type: 'disconnected';
8
+ };
9
+ /** Notifies that a reconnection attempt is in progress. */
10
+ export type TransportReconnecting = {
11
+ type: 'reconnecting';
12
+ attempt: number;
13
+ };
14
+ /** Notifies that the connection has been restored and the subscription resubscribed. */
15
+ export type TransportReconnected = {
16
+ type: 'reconnected';
17
+ };
18
+ /** Transport-layer lifecycle messages, synthesized on WebSocket state changes. */
19
+ export type TransportMessage = TransportDisconnected | TransportReconnecting | TransportReconnected;
20
+ /**
21
+ * The full set of messages a subscription handler can receive — DWN-level
22
+ * events (`event`, `eose`) plus transport lifecycle notifications
23
+ * (`disconnected`, `reconnecting`, `reconnected`).
24
+ *
25
+ * For local DWN processing the handler only receives `SubscriptionMessage`.
26
+ * For remote WebSocket subscriptions it may also receive `TransportMessage`.
27
+ */
28
+ export type DwnSubscriptionMessage = SubscriptionMessage | TransportMessage;
29
+ /**
30
+ * Callback that receives subscription messages including transport lifecycle events.
31
+ */
32
+ export type DwnSubscriptionHandler = (message: DwnSubscriptionMessage) => void;
33
+ /**
34
+ * A factory callback that reconstructs and re-signs a subscribe message with a
35
+ * cursor injected into the descriptor. Called by the transport layer during
36
+ * automatic resubscription after a WebSocket reconnection.
37
+ *
38
+ * @param cursor - The last received EventLog cursor, or `undefined` for a fresh subscription.
39
+ * @returns A newly constructed and signed DWN subscribe message.
40
+ */
41
+ export type ResubscribeFactory = (cursor?: string) => Promise<GenericMessage>;
6
42
  /**
7
43
  * Interface for communicating with {@link https://github.com/enboxorg/enbox | DWN Servers}
8
44
  * via JSON-RPC, supporting operations like sending DWN requests.
@@ -34,8 +70,22 @@ export type DwnRpcRequest = {
34
70
  message: SerializableDwnMessage | any;
35
71
  /** The DID of the target to which the message is addressed. */
36
72
  targetDid: string;
37
- /** Optional subscription handler for DWN message events. */
38
- subscriptionHandler?: DwnSubscriptionHandler;
73
+ /**
74
+ * Subscription options — only set for subscribe requests.
75
+ * Groups the handler, resubscribe factory, and any future subscription
76
+ * options into a single coherent object.
77
+ */
78
+ subscription?: {
79
+ /** Handler that receives subscription events and transport lifecycle messages. */
80
+ handler: DwnSubscriptionHandler;
81
+ /**
82
+ * Factory callback that reconstructs and re-signs a subscribe message with
83
+ * a cursor. Used during automatic resubscription after WebSocket reconnection.
84
+ * If not provided, resubscription will use the original message as-is (only
85
+ * valid for anonymous/unsigned subscriptions).
86
+ */
87
+ resubscribeFactory?: ResubscribeFactory;
88
+ };
39
89
  };
40
90
  /**
41
91
  * Represents the JSON RPC response from a DWN server to a request, combining the results of various
@@ -1 +1 @@
1
- {"version":3,"file":"dwn-rpc-types.d.ts","sourceRoot":"","sources":["../../src/dwn-rpc-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEpI,MAAM,WAAW,sBAAsB;IACrC,MAAM,IAAI,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,sBAAsB,GAAG,0BAA0B,GAAG,yBAAyB,CAAC;AAE5F;;;GAGG;AACH,MAAM,WAAW,MAAM;IACrB;;;OAGG;IACH,IAAI,kBAAkB,IAAI,MAAM,EAAE,CAAA;IAElC;;;;;OAKG;IACH,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;CAChE;AAGD;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,iDAAiD;IACjD,IAAI,CAAC,EAAE,GAAG,CAAC;IAEX,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IAEf,8FAA8F;IAC9F,OAAO,EAAE,sBAAsB,GAAG,GAAG,CAAC;IAEtC,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAElB,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,sBAAsB,CAAC;CAC9C,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG,gBAAgB,CAAC"}
1
+ {"version":3,"file":"dwn-rpc-types.d.ts","sourceRoot":"","sources":["../../src/dwn-rpc-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAElH,MAAM,WAAW,sBAAsB;IACrC,MAAM,IAAI,MAAM,CAAC;CAClB;AAUD,4DAA4D;AAC5D,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAG,cAAc,CAAC;CACvB,CAAC;AAEF,2DAA2D;AAC3D,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wFAAwF;AACxF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAG,aAAa,CAAC;CACtB,CAAC;AAEF,kFAAkF;AAClF,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,GAAG,qBAAqB,GAAG,oBAAoB,CAAC;AAEpG;;;;;;;GAOG;AACH,MAAM,MAAM,sBAAsB,GAAG,mBAAmB,GAAG,gBAAgB,CAAC;AAE5E;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,sBAAsB,KAAK,IAAI,CAAC;AAE/E;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;AAE9E;;;GAGG;AACH,MAAM,WAAW,MAAM;IACrB;;;OAGG;IACH,IAAI,kBAAkB,IAAI,MAAM,EAAE,CAAA;IAElC;;;;;OAKG;IACH,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;CAChE;AAGD;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,iDAAiD;IACjD,IAAI,CAAC,EAAE,GAAG,CAAC;IAEX,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IAEf,8FAA8F;IAC9F,OAAO,EAAE,sBAAsB,GAAG,GAAG,CAAC;IAEtC,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,YAAY,CAAC,EAAE;QACb,kFAAkF;QAClF,OAAO,EAAE,sBAAsB,CAAC;QAEhC;;;;;WAKG;QACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;KACzC,CAAC;CACH,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"http-dwn-rpc-client.d.ts","sourceRoot":"","sources":["../../src/http-dwn-rpc-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAO7E;;GAEG;AACH,qBAAa,gBAAiB,YAAW,MAAM;IAC7C,OAAO,CAAC,eAAe,CAAqB;gBAChC,eAAe,CAAC,EAAE,kBAAkB;IAIhD,IAAI,kBAAkB,IAAI,MAAM,EAAE,CAAgC;IAE5D,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAmE/D,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAmCzD"}
1
+ {"version":3,"file":"http-dwn-rpc-client.d.ts","sourceRoot":"","sources":["../../src/http-dwn-rpc-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAO7E;;GAEG;AACH,qBAAa,gBAAiB,YAAW,MAAM;IAC7C,OAAO,CAAC,eAAe,CAAqB;gBAChC,eAAe,CAAC,EAAE,kBAAkB;IAIhD,IAAI,kBAAkB,IAAI,MAAM,EAAE,CAAgC;IAE5D,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IA8E/D,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAmCzD"}
@@ -4,6 +4,7 @@ export * from './dwn-server-info-cache-memory.js';
4
4
  export * from './http-dwn-rpc-client.js';
5
5
  export * from './json-rpc.js';
6
6
  export * from './json-rpc-socket.js';
7
+ export * from './provider-directory-types.js';
7
8
  export * from './registration-types.js';
8
9
  export * from './rpc-client.js';
9
10
  export * from './server-info-types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,yBAAyB,CAAC"}
@@ -8,16 +8,61 @@ export interface JsonRpcSocketOptions {
8
8
  onclose?: () => void;
9
9
  /** optional socket error handler */
10
10
  onerror?: (error?: any) => void;
11
+ /**
12
+ * Whether to automatically reconnect on unexpected close.
13
+ * Defaults to `true`. Set to `false` to disable auto-reconnect.
14
+ */
15
+ autoReconnect?: boolean;
16
+ /** Base delay in ms for exponential backoff reconnection. Default 1000. */
17
+ baseReconnectDelay?: number;
18
+ /** Maximum delay in ms for exponential backoff reconnection. Default 30000. */
19
+ maxReconnectDelay?: number;
20
+ /** Maximum number of reconnection attempts. Default `Infinity`. */
21
+ maxReconnectAttempts?: number;
22
+ /** Called when a reconnection attempt is about to start. */
23
+ onreconnecting?: (attempt: number) => void;
24
+ /** Called when the socket has successfully reconnected. */
25
+ onreconnected?: () => void;
11
26
  }
12
27
  /**
13
28
  * JSON RPC Socket Client for WebSocket request/response and long-running subscriptions.
29
+ *
30
+ * Supports automatic reconnection with exponential backoff when the connection
31
+ * drops unexpectedly. Subscription message handlers survive reconnection — they
32
+ * are re-registered on the new underlying socket automatically.
14
33
  */
15
34
  export declare class JsonRpcSocket {
16
35
  private socket;
17
36
  private responseTimeout;
37
+ /**
38
+ * Map of JSON-RPC id → message handler. For one-shot `request()` calls, the
39
+ * handler is added before sending and removed on response or timeout.
40
+ * For subscriptions, the handler lives until explicitly closed.
41
+ */
18
42
  private messageHandlers;
43
+ /**
44
+ * Set of JSON-RPC ids that belong to subscription handlers (as opposed to
45
+ * one-shot request handlers). Subscription handlers survive reconnection;
46
+ * one-shot handlers are rejected on unexpected close.
47
+ */
48
+ private subscriptionHandlerIds;
49
+ /** The URL to connect/reconnect to. */
50
+ private url;
51
+ /** Stored options for reconnection. */
52
+ private options;
53
+ /** Whether `close()` was called intentionally by the user. */
54
+ private closedByUser;
55
+ /** Whether a reconnection attempt is currently in progress. */
56
+ private reconnecting;
57
+ /** Whether the socket is currently connected. */
58
+ private _isConnected;
19
59
  private constructor();
60
+ /** Whether the socket is currently connected. */
61
+ get isConnected(): boolean;
20
62
  static connect(url: string, options?: JsonRpcSocketOptions): Promise<JsonRpcSocket>;
63
+ /**
64
+ * Closes the socket and stops reconnection attempts.
65
+ */
21
66
  close(): void;
22
67
  /**
23
68
  * Sends a JSON-RPC request through the socket and waits for a single response.
@@ -36,5 +81,23 @@ export declare class JsonRpcSocket {
36
81
  * Sends a JSON-RPC request through the socket. You must subscribe to a message listener separately to capture the response.
37
82
  */
38
83
  send(request: JsonRpcRequest): void;
84
+ /**
85
+ * Creates and connects a raw WebSocket, resolving when `open` fires.
86
+ */
87
+ private static createWebSocket;
88
+ /**
89
+ * Wires the `onmessage`, `onclose`, and `onerror` handlers for a given
90
+ * WebSocket instance. Called both on initial connect and on reconnect.
91
+ */
92
+ private wireSocket;
93
+ /**
94
+ * Rejects all pending one-shot request handlers (those not in `subscriptionHandlerIds`)
95
+ * by synthesizing a transport error event.
96
+ */
97
+ private rejectPendingRequests;
98
+ /**
99
+ * Exponential backoff reconnection loop with jitter.
100
+ */
101
+ private attemptReconnect;
39
102
  }
40
103
  //# sourceMappingURL=json-rpc-socket.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"json-rpc-socket.d.ts","sourceRoot":"","sources":["../../src/json-rpc-socket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AA4BhF,MAAM,WAAW,oBAAoB;IACnC,gDAAgD;IAChD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,oCAAoC;IACpC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;CACjC;AAED;;GAEG;AACH,qBAAa,aAAa;IAGJ,OAAO,CAAC,MAAM;IAAa,OAAO,CAAC,eAAe;IAFtE,OAAO,CAAC,eAAe,CAA6D;IAEpF,OAAO;WAEa,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,aAAa,CAAC;IA4C7F,KAAK,IAAI,IAAI;IAIpB;;OAEG;IACU,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAyBvE;;;OAGG;IACU,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC;QACtG,QAAQ,EAAE,eAAe,CAAC;QAC1B,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;KAC5B,CAAC;IAuDH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACI,IAAI,CAAC,OAAO,EAAE,cAAc,GAAE,IAAI;CAG1C"}
1
+ {"version":3,"file":"json-rpc-socket.d.ts","sourceRoot":"","sources":["../../src/json-rpc-socket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAiChF,MAAM,WAAW,oBAAoB;IACnC,gDAAgD;IAChD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,oCAAoC;IACpC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAEhC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,2EAA2E;IAC3E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,mEAAmE;IACnE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,4DAA4D;IAC5D,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAE3C,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,qBAAa,aAAa;IA+BtB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,eAAe;IA/BzB;;;;OAIG;IACH,OAAO,CAAC,eAAe,CAA6D;IAEpF;;;;OAIG;IACH,OAAO,CAAC,sBAAsB,CAA6B;IAE3D,uCAAuC;IACvC,OAAO,CAAC,GAAG,CAAS;IAEpB,uCAAuC;IACvC,OAAO,CAAC,OAAO,CAAuB;IAEtC,8DAA8D;IAC9D,OAAO,CAAC,YAAY,CAAS;IAE7B,+DAA+D;IAC/D,OAAO,CAAC,YAAY,CAAS;IAE7B,iDAAiD;IACjD,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO;IAWP,iDAAiD;IACjD,IAAW,WAAW,IAAI,OAAO,CAEhC;WAEmB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,aAAa,CAAC;IAkBpG;;OAEG;IACI,KAAK,IAAI,IAAI;IAMpB;;OAEG;IACU,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAyBvE;;;OAGG;IACU,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC;QACtG,QAAQ,EAAE,eAAe,CAAC;QAC1B,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;KAC5B,CAAC;IA2DH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACI,IAAI,CAAC,OAAO,EAAE,cAAc,GAAE,IAAI;IAQzC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IA+B9B;;;OAGG;IACH,OAAO,CAAC,UAAU;IAsClB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAe7B;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAmDzB"}
@@ -56,6 +56,11 @@ export declare const createJsonRpcRequest: (id: JsonRpcId, method: string, param
56
56
  * any `rpc.subscribe.` prefix.
57
57
  */
58
58
  export declare const createJsonRpcSubscriptionRequest: (id: JsonRpcId, method: string, params?: any, subscriptionId?: JsonRpcId) => JsonRpcRequest;
59
+ /**
60
+ * Creates a JSON-RPC notification to acknowledge receipt of subscription events
61
+ * up to the given cursor. No `id` is set because no response is expected.
62
+ */
63
+ export declare const createJsonRpcAck: (subscriptionId: JsonRpcId, cursor: string) => JsonRpcRequest;
59
64
  export declare const createJsonRpcSuccessResponse: (id: JsonRpcId, result?: any) => JsonRpcSuccessResponse;
60
65
  /**
61
66
  * Safely parses a JSON string, returning `null` on failure instead of throwing.
@@ -1 +1 @@
1
- {"version":3,"file":"json-rpc.d.ts","sourceRoot":"","sources":["../../src/json-rpc.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AAC/C,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC;AAChC,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC;AAEnC,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,cAAc,CAAC;IACxB,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,iDAAiD;IACjD,YAAY,CAAC,EAAE;QAAE,EAAE,EAAE,SAAS,CAAA;KAAE,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,WAAW,mBAAmB;IAClC,8CAA8C;IAC9C,EAAE,EAAE,SAAS,CAAC;IACd,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED,oBAAY,iBAAiB;IAE3B,cAAc,SAAS;IACvB,cAAc,SAAS;IACvB,aAAa,SAAS;IACtB,aAAa,SAAS;IACtB,UAAU,SAAS;IACnB,cAAc,SAAS;IAGvB,UAAU,SAAS,CAAE,gCAAgC;IACrD,YAAY,SAAS,CAAE,gCAAgC;IACvD,SAAS,SAAS,CAAE,gCAAgC;IACpD,QAAQ,SAAS;CAClB;AAED,MAAM,MAAM,eAAe,GAAG,sBAAsB,GAAG,oBAAoB,CAAC;AAE5E,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,cAAc,CAAC;IACxB,EAAE,EAAE,SAAS,CAAC;IACd,MAAM,EAAE,GAAG,CAAC;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,cAAc,CAAC;IACxB,EAAE,EAAE,SAAS,CAAC;IACd,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,YAAY,CAAC;CACrB;AAED,eAAO,MAAM,0BAA0B,OACjC,SAAS,QACP,iBAAiB,WACd,MAAM,SACR,GAAG,KACT,oBAUF,CAAC;AAEF,eAAO,MAAM,yBAAyB,WAC5B,MAAM,WACL,GAAG,KACX,cAMF,CAAC;AAEF,eAAO,MAAM,oBAAoB,OAC3B,SAAS,UACL,MAAM,WACL,aAAa,KACrB,cAOF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,OACvC,SAAS,UACL,MAAM,WACL,GAAG,mBACK,SAAS,KACzB,cAUF,CAAC;AAEF,eAAO,MAAM,4BAA4B,OACnC,SAAS,WACJ,GAAG,KACX,sBAMF,CAAC;AAEF;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMrD"}
1
+ {"version":3,"file":"json-rpc.d.ts","sourceRoot":"","sources":["../../src/json-rpc.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AAC/C,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC;AAChC,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC;AAEnC,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,cAAc,CAAC;IACxB,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,iDAAiD;IACjD,YAAY,CAAC,EAAE;QAAE,EAAE,EAAE,SAAS,CAAA;KAAE,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,WAAW,mBAAmB;IAClC,8CAA8C;IAC9C,EAAE,EAAE,SAAS,CAAC;IACd,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED,oBAAY,iBAAiB;IAE3B,cAAc,SAAS;IACvB,cAAc,SAAS;IACvB,aAAa,SAAS;IACtB,aAAa,SAAS;IACtB,UAAU,SAAS;IACnB,cAAc,SAAS;IAGvB,UAAU,SAAS,CAAE,gCAAgC;IACrD,YAAY,SAAS,CAAE,gCAAgC;IACvD,SAAS,SAAS,CAAE,gCAAgC;IACpD,QAAQ,SAAS;CAClB;AAED,MAAM,MAAM,eAAe,GAAG,sBAAsB,GAAG,oBAAoB,CAAC;AAE5E,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,cAAc,CAAC;IACxB,EAAE,EAAE,SAAS,CAAC;IACd,MAAM,EAAE,GAAG,CAAC;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,cAAc,CAAC;IACxB,EAAE,EAAE,SAAS,CAAC;IACd,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,YAAY,CAAC;CACrB;AAED,eAAO,MAAM,0BAA0B,OACjC,SAAS,QACP,iBAAiB,WACd,MAAM,SACR,GAAG,KACT,oBAUF,CAAC;AAEF,eAAO,MAAM,yBAAyB,WAC5B,MAAM,WACL,GAAG,KACX,cAMF,CAAC;AAEF,eAAO,MAAM,oBAAoB,OAC3B,SAAS,UACL,MAAM,WACL,aAAa,KACrB,cAOF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,OACvC,SAAS,UACL,MAAM,WACL,GAAG,mBACK,SAAS,KACzB,cAUF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,mBACX,SAAS,UACjB,MAAM,KACb,cAOF,CAAC;AAEF,eAAO,MAAM,4BAA4B,OACnC,SAAS,WACJ,GAAG,KACX,sBAMF,CAAC;AAEF;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMrD"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * A service tier offered by a DWN provider.
3
+ */
4
+ export type DwnProviderTier = {
5
+ /** Tier name (e.g. "Free", "Pro", "Enterprise"). */
6
+ name: string;
7
+ /** Human-readable description of what the tier includes. */
8
+ description: string;
9
+ /** Human-readable pricing (e.g. "$5/mo", "Free", "Contact us"). */
10
+ pricing?: string;
11
+ };
12
+ /**
13
+ * A single DWN provider listing in a provider directory.
14
+ * Used by wallets to present a curated list of DWN providers to users.
15
+ */
16
+ export type DwnProviderListing = {
17
+ /** Display name of the provider (e.g. "Enbox Cloud"). */
18
+ name: string;
19
+ /** Short description of the provider. */
20
+ description: string;
21
+ /** DWN server base URL — used for `GET /info` discovery. */
22
+ url: string;
23
+ /** URL to the provider's logo image. */
24
+ logoUrl?: string;
25
+ /** Available service tiers. */
26
+ tiers?: DwnProviderTier[];
27
+ };
28
+ /**
29
+ * A directory of DWN providers.
30
+ * This is a static JSON document maintained by the wallet provider.
31
+ */
32
+ export type DwnProviderDirectory = {
33
+ /** Schema version (e.g. "1.0"). */
34
+ version: string;
35
+ /** ISO 8601 timestamp of when the directory was last updated. */
36
+ updated: string;
37
+ /** List of DWN providers. */
38
+ providers: DwnProviderListing[];
39
+ };
40
+ //# sourceMappingURL=provider-directory-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-directory-types.d.ts","sourceRoot":"","sources":["../../src/provider-directory-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,oDAAoD;IACpD,IAAI,EAAG,MAAM,CAAC;IACd,4DAA4D;IAC5D,WAAW,EAAG,MAAM,CAAC;IACrB,mEAAmE;IACnE,OAAO,CAAC,EAAG,MAAM,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,yDAAyD;IACzD,IAAI,EAAG,MAAM,CAAC;IACd,yCAAyC;IACzC,WAAW,EAAG,MAAM,CAAC;IACrB,4DAA4D;IAC5D,GAAG,EAAG,MAAM,CAAC;IACb,wCAAwC;IACxC,OAAO,CAAC,EAAG,MAAM,CAAC;IAClB,+BAA+B;IAC/B,KAAK,CAAC,EAAG,eAAe,EAAE,CAAC;CAC5B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,mCAAmC;IACnC,OAAO,EAAG,MAAM,CAAC;IACjB,iEAAiE;IACjE,OAAO,EAAG,MAAM,CAAC;IACjB,6BAA6B;IAC7B,SAAS,EAAG,kBAAkB,EAAE,CAAC;CAClC,CAAC"}
@@ -10,16 +10,60 @@ export type ProofOfWorkChallengeModel = {
10
10
  */
11
11
  export type RegistrationData = {
12
12
  did: string;
13
- termsOfServiceHash: string;
13
+ termsOfServiceHash?: string;
14
14
  };
15
15
  /**
16
16
  * Full registration request body for `POST /registration`.
17
17
  */
18
18
  export type RegistrationRequest = {
19
- proofOfWork: {
19
+ proofOfWork?: {
20
20
  challengeNonce: string;
21
21
  responseNonce: string;
22
22
  };
23
+ /**
24
+ * Provider-auth-v0 credentials. Present when the server requires
25
+ * `'provider-auth-v0'` registration.
26
+ */
27
+ providerAuth?: {
28
+ /** The registration token obtained from the token exchange endpoint. */
29
+ registrationToken: string;
30
+ };
23
31
  registrationData: RegistrationData;
24
32
  };
33
+ /**
34
+ * Request body for `POST {tokenUrl}` — exchanges an authorization code for a
35
+ * registration token. Sent by the wallet to the provider's auth service.
36
+ */
37
+ export type TokenExchangeRequest = {
38
+ /** Grant type identifier. */
39
+ grantType: 'authorization_code';
40
+ /** The authorization code received from the provider's redirect. */
41
+ code: string;
42
+ /** The redirect URI used in the authorization request (must match exactly). */
43
+ redirectUri: string;
44
+ };
45
+ /**
46
+ * Response body from `POST {tokenUrl}` or `POST {refreshUrl}` — contains the
47
+ * registration token and optional refresh token.
48
+ */
49
+ export type TokenExchangeResponse = {
50
+ /** Opaque registration token for use with `POST /registration`. */
51
+ registrationToken: string;
52
+ /** Opaque refresh token for obtaining new registration tokens. */
53
+ refreshToken?: string;
54
+ /** Token lifetime in seconds. If absent, the token does not expire. */
55
+ expiresIn?: number;
56
+ /** Token type hint (e.g. `'bearer'`). */
57
+ tokenType: string;
58
+ };
59
+ /**
60
+ * Request body for `POST {refreshUrl}` — refreshes an expired registration
61
+ * token.
62
+ */
63
+ export type TokenRefreshRequest = {
64
+ /** Grant type identifier. */
65
+ grantType: 'refresh_token';
66
+ /** The refresh token obtained from a prior token exchange. */
67
+ refreshToken: string;
68
+ };
25
69
  //# sourceMappingURL=registration-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registration-types.d.ts","sourceRoot":"","sources":["../../src/registration-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,uBAAuB,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE;QACX,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,gBAAgB,EAAE,gBAAgB,CAAA;CACnC,CAAC"}
1
+ {"version":3,"file":"registration-types.d.ts","sourceRoot":"","sources":["../../src/registration-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,uBAAuB,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,CAAC,EAAE;QACZ,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF;;;OAGG;IACH,YAAY,CAAC,EAAE;QACb,wEAAwE;QACxE,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,6BAA6B;IAC7B,SAAS,EAAG,oBAAoB,CAAC;IACjC,oEAAoE;IACpE,IAAI,EAAG,MAAM,CAAC;IACd,+EAA+E;IAC/E,WAAW,EAAG,MAAM,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,mEAAmE;IACnE,iBAAiB,EAAG,MAAM,CAAC;IAC3B,kEAAkE;IAClE,YAAY,CAAC,EAAG,MAAM,CAAC;IACvB,uEAAuE;IACvE,SAAS,CAAC,EAAG,MAAM,CAAC;IACpB,yCAAyC;IACzC,SAAS,EAAG,MAAM,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,6BAA6B;IAC7B,SAAS,EAAG,eAAe,CAAC;IAC5B,8DAA8D;IAC9D,YAAY,EAAG,MAAM,CAAC;CACvB,CAAC"}
@@ -1,7 +1,33 @@
1
1
  import type { KeyValueStore } from '@enbox/common';
2
+ /**
3
+ * Configuration for provider-auth-v0 registration.
4
+ * Present in {@link ServerInfo} when `'provider-auth-v0'` is listed in
5
+ * {@link ServerInfo.registrationRequirements | registrationRequirements}.
6
+ */
7
+ export type ProviderAuthInfo = {
8
+ /** URL to redirect user for authentication/signup/payment. Can be on the DWN server or an external domain. */
9
+ authorizeUrl: string;
10
+ /** URL where the wallet exchanges an authorization code for a registration token. */
11
+ tokenUrl: string;
12
+ /** URL to refresh an expired registration token. If absent, tokens do not support refresh. */
13
+ refreshUrl?: string;
14
+ /** URL for user-facing account management dashboard. If absent, no management UI is available. */
15
+ managementUrl?: string;
16
+ };
2
17
  export type ServerInfo = {
3
18
  /** the maximum file size the user can request to store */
4
19
  maxFileSize: number;
20
+ /**
21
+ * Maximum number of unacknowledged subscription events the server will send
22
+ * before pausing delivery. Clients ****MUST**** send `rpc.ack` to advance the
23
+ * window. When absent, the server does not enforce backpressure.
24
+ */
25
+ maxInFlight?: number;
26
+ /**
27
+ * Provider-auth-v0 configuration. Present when `'provider-auth-v0'` is
28
+ * included in {@link registrationRequirements}.
29
+ */
30
+ providerAuth?: ProviderAuthInfo;
5
31
  /**
6
32
  * an array of strings representing the server's registration requirements.
7
33
  *
@@ -1 +1 @@
1
- {"version":3,"file":"server-info-types.d.ts","sourceRoot":"","sources":["../../src/server-info-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,MAAM,UAAU,GAAG;IACvB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,gBAAgB,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,WAAW,kBAAmB,SAAQ,aAAa,CAAC,MAAM,EAAE,UAAU,GAAE,SAAS,CAAC;CAAG;AAE3F,MAAM,WAAW,gBAAgB;IAC/B,4FAA4F;IAC5F,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CACjD"}
1
+ {"version":3,"file":"server-info-types.d.ts","sourceRoot":"","sources":["../../src/server-info-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,8GAA8G;IAC9G,YAAY,EAAG,MAAM,CAAC;IACtB,qFAAqF;IACrF,QAAQ,EAAG,MAAM,CAAC;IAClB,8FAA8F;IAC9F,UAAU,CAAC,EAAG,MAAM,CAAC;IACrB,kGAAkG;IAClG,aAAa,CAAC,EAAG,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC;;;;OAIG;IACH,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,gBAAgB,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,WAAW,kBAAmB,SAAQ,aAAa,CAAC,MAAM,EAAE,UAAU,GAAE,SAAS,CAAC;CAAG;AAE3F,MAAM,WAAW,gBAAgB;IAC/B,4FAA4F;IAC5F,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CACjD"}