@broadcastingplatforms/sdk 0.0.0-dev.52fbff9
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/dist/auth-CSkJb9Wc.d.mts +1180 -0
- package/dist/auth-CSkJb9Wc.d.ts +1180 -0
- package/dist/auth.d.mts +1 -0
- package/dist/auth.d.ts +1 -0
- package/dist/auth.js +456 -0
- package/dist/auth.mjs +433 -0
- package/dist/base-client-BHrP5nb_.d.ts +70 -0
- package/dist/base-client-BbMR6ZrV.d.mts +70 -0
- package/dist/browser-client.d.mts +47 -0
- package/dist/browser-client.d.ts +47 -0
- package/dist/browser-client.js +1983 -0
- package/dist/browser-client.mjs +1952 -0
- package/dist/channels.d.mts +1 -0
- package/dist/channels.d.ts +1 -0
- package/dist/channels.js +78 -0
- package/dist/channels.mjs +55 -0
- package/dist/chat.d.mts +1 -0
- package/dist/chat.d.ts +1 -0
- package/dist/chat.js +105 -0
- package/dist/chat.mjs +80 -0
- package/dist/errors.d.mts +68 -0
- package/dist/errors.d.ts +68 -0
- package/dist/errors.js +151 -0
- package/dist/errors.mjs +127 -0
- package/dist/http.d.mts +1 -0
- package/dist/http.d.ts +1 -0
- package/dist/http.js +323 -0
- package/dist/http.mjs +298 -0
- package/dist/index.d.mts +7 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +2072 -0
- package/dist/index.mjs +2025 -0
- package/dist/realtime.d.mts +9 -0
- package/dist/realtime.d.ts +9 -0
- package/dist/realtime.js +1050 -0
- package/dist/realtime.mjs +1021 -0
- package/dist/resource.d.mts +1 -0
- package/dist/resource.d.ts +1 -0
- package/dist/resource.js +52 -0
- package/dist/resource.mjs +27 -0
- package/dist/server-client.d.mts +60 -0
- package/dist/server-client.d.ts +60 -0
- package/dist/server-client.js +1984 -0
- package/dist/server-client.mjs +1954 -0
- package/dist/storage.d.mts +149 -0
- package/dist/storage.d.ts +149 -0
- package/dist/storage.js +243 -0
- package/dist/storage.mjs +211 -0
- package/dist/streams.d.mts +1 -0
- package/dist/streams.d.ts +1 -0
- package/dist/streams.js +267 -0
- package/dist/streams.mjs +242 -0
- package/dist/types.d.mts +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.js +19 -0
- package/dist/types.mjs +1 -0
- package/package.json +139 -0
package/dist/http.mjs
ADDED
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
+
|
|
5
|
+
// src/errors.ts
|
|
6
|
+
var SDKError = class extends Error {
|
|
7
|
+
/**
|
|
8
|
+
* Construct an SDKError. Signature is compatible with Error.
|
|
9
|
+
* You can pass in a message or an options object, as with the Error constructor.
|
|
10
|
+
* Additional fields (code, etc) may be added via the second argument.
|
|
11
|
+
*/
|
|
12
|
+
constructor(message, details = {}) {
|
|
13
|
+
const resolvedMessage = message ?? (typeof details.message === "string" ? details.message : "Unknown error");
|
|
14
|
+
super(resolvedMessage);
|
|
15
|
+
/**
|
|
16
|
+
* Canonical SDK error code.
|
|
17
|
+
*/
|
|
18
|
+
__publicField(this, "code");
|
|
19
|
+
/**
|
|
20
|
+
* HTTP status code if available.
|
|
21
|
+
*/
|
|
22
|
+
__publicField(this, "statusCode");
|
|
23
|
+
/**
|
|
24
|
+
* End-user safe message.
|
|
25
|
+
*/
|
|
26
|
+
__publicField(this, "userMessage");
|
|
27
|
+
/**
|
|
28
|
+
* Optional request metadata (null when unavailable).
|
|
29
|
+
*/
|
|
30
|
+
__publicField(this, "request");
|
|
31
|
+
/**
|
|
32
|
+
* Optional response metadata (null when unavailable).
|
|
33
|
+
*/
|
|
34
|
+
__publicField(this, "response");
|
|
35
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
36
|
+
if (details && typeof details === "object") {
|
|
37
|
+
for (const [key, value] of Object.entries(details)) {
|
|
38
|
+
if (!["name", "message", "stack"].includes(key)) {
|
|
39
|
+
this[key] = value;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
this.name = "SDKError";
|
|
44
|
+
this.code = details.code ?? "unknown_error";
|
|
45
|
+
this.statusCode = typeof details.statusCode === "number" ? details.statusCode : void 0;
|
|
46
|
+
this.userMessage = typeof details.userMessage === "string" ? details.userMessage : this.message;
|
|
47
|
+
this.request = details.request ?? null;
|
|
48
|
+
this.response = details.response ?? null;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Serialize the error into a plain object, preserving extra fields.
|
|
52
|
+
*/
|
|
53
|
+
toJSON() {
|
|
54
|
+
const extras = { ...this };
|
|
55
|
+
delete extras.code;
|
|
56
|
+
delete extras.statusCode;
|
|
57
|
+
delete extras.message;
|
|
58
|
+
delete extras.userMessage;
|
|
59
|
+
delete extras.request;
|
|
60
|
+
delete extras.response;
|
|
61
|
+
delete extras.form;
|
|
62
|
+
delete extras.cause;
|
|
63
|
+
return {
|
|
64
|
+
...extras,
|
|
65
|
+
code: this.code,
|
|
66
|
+
statusCode: this.statusCode,
|
|
67
|
+
message: this.message,
|
|
68
|
+
userMessage: this.userMessage,
|
|
69
|
+
request: this.request,
|
|
70
|
+
response: this.response
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
var STATUS_CODE_DEFAULTS = {
|
|
75
|
+
401: {
|
|
76
|
+
code: "authentication_required",
|
|
77
|
+
message: "Authentication required",
|
|
78
|
+
userMessage: "Please log in to continue. Your session may have expired."
|
|
79
|
+
},
|
|
80
|
+
403: {
|
|
81
|
+
code: "permission_denied",
|
|
82
|
+
message: "Permission denied",
|
|
83
|
+
userMessage: "You do not have permission to perform this action."
|
|
84
|
+
},
|
|
85
|
+
404: {
|
|
86
|
+
code: "not_found",
|
|
87
|
+
message: "Resource not found",
|
|
88
|
+
userMessage: "The requested resource was not found."
|
|
89
|
+
},
|
|
90
|
+
422: {
|
|
91
|
+
code: "validation_failed",
|
|
92
|
+
message: "Validation failed",
|
|
93
|
+
userMessage: "The provided information is invalid. Please check your input and try again."
|
|
94
|
+
},
|
|
95
|
+
429: {
|
|
96
|
+
code: "rate_limited",
|
|
97
|
+
message: "Rate limit exceeded",
|
|
98
|
+
userMessage: "Too many requests. Please wait a moment and try again."
|
|
99
|
+
},
|
|
100
|
+
500: {
|
|
101
|
+
code: "server_error",
|
|
102
|
+
message: "Internal server error",
|
|
103
|
+
userMessage: "Something went wrong on our end. Please try again later."
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
var DEFAULT_ERROR = {
|
|
107
|
+
code: "unknown_error",
|
|
108
|
+
userMessage: "An unexpected error occurred. Please try again."
|
|
109
|
+
};
|
|
110
|
+
function createSdkError(message, details = {}) {
|
|
111
|
+
const statusCode = details.response?.status;
|
|
112
|
+
const statusValues = statusCode && STATUS_CODE_DEFAULTS[statusCode] ? STATUS_CODE_DEFAULTS[statusCode] : DEFAULT_ERROR;
|
|
113
|
+
const enrichedDetails = {
|
|
114
|
+
...details,
|
|
115
|
+
statusCode,
|
|
116
|
+
code: details.code ?? statusValues.code,
|
|
117
|
+
userMessage: details.userMessage ?? statusValues.userMessage,
|
|
118
|
+
request: details.request ?? null,
|
|
119
|
+
response: details.response ?? null
|
|
120
|
+
};
|
|
121
|
+
return new SDKError(message, enrichedDetails);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// src/http.ts
|
|
125
|
+
var resolveFetch = (provided) => {
|
|
126
|
+
if (provided) {
|
|
127
|
+
return provided.bind(globalThis);
|
|
128
|
+
}
|
|
129
|
+
if (typeof fetch === "function") {
|
|
130
|
+
return fetch.bind(globalThis);
|
|
131
|
+
}
|
|
132
|
+
throw createSdkError(
|
|
133
|
+
"Fetch implementation not found. Provide options.fetch when running outside Node 22+ or the browser."
|
|
134
|
+
);
|
|
135
|
+
};
|
|
136
|
+
var redactRequestMetadata = (request) => {
|
|
137
|
+
const redacted = request.clone();
|
|
138
|
+
redacted.headers.delete("authorization");
|
|
139
|
+
return redacted;
|
|
140
|
+
};
|
|
141
|
+
var removeContentTypeHeader = (headers) => {
|
|
142
|
+
for (const key of Object.keys(headers)) {
|
|
143
|
+
if (key.toLowerCase() === "content-type") {
|
|
144
|
+
delete headers[key];
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
var normalizeHeaders = (headers) => {
|
|
149
|
+
if (!headers) {
|
|
150
|
+
return {};
|
|
151
|
+
}
|
|
152
|
+
if (headers instanceof Headers) {
|
|
153
|
+
return Object.fromEntries(headers.entries());
|
|
154
|
+
}
|
|
155
|
+
if (Array.isArray(headers)) {
|
|
156
|
+
return Object.fromEntries(headers);
|
|
157
|
+
}
|
|
158
|
+
return { ...headers };
|
|
159
|
+
};
|
|
160
|
+
var HttpClient = class {
|
|
161
|
+
/**
|
|
162
|
+
* Create a new HTTP client instance.
|
|
163
|
+
*/
|
|
164
|
+
constructor(options) {
|
|
165
|
+
__publicField(this, "baseUrl");
|
|
166
|
+
__publicField(this, "defaultHeaders");
|
|
167
|
+
__publicField(this, "fetcher");
|
|
168
|
+
__publicField(this, "beforeRequestHooks", []);
|
|
169
|
+
this.baseUrl = options.baseUrl.replace(/\/+$/, "");
|
|
170
|
+
this.defaultHeaders = {
|
|
171
|
+
"Content-Type": "application/json",
|
|
172
|
+
Accept: "application/json",
|
|
173
|
+
...options.headers
|
|
174
|
+
};
|
|
175
|
+
this.fetcher = resolveFetch(options.fetch);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Register a hook that runs before each request.
|
|
179
|
+
*/
|
|
180
|
+
onBeforeRequest(hook) {
|
|
181
|
+
this.beforeRequestHooks = [...this.beforeRequestHooks, hook];
|
|
182
|
+
return () => {
|
|
183
|
+
this.beforeRequestHooks = this.beforeRequestHooks.filter(
|
|
184
|
+
(existing) => existing !== hook
|
|
185
|
+
);
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Execute an HTTP request and return the parsed response.
|
|
190
|
+
*/
|
|
191
|
+
async request(path, options = {}) {
|
|
192
|
+
const { data } = await this.requestWithMetadata(path, options);
|
|
193
|
+
return data;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Execute an HTTP request and return the response with request metadata.
|
|
197
|
+
*/
|
|
198
|
+
async requestWithMetadata(path, options = {}) {
|
|
199
|
+
const url = /^https?:\/\//i.test(path) ? path : `${this.baseUrl}${path.startsWith("/") ? path : `/${path}`}`;
|
|
200
|
+
const method = (options.method ?? "GET").toUpperCase();
|
|
201
|
+
const headers = {
|
|
202
|
+
...this.defaultHeaders,
|
|
203
|
+
...options.headers
|
|
204
|
+
};
|
|
205
|
+
const hasExplicitContentType = Object.keys(options.headers ?? {}).some(
|
|
206
|
+
(key) => key.toLowerCase() === "content-type"
|
|
207
|
+
);
|
|
208
|
+
let request = {
|
|
209
|
+
url,
|
|
210
|
+
init: {
|
|
211
|
+
...options,
|
|
212
|
+
method,
|
|
213
|
+
headers
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
request = await this.beforeRequestHooks.reduce(
|
|
217
|
+
async (pendingRequest, hook) => {
|
|
218
|
+
const currentRequest = await pendingRequest;
|
|
219
|
+
const result = await hook(currentRequest);
|
|
220
|
+
return result ?? currentRequest;
|
|
221
|
+
},
|
|
222
|
+
Promise.resolve(request)
|
|
223
|
+
);
|
|
224
|
+
const normalizedHeaders = normalizeHeaders(request.init.headers);
|
|
225
|
+
const resolvedMethod = (request.init.method ?? method).toUpperCase();
|
|
226
|
+
const hasBody = request.init.body !== void 0 && request.init.body !== null;
|
|
227
|
+
if (!hasBody && !hasExplicitContentType && (resolvedMethod === "GET" || resolvedMethod === "HEAD")) {
|
|
228
|
+
removeContentTypeHeader(normalizedHeaders);
|
|
229
|
+
}
|
|
230
|
+
request = {
|
|
231
|
+
...request,
|
|
232
|
+
init: {
|
|
233
|
+
...request.init,
|
|
234
|
+
method: resolvedMethod,
|
|
235
|
+
headers: normalizedHeaders
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
const requestMetadata = new Request(request.url, request.init);
|
|
239
|
+
let response = null;
|
|
240
|
+
try {
|
|
241
|
+
response = await this.fetcher(request.url, request.init);
|
|
242
|
+
const contentType = response.headers.get("content-type") ?? "";
|
|
243
|
+
const isJson = contentType.includes("application/json");
|
|
244
|
+
if (!response.ok) {
|
|
245
|
+
const payload = isJson ? await response.json().catch(() => void 0) : await response.text();
|
|
246
|
+
const payloadObject = payload && typeof payload === "object" && !Array.isArray(payload) ? payload : null;
|
|
247
|
+
const fallbackMessage = typeof payload === "string" ? payload : null;
|
|
248
|
+
const message = typeof payloadObject?.message === "string" ? payloadObject.message : fallbackMessage || response.statusText || "Request failed";
|
|
249
|
+
const { code, ...payloadDetails } = payloadObject ?? {};
|
|
250
|
+
const resolvedCode = typeof code === "string" ? code : void 0;
|
|
251
|
+
throw createSdkError(message, {
|
|
252
|
+
...payloadDetails,
|
|
253
|
+
code: resolvedCode,
|
|
254
|
+
request: redactRequestMetadata(requestMetadata),
|
|
255
|
+
response
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
if (response.status === 204) {
|
|
259
|
+
return { data: void 0, request: requestMetadata, response };
|
|
260
|
+
}
|
|
261
|
+
if (contentType.includes("application/json")) {
|
|
262
|
+
return {
|
|
263
|
+
data: await response.json(),
|
|
264
|
+
request: requestMetadata,
|
|
265
|
+
response
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
return {
|
|
269
|
+
data: await response.text(),
|
|
270
|
+
request: requestMetadata,
|
|
271
|
+
response
|
|
272
|
+
};
|
|
273
|
+
} catch (error) {
|
|
274
|
+
if (error instanceof SDKError) {
|
|
275
|
+
throw error;
|
|
276
|
+
}
|
|
277
|
+
const fallbackMessage = error instanceof Error ? error.message : "Request failed";
|
|
278
|
+
throw createSdkError(fallbackMessage, {
|
|
279
|
+
request: redactRequestMetadata(requestMetadata),
|
|
280
|
+
response
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Determine whether the provided URL is same-origin with the configured base URL.
|
|
286
|
+
*/
|
|
287
|
+
isSameOrigin(url) {
|
|
288
|
+
try {
|
|
289
|
+
return new URL(url).origin === new URL(this.baseUrl).origin;
|
|
290
|
+
} catch {
|
|
291
|
+
return false;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
};
|
|
295
|
+
export {
|
|
296
|
+
HttpClient
|
|
297
|
+
};
|
|
298
|
+
//# sourceMappingURL=http.mjs.map
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { A as AuthClient, b as AuthClientOptions, c as AuthStateChangeCallback, d as AuthStateChangeEvent, B as BaseResource, i as BeforeRequestHook, N as Channel, O as ChannelCharacteristics, P as ChannelLink, Q as ChannelResponse, T as ChannelTag, C as ChannelsClient, g as ChatClient, U as ChatMessage, V as ChatMessageMetadata, Y as ChatMessageTransaction, Z as ChatMessageUser, W as ChatMessagesQuery, X as ChatMessagesResponse, j as CookieAccessors, k as CookieOptions, l as CookiesStorageAdapter, a as HttpClient, H as HttpClientOptions, m as HttpRequest, n as HttpRequestOptions, R as RealtimeChannel, o as RealtimeChatClient, p as RealtimeClient, q as RealtimeClientOptions, r as RealtimeConnectionState, s as RealtimeConnectionStateCallback, t as RealtimeEventCallback, u as RealtimePresenceChannel, D as ResourceId, E as ResourceQueryParams, F as ResourceQueryValue, v as SDKErrorCode, x as SDKErrorShape, h as SdkClient, w as SdkErrorCode, y as SdkErrorShape, e as SignInPayload, f as SignInWithTokenOptions, z as StorageAdapter, G as Stream, I as StreamChannel, J as StreamListResponse, K as StreamPlayerSource, L as StreamResponse, M as StreamTag, S as StreamsClient } from './auth-CSkJb9Wc.mjs';
|
|
2
|
+
export { ClientFactoryOptions, createBrowserClient, createClient } from './browser-client.mjs';
|
|
3
|
+
export { SDKError, SdkErrorDetails, createSdkError } from './errors.mjs';
|
|
4
|
+
export { createRealtimeClient } from './realtime.mjs';
|
|
5
|
+
export { ServerClientFactoryOptions, ServerCookieAccessors, createServerClient } from './server-client.mjs';
|
|
6
|
+
export { BrowserCookieAccessorsStorageAdapter, BrowserCookieStorageAdapter, DEFAULT_AUTH_COOKIE_NAME, DefaultStorageAdapterOptions, MemoryStorageAdapter, NoopStorageAdapter, BrowserCookieAccessorsStorageAdapter as ServerCookieAccessorsStorageAdapter, ServerCookieStorageOptions, createDefaultStorageAdapter, createServerCookieStorageAdapter } from './storage.mjs';
|
|
7
|
+
import './base-client-BbMR6ZrV.mjs';
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { A as AuthClient, b as AuthClientOptions, c as AuthStateChangeCallback, d as AuthStateChangeEvent, B as BaseResource, i as BeforeRequestHook, N as Channel, O as ChannelCharacteristics, P as ChannelLink, Q as ChannelResponse, T as ChannelTag, C as ChannelsClient, g as ChatClient, U as ChatMessage, V as ChatMessageMetadata, Y as ChatMessageTransaction, Z as ChatMessageUser, W as ChatMessagesQuery, X as ChatMessagesResponse, j as CookieAccessors, k as CookieOptions, l as CookiesStorageAdapter, a as HttpClient, H as HttpClientOptions, m as HttpRequest, n as HttpRequestOptions, R as RealtimeChannel, o as RealtimeChatClient, p as RealtimeClient, q as RealtimeClientOptions, r as RealtimeConnectionState, s as RealtimeConnectionStateCallback, t as RealtimeEventCallback, u as RealtimePresenceChannel, D as ResourceId, E as ResourceQueryParams, F as ResourceQueryValue, v as SDKErrorCode, x as SDKErrorShape, h as SdkClient, w as SdkErrorCode, y as SdkErrorShape, e as SignInPayload, f as SignInWithTokenOptions, z as StorageAdapter, G as Stream, I as StreamChannel, J as StreamListResponse, K as StreamPlayerSource, L as StreamResponse, M as StreamTag, S as StreamsClient } from './auth-CSkJb9Wc.js';
|
|
2
|
+
export { ClientFactoryOptions, createBrowserClient, createClient } from './browser-client.js';
|
|
3
|
+
export { SDKError, SdkErrorDetails, createSdkError } from './errors.js';
|
|
4
|
+
export { createRealtimeClient } from './realtime.js';
|
|
5
|
+
export { ServerClientFactoryOptions, ServerCookieAccessors, createServerClient } from './server-client.js';
|
|
6
|
+
export { BrowserCookieAccessorsStorageAdapter, BrowserCookieStorageAdapter, DEFAULT_AUTH_COOKIE_NAME, DefaultStorageAdapterOptions, MemoryStorageAdapter, NoopStorageAdapter, BrowserCookieAccessorsStorageAdapter as ServerCookieAccessorsStorageAdapter, ServerCookieStorageOptions, createDefaultStorageAdapter, createServerCookieStorageAdapter } from './storage.js';
|
|
7
|
+
import './base-client-BHrP5nb_.js';
|