@wavezfm/api 0.1.2 → 0.1.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.
@@ -1,4 +1,19 @@
1
- import { createSdkMessageFormatter } from "../core/i18n";
1
+ import { createSdkMessageFormatter } from "../core/i18n.js";
2
+ const ROOM_BOT_NON_RECONNECTABLE_CLOSE_CODES = new Set([
3
+ 1002,
4
+ 1003,
5
+ 1007,
6
+ 1008,
7
+ 1009,
8
+ 4401,
9
+ 4403,
10
+ 4404,
11
+ 4408,
12
+ 4410,
13
+ ]);
14
+ const DEFAULT_RECONNECT_DELAY_MS = 1_500;
15
+ const DEFAULT_RECONNECT_MAX_DELAY_MS = 12_000;
16
+ const RECONNECT_BACKOFF_FACTOR = 1.8;
2
17
  function createRequestId() {
3
18
  return `req_${Date.now().toString(36)}_${Math.random()
4
19
  .toString(36)
@@ -7,6 +22,24 @@ function createRequestId() {
7
22
  function createTimestamp() {
8
23
  return new Date().toISOString();
9
24
  }
25
+ function getCloseCode(event) {
26
+ if (event &&
27
+ typeof event === "object" &&
28
+ "code" in event &&
29
+ typeof event.code === "number") {
30
+ return event.code;
31
+ }
32
+ return null;
33
+ }
34
+ function getCloseReason(event) {
35
+ if (event &&
36
+ typeof event === "object" &&
37
+ "reason" in event &&
38
+ typeof event.reason === "string") {
39
+ return event.reason;
40
+ }
41
+ return "";
42
+ }
10
43
  function normalizeWsBaseURL(baseURL) {
11
44
  const url = new URL(baseURL);
12
45
  url.protocol = url.protocol === "https:" ? "wss:" : "ws:";
@@ -50,6 +83,10 @@ export function createRoomBotRealtimeClient(options) {
50
83
  wsUrl.searchParams.set("botToken", options.botToken);
51
84
  let socket = null;
52
85
  let detachListeners = [];
86
+ let reconnectTimeout = null;
87
+ let reconnectAttempt = 0;
88
+ let manualDisconnect = false;
89
+ let connectPromise = null;
53
90
  const emit = (event, packet) => {
54
91
  const handlers = listeners.get(event);
55
92
  if (!handlers || handlers.size === 0) {
@@ -72,18 +109,61 @@ export function createRoomBotRealtimeClient(options) {
72
109
  payload,
73
110
  };
74
111
  if (options.logging) {
75
- console.info("[Wavez Room Bot WS] ->", packet.event, packet.payload);
112
+ console.info("[WavezFM Room Bot WS] ->", packet.event, packet.payload);
76
113
  }
77
114
  socket.send(JSON.stringify(packet));
78
115
  };
79
- const disconnect = (code, reason) => {
116
+ const clearReconnectTimeout = () => {
117
+ if (reconnectTimeout === null) {
118
+ return;
119
+ }
120
+ clearTimeout(reconnectTimeout);
121
+ reconnectTimeout = null;
122
+ };
123
+ const cleanupSocket = (targetSocket) => {
124
+ if (targetSocket && socket && targetSocket !== socket) {
125
+ return;
126
+ }
80
127
  for (const detach of detachListeners) {
81
128
  detach();
82
129
  }
83
130
  detachListeners = [];
84
- socket?.close(code, reason);
85
131
  socket = null;
86
132
  };
133
+ const shouldReconnect = (closeCode) => (options.autoReconnect ?? true) &&
134
+ !manualDisconnect &&
135
+ !ROOM_BOT_NON_RECONNECTABLE_CLOSE_CODES.has(closeCode ?? -1);
136
+ const scheduleReconnect = (closeCode, closeReason) => {
137
+ if (!shouldReconnect(closeCode) || reconnectTimeout !== null) {
138
+ return;
139
+ }
140
+ const delayMs = Math.min(options.reconnectMaxDelayMs ?? DEFAULT_RECONNECT_MAX_DELAY_MS, Math.round((options.reconnectDelayMs ?? DEFAULT_RECONNECT_DELAY_MS) *
141
+ Math.pow(RECONNECT_BACKOFF_FACTOR, reconnectAttempt)));
142
+ reconnectAttempt += 1;
143
+ if (options.logging) {
144
+ console.warn("[WavezFM Room Bot WS] reconnect scheduled", {
145
+ closeCode,
146
+ closeReason,
147
+ delayMs,
148
+ reconnectAttempt,
149
+ });
150
+ }
151
+ reconnectTimeout = setTimeout(() => {
152
+ reconnectTimeout = null;
153
+ void connect().catch((error) => {
154
+ if (options.logging) {
155
+ console.error("[WavezFM Room Bot WS] reconnect failed", error);
156
+ }
157
+ });
158
+ }, delayMs);
159
+ };
160
+ const disconnect = (code, reason) => {
161
+ manualDisconnect = true;
162
+ clearReconnectTimeout();
163
+ const activeSocket = socket;
164
+ cleanupSocket(activeSocket);
165
+ activeSocket?.close(code, reason);
166
+ };
87
167
  const handleMessage = (event) => {
88
168
  const rawData = event &&
89
169
  typeof event === "object" &&
@@ -106,7 +186,7 @@ export function createRoomBotRealtimeClient(options) {
106
186
  return;
107
187
  }
108
188
  if (options.logging) {
109
- console.info("[Wavez Room Bot WS] <-", packet.event, packet.payload);
189
+ console.info("[WavezFM Room Bot WS] <-", packet.event, packet.payload);
110
190
  }
111
191
  emit("packet", packet);
112
192
  emit(packet.event, packet);
@@ -114,58 +194,96 @@ export function createRoomBotRealtimeClient(options) {
114
194
  sendPacket("join_room", { roomId: options.roomId }, "join_room");
115
195
  }
116
196
  };
117
- return {
118
- async connect() {
119
- if (socket && socket.readyState === 1) {
197
+ const connect = async () => {
198
+ if (socket && socket.readyState === 1) {
199
+ return;
200
+ }
201
+ if (connectPromise) {
202
+ return connectPromise;
203
+ }
204
+ manualDisconnect = false;
205
+ clearReconnectTimeout();
206
+ if (socket) {
207
+ const activeSocket = socket;
208
+ cleanupSocket(activeSocket);
209
+ activeSocket.close();
210
+ }
211
+ const nextSocket = socketFactory(wsUrl.toString(), options.protocols);
212
+ socket = nextSocket;
213
+ connectPromise = new Promise((resolve, reject) => {
214
+ if (!nextSocket) {
215
+ reject(new Error(formatMessage("roomBotWebsocketCreateFailed")));
120
216
  return;
121
217
  }
122
- if (socket) {
123
- disconnect();
124
- }
125
- socket = socketFactory(wsUrl.toString(), options.protocols);
126
- await new Promise((resolve, reject) => {
127
- if (!socket) {
128
- reject(new Error(formatMessage("roomBotWebsocketCreateFailed")));
218
+ let settled = false;
219
+ const finishResolve = () => {
220
+ if (settled) {
129
221
  return;
130
222
  }
131
- const openHandler = (event) => {
132
- emit("open", {
133
- type: "ack",
134
- event: "open",
135
- version: "v1",
136
- timestamp: createTimestamp(),
137
- payload: { event },
138
- });
139
- resolve();
140
- };
141
- const errorHandler = (event) => {
142
- emit("socket_error", {
143
- type: "error",
144
- event: "socket_error",
145
- version: "v1",
146
- timestamp: createTimestamp(),
147
- payload: { event },
148
- });
149
- reject(event instanceof Error
223
+ settled = true;
224
+ reconnectAttempt = 0;
225
+ resolve();
226
+ };
227
+ const finishReject = (error) => {
228
+ if (settled) {
229
+ return;
230
+ }
231
+ settled = true;
232
+ reject(error);
233
+ };
234
+ const openHandler = (event) => {
235
+ emit("open", {
236
+ type: "ack",
237
+ event: "open",
238
+ version: "v1",
239
+ timestamp: createTimestamp(),
240
+ payload: { event },
241
+ });
242
+ finishResolve();
243
+ };
244
+ const errorHandler = (event) => {
245
+ emit("socket_error", {
246
+ type: "error",
247
+ event: "socket_error",
248
+ version: "v1",
249
+ timestamp: createTimestamp(),
250
+ payload: { event },
251
+ });
252
+ if (!settled) {
253
+ finishReject(event instanceof Error
150
254
  ? event
151
255
  : new Error(formatMessage("roomBotWebsocketConnectFailed")));
152
- };
153
- detachListeners = [
154
- addSocketListener(socket, "open", openHandler, formatMessage),
155
- addSocketListener(socket, "message", handleMessage, formatMessage),
156
- addSocketListener(socket, "close", (event) => {
157
- emit("close", {
158
- type: "event",
159
- event: "close",
160
- version: "v1",
161
- timestamp: createTimestamp(),
162
- payload: { event },
163
- });
164
- }, formatMessage),
165
- addSocketListener(socket, "error", errorHandler, formatMessage),
166
- ];
167
- });
168
- },
256
+ }
257
+ };
258
+ const closeHandler = (event) => {
259
+ const closeCode = getCloseCode(event);
260
+ const closeReason = getCloseReason(event);
261
+ emit("close", {
262
+ type: "event",
263
+ event: "close",
264
+ version: "v1",
265
+ timestamp: createTimestamp(),
266
+ payload: { event },
267
+ });
268
+ cleanupSocket(nextSocket);
269
+ scheduleReconnect(closeCode, closeReason);
270
+ if (!settled) {
271
+ finishReject(new Error(formatMessage("roomBotWebsocketConnectFailed")));
272
+ }
273
+ };
274
+ detachListeners = [
275
+ addSocketListener(nextSocket, "open", openHandler, formatMessage),
276
+ addSocketListener(nextSocket, "message", handleMessage, formatMessage),
277
+ addSocketListener(nextSocket, "close", closeHandler, formatMessage),
278
+ addSocketListener(nextSocket, "error", errorHandler, formatMessage),
279
+ ];
280
+ }).finally(() => {
281
+ connectPromise = null;
282
+ });
283
+ return connectPromise;
284
+ };
285
+ return {
286
+ connect,
169
287
  disconnect,
170
288
  send(event, payload, requestId = createRequestId()) {
171
289
  sendPacket(event, (payload ?? {}), requestId);
@@ -179,6 +297,18 @@ export function createRoomBotRealtimeClient(options) {
179
297
  ping() {
180
298
  sendPacket("ping", {});
181
299
  },
300
+ sendChat(input, requestId = createRequestId()) {
301
+ sendPacket("send_chat", {
302
+ content: input.content,
303
+ ...(input.replyTo?.id
304
+ ? {
305
+ replyTo: {
306
+ id: input.replyTo.id,
307
+ },
308
+ }
309
+ : {}),
310
+ }, requestId);
311
+ },
182
312
  on(event, handler) {
183
313
  const handlers = listeners.get(event) ?? new Set();
184
314
  handlers.add(handler);
@@ -1 +1 @@
1
- {"version":3,"file":"roomBot.js","sourceRoot":"","sources":["../../src/realtime/roomBot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"roomBot.js","sourceRoot":"","sources":["../../src/realtime/roomBot.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import type { ApiLike, AuthUser, TwoFactorStatus } from "../types";
1
+ import type { ApiLike, AuthUser, TwoFactorStatus } from "../types.js";
2
2
  export declare function createAuthResource(api: ApiLike): {
3
3
  login(input: {
4
4
  email: string;
5
5
  password: string;
6
- }): Promise<import("..").ApiSuccessResponse<{
6
+ }): Promise<import("../types.js").ApiSuccessResponse<{
7
7
  [key: string]: unknown;
8
8
  user?: AuthUser;
9
9
  }>>;
@@ -12,7 +12,7 @@ export declare function createAuthResource(api: ApiLike): {
12
12
  password: string;
13
13
  name: string;
14
14
  username?: string;
15
- }): Promise<import("..").ApiSuccessResponse<{
15
+ }): Promise<import("../types.js").ApiSuccessResponse<{
16
16
  [key: string]: unknown;
17
17
  user?: AuthUser;
18
18
  }>>;
@@ -21,15 +21,15 @@ export declare function createAuthResource(api: ApiLike): {
21
21
  status: number;
22
22
  headers: Headers;
23
23
  }>;
24
- getPendingTwoFactor(): Promise<import("..").ApiSuccessResponse<{
24
+ getPendingTwoFactor(): Promise<import("../types.js").ApiSuccessResponse<{
25
25
  [key: string]: unknown;
26
26
  pending: boolean;
27
27
  method?: string | null;
28
28
  maskedDestination?: string | null;
29
29
  }>>;
30
- sendPendingTwoFactorCode(input?: Record<string, unknown>): Promise<import("..").ApiSuccessResponse<Record<string, unknown>>>;
30
+ sendPendingTwoFactorCode(input?: Record<string, unknown>): Promise<import("../types.js").ApiSuccessResponse<Record<string, unknown>>>;
31
31
  verifyPendingTwoFactor(input: {
32
32
  code: string;
33
- }): Promise<import("..").ApiSuccessResponse<Record<string, unknown>>>;
34
- getTwoFactorStatus(): Promise<import("..").ApiSuccessResponse<TwoFactorStatus>>;
33
+ }): Promise<import("../types.js").ApiSuccessResponse<Record<string, unknown>>>;
34
+ getTwoFactorStatus(): Promise<import("../types.js").ApiSuccessResponse<TwoFactorStatus>>;
35
35
  };
@@ -1,25 +1,25 @@
1
- import type { ApiLike, CheckoutSessionResponse } from "../types";
1
+ import type { ApiLike, CheckoutSessionResponse } from "../types.js";
2
2
  export declare function createBillingResource(api: ApiLike): {
3
3
  createSubscriptionCheckout(input?: {
4
4
  cycle?: string | null;
5
5
  currency?: string | null;
6
6
  returnPath?: string | null;
7
- }): Promise<import("..").ApiSuccessResponse<CheckoutSessionResponse>>;
7
+ }): Promise<import("../types.js").ApiSuccessResponse<CheckoutSessionResponse>>;
8
8
  createDiamondCheckout(input?: {
9
9
  quantity?: number;
10
10
  currency?: string | null;
11
11
  returnPath?: string | null;
12
- }): Promise<import("..").ApiSuccessResponse<CheckoutSessionResponse>>;
12
+ }): Promise<import("../types.js").ApiSuccessResponse<CheckoutSessionResponse>>;
13
13
  createRoomDonationCheckout(roomId: string, input?: {
14
14
  amountCents?: number;
15
15
  locale?: string | null;
16
16
  returnPath?: string | null;
17
- }): Promise<import("..").ApiSuccessResponse<CheckoutSessionResponse>>;
17
+ }): Promise<import("../types.js").ApiSuccessResponse<CheckoutSessionResponse>>;
18
18
  createGlobalDonationCheckout(input?: {
19
19
  amountCents?: number;
20
20
  locale?: string | null;
21
21
  returnPath?: string | null;
22
- }): Promise<import("..").ApiSuccessResponse<CheckoutSessionResponse>>;
22
+ }): Promise<import("../types.js").ApiSuccessResponse<CheckoutSessionResponse>>;
23
23
  createDiamondGiftCheckout(input: {
24
24
  recipientUsername: string;
25
25
  quantity?: number;
@@ -29,7 +29,7 @@ export declare function createBillingResource(api: ApiLike): {
29
29
  anonymous?: boolean;
30
30
  announceInRoom?: boolean;
31
31
  announceRoomSlug?: string | null;
32
- }): Promise<import("..").ApiSuccessResponse<CheckoutSessionResponse>>;
32
+ }): Promise<import("../types.js").ApiSuccessResponse<CheckoutSessionResponse>>;
33
33
  createSubscriptionGiftCheckout(input: {
34
34
  recipientUsername: string;
35
35
  cycle?: string | null;
@@ -39,7 +39,7 @@ export declare function createBillingResource(api: ApiLike): {
39
39
  anonymous?: boolean;
40
40
  announceInRoom?: boolean;
41
41
  announceRoomSlug?: string | null;
42
- }): Promise<import("..").ApiSuccessResponse<CheckoutSessionResponse>>;
43
- listPendingGifts(): Promise<import("..").ApiSuccessResponse<unknown[]>>;
44
- markGiftSeen(giftId: string): Promise<import("..").ApiSuccessResponse<Record<string, unknown>>>;
42
+ }): Promise<import("../types.js").ApiSuccessResponse<CheckoutSessionResponse>>;
43
+ listPendingGifts(): Promise<import("../types.js").ApiSuccessResponse<unknown[]>>;
44
+ markGiftSeen(giftId: string): Promise<import("../types.js").ApiSuccessResponse<Record<string, unknown>>>;
45
45
  };
@@ -1,27 +1,27 @@
1
- import type { ApiLike, ChatMessage } from "../types";
1
+ import type { ApiLike, ChatMessage } from "../types.js";
2
2
  export declare function createChatResource(api: ApiLike): {
3
- getMessages(roomId: string, offset?: number, limit?: number): Promise<import("..").ApiSuccessResponse<{
3
+ getMessages(roomId: string, offset?: number, limit?: number): Promise<import("../types.js").ApiSuccessResponse<{
4
4
  history: boolean;
5
5
  pinnedMessage?: Record<string, unknown> | null;
6
6
  messages: ChatMessage[];
7
7
  }>>;
8
- getMessagesBySlug(slug: string, offset?: number, limit?: number): Promise<import("..").ApiSuccessResponse<Record<string, unknown>>>;
9
- deleteMessage(roomId: string, messageId: string, message?: Record<string, unknown>): Promise<import("..").ApiSuccessResponse<{
8
+ getMessagesBySlug(slug: string, offset?: number, limit?: number): Promise<import("../types.js").ApiSuccessResponse<Record<string, unknown>>>;
9
+ deleteMessage(roomId: string, messageId: string, message?: Record<string, unknown>): Promise<import("../types.js").ApiSuccessResponse<{
10
10
  success: true;
11
11
  }>>;
12
12
  updateMessage(roomId: string, messageId: string, input: {
13
13
  content: string;
14
14
  message?: Record<string, unknown>;
15
- }): Promise<import("..").ApiSuccessResponse<{
15
+ }): Promise<import("../types.js").ApiSuccessResponse<{
16
16
  message: ChatMessage | null;
17
17
  }>>;
18
- pinMessage(roomId: string, messageId: string, message?: Record<string, unknown>): Promise<import("..").ApiSuccessResponse<{
18
+ pinMessage(roomId: string, messageId: string, message?: Record<string, unknown>): Promise<import("../types.js").ApiSuccessResponse<{
19
19
  success: true;
20
20
  }>>;
21
- clearPinnedMessage(roomId: string): Promise<import("..").ApiSuccessResponse<{
21
+ clearPinnedMessage(roomId: string): Promise<import("../types.js").ApiSuccessResponse<{
22
22
  success: true;
23
23
  }>>;
24
- clearChat(roomId: string): Promise<import("..").ApiSuccessResponse<{
24
+ clearChat(roomId: string): Promise<import("../types.js").ApiSuccessResponse<{
25
25
  success: true;
26
26
  }>>;
27
27
  };
@@ -1,23 +1,23 @@
1
- import type { ApiLike, UserProfile } from "../types";
1
+ import type { ApiLike, UserProfile } from "../types.js";
2
2
  export declare function createFriendResource(api: ApiLike): {
3
- list(): Promise<import("..").ApiSuccessResponse<UserProfile[]>>;
4
- pending(): Promise<import("..").ApiSuccessResponse<UserProfile[]>>;
5
- sendRequest(userId: string): Promise<import("..").ApiSuccessResponse<Record<string, unknown>>>;
6
- acceptRequest(requestId: string): Promise<import("..").ApiSuccessResponse<{
3
+ list(): Promise<import("../types.js").ApiSuccessResponse<UserProfile[]>>;
4
+ pending(): Promise<import("../types.js").ApiSuccessResponse<UserProfile[]>>;
5
+ sendRequest(userId: string): Promise<import("../types.js").ApiSuccessResponse<Record<string, unknown>>>;
6
+ acceptRequest(requestId: string): Promise<import("../types.js").ApiSuccessResponse<{
7
7
  success: true;
8
8
  }>>;
9
- rejectRequest(requestId: string): Promise<import("..").ApiSuccessResponse<{
9
+ rejectRequest(requestId: string): Promise<import("../types.js").ApiSuccessResponse<{
10
10
  success: true;
11
11
  }>>;
12
- remove(friendshipId: string): Promise<import("..").ApiSuccessResponse<{
12
+ remove(friendshipId: string): Promise<import("../types.js").ApiSuccessResponse<{
13
13
  success: true;
14
14
  }>>;
15
- follow(userId: string): Promise<import("..").ApiSuccessResponse<{
15
+ follow(userId: string): Promise<import("../types.js").ApiSuccessResponse<{
16
16
  success: true;
17
17
  }>>;
18
- unfollow(userId: string): Promise<import("..").ApiSuccessResponse<{
18
+ unfollow(userId: string): Promise<import("../types.js").ApiSuccessResponse<{
19
19
  success: true;
20
20
  }>>;
21
- followers(): Promise<import("..").ApiSuccessResponse<UserProfile[]>>;
22
- following(): Promise<import("..").ApiSuccessResponse<UserProfile[]>>;
21
+ followers(): Promise<import("../types.js").ApiSuccessResponse<UserProfile[]>>;
22
+ following(): Promise<import("../types.js").ApiSuccessResponse<UserProfile[]>>;
23
23
  };
@@ -1,20 +1,20 @@
1
- import type { ApiLike, MediaSearchResult, PlaylistSummary, PlaylistTrack } from "../types";
1
+ import type { ApiLike, MediaSearchResult, PlaylistSummary, PlaylistTrack } from "../types.js";
2
2
  export declare function createPlaylistResource(api: ApiLike): {
3
- list(): Promise<import("..").ApiSuccessResponse<PlaylistSummary[]>>;
3
+ list(): Promise<import("../types.js").ApiSuccessResponse<PlaylistSummary[]>>;
4
4
  create(input: {
5
5
  name: string;
6
- } | string): Promise<import("..").ApiSuccessResponse<PlaylistSummary>>;
6
+ } | string): Promise<import("../types.js").ApiSuccessResponse<PlaylistSummary>>;
7
7
  update(playlistId: string, input: {
8
8
  name?: string;
9
9
  isActive?: boolean;
10
- }): Promise<import("..").ApiSuccessResponse<{
10
+ }): Promise<import("../types.js").ApiSuccessResponse<{
11
11
  success: true;
12
12
  }>>;
13
- remove(playlistId: string): Promise<import("..").ApiSuccessResponse<{
13
+ remove(playlistId: string): Promise<import("../types.js").ApiSuccessResponse<{
14
14
  success: true;
15
15
  }>>;
16
- getTracks(playlistId: string): Promise<import("..").ApiSuccessResponse<PlaylistTrack[]>>;
17
- previewUrl(url: string): Promise<import("..").ApiSuccessResponse<{
16
+ getTracks(playlistId: string): Promise<import("../types.js").ApiSuccessResponse<PlaylistTrack[]>>;
17
+ previewUrl(url: string): Promise<import("../types.js").ApiSuccessResponse<{
18
18
  kind: "track";
19
19
  sourceId: string;
20
20
  source: string;
@@ -38,27 +38,27 @@ export declare function createPlaylistResource(api: ApiLike): {
38
38
  artist?: string;
39
39
  durationMs?: number;
40
40
  thumbnailUrl?: string | null;
41
- }): Promise<import("..").ApiSuccessResponse<PlaylistTrack>>;
42
- reorderTracks(playlistId: string, trackIds: string[]): Promise<import("..").ApiSuccessResponse<{
41
+ }): Promise<import("../types.js").ApiSuccessResponse<PlaylistTrack>>;
42
+ reorderTracks(playlistId: string, trackIds: string[]): Promise<import("../types.js").ApiSuccessResponse<{
43
43
  success: true;
44
44
  }>>;
45
- removeTrack(playlistId: string, trackId: string): Promise<import("..").ApiSuccessResponse<{
45
+ removeTrack(playlistId: string, trackId: string): Promise<import("../types.js").ApiSuccessResponse<{
46
46
  success: true;
47
47
  }>>;
48
- listImports(): Promise<import("..").ApiSuccessResponse<unknown[]>>;
49
- getImport(jobId: string): Promise<import("..").ApiSuccessResponse<Record<string, unknown>>>;
48
+ listImports(): Promise<import("../types.js").ApiSuccessResponse<unknown[]>>;
49
+ getImport(jobId: string): Promise<import("../types.js").ApiSuccessResponse<Record<string, unknown>>>;
50
50
  startSpotifyImport(input: {
51
51
  playlistId: string;
52
52
  url: string;
53
- }): Promise<import("..").ApiSuccessResponse<Record<string, unknown>>>;
53
+ }): Promise<import("../types.js").ApiSuccessResponse<Record<string, unknown>>>;
54
54
  importYouTubePlaylist(input: {
55
55
  playlistId: string;
56
56
  url: string;
57
- }): Promise<import("..").ApiSuccessResponse<Record<string, unknown>>>;
57
+ }): Promise<import("../types.js").ApiSuccessResponse<Record<string, unknown>>>;
58
58
  importSoundCloudPlaylist(input: {
59
59
  playlistId: string;
60
60
  url: string;
61
- }): Promise<import("..").ApiSuccessResponse<Record<string, unknown>>>;
62
- cancelImport(jobId: string): Promise<import("..").ApiSuccessResponse<Record<string, unknown>>>;
63
- searchPreview(query: string, source?: string, limit?: number): Promise<import("..").ApiSuccessResponse<MediaSearchResult[]>>;
61
+ }): Promise<import("../types.js").ApiSuccessResponse<Record<string, unknown>>>;
62
+ cancelImport(jobId: string): Promise<import("../types.js").ApiSuccessResponse<Record<string, unknown>>>;
63
+ searchPreview(query: string, source?: string, limit?: number): Promise<import("../types.js").ApiSuccessResponse<MediaSearchResult[]>>;
64
64
  };
@@ -1,50 +1,55 @@
1
- import type { ApiLike, RoomBotPermission, RoomBotToken, RoomSummary } from "../types";
1
+ import type { ApiLike, ApiSuccessResponse, RoomBotPermission, RoomQueueSnapshot, RoomQueueStatusResponse, RoomBotToken, RoomSummary } from "../types.js";
2
2
  export declare function createRoomResource(api: ApiLike): {
3
- list(): Promise<import("..").ApiSuccessResponse<RoomSummary[]>>;
3
+ list(): Promise<ApiSuccessResponse<RoomSummary[]>>;
4
4
  featured(): Promise<{
5
5
  data: RoomSummary[];
6
6
  status: number;
7
7
  headers: Headers;
8
8
  }>;
9
- getBySlug(slug: string): Promise<import("..").ApiSuccessResponse<RoomSummary>>;
10
- getJoinPreview(slug: string): Promise<import("..").ApiSuccessResponse<Record<string, unknown>>>;
11
- getWaitlist(slug: string): Promise<import("..").ApiSuccessResponse<Record<string, unknown>>>;
9
+ getBySlug(slug: string): Promise<ApiSuccessResponse<RoomSummary>>;
10
+ getJoinPreview(slug: string): Promise<ApiSuccessResponse<Record<string, unknown>>>;
11
+ getWaitlist(slug: string): Promise<ApiSuccessResponse<RoomQueueStatusResponse>>;
12
+ getQueueStatus(slug: string, options?: {
13
+ viewerUserId?: string | null;
14
+ viewerPublicId?: number | null;
15
+ authMode?: "none" | "auth-token";
16
+ }): Promise<ApiSuccessResponse<RoomQueueSnapshot>>;
12
17
  create(input: {
13
18
  name: string;
14
19
  slug: string;
15
20
  description?: string;
16
21
  capacity?: number;
17
22
  isPrivate?: boolean;
18
- }): Promise<import("..").ApiSuccessResponse<RoomSummary>>;
19
- join(roomIdOrSlug: string): Promise<import("..").ApiSuccessResponse<Record<string, unknown>>>;
20
- favorite(roomId: string): Promise<import("..").ApiSuccessResponse<void>>;
21
- unfavorite(roomId: string): Promise<import("..").ApiSuccessResponse<void>>;
22
- getManagement(roomId: string): Promise<import("..").ApiSuccessResponse<Record<string, unknown>>>;
23
+ }): Promise<ApiSuccessResponse<RoomSummary>>;
24
+ join(roomIdOrSlug: string): Promise<ApiSuccessResponse<Record<string, unknown>>>;
25
+ favorite(roomId: string): Promise<ApiSuccessResponse<void>>;
26
+ unfavorite(roomId: string): Promise<ApiSuccessResponse<void>>;
27
+ getManagement(roomId: string): Promise<ApiSuccessResponse<Record<string, unknown>>>;
23
28
  createBotToken(roomId: string, input: {
24
29
  botName: string;
25
30
  botAvatarUrl?: string;
26
31
  commandPrefix?: string;
27
32
  permissions?: RoomBotPermission[];
28
33
  expiresInHours?: number;
29
- }): Promise<import("..").ApiSuccessResponse<RoomBotToken>>;
30
- listEmojis(roomId: string): Promise<import("..").ApiSuccessResponse<unknown[]>>;
31
- listAuditLogs(roomId: string, limit?: number): Promise<import("..").ApiSuccessResponse<{
34
+ }): Promise<ApiSuccessResponse<RoomBotToken>>;
35
+ listEmojis(roomId: string): Promise<ApiSuccessResponse<unknown[]>>;
36
+ listAuditLogs(roomId: string, limit?: number): Promise<ApiSuccessResponse<{
32
37
  logs: unknown[];
33
38
  }>>;
34
- updateSettings(roomId: string, input: Record<string, unknown>): Promise<import("..").ApiSuccessResponse<{
39
+ updateSettings(roomId: string, input: Record<string, unknown>): Promise<ApiSuccessResponse<{
35
40
  room: Record<string, unknown>;
36
41
  }>>;
37
42
  updateLinkFilters(roomId: string, input: {
38
43
  blockAllLinks: boolean;
39
44
  blockedLinkPatterns: string[];
40
45
  commandAnnouncement?: Record<string, unknown>;
41
- }): Promise<import("..").ApiSuccessResponse<{
46
+ }): Promise<ApiSuccessResponse<{
42
47
  room: Record<string, unknown>;
43
48
  }>>;
44
- setRole(roomId: string, userId: string, role: string): Promise<import("..").ApiSuccessResponse<Record<string, unknown>>>;
45
- setQueueAccess(roomId: string, userId: string, blocked: boolean): Promise<import("..").ApiSuccessResponse<Record<string, unknown>>>;
46
- unban(roomId: string, userId: string): Promise<import("..").ApiSuccessResponse<Record<string, unknown>>>;
47
- createEmoji(roomId: string, input: Record<string, unknown>): Promise<import("..").ApiSuccessResponse<Record<string, unknown>>>;
48
- updateEmoji(roomId: string, emojiId: string, input: Record<string, unknown>): Promise<import("..").ApiSuccessResponse<Record<string, unknown>>>;
49
- deleteEmoji(roomId: string, emojiId: string): Promise<import("..").ApiSuccessResponse<Record<string, unknown>>>;
49
+ setRole(roomId: string, userId: string, role: string): Promise<ApiSuccessResponse<Record<string, unknown>>>;
50
+ setQueueAccess(roomId: string, userId: string, blocked: boolean): Promise<ApiSuccessResponse<Record<string, unknown>>>;
51
+ unban(roomId: string, userId: string): Promise<ApiSuccessResponse<Record<string, unknown>>>;
52
+ createEmoji(roomId: string, input: Record<string, unknown>): Promise<ApiSuccessResponse<Record<string, unknown>>>;
53
+ updateEmoji(roomId: string, emojiId: string, input: Record<string, unknown>): Promise<ApiSuccessResponse<Record<string, unknown>>>;
54
+ deleteEmoji(roomId: string, emojiId: string): Promise<ApiSuccessResponse<Record<string, unknown>>>;
50
55
  };