@bisibility/sdk 0.1.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/dist/client.js ADDED
@@ -0,0 +1,614 @@
1
+ import { BisibilityApiError, BisibilityConfigurationError, BisibilityNetworkError, BisibilityResponseError, } from "./errors.js";
2
+ const DEFAULT_BASE_URL = "https://bisibility.com/api/v1";
3
+ const RELATIVE_BASE_ORIGIN = "https://bisibility.local";
4
+ function isAbsoluteUrl(value) {
5
+ return /^[a-z][a-z\d+\-.]*:/i.test(value);
6
+ }
7
+ function normalizeBaseUrl(baseUrl) {
8
+ const raw = String(baseUrl ?? DEFAULT_BASE_URL).trim();
9
+ if (!raw) {
10
+ throw new BisibilityConfigurationError("baseUrl cannot be empty.");
11
+ }
12
+ let end = raw.length;
13
+ while (end > 0 && raw[end - 1] === "/") {
14
+ end -= 1;
15
+ }
16
+ return raw.slice(0, end);
17
+ }
18
+ function encodedPathSegment(value) {
19
+ return encodeURIComponent(value);
20
+ }
21
+ function queryValue(value) {
22
+ if (value instanceof Date) {
23
+ return value.toISOString();
24
+ }
25
+ return value === null || value === undefined ? undefined : String(value);
26
+ }
27
+ function bodyOrUndefined(input) {
28
+ return input && typeof input === "object" && Object.keys(input).length > 0 ? input : undefined;
29
+ }
30
+ function stringOrUndefined(value) {
31
+ return typeof value === "string" ? value : undefined;
32
+ }
33
+ function numberOrUndefined(value) {
34
+ return typeof value === "number" ? value : undefined;
35
+ }
36
+ function problemFromJson(value) {
37
+ if (!value || typeof value !== "object") {
38
+ return undefined;
39
+ }
40
+ // Accept any RFC 9457 problem body. Some server responses (for example the
41
+ // idempotency in-progress 409) omit docs_url and instance, so only the
42
+ // identifying members are required.
43
+ const candidate = value;
44
+ const type = stringOrUndefined(candidate.type);
45
+ const title = stringOrUndefined(candidate.title);
46
+ const status = numberOrUndefined(candidate.status);
47
+ if (type === undefined && (title === undefined || status === undefined)) {
48
+ return undefined;
49
+ }
50
+ // Normalize known members to their expected types, dropping mismatched
51
+ // values instead of passing the raw object through.
52
+ const problem = { ...candidate };
53
+ const normalized = {
54
+ detail: stringOrUndefined(candidate.detail),
55
+ docs_url: stringOrUndefined(candidate.docs_url),
56
+ instance: stringOrUndefined(candidate.instance),
57
+ status,
58
+ title,
59
+ type,
60
+ };
61
+ for (const [key, value] of Object.entries(normalized)) {
62
+ if (value === undefined) {
63
+ delete problem[key];
64
+ }
65
+ else {
66
+ problem[key] = value;
67
+ }
68
+ }
69
+ return problem;
70
+ }
71
+ function composedSignal(signal, timeout) {
72
+ if (timeout === undefined) {
73
+ return signal;
74
+ }
75
+ if (!Number.isFinite(timeout) || timeout <= 0) {
76
+ throw new BisibilityConfigurationError("timeout must be a positive finite number.");
77
+ }
78
+ if (typeof AbortSignal.timeout !== "function") {
79
+ throw new BisibilityConfigurationError("AbortSignal.timeout is not available in this runtime; omit timeout or use signal instead.");
80
+ }
81
+ const timeoutSignal = AbortSignal.timeout(timeout);
82
+ if (!signal) {
83
+ return timeoutSignal;
84
+ }
85
+ const controller = new AbortController();
86
+ for (const source of [signal, timeoutSignal]) {
87
+ if (source.aborted) {
88
+ controller.abort(source.reason);
89
+ break;
90
+ }
91
+ source.addEventListener("abort", () => controller.abort(source.reason), { once: true });
92
+ }
93
+ return controller.signal;
94
+ }
95
+ function mergeHeaders(first, second) {
96
+ const headers = new Headers(first);
97
+ if (second) {
98
+ for (const [key, value] of new Headers(second)) {
99
+ headers.set(key, value);
100
+ }
101
+ }
102
+ return headers;
103
+ }
104
+ export class BisibilityClient {
105
+ #apiKey;
106
+ #defaultHeaders;
107
+ #fetchImpl;
108
+ #projectId;
109
+ baseUrl;
110
+ constructor(config = {}) {
111
+ this.#apiKey = config.apiKey;
112
+ this.baseUrl = normalizeBaseUrl(config.baseUrl);
113
+ this.#defaultHeaders = config.headers;
114
+ this.#fetchImpl = config.fetch;
115
+ this.#projectId = config.projectId;
116
+ }
117
+ getHealth(options) {
118
+ return this.request("GET", "/health", { ...options, auth: false });
119
+ }
120
+ getOpenApi(options) {
121
+ return this.request("GET", "/openapi.json", { ...options, auth: false });
122
+ }
123
+ getCapabilities(options) {
124
+ return this.request("GET", "/capabilities", {
125
+ ...options,
126
+ auth: false,
127
+ });
128
+ }
129
+ getLlmsText(options) {
130
+ return this.request("GET", "/llms.txt", {
131
+ ...options,
132
+ auth: false,
133
+ parseAs: "text",
134
+ });
135
+ }
136
+ getProviderRates(options) {
137
+ return this.request("GET", "/provider-rates", {
138
+ ...options,
139
+ auth: false,
140
+ });
141
+ }
142
+ getCostEstimate(input, options) {
143
+ return this.request("GET", "/cost-estimate", {
144
+ ...options,
145
+ auth: false,
146
+ query: {
147
+ devices: input.devices,
148
+ frequency: input.frequency,
149
+ keywords: input.keywords,
150
+ locations: input.locations,
151
+ option: input.option,
152
+ plan: input.plan,
153
+ provider: input.provider,
154
+ },
155
+ });
156
+ }
157
+ getMe(options) {
158
+ return this.request("GET", "/me", options);
159
+ }
160
+ updateMe(input, options) {
161
+ return this.request("PATCH", "/me", { ...options, body: input });
162
+ }
163
+ listMyTokens(options) {
164
+ return this.request("GET", "/me/tokens", options);
165
+ }
166
+ createMyToken(input, options) {
167
+ return this.request("POST", "/me/tokens", {
168
+ ...options,
169
+ body: {
170
+ expires_in_days: input.expiresInDays,
171
+ name: input.name,
172
+ scope: input.scope,
173
+ },
174
+ });
175
+ }
176
+ revokeMyToken(tokenId, options) {
177
+ return this.request("DELETE", `/me/tokens/${encodedPathSegment(tokenId)}`, options);
178
+ }
179
+ listProjects(options) {
180
+ return this.request("GET", "/projects", options);
181
+ }
182
+ createProject(input, options) {
183
+ return this.request("POST", "/projects", {
184
+ ...options,
185
+ body: {
186
+ defaults: input.defaults,
187
+ domain: input.domain,
188
+ name: input.name,
189
+ tracking_scope: input.trackingScope,
190
+ },
191
+ });
192
+ }
193
+ getProject(projectId, options) {
194
+ return this.request("GET", `/projects/${encodedPathSegment(projectId)}`, options);
195
+ }
196
+ updateProject(projectId, input, options) {
197
+ return this.request("PATCH", `/projects/${encodedPathSegment(projectId)}`, {
198
+ ...options,
199
+ body: input,
200
+ });
201
+ }
202
+ deleteProject(projectId, options) {
203
+ return this.request("DELETE", `/projects/${encodedPathSegment(projectId)}`, options);
204
+ }
205
+ updateProjectDefaults(projectId, input, options) {
206
+ return this.request("PATCH", `/projects/${encodedPathSegment(projectId)}/defaults`, { ...options, body: input });
207
+ }
208
+ listApiKeys(options, requestOptions) {
209
+ const pagination = options ?? {};
210
+ return this.request("GET", "/api-keys", {
211
+ ...requestOptions,
212
+ query: {
213
+ cursor: pagination.cursor,
214
+ limit: pagination.limit,
215
+ },
216
+ });
217
+ }
218
+ createApiKey(input, options) {
219
+ return this.request("POST", "/api-keys", { ...options, body: input });
220
+ }
221
+ revokeApiKey(keyId, options) {
222
+ return this.request("DELETE", `/api-keys/${encodedPathSegment(keyId)}`, options);
223
+ }
224
+ listProjectApiKeys(projectId, options, requestOptions) {
225
+ const pagination = options ?? {};
226
+ return this.request("GET", `/projects/${encodedPathSegment(projectId)}/api-keys`, {
227
+ ...requestOptions,
228
+ query: {
229
+ cursor: pagination.cursor,
230
+ limit: pagination.limit,
231
+ },
232
+ });
233
+ }
234
+ createProjectApiKey(projectId, input, options) {
235
+ return this.request("POST", `/projects/${encodedPathSegment(projectId)}/api-keys`, { ...options, body: input });
236
+ }
237
+ listWebhooks(projectId, options, requestOptions) {
238
+ const pagination = options ?? {};
239
+ return this.request("GET", `/projects/${encodedPathSegment(projectId)}/webhooks`, {
240
+ ...requestOptions,
241
+ query: {
242
+ cursor: pagination.cursor,
243
+ limit: pagination.limit,
244
+ },
245
+ });
246
+ }
247
+ createWebhook(projectId, input, options) {
248
+ return this.request("POST", `/projects/${encodedPathSegment(projectId)}/webhooks`, {
249
+ ...options,
250
+ body: input,
251
+ });
252
+ }
253
+ updateWebhook(projectId, webhookId, input, options) {
254
+ return this.request("PATCH", `/projects/${encodedPathSegment(projectId)}/webhooks/${encodedPathSegment(webhookId)}`, { ...options, body: input });
255
+ }
256
+ deleteWebhook(projectId, webhookId, options) {
257
+ return this.request("DELETE", `/projects/${encodedPathSegment(projectId)}/webhooks/${encodedPathSegment(webhookId)}`, options);
258
+ }
259
+ listKeywords(projectId, options, requestOptions) {
260
+ const filters = options ?? {};
261
+ return this.request("GET", `/projects/${encodedPathSegment(projectId)}/keywords`, {
262
+ ...requestOptions,
263
+ query: {
264
+ cursor: filters.cursor,
265
+ "filter[country]": filters.country,
266
+ "filter[device]": filters.device,
267
+ "filter[intent]": filters.intent,
268
+ "filter[position_gt]": filters.positionGt,
269
+ "filter[position_lt]": filters.positionLt,
270
+ "filter[tag]": filters.tag,
271
+ "filter[topic]": filters.topic,
272
+ limit: filters.limit,
273
+ search: filters.search,
274
+ sort: filters.sort,
275
+ },
276
+ });
277
+ }
278
+ addKeywords(projectId, input, options) {
279
+ return this.request("POST", `/projects/${encodedPathSegment(projectId)}/keywords`, { ...options, body: input });
280
+ }
281
+ createKeywords(projectId, input, options) {
282
+ return this.addKeywords(projectId, input, options);
283
+ }
284
+ getKeyword(keywordId, options) {
285
+ return this.request("GET", `/keywords/${encodedPathSegment(keywordId)}`, options);
286
+ }
287
+ updateKeyword(keywordId, input, options) {
288
+ return this.request("PATCH", `/keywords/${encodedPathSegment(keywordId)}`, {
289
+ ...options,
290
+ body: input,
291
+ });
292
+ }
293
+ setKeywordTargetUrl(keywordId, targetUrl, options) {
294
+ return this.updateKeyword(keywordId, { target_url: targetUrl }, options);
295
+ }
296
+ deleteKeyword(keywordId, options) {
297
+ return this.request("DELETE", `/keywords/${encodedPathSegment(keywordId)}`, options);
298
+ }
299
+ bulkUpdateKeywords(input, options) {
300
+ return this.request("POST", "/keywords/bulk", { ...options, body: input });
301
+ }
302
+ listRankChecks(keywordId, options, requestOptions) {
303
+ const filters = options ?? {};
304
+ return this.request("GET", `/keywords/${encodedPathSegment(keywordId)}/rank-checks`, {
305
+ ...requestOptions,
306
+ query: {
307
+ cursor: filters.cursor,
308
+ limit: filters.limit,
309
+ since: filters.since,
310
+ status: filters.status,
311
+ until: filters.until,
312
+ },
313
+ });
314
+ }
315
+ runRankCheck(keywordId, input, options) {
316
+ const { async: runAsync, ...requestOptions } = options ?? {};
317
+ const body = input && Object.keys(input).length ? input : undefined;
318
+ return this.request("POST", `/keywords/${encodedPathSegment(keywordId)}/checks`, {
319
+ ...requestOptions,
320
+ body,
321
+ ...(runAsync ? { query: { async: "true" } } : {}),
322
+ });
323
+ }
324
+ getRankCheckResult(checkId, options) {
325
+ return this.request("GET", `/rank-checks/${encodedPathSegment(checkId)}`, options);
326
+ }
327
+ createSignal(input, options) {
328
+ return this.request("POST", "/signals", { ...options, body: input });
329
+ }
330
+ listSignals(projectId, options, requestOptions) {
331
+ const filters = options ?? {};
332
+ return this.request("GET", `/projects/${encodedPathSegment(projectId)}/signals`, {
333
+ ...requestOptions,
334
+ query: {
335
+ cursor: filters.cursor,
336
+ from: filters.from,
337
+ limit: filters.limit,
338
+ source: filters.source,
339
+ to: filters.to,
340
+ type: filters.type,
341
+ },
342
+ });
343
+ }
344
+ listAlertRules(projectId, options, requestOptions) {
345
+ const pagination = options ?? {};
346
+ return this.request("GET", `/projects/${encodedPathSegment(projectId)}/alert-rules`, {
347
+ ...requestOptions,
348
+ query: {
349
+ cursor: pagination.cursor,
350
+ limit: pagination.limit,
351
+ },
352
+ });
353
+ }
354
+ createAlertRule(projectId, input, options) {
355
+ return this.request("POST", `/projects/${encodedPathSegment(projectId)}/alert-rules`, { ...options, body: input });
356
+ }
357
+ updateAlertRule(ruleId, input, options) {
358
+ return this.request("PATCH", `/alert-rules/${encodedPathSegment(ruleId)}`, {
359
+ ...options,
360
+ body: input,
361
+ });
362
+ }
363
+ deleteAlertRule(ruleId, options) {
364
+ return this.request("DELETE", `/alert-rules/${encodedPathSegment(ruleId)}`, options);
365
+ }
366
+ listTriggeredAlerts(projectId, options, requestOptions) {
367
+ const pagination = options ?? {};
368
+ return this.request("GET", `/projects/${encodedPathSegment(projectId)}/triggered-alerts`, {
369
+ ...requestOptions,
370
+ query: {
371
+ cursor: pagination.cursor,
372
+ limit: pagination.limit,
373
+ },
374
+ });
375
+ }
376
+ listTeamMembers(projectId, options, requestOptions) {
377
+ const pagination = options ?? {};
378
+ return this.request("GET", `/projects/${encodedPathSegment(projectId)}/team/members`, {
379
+ ...requestOptions,
380
+ query: {
381
+ cursor: pagination.cursor,
382
+ limit: pagination.limit,
383
+ },
384
+ });
385
+ }
386
+ listTeamInvites(projectId, options, requestOptions) {
387
+ const pagination = options ?? {};
388
+ return this.request("GET", `/projects/${encodedPathSegment(projectId)}/team/invites`, {
389
+ ...requestOptions,
390
+ query: {
391
+ cursor: pagination.cursor,
392
+ limit: pagination.limit,
393
+ },
394
+ });
395
+ }
396
+ createTeamInvite(projectId, input, options) {
397
+ return this.request("POST", `/projects/${encodedPathSegment(projectId)}/team/invites`, { ...options, body: input });
398
+ }
399
+ revokeTeamInvite(projectId, inviteId, options) {
400
+ return this.request("DELETE", `/projects/${encodedPathSegment(projectId)}/team/invites/${encodedPathSegment(inviteId)}`, options);
401
+ }
402
+ revokeTeamInviteById(inviteId, options) {
403
+ return this.request("DELETE", `/team/invites/${encodedPathSegment(inviteId)}`, options);
404
+ }
405
+ listProviders(projectId, options, requestOptions) {
406
+ const pagination = options ?? {};
407
+ return this.request("GET", `/projects/${encodedPathSegment(projectId)}/providers`, {
408
+ ...requestOptions,
409
+ query: {
410
+ cursor: pagination.cursor,
411
+ limit: pagination.limit,
412
+ },
413
+ });
414
+ }
415
+ connectProvider(projectId, providerId, input = {}, options) {
416
+ return this.request("POST", `/projects/${encodedPathSegment(projectId)}/providers/${encodedPathSegment(providerId)}/connect`, { ...options, body: bodyOrUndefined(input) });
417
+ }
418
+ testProviderConnection(projectId, providerId, input = {}, options) {
419
+ return this.request("POST", `/projects/${encodedPathSegment(projectId)}/providers/${encodedPathSegment(providerId)}/test`, { ...options, body: bodyOrUndefined(input) });
420
+ }
421
+ updateProviderSettings(projectId, providerId, input, options) {
422
+ return this.request("PATCH", `/projects/${encodedPathSegment(projectId)}/providers/${encodedPathSegment(providerId)}`, { ...options, body: input });
423
+ }
424
+ setProviderEnabled(projectId, providerId, enabled, options) {
425
+ return this.updateProviderSettings(projectId, providerId, { enabled }, options);
426
+ }
427
+ enableProvider(projectId, providerId, options) {
428
+ return this.setProviderEnabled(projectId, providerId, true, options);
429
+ }
430
+ disableProvider(projectId, providerId, options) {
431
+ return this.setProviderEnabled(projectId, providerId, false, options);
432
+ }
433
+ setProviderPriority(projectId, providerId, priority, options) {
434
+ return this.updateProviderSettings(projectId, providerId, { priority }, options);
435
+ }
436
+ setPrimaryProvider(projectId, providerId, primary = true, options) {
437
+ return this.updateProviderSettings(projectId, providerId, { primary }, options);
438
+ }
439
+ disconnectProvider(projectId, providerId, options) {
440
+ return this.request("DELETE", `/projects/${encodedPathSegment(projectId)}/providers/${encodedPathSegment(providerId)}`, options);
441
+ }
442
+ listSavedViews(projectId, options, requestOptions) {
443
+ const pagination = options ?? {};
444
+ return this.request("GET", `/projects/${encodedPathSegment(projectId)}/saved-views`, {
445
+ ...requestOptions,
446
+ query: {
447
+ cursor: pagination.cursor,
448
+ limit: pagination.limit,
449
+ },
450
+ });
451
+ }
452
+ createSavedView(projectId, input, options) {
453
+ return this.request("POST", `/projects/${encodedPathSegment(projectId)}/saved-views`, { ...options, body: input });
454
+ }
455
+ deleteSavedView(projectId, viewId, options) {
456
+ return this.request("DELETE", `/projects/${encodedPathSegment(projectId)}/saved-views/${encodedPathSegment(viewId)}`, options);
457
+ }
458
+ deleteSavedViewById(viewId, options) {
459
+ return this.request("DELETE", `/saved-views/${encodedPathSegment(viewId)}`, options);
460
+ }
461
+ listCompetitors(projectId, options, requestOptions) {
462
+ const pagination = options ?? {};
463
+ return this.request("GET", `/projects/${encodedPathSegment(projectId)}/competitors`, {
464
+ ...requestOptions,
465
+ query: {
466
+ cursor: pagination.cursor,
467
+ limit: pagination.limit,
468
+ },
469
+ });
470
+ }
471
+ addCompetitor(projectId, input, options) {
472
+ return this.request("POST", `/projects/${encodedPathSegment(projectId)}/competitors`, { ...options, body: input });
473
+ }
474
+ removeCompetitor(projectId, competitorId, options) {
475
+ return this.request("DELETE", `/projects/${encodedPathSegment(projectId)}/competitors/${encodedPathSegment(competitorId)}`, options);
476
+ }
477
+ removeCompetitorById(competitorId, options) {
478
+ return this.request("DELETE", `/competitors/${encodedPathSegment(competitorId)}`, options);
479
+ }
480
+ getNotificationPreferences(projectId, options) {
481
+ return this.request("GET", `/projects/${encodedPathSegment(projectId)}/notification-preferences`, options);
482
+ }
483
+ updateNotificationPreferences(projectId, input, options) {
484
+ return this.request("PATCH", `/projects/${encodedPathSegment(projectId)}/notification-preferences`, { ...options, body: input });
485
+ }
486
+ listMigrationTokens(projectId, options, requestOptions) {
487
+ const pagination = options ?? {};
488
+ return this.request("GET", `/projects/${encodedPathSegment(projectId)}/migration-tokens`, {
489
+ ...requestOptions,
490
+ query: {
491
+ cursor: pagination.cursor,
492
+ limit: pagination.limit,
493
+ },
494
+ });
495
+ }
496
+ mintMigrationToken(projectId, input = {}, options) {
497
+ return this.request("POST", `/projects/${encodedPathSegment(projectId)}/migration-tokens`, { ...options, body: bodyOrUndefined(input) });
498
+ }
499
+ revokeMigrationToken(projectId, tokenId, options) {
500
+ return this.request("DELETE", `/projects/${encodedPathSegment(projectId)}/migration-tokens/${encodedPathSegment(tokenId)}`, options);
501
+ }
502
+ revokeMigrationTokenById(tokenId, options) {
503
+ return this.request("DELETE", `/migration-tokens/${encodedPathSegment(tokenId)}`, options);
504
+ }
505
+ buildUrl(path, query) {
506
+ const absolute = isAbsoluteUrl(this.baseUrl);
507
+ const base = `${this.baseUrl}${path.startsWith("/") ? "" : "/"}${path}`;
508
+ const url = new URL(base, absolute ? undefined : RELATIVE_BASE_ORIGIN);
509
+ if (query) {
510
+ for (const [key, rawValue] of Object.entries(query)) {
511
+ const value = queryValue(rawValue);
512
+ if (value !== undefined) {
513
+ url.searchParams.set(key, value);
514
+ }
515
+ }
516
+ }
517
+ return absolute ? url.toString() : `${url.pathname}${url.search}`;
518
+ }
519
+ async request(method, path, options = {}) {
520
+ const fetchImpl = this.#fetchImpl ?? globalThis.fetch;
521
+ const url = this.buildUrl(path, options.query);
522
+ if (!fetchImpl) {
523
+ throw new BisibilityConfigurationError("No fetch implementation is available. Pass fetch in BisibilityClient config.");
524
+ }
525
+ if (options.auth !== false && !this.#apiKey) {
526
+ throw new BisibilityConfigurationError("apiKey is required for this Bisibility API method.");
527
+ }
528
+ const headers = mergeHeaders(this.#defaultHeaders, options.headers);
529
+ if (this.#projectId !== undefined && !headers.has("X-Bisibility-Project")) {
530
+ headers.set("X-Bisibility-Project", this.#projectId);
531
+ }
532
+ if (options.auth !== false) {
533
+ headers.set("Authorization", `Bearer ${this.#apiKey}`);
534
+ }
535
+ if (options.idempotencyKey) {
536
+ headers.set("Idempotency-Key", options.idempotencyKey);
537
+ }
538
+ const init = { headers, method, redirect: "error" };
539
+ const signal = composedSignal(options.signal, options.timeout);
540
+ if (signal) {
541
+ init.signal = signal;
542
+ }
543
+ if (options.body !== undefined) {
544
+ if (!headers.has("Content-Type")) {
545
+ headers.set("Content-Type", "application/json");
546
+ }
547
+ init.body = JSON.stringify(options.body);
548
+ }
549
+ let response;
550
+ try {
551
+ response = await fetchImpl(url, init);
552
+ }
553
+ catch (error) {
554
+ throw new BisibilityNetworkError("Network error while calling the Bisibility API.", {
555
+ cause: error,
556
+ method,
557
+ url,
558
+ });
559
+ }
560
+ if (!response.ok) {
561
+ throw await this.errorFromResponse(response, method, url);
562
+ }
563
+ if (options.parseAs === "text") {
564
+ return response.text();
565
+ }
566
+ return this.jsonFromResponse(response, method, url);
567
+ }
568
+ async jsonFromResponse(response, method, url) {
569
+ const body = await response.text();
570
+ if (!body) {
571
+ return undefined;
572
+ }
573
+ try {
574
+ return JSON.parse(body);
575
+ }
576
+ catch (error) {
577
+ throw new BisibilityResponseError("Bisibility API returned invalid JSON.", {
578
+ body,
579
+ cause: error,
580
+ method,
581
+ status: response.status,
582
+ url,
583
+ });
584
+ }
585
+ }
586
+ async errorFromResponse(response, method, url) {
587
+ const headers = new Headers(response.headers);
588
+ const body = await response.text();
589
+ const contentType = headers.get("Content-Type") ?? "";
590
+ let parsed;
591
+ if (body && contentType.includes("json")) {
592
+ try {
593
+ parsed = JSON.parse(body);
594
+ }
595
+ catch {
596
+ parsed = undefined;
597
+ }
598
+ }
599
+ const problem = problemFromJson(parsed);
600
+ const message = problem?.detail || body || `Bisibility API request failed with status ${response.status}.`;
601
+ return new BisibilityApiError(message, {
602
+ body,
603
+ headers,
604
+ method,
605
+ problem,
606
+ status: response.status,
607
+ url,
608
+ });
609
+ }
610
+ }
611
+ export function createBisibilityClient(config = {}) {
612
+ return new BisibilityClient(config);
613
+ }
614
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}