@voyantjs/cloud-sdk 0.8.1 → 0.9.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.
- package/README.md +49 -4
- package/dist/client.d.ts +17 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +29 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/realtime.d.ts +138 -0
- package/dist/realtime.d.ts.map +1 -0
- package/dist/realtime.js +247 -0
- package/dist/types.d.ts +42 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -14,6 +14,8 @@ Public TypeScript client for Voyant Cloud APIs.
|
|
|
14
14
|
long-running crawls and keep-alive Puppeteer sessions)
|
|
15
15
|
- video (manage uploads, playback, captions, watermarks, signed playback
|
|
16
16
|
tokens; create videos from a public URL)
|
|
17
|
+
- realtime (publish messages, read history and presence, mint client tokens;
|
|
18
|
+
`RealtimeChannel` subscribes over WebSocket)
|
|
17
19
|
- search (`createSearchClientConfig` returns a Typesense client config pointed
|
|
18
20
|
at the Voyant search proxy)
|
|
19
21
|
|
|
@@ -89,6 +91,7 @@ Root groups:
|
|
|
89
91
|
- `email`
|
|
90
92
|
- `browser`
|
|
91
93
|
- `video`
|
|
94
|
+
- `realtime` (plus the standalone `RealtimeChannel` subscriber client)
|
|
92
95
|
- `search` (standalone `createSearchClientConfig` export, not on the client)
|
|
93
96
|
|
|
94
97
|
The `vault` group covers list-vaults, list-secrets, and get-secret routes,
|
|
@@ -144,10 +147,7 @@ const png = await client.browser.screenshot({
|
|
|
144
147
|
|
|
145
148
|
const session = await client.browser.sessions.open({ keepAliveMs: 60_000 });
|
|
146
149
|
await client.browser.sessions.runCommands(session.id, {
|
|
147
|
-
commands: [
|
|
148
|
-
{ op: "goto", url: "https://example.com" },
|
|
149
|
-
{ op: "screenshot" },
|
|
150
|
-
],
|
|
150
|
+
commands: [{ op: "goto", url: "https://example.com" }, { op: "screenshot" }],
|
|
151
151
|
});
|
|
152
152
|
await client.browser.sessions.close(session.id);
|
|
153
153
|
```
|
|
@@ -225,6 +225,44 @@ const playback = await client.video.videos.mintToken(ticket.video.id, {
|
|
|
225
225
|
// Public videos can use `ticket.video.playbackHlsUrl` directly.
|
|
226
226
|
```
|
|
227
227
|
|
|
228
|
+
The `realtime` group covers REST access to the realtime service:
|
|
229
|
+
`publish(channel, input)`, `publishBatch(input)` (up to 100 messages),
|
|
230
|
+
`history(channel, query?)`, `presence.get(channel)`, and
|
|
231
|
+
`tokens.mint(input)`. Subscribing happens over WebSocket via the
|
|
232
|
+
standalone `RealtimeChannel` client, which authenticates with a
|
|
233
|
+
short-lived client token minted server-side — never ship an API key to
|
|
234
|
+
subscribers. `RealtimeChannel` uses the global `WebSocket` (browsers,
|
|
235
|
+
workers, Node 21+; injectable via the `webSocket` option), replays missed
|
|
236
|
+
messages on reconnect via `sinceId`, and rejects sends while disconnected.
|
|
237
|
+
|
|
238
|
+
```ts
|
|
239
|
+
import { createVoyantCloudClient, RealtimeChannel } from "@voyantjs/cloud-sdk";
|
|
240
|
+
|
|
241
|
+
const client = createVoyantCloudClient({
|
|
242
|
+
apiKey: process.env.VOYANT_API_KEY!,
|
|
243
|
+
});
|
|
244
|
+
|
|
245
|
+
// Server-side: publish over REST and mint a token for the subscriber.
|
|
246
|
+
await client.realtime.publish("orders:eu", {
|
|
247
|
+
event: "order.updated",
|
|
248
|
+
data: { orderId: "ord_1" },
|
|
249
|
+
});
|
|
250
|
+
const { token } = await client.realtime.tokens.mint({
|
|
251
|
+
clientId: "user_42",
|
|
252
|
+
capabilities: { "orders:*": ["subscribe", "presence"] },
|
|
253
|
+
});
|
|
254
|
+
|
|
255
|
+
// Client-side: subscribe with the minted token.
|
|
256
|
+
const channel = new RealtimeChannel({ channel: "orders:eu", token });
|
|
257
|
+
const off = channel.on("message", (message) => {
|
|
258
|
+
console.log(message.event, message.data);
|
|
259
|
+
});
|
|
260
|
+
channel.enterPresence({ name: "Alice" });
|
|
261
|
+
// ...later
|
|
262
|
+
off();
|
|
263
|
+
channel.close();
|
|
264
|
+
```
|
|
265
|
+
|
|
228
266
|
## Key public types
|
|
229
267
|
|
|
230
268
|
Useful exported types include:
|
|
@@ -248,6 +286,13 @@ Useful exported types include:
|
|
|
248
286
|
`GenerateVideoCaptionInput`, `CreateVideoWatermarkInput`,
|
|
249
287
|
`VideoStatus`, `VideoCaptionStatus`, `VideoDownloadStatus`,
|
|
250
288
|
`VideoWatermarkPosition`
|
|
289
|
+
- `RealtimeMessageSummary`, `RealtimePresenceMember`, `RealtimeTokenSummary`,
|
|
290
|
+
`PublishRealtimeMessageInput`, `PublishRealtimeBatchInput`,
|
|
291
|
+
`MintRealtimeTokenInput`, `RealtimeCapability`
|
|
292
|
+
- `RealtimeChannelOptions`, `RealtimeChannelEventMap`,
|
|
293
|
+
`RealtimeChannelPresenceEvent`, `RealtimeChannelError`,
|
|
294
|
+
`RealtimeChannelConnectedEvent`, `RealtimeChannelDisconnectedEvent`,
|
|
295
|
+
`RealtimePresenceAction`
|
|
251
296
|
- `SearchClientConfig`, `SearchClientConfigOptions`
|
|
252
297
|
- `PhoneNumberStatus`, `SmsMessageStatus`, `VerificationChannel`,
|
|
253
298
|
`VerificationAttemptStatus`, `EmailMessageStatus`,
|
package/dist/client.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { VoyantTransport } from "@voyant-sdk/sdk-core";
|
|
2
|
-
import type { BrowserCrawlSummary, BrowserJsonInput, BrowserLink, BrowserPdfInput, BrowserRenderInput, BrowserScrapeInput, BrowserScreenshotInput, BrowserSessionSummary, BrowserSnapshotResult, CheckVerificationInput, CreateVideoFromUrlInput, CreateVideoUploadInput, CreateVideoWatermarkInput, EmailMessageSummary, GenerateVideoCaptionInput, MintVideoSignedTokenInput, OpenBrowserSessionInput, PhoneNumberSummary, RunBrowserCommandsInput, RunBrowserCommandsResult, SendEmailInput, SendSmsInput, SmsMessageSummary, StartBrowserCrawlInput, StartBrowserCrawlResult, StartVerificationInput, UpdateVideoInput, UploadVideoCaptionInput, VaultDecryptResult, VaultEncryptResult, VaultGenerateDataKeyResult, VaultSecretSummary, VaultSecretValue, VaultSummary, VaultUnwrapResult, VerificationAttemptSummary, VerificationCheckResult, VideoCaptionSummary, VideoSignedToken, VideoSummary, VideoUploadTicket, VideoWatermarkProfileSummary, VoyantCloudClientOptions } from "./types.js";
|
|
2
|
+
import type { BrowserCrawlSummary, BrowserJsonInput, BrowserLink, BrowserPdfInput, BrowserRenderInput, BrowserScrapeInput, BrowserScreenshotInput, BrowserSessionSummary, BrowserSnapshotResult, CheckVerificationInput, CreateVideoFromUrlInput, CreateVideoUploadInput, CreateVideoWatermarkInput, EmailMessageSummary, GenerateVideoCaptionInput, MintRealtimeTokenInput, MintVideoSignedTokenInput, OpenBrowserSessionInput, PhoneNumberSummary, PublishRealtimeBatchInput, PublishRealtimeMessageInput, RealtimeMessageSummary, RealtimePresenceMember, RealtimeTokenSummary, RunBrowserCommandsInput, RunBrowserCommandsResult, SendEmailInput, SendSmsInput, SmsMessageSummary, StartBrowserCrawlInput, StartBrowserCrawlResult, StartVerificationInput, UpdateVideoInput, UploadVideoCaptionInput, VaultDecryptResult, VaultEncryptResult, VaultGenerateDataKeyResult, VaultSecretSummary, VaultSecretValue, VaultSummary, VaultUnwrapResult, VerificationAttemptSummary, VerificationCheckResult, VideoCaptionSummary, VideoSignedToken, VideoSummary, VideoUploadTicket, VideoWatermarkProfileSummary, VoyantCloudClientOptions } from "./types.js";
|
|
3
3
|
export declare class VoyantCloudClient {
|
|
4
4
|
readonly transport: VoyantTransport;
|
|
5
5
|
constructor(options: VoyantCloudClientOptions);
|
|
6
6
|
readonly vault: {
|
|
7
7
|
getSecret: (vaultSlug: string, key: string) => Promise<VaultSecretValue>;
|
|
8
|
+
setSecret: (vaultSlug: string, key: string, value: string) => Promise<VaultSecretSummary>;
|
|
9
|
+
deleteSecret: (vaultSlug: string, key: string) => Promise<null>;
|
|
8
10
|
listSecrets: (vaultSlug: string) => Promise<VaultSecretSummary[]>;
|
|
9
11
|
listVaults: () => Promise<VaultSummary[]>;
|
|
10
12
|
encrypt: (vaultSlug: string, plaintext: string) => Promise<VaultEncryptResult>;
|
|
@@ -86,6 +88,20 @@ export declare class VoyantCloudClient {
|
|
|
86
88
|
close: (id: string) => Promise<BrowserSessionSummary>;
|
|
87
89
|
};
|
|
88
90
|
};
|
|
91
|
+
readonly realtime: {
|
|
92
|
+
publish: (channel: string, input: PublishRealtimeMessageInput) => Promise<RealtimeMessageSummary>;
|
|
93
|
+
publishBatch: (input: PublishRealtimeBatchInput) => Promise<RealtimeMessageSummary[]>;
|
|
94
|
+
history: (channel: string, query?: {
|
|
95
|
+
limit?: number;
|
|
96
|
+
sinceId?: string;
|
|
97
|
+
}) => Promise<RealtimeMessageSummary[]>;
|
|
98
|
+
presence: {
|
|
99
|
+
get: (channel: string) => Promise<RealtimePresenceMember[]>;
|
|
100
|
+
};
|
|
101
|
+
tokens: {
|
|
102
|
+
mint: (input: MintRealtimeTokenInput) => Promise<RealtimeTokenSummary>;
|
|
103
|
+
};
|
|
104
|
+
};
|
|
89
105
|
}
|
|
90
106
|
export declare function createVoyantCloudClient(options: VoyantCloudClientOptions): VoyantCloudClient;
|
|
91
107
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAElB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,EAC1B,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,0BAA0B,EAC1B,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,4BAA4B,EAC5B,wBAAwB,EACzB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAElB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACtB,yBAAyB,EACzB,uBAAuB,EACvB,kBAAkB,EAClB,yBAAyB,EACzB,2BAA2B,EAC3B,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,EAC1B,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,0BAA0B,EAC1B,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,4BAA4B,EAC5B,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAsBpB,qBAAa,iBAAiB;IAC5B,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;gBAExB,OAAO,EAAE,wBAAwB;IAI7C,QAAQ,CAAC,KAAK;+BACW,MAAM,OAAO,MAAM;+BAInB,MAAM,OAAO,MAAM,SAAS,MAAM;kCAK/B,MAAM,OAAO,MAAM;iCAKpB,MAAM;;6BAKV,MAAM,aAAa,MAAM;6BAKzB,MAAM,cAAc,MAAM;qCAKlB,MAAM;4BAKf,MAAM,cAAc,MAAM;MAK9C;IAEF,QAAQ,CAAC,GAAG;;;6BAKW,YAAY;MAKjC;IAEF,QAAQ,CAAC,YAAY;uBACJ,sBAAsB;;uBAStB,sBAAsB;MAKrC;IAEF,QAAQ,CAAC,KAAK;yBACK,MAAM;;6BAIF,cAAc;MAKnC;IAEF,QAAQ,CAAC,KAAK;;;2BAGK,MAAM;kCAEC,sBAAsB;mCAKrB,uBAAuB;8BAK5B,MAAM,SAAS,gBAAgB;8BAK/B,MAAM;sCAKE,MAAM;iCAKX,MAAM,UAAS,yBAAyB;;gCAS3C,MAAM;kCAIJ,MAAM,SAAS,uBAAuB;oCAQpC,MAAM,SAAS,yBAAyB;kCAQ1C,MAAM,YAAY,MAAM;;;;;4BAe5B,yBAAyB;yCAQZ,MAAM;;MASrC;IAEF,QAAQ,CAAC,OAAO;yBACS,kBAAkB;0BAUjB,kBAAkB;0BAUlB,kBAAkB;wBAUpB,kBAAkB;;;;;;;;oBA/BrC,CAAC;qBACF,CAAC;sBAAsB,CAAC;mBAAoB,CAAA;oBAChC,CAAC;;;uBAuCM,kBAAkB;eAU1B,CAAC,mBAAmB,gBAAgB;4BAU7B,sBAAsB;qBAM7B,eAAe;;2BAOX,sBAAsB;sBAM3B,MAAM;yBAIH,MAAM;;;2BAOL,uBAAuB;;sBAO3B,MAAM;8BAIE,MAAM,SAAS,uBAAuB;wBAQ5C,MAAM;;MAQpB;IAEF,QAAQ,CAAC,QAAQ;2BACI,MAAM,SAAS,2BAA2B;8BAQvC,yBAAyB;2BAQ5B,MAAM,UAAU;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE;;2BAMtD,MAAM;;;0BAMP,sBAAsB;;MAMtC;CACH;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,qBAExE"}
|
package/dist/client.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { VoyantTransport } from "@voyant-sdk/sdk-core";
|
|
2
2
|
function unwrapBrowserResult(envelope) {
|
|
3
|
-
if (envelope &&
|
|
3
|
+
if (envelope &&
|
|
4
|
+
typeof envelope === "object" &&
|
|
5
|
+
"result" in envelope &&
|
|
6
|
+
envelope.result !== undefined) {
|
|
4
7
|
return envelope.result;
|
|
5
8
|
}
|
|
6
9
|
return envelope;
|
|
@@ -12,6 +15,11 @@ export class VoyantCloudClient {
|
|
|
12
15
|
}
|
|
13
16
|
vault = {
|
|
14
17
|
getSecret: (vaultSlug, key) => this.transport.request(`/vault/v1/${vaultSlug}/secrets/${key}`),
|
|
18
|
+
setSecret: (vaultSlug, key, value) => this.transport.request(`/vault/v1/${vaultSlug}/secrets/${key}`, { body: { value }, method: "POST" }),
|
|
19
|
+
deleteSecret: (vaultSlug, key) => this.transport.request(`/vault/v1/${vaultSlug}/secrets/${key}`, {
|
|
20
|
+
method: "DELETE",
|
|
21
|
+
responseType: "text",
|
|
22
|
+
}),
|
|
15
23
|
listSecrets: (vaultSlug) => this.transport.request(`/vault/v1/${vaultSlug}/secrets`),
|
|
16
24
|
listVaults: () => this.transport.request("/vault/v1"),
|
|
17
25
|
encrypt: (vaultSlug, plaintext) => this.transport.request(`/vault/v1/${vaultSlug}/encrypt`, { body: { plaintext }, method: "POST" }),
|
|
@@ -188,6 +196,26 @@ export class VoyantCloudClient {
|
|
|
188
196
|
}),
|
|
189
197
|
},
|
|
190
198
|
};
|
|
199
|
+
realtime = {
|
|
200
|
+
publish: (channel, input) => this.transport.request(`/realtime/v1/channels/${channel}/messages`, {
|
|
201
|
+
body: input,
|
|
202
|
+
method: "POST",
|
|
203
|
+
}),
|
|
204
|
+
publishBatch: (input) => this.transport.request("/realtime/v1/messages", {
|
|
205
|
+
body: input,
|
|
206
|
+
method: "POST",
|
|
207
|
+
}),
|
|
208
|
+
history: (channel, query) => this.transport.request(`/realtime/v1/channels/${channel}/messages`, { query }),
|
|
209
|
+
presence: {
|
|
210
|
+
get: (channel) => this.transport.request(`/realtime/v1/channels/${channel}/presence`),
|
|
211
|
+
},
|
|
212
|
+
tokens: {
|
|
213
|
+
mint: (input) => this.transport.request("/realtime/v1/tokens", {
|
|
214
|
+
body: input,
|
|
215
|
+
method: "POST",
|
|
216
|
+
}),
|
|
217
|
+
},
|
|
218
|
+
};
|
|
191
219
|
}
|
|
192
220
|
export function createVoyantCloudClient(options) {
|
|
193
221
|
return new VoyantCloudClient(options);
|
package/dist/index.d.ts
CHANGED
|
@@ -3,5 +3,7 @@ export { getVoyantCloudClient, tryGetVoyantCloudClient, VoyantCloudConfigError,
|
|
|
3
3
|
export type { VoyantCloudEnv } from "./env.js";
|
|
4
4
|
export { createSearchClientConfig } from "./search.js";
|
|
5
5
|
export type { SearchClientConfig, SearchClientConfigOptions, } from "./search.js";
|
|
6
|
-
export
|
|
6
|
+
export { RealtimeChannel } from "./realtime.js";
|
|
7
|
+
export type { RealtimeChannelConnectedEvent, RealtimeChannelDisconnectedEvent, RealtimeChannelError, RealtimeChannelEventMap, RealtimeChannelOptions, RealtimeChannelPresenceEvent, RealtimePresenceAction, } from "./realtime.js";
|
|
8
|
+
export type { BrowserCommand, BrowserCommandResult, BrowserCookie, BrowserCrawlSummary, BrowserGoToOptions, BrowserJobKind, BrowserJobStatus, BrowserJsonInput, BrowserLink, BrowserPdfInput, BrowserPdfOptions, BrowserRenderInput, BrowserSameSite, BrowserScrapeElement, BrowserScrapeInput, BrowserScrapeResult, BrowserScreenshotInput, BrowserScreenshotOptions, BrowserSessionStatus, BrowserSessionSummary, BrowserSnapshotResult, BrowserViewport, BrowserWaitForSelector, BrowserWaitUntil, CheckVerificationInput, CreateVideoFromUrlInput, CreateVideoUploadInput, CreateVideoWatermarkInput, EmailMessageStatus, EmailMessageSummary, GenerateVideoCaptionInput, MintRealtimeTokenInput, MintVideoSignedTokenInput, OpenBrowserSessionInput, PhoneNumberCapabilities, PhoneNumberStatus, PhoneNumberSummary, PublishRealtimeBatchInput, PublishRealtimeMessageInput, RealtimeCapability, RealtimeMessageSummary, RealtimePresenceMember, RealtimeTokenSummary, RunBrowserCommandsInput, RunBrowserCommandsResult, SendEmailAttachment, SendEmailInput, SendSmsInput, SmsMessageStatus, SmsMessageSummary, StartBrowserCrawlInput, StartBrowserCrawlResult, StartVerificationInput, UpdateVideoInput, UploadVideoCaptionInput, VaultDecryptResult, VaultEncryptResult, VaultGenerateDataKeyResult, VaultSecretSummary, VaultSecretValue, VaultSummary, VaultUnwrapResult, VerificationAttemptStatus, VerificationAttemptSummary, VerificationChannel, VerificationCheckResult, VideoCaptionStatus, VideoCaptionSummary, VideoDownloadStatus, VideoSignedToken, VideoStatus, VideoSummary, VideoUploadTicket, VideoWatermarkPosition, VideoWatermarkProfileSummary, VoyantCloudClientOptions, } from "./types.js";
|
|
7
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,YAAY,EACV,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,EAC1B,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,yBAAyB,EACzB,0BAA0B,EAC1B,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACtB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,YAAY,EACV,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EACV,6BAA6B,EAC7B,gCAAgC,EAChC,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,4BAA4B,EAC5B,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACtB,yBAAyB,EACzB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EACzB,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,EAC1B,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,yBAAyB,EACzB,0BAA0B,EAC1B,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACtB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { createVoyantCloudClient, VoyantCloudClient } from "./client.js";
|
|
2
2
|
export { getVoyantCloudClient, tryGetVoyantCloudClient, VoyantCloudConfigError, } from "./env.js";
|
|
3
3
|
export { createSearchClientConfig } from "./search.js";
|
|
4
|
+
export { RealtimeChannel } from "./realtime.js";
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subscriber client for Voyant Realtime channels.
|
|
3
|
+
*
|
|
4
|
+
* `RealtimeChannel` speaks the `GET /realtime/v1/connect` WebSocket
|
|
5
|
+
* protocol directly — it does not go through the REST transport. It has
|
|
6
|
+
* zero runtime dependencies and uses the global `WebSocket` constructor,
|
|
7
|
+
* which is available in browsers, Cloudflare Workers, Deno, Bun, and
|
|
8
|
+
* Node.js 21+. On older Node versions (or in tests), inject an
|
|
9
|
+
* implementation via the `webSocket` option.
|
|
10
|
+
*
|
|
11
|
+
* Authentication uses a short-lived client token minted server-side with
|
|
12
|
+
* `client.realtime.tokens.mint(...)`. Never hand an API key to a
|
|
13
|
+
* subscriber — tokens are scoped to channels and capabilities and expire.
|
|
14
|
+
*
|
|
15
|
+
* ```ts
|
|
16
|
+
* const channel = new RealtimeChannel({ channel: "orders:eu", token });
|
|
17
|
+
*
|
|
18
|
+
* const off = channel.on("message", (message) => {
|
|
19
|
+
* console.log(message.event, message.data);
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* channel.enterPresence({ name: "Alice" });
|
|
23
|
+
* channel.publish("cursor.moved", { x: 10, y: 20 }); // needs publish capability
|
|
24
|
+
*
|
|
25
|
+
* off();
|
|
26
|
+
* channel.close();
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
import type { RealtimeMessageSummary } from "./types.js";
|
|
30
|
+
export interface RealtimeChannelOptions {
|
|
31
|
+
/** Channel name to subscribe to. */
|
|
32
|
+
channel: string;
|
|
33
|
+
/**
|
|
34
|
+
* Short-lived client token from `client.realtime.tokens.mint` —
|
|
35
|
+
* NEVER an API key.
|
|
36
|
+
*/
|
|
37
|
+
token: string;
|
|
38
|
+
/**
|
|
39
|
+
* HTTP(S) API origin; converted to ws(s):// for the connection.
|
|
40
|
+
* Defaults to `https://api.voyantjs.com`.
|
|
41
|
+
*/
|
|
42
|
+
baseUrl?: string;
|
|
43
|
+
/** Resume point: replay history after this message id on connect. */
|
|
44
|
+
sinceId?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Auto-reconnect with exponential backoff (1s base, 30s cap, jitter)
|
|
47
|
+
* when the connection drops. Defaults to `true`.
|
|
48
|
+
*/
|
|
49
|
+
reconnect?: boolean;
|
|
50
|
+
/** WebSocket implementation override for tests or Node < 21. */
|
|
51
|
+
webSocket?: typeof WebSocket;
|
|
52
|
+
}
|
|
53
|
+
export type RealtimePresenceAction = "enter" | "leave" | "update";
|
|
54
|
+
export interface RealtimeChannelConnectedEvent {
|
|
55
|
+
channel: string;
|
|
56
|
+
}
|
|
57
|
+
export interface RealtimeChannelPresenceEvent {
|
|
58
|
+
action: RealtimePresenceAction;
|
|
59
|
+
channel: string;
|
|
60
|
+
clientId: string;
|
|
61
|
+
data?: unknown;
|
|
62
|
+
at: string;
|
|
63
|
+
}
|
|
64
|
+
export interface RealtimeChannelError {
|
|
65
|
+
code: string;
|
|
66
|
+
message: string;
|
|
67
|
+
}
|
|
68
|
+
export interface RealtimeChannelDisconnectedEvent {
|
|
69
|
+
/** WebSocket close code, when one was provided. */
|
|
70
|
+
code: number | null;
|
|
71
|
+
/** WebSocket close reason, when one was provided. */
|
|
72
|
+
reason: string | null;
|
|
73
|
+
/** Whether the channel will automatically reconnect. */
|
|
74
|
+
willReconnect: boolean;
|
|
75
|
+
}
|
|
76
|
+
export interface RealtimeChannelEventMap {
|
|
77
|
+
connected: RealtimeChannelConnectedEvent;
|
|
78
|
+
message: RealtimeMessageSummary;
|
|
79
|
+
presence: RealtimeChannelPresenceEvent;
|
|
80
|
+
error: RealtimeChannelError;
|
|
81
|
+
disconnected: RealtimeChannelDisconnectedEvent;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* A live subscription to a single realtime channel.
|
|
85
|
+
*
|
|
86
|
+
* The connection is opened in the constructor. Register handlers with
|
|
87
|
+
* `on(event, handler)` — it returns an unsubscribe function. While
|
|
88
|
+
* disconnected (including between reconnect attempts), `publish` and the
|
|
89
|
+
* presence methods throw rather than queueing; wait for the next
|
|
90
|
+
* `connected` event before sending again.
|
|
91
|
+
*
|
|
92
|
+
* The channel tracks the id of the last received message and passes it as
|
|
93
|
+
* `sinceId` when it reconnects, so messages published during a drop are
|
|
94
|
+
* replayed and none are lost.
|
|
95
|
+
*/
|
|
96
|
+
export declare class RealtimeChannel {
|
|
97
|
+
readonly channel: string;
|
|
98
|
+
private readonly token;
|
|
99
|
+
private readonly baseUrl;
|
|
100
|
+
private readonly reconnectEnabled;
|
|
101
|
+
private readonly webSocketImpl;
|
|
102
|
+
private readonly handlers;
|
|
103
|
+
private socket;
|
|
104
|
+
private lastMessageId;
|
|
105
|
+
private reconnectAttempts;
|
|
106
|
+
private reconnectTimer;
|
|
107
|
+
private closed;
|
|
108
|
+
constructor(options: RealtimeChannelOptions);
|
|
109
|
+
/**
|
|
110
|
+
* Register a handler. Returns a function that unsubscribes it.
|
|
111
|
+
*/
|
|
112
|
+
on<K extends keyof RealtimeChannelEventMap>(event: K, handler: (payload: RealtimeChannelEventMap[K]) => void): () => void;
|
|
113
|
+
/**
|
|
114
|
+
* Publish a message to the channel over the socket. Requires the token
|
|
115
|
+
* to carry the `publish` capability for this channel. Throws while
|
|
116
|
+
* disconnected.
|
|
117
|
+
*/
|
|
118
|
+
publish(event: string, data?: unknown): void;
|
|
119
|
+
/** Enter the channel's presence set. Requires the `presence` capability. */
|
|
120
|
+
enterPresence(data?: unknown): void;
|
|
121
|
+
/** Update this client's presence data. Requires the `presence` capability. */
|
|
122
|
+
updatePresence(data?: unknown): void;
|
|
123
|
+
/** Leave the channel's presence set. */
|
|
124
|
+
leavePresence(): void;
|
|
125
|
+
/**
|
|
126
|
+
* Permanently close the channel. Cancels any pending reconnect; a final
|
|
127
|
+
* `disconnected` event with `willReconnect: false` is emitted when the
|
|
128
|
+
* socket closes.
|
|
129
|
+
*/
|
|
130
|
+
close(): void;
|
|
131
|
+
private connect;
|
|
132
|
+
private handleFrame;
|
|
133
|
+
private handleClose;
|
|
134
|
+
private scheduleReconnect;
|
|
135
|
+
private send;
|
|
136
|
+
private emit;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=realtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":"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"}
|
package/dist/realtime.js
ADDED
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subscriber client for Voyant Realtime channels.
|
|
3
|
+
*
|
|
4
|
+
* `RealtimeChannel` speaks the `GET /realtime/v1/connect` WebSocket
|
|
5
|
+
* protocol directly — it does not go through the REST transport. It has
|
|
6
|
+
* zero runtime dependencies and uses the global `WebSocket` constructor,
|
|
7
|
+
* which is available in browsers, Cloudflare Workers, Deno, Bun, and
|
|
8
|
+
* Node.js 21+. On older Node versions (or in tests), inject an
|
|
9
|
+
* implementation via the `webSocket` option.
|
|
10
|
+
*
|
|
11
|
+
* Authentication uses a short-lived client token minted server-side with
|
|
12
|
+
* `client.realtime.tokens.mint(...)`. Never hand an API key to a
|
|
13
|
+
* subscriber — tokens are scoped to channels and capabilities and expire.
|
|
14
|
+
*
|
|
15
|
+
* ```ts
|
|
16
|
+
* const channel = new RealtimeChannel({ channel: "orders:eu", token });
|
|
17
|
+
*
|
|
18
|
+
* const off = channel.on("message", (message) => {
|
|
19
|
+
* console.log(message.event, message.data);
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* channel.enterPresence({ name: "Alice" });
|
|
23
|
+
* channel.publish("cursor.moved", { x: 10, y: 20 }); // needs publish capability
|
|
24
|
+
*
|
|
25
|
+
* off();
|
|
26
|
+
* channel.close();
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
const DEFAULT_REALTIME_BASE_URL = "https://api.voyantjs.com";
|
|
30
|
+
const RECONNECT_BASE_DELAY_MS = 1_000;
|
|
31
|
+
const RECONNECT_MAX_DELAY_MS = 30_000;
|
|
32
|
+
/** `WebSocket.OPEN` — referenced as a literal so injected fakes don't need statics. */
|
|
33
|
+
const WEB_SOCKET_OPEN = 1;
|
|
34
|
+
function toConnectUrl(baseUrl, channel, token, sinceId) {
|
|
35
|
+
const base = baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`;
|
|
36
|
+
const url = new URL("realtime/v1/connect", base);
|
|
37
|
+
if (url.protocol === "https:") {
|
|
38
|
+
url.protocol = "wss:";
|
|
39
|
+
}
|
|
40
|
+
else if (url.protocol === "http:") {
|
|
41
|
+
url.protocol = "ws:";
|
|
42
|
+
}
|
|
43
|
+
url.searchParams.set("channel", channel);
|
|
44
|
+
url.searchParams.set("token", token);
|
|
45
|
+
if (sinceId !== undefined) {
|
|
46
|
+
url.searchParams.set("sinceId", sinceId);
|
|
47
|
+
}
|
|
48
|
+
return url.toString();
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* A live subscription to a single realtime channel.
|
|
52
|
+
*
|
|
53
|
+
* The connection is opened in the constructor. Register handlers with
|
|
54
|
+
* `on(event, handler)` — it returns an unsubscribe function. While
|
|
55
|
+
* disconnected (including between reconnect attempts), `publish` and the
|
|
56
|
+
* presence methods throw rather than queueing; wait for the next
|
|
57
|
+
* `connected` event before sending again.
|
|
58
|
+
*
|
|
59
|
+
* The channel tracks the id of the last received message and passes it as
|
|
60
|
+
* `sinceId` when it reconnects, so messages published during a drop are
|
|
61
|
+
* replayed and none are lost.
|
|
62
|
+
*/
|
|
63
|
+
export class RealtimeChannel {
|
|
64
|
+
channel;
|
|
65
|
+
token;
|
|
66
|
+
baseUrl;
|
|
67
|
+
reconnectEnabled;
|
|
68
|
+
webSocketImpl;
|
|
69
|
+
handlers = {
|
|
70
|
+
connected: new Set(),
|
|
71
|
+
message: new Set(),
|
|
72
|
+
presence: new Set(),
|
|
73
|
+
error: new Set(),
|
|
74
|
+
disconnected: new Set(),
|
|
75
|
+
};
|
|
76
|
+
socket = null;
|
|
77
|
+
lastMessageId;
|
|
78
|
+
reconnectAttempts = 0;
|
|
79
|
+
reconnectTimer = null;
|
|
80
|
+
closed = false;
|
|
81
|
+
constructor(options) {
|
|
82
|
+
const webSocketImpl = options.webSocket ??
|
|
83
|
+
globalThis.WebSocket;
|
|
84
|
+
if (!webSocketImpl) {
|
|
85
|
+
throw new Error("RealtimeChannel: no global WebSocket implementation found. " +
|
|
86
|
+
"Use a runtime with WebSocket support (browsers, workers, Node 21+) " +
|
|
87
|
+
"or pass one via the `webSocket` option.");
|
|
88
|
+
}
|
|
89
|
+
this.channel = options.channel;
|
|
90
|
+
this.token = options.token;
|
|
91
|
+
this.baseUrl = options.baseUrl ?? DEFAULT_REALTIME_BASE_URL;
|
|
92
|
+
this.reconnectEnabled = options.reconnect ?? true;
|
|
93
|
+
this.webSocketImpl = webSocketImpl;
|
|
94
|
+
this.lastMessageId = options.sinceId;
|
|
95
|
+
this.connect();
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Register a handler. Returns a function that unsubscribes it.
|
|
99
|
+
*/
|
|
100
|
+
on(event, handler) {
|
|
101
|
+
this.handlers[event].add(handler);
|
|
102
|
+
return () => {
|
|
103
|
+
this.handlers[event].delete(handler);
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Publish a message to the channel over the socket. Requires the token
|
|
108
|
+
* to carry the `publish` capability for this channel. Throws while
|
|
109
|
+
* disconnected.
|
|
110
|
+
*/
|
|
111
|
+
publish(event, data) {
|
|
112
|
+
this.send({ type: "publish", event, data });
|
|
113
|
+
}
|
|
114
|
+
/** Enter the channel's presence set. Requires the `presence` capability. */
|
|
115
|
+
enterPresence(data) {
|
|
116
|
+
this.send({ type: "presence", action: "enter", data });
|
|
117
|
+
}
|
|
118
|
+
/** Update this client's presence data. Requires the `presence` capability. */
|
|
119
|
+
updatePresence(data) {
|
|
120
|
+
this.send({ type: "presence", action: "update", data });
|
|
121
|
+
}
|
|
122
|
+
/** Leave the channel's presence set. */
|
|
123
|
+
leavePresence() {
|
|
124
|
+
this.send({ type: "presence", action: "leave" });
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Permanently close the channel. Cancels any pending reconnect; a final
|
|
128
|
+
* `disconnected` event with `willReconnect: false` is emitted when the
|
|
129
|
+
* socket closes.
|
|
130
|
+
*/
|
|
131
|
+
close() {
|
|
132
|
+
if (this.closed) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
this.closed = true;
|
|
136
|
+
if (this.reconnectTimer !== null) {
|
|
137
|
+
clearTimeout(this.reconnectTimer);
|
|
138
|
+
this.reconnectTimer = null;
|
|
139
|
+
}
|
|
140
|
+
this.socket?.close(1000, "client closed");
|
|
141
|
+
}
|
|
142
|
+
connect() {
|
|
143
|
+
const url = toConnectUrl(this.baseUrl, this.channel, this.token, this.lastMessageId);
|
|
144
|
+
const socket = new this.webSocketImpl(url);
|
|
145
|
+
this.socket = socket;
|
|
146
|
+
socket.addEventListener("open", () => {
|
|
147
|
+
if (socket !== this.socket)
|
|
148
|
+
return;
|
|
149
|
+
this.reconnectAttempts = 0;
|
|
150
|
+
});
|
|
151
|
+
socket.addEventListener("message", (event) => {
|
|
152
|
+
if (socket !== this.socket)
|
|
153
|
+
return;
|
|
154
|
+
this.handleFrame(event.data);
|
|
155
|
+
});
|
|
156
|
+
socket.addEventListener("close", (event) => {
|
|
157
|
+
if (socket !== this.socket)
|
|
158
|
+
return;
|
|
159
|
+
this.socket = null;
|
|
160
|
+
this.handleClose(event);
|
|
161
|
+
});
|
|
162
|
+
// Transport-level errors are always followed by a close event, which
|
|
163
|
+
// drives the `disconnected` emit and reconnection; protocol errors
|
|
164
|
+
// arrive as `error` frames. Nothing to surface here.
|
|
165
|
+
socket.addEventListener("error", () => { });
|
|
166
|
+
}
|
|
167
|
+
handleFrame(data) {
|
|
168
|
+
if (typeof data !== "string") {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
let frame;
|
|
172
|
+
try {
|
|
173
|
+
frame = JSON.parse(data);
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
switch (frame.type) {
|
|
179
|
+
case "connected":
|
|
180
|
+
this.emit("connected", { channel: frame.channel });
|
|
181
|
+
break;
|
|
182
|
+
case "message":
|
|
183
|
+
this.lastMessageId = frame.id;
|
|
184
|
+
this.emit("message", {
|
|
185
|
+
id: frame.id,
|
|
186
|
+
channel: frame.channel,
|
|
187
|
+
event: frame.event,
|
|
188
|
+
data: frame.data,
|
|
189
|
+
publishedAt: frame.publishedAt,
|
|
190
|
+
});
|
|
191
|
+
break;
|
|
192
|
+
case "presence":
|
|
193
|
+
this.emit("presence", {
|
|
194
|
+
action: frame.action,
|
|
195
|
+
channel: frame.channel,
|
|
196
|
+
clientId: frame.clientId,
|
|
197
|
+
data: frame.data,
|
|
198
|
+
at: frame.at,
|
|
199
|
+
});
|
|
200
|
+
break;
|
|
201
|
+
case "error":
|
|
202
|
+
this.emit("error", { code: frame.code, message: frame.message });
|
|
203
|
+
break;
|
|
204
|
+
case "pong":
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
handleClose(event) {
|
|
209
|
+
const willReconnect = !this.closed && this.reconnectEnabled;
|
|
210
|
+
this.emit("disconnected", {
|
|
211
|
+
code: event.code ?? null,
|
|
212
|
+
reason: event.reason ?? null,
|
|
213
|
+
willReconnect,
|
|
214
|
+
});
|
|
215
|
+
if (willReconnect) {
|
|
216
|
+
this.scheduleReconnect();
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
scheduleReconnect() {
|
|
220
|
+
const exponential = Math.min(RECONNECT_BASE_DELAY_MS * 2 ** this.reconnectAttempts, RECONNECT_MAX_DELAY_MS);
|
|
221
|
+
// Jitter into [exponential / 2, exponential] to avoid thundering herds.
|
|
222
|
+
const delay = exponential / 2 + Math.random() * (exponential / 2);
|
|
223
|
+
this.reconnectAttempts += 1;
|
|
224
|
+
this.reconnectTimer = setTimeout(() => {
|
|
225
|
+
this.reconnectTimer = null;
|
|
226
|
+
if (!this.closed) {
|
|
227
|
+
this.connect();
|
|
228
|
+
}
|
|
229
|
+
}, delay);
|
|
230
|
+
}
|
|
231
|
+
send(frame) {
|
|
232
|
+
if (this.closed) {
|
|
233
|
+
throw new Error("RealtimeChannel is closed.");
|
|
234
|
+
}
|
|
235
|
+
const socket = this.socket;
|
|
236
|
+
if (!socket || socket.readyState !== WEB_SOCKET_OPEN) {
|
|
237
|
+
throw new Error("RealtimeChannel is not connected. Sends while disconnected are " +
|
|
238
|
+
"rejected — wait for the next `connected` event.");
|
|
239
|
+
}
|
|
240
|
+
socket.send(JSON.stringify(frame));
|
|
241
|
+
}
|
|
242
|
+
emit(event, payload) {
|
|
243
|
+
for (const handler of [...this.handlers[event]]) {
|
|
244
|
+
handler(payload);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
package/dist/types.d.ts
CHANGED
|
@@ -559,4 +559,46 @@ export interface CreateVideoWatermarkInput {
|
|
|
559
559
|
scale?: number;
|
|
560
560
|
position?: VideoWatermarkPosition;
|
|
561
561
|
}
|
|
562
|
+
export type RealtimeCapability = "subscribe" | "publish" | "presence";
|
|
563
|
+
export interface PublishRealtimeMessageInput {
|
|
564
|
+
/** Event name delivered to subscribers (e.g. "order.updated"). */
|
|
565
|
+
event: string;
|
|
566
|
+
/** JSON-serializable payload delivered as-is to subscribers. */
|
|
567
|
+
data?: unknown;
|
|
568
|
+
}
|
|
569
|
+
export interface PublishRealtimeBatchInput {
|
|
570
|
+
/** Up to 100 messages per request (server-enforced). */
|
|
571
|
+
messages: Array<{
|
|
572
|
+
channel: string;
|
|
573
|
+
event: string;
|
|
574
|
+
data?: unknown;
|
|
575
|
+
}>;
|
|
576
|
+
}
|
|
577
|
+
export interface RealtimeMessageSummary {
|
|
578
|
+
id: string;
|
|
579
|
+
channel: string;
|
|
580
|
+
event: string;
|
|
581
|
+
data: unknown;
|
|
582
|
+
publishedAt: string;
|
|
583
|
+
}
|
|
584
|
+
export interface RealtimePresenceMember {
|
|
585
|
+
clientId: string;
|
|
586
|
+
data: unknown;
|
|
587
|
+
joinedAt: string;
|
|
588
|
+
}
|
|
589
|
+
export interface MintRealtimeTokenInput {
|
|
590
|
+
/** Stable subscriber identity; surfaces as the presence `clientId`. */
|
|
591
|
+
clientId: string;
|
|
592
|
+
/**
|
|
593
|
+
* Capability grants keyed by channel name or trailing-wildcard pattern
|
|
594
|
+
* (e.g. `"admin:*"`).
|
|
595
|
+
*/
|
|
596
|
+
capabilities: Record<string, ReadonlyArray<RealtimeCapability>>;
|
|
597
|
+
/** Token lifetime in seconds. Default 3600, max 86400. */
|
|
598
|
+
ttlSeconds?: number;
|
|
599
|
+
}
|
|
600
|
+
export interface RealtimeTokenSummary {
|
|
601
|
+
token: string;
|
|
602
|
+
expiresAt: string;
|
|
603
|
+
}
|
|
562
604
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|