@37signals/basecamp 0.9.0 → 0.11.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 +147 -15
- package/dist/client.d.ts +8 -5
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +237 -144
- package/dist/client.js.map +1 -1
- package/dist/generated/metadata.d.ts.map +1 -1
- package/dist/generated/metadata.js +280 -12
- package/dist/generated/metadata.js.map +1 -1
- package/dist/generated/metadata.ts +280 -12
- package/dist/generated/openapi-stripped.json +4403 -2124
- package/dist/generated/path-mapping.d.ts.map +1 -1
- package/dist/generated/path-mapping.js +22 -5
- package/dist/generated/path-mapping.js.map +1 -1
- package/dist/generated/path-mapping.ts +22 -5
- package/dist/generated/schema.d.ts +2983 -1220
- package/dist/generated/services/boosts.d.ts +13 -10
- package/dist/generated/services/boosts.d.ts.map +1 -1
- package/dist/generated/services/boosts.js +5 -5
- package/dist/generated/services/boosts.js.map +1 -1
- package/dist/generated/services/boosts.ts +12 -10
- package/dist/generated/services/cards.d.ts +4 -4
- package/dist/generated/services/cards.d.ts.map +1 -1
- package/dist/generated/services/cards.js +2 -2
- package/dist/generated/services/cards.js.map +1 -1
- package/dist/generated/services/cards.ts +4 -4
- package/dist/generated/services/everything.d.ts +303 -0
- package/dist/generated/services/everything.d.ts.map +1 -0
- package/dist/generated/services/everything.js +359 -0
- package/dist/generated/services/everything.js.map +1 -0
- package/dist/generated/services/everything.ts +594 -0
- package/dist/generated/services/index.d.ts +2 -1
- package/dist/generated/services/index.d.ts.map +1 -1
- package/dist/generated/services/index.js +2 -1
- package/dist/generated/services/index.js.map +1 -1
- package/dist/generated/services/index.ts +2 -1
- package/dist/generated/services/message-types.d.ts +15 -10
- package/dist/generated/services/message-types.d.ts.map +1 -1
- package/dist/generated/services/message-types.js +35 -18
- package/dist/generated/services/message-types.js.map +1 -1
- package/dist/generated/services/message-types.ts +34 -18
- package/dist/generated/services/my-notifications.d.ts +27 -0
- package/dist/generated/services/my-notifications.d.ts.map +1 -1
- package/dist/generated/services/my-notifications.js +23 -1
- package/dist/generated/services/my-notifications.js.map +1 -1
- package/dist/generated/services/my-notifications.ts +46 -1
- package/dist/generated/services/recordings.d.ts +2 -2
- package/dist/generated/services/recordings.d.ts.map +1 -1
- package/dist/generated/services/recordings.js +1 -1
- package/dist/generated/services/recordings.js.map +1 -1
- package/dist/generated/services/recordings.ts +2 -2
- package/dist/generated/services/schedules.d.ts +9 -1
- package/dist/generated/services/schedules.d.ts.map +1 -1
- package/dist/generated/services/schedules.js.map +1 -1
- package/dist/generated/services/schedules.ts +9 -1
- package/dist/generated/services/tools.d.ts +2 -0
- package/dist/generated/services/tools.d.ts.map +1 -1
- package/dist/generated/services/tools.js +1 -0
- package/dist/generated/services/tools.js.map +1 -1
- package/dist/generated/services/tools.ts +3 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +4 -1
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -2
- package/dist/index.js.map +1 -1
- package/dist/oauth/device-errors.d.ts +29 -0
- package/dist/oauth/device-errors.d.ts.map +1 -0
- package/dist/oauth/device-errors.js +52 -0
- package/dist/oauth/device-errors.js.map +1 -0
- package/dist/oauth/device-login.d.ts +50 -0
- package/dist/oauth/device-login.d.ts.map +1 -0
- package/dist/oauth/device-login.js +118 -0
- package/dist/oauth/device-login.js.map +1 -0
- package/dist/oauth/device.d.ts +112 -0
- package/dist/oauth/device.d.ts.map +1 -0
- package/dist/oauth/device.js +746 -0
- package/dist/oauth/device.js.map +1 -0
- package/dist/oauth/exchange.d.ts.map +1 -1
- package/dist/oauth/exchange.js +75 -9
- package/dist/oauth/exchange.js.map +1 -1
- package/dist/oauth/index.d.ts +4 -1
- package/dist/oauth/index.d.ts.map +1 -1
- package/dist/oauth/index.js +4 -0
- package/dist/oauth/index.js.map +1 -1
- package/dist/oauth/limits.d.ts +15 -0
- package/dist/oauth/limits.d.ts.map +1 -0
- package/dist/oauth/limits.js +15 -0
- package/dist/oauth/limits.js.map +1 -0
- package/dist/oauth/token-manager.d.ts.map +1 -1
- package/dist/oauth/token-manager.js +15 -4
- package/dist/oauth/token-manager.js.map +1 -1
- package/dist/oauth/token-store.d.ts.map +1 -1
- package/dist/oauth/token-store.js +6 -0
- package/dist/oauth/token-store.js.map +1 -1
- package/dist/oauth/types.d.ts +35 -3
- package/dist/oauth/types.d.ts.map +1 -1
- package/dist/pagination.d.ts +5 -1
- package/dist/pagination.d.ts.map +1 -1
- package/dist/pagination.js.map +1 -1
- package/dist/services/base.d.ts +3 -1
- package/dist/services/base.d.ts.map +1 -1
- package/dist/services/base.js +16 -5
- package/dist/services/base.js.map +1 -1
- package/dist/services/cards-extensions.d.ts +76 -0
- package/dist/services/cards-extensions.d.ts.map +1 -0
- package/dist/services/cards-extensions.js +67 -0
- package/dist/services/cards-extensions.js.map +1 -0
- package/package.json +2 -2
- package/src/generated/metadata.ts +280 -12
- package/src/generated/openapi-stripped.json +4403 -2124
- package/src/generated/path-mapping.ts +22 -5
- package/src/generated/schema.d.ts +2983 -1220
- package/src/generated/services/boosts.ts +12 -10
- package/src/generated/services/cards.ts +4 -4
- package/src/generated/services/everything.ts +594 -0
- package/src/generated/services/index.ts +2 -1
- package/src/generated/services/message-types.ts +34 -18
- package/src/generated/services/my-notifications.ts +46 -1
- package/src/generated/services/recordings.ts +2 -2
- package/src/generated/services/schedules.ts +9 -1
- package/src/generated/services/tools.ts +3 -0
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@ Official TypeScript SDK for the [Basecamp API](https://github.com/basecamp/bc3-a
|
|
|
23
23
|
npm install @37signals/basecamp
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
Requires Node.js
|
|
26
|
+
Requires Node.js 22.12+ and TypeScript 5.0+.
|
|
27
27
|
|
|
28
28
|
## Quick Start
|
|
29
29
|
|
|
@@ -199,11 +199,18 @@ await performInteractiveLogin({
|
|
|
199
199
|
});
|
|
200
200
|
```
|
|
201
201
|
|
|
202
|
-
**Selection.** With `expectedIssuer
|
|
202
|
+
**Selection.** With `expectedIssuer` (production canonical:
|
|
203
|
+
`https://app.basecamp.com`), the advertised member equal by code-point is
|
|
203
204
|
selected (else a hard `expected_issuer_unavailable`). Without it, the SDK uses a
|
|
204
205
|
documented Basecamp-profile heuristic: exactly one non-Launchpad issuer → selected;
|
|
205
206
|
≥2 → hard `ambiguous_issuers` (never guesses); zero → Launchpad.
|
|
206
207
|
|
|
208
|
+
Pass bare origins — no trailing slash. Binding is code-point exact, and the
|
|
209
|
+
failure mode depends on which parameter carries the slash: a trailing-slash
|
|
210
|
+
`expectedIssuer` fails the advertised-member lookup and throws a **hard**
|
|
211
|
+
`expected_issuer_unavailable`, while a trailing-slash *resource* origin breaks
|
|
212
|
+
the hop-1 resource binding and silently soft-falls back to Launchpad.
|
|
213
|
+
|
|
207
214
|
**Fallback is allowed only before a first-party issuer is committed.** Once valid
|
|
208
215
|
resource metadata advertises it and it is selected, every later failure is fatal —
|
|
209
216
|
the SDK **never** silently falls back to Launchpad:
|
|
@@ -227,6 +234,120 @@ Hard cases throw `DiscoverySelectionError` (with a `.reason`); soft cases return
|
|
|
227
234
|
> discovery hops are SSRF-hardened (HTTPS-only origins, suppressed redirects,
|
|
228
235
|
> bounded body reads).
|
|
229
236
|
|
|
237
|
+
### Device flow (RFC 8628)
|
|
238
|
+
|
|
239
|
+
For CLIs and headless/remote environments, use the device authorization grant
|
|
240
|
+
with the public `basecamp-cli` client (no secret). `performDeviceLogin` takes an
|
|
241
|
+
already-selected config, guards the device capability, shows the user code via a
|
|
242
|
+
display hook, and polls for the token:
|
|
243
|
+
|
|
244
|
+
The device authorization endpoint lives on the **first-party** authorization
|
|
245
|
+
server, not Launchpad — so select a first-party issuer with `discoverFromResource`
|
|
246
|
+
and hand its config to `performDeviceLogin`. (Launchpad advertises no device
|
|
247
|
+
endpoint, so `performDeviceLogin`'s capability guard rejects it with
|
|
248
|
+
`DeviceFlowError("unavailable")`.)
|
|
249
|
+
|
|
250
|
+
```ts
|
|
251
|
+
import {
|
|
252
|
+
createBasecampClient,
|
|
253
|
+
discoverFromResource,
|
|
254
|
+
performDeviceLogin,
|
|
255
|
+
refreshToken,
|
|
256
|
+
isTokenExpired,
|
|
257
|
+
DeviceFlowError,
|
|
258
|
+
} from "@37signals/basecamp";
|
|
259
|
+
|
|
260
|
+
// 1. Select an AS config. Discovery can select a config WITHOUT the device
|
|
261
|
+
// endpoint or device_code grant — performDeviceLogin then rejects it with
|
|
262
|
+
// DeviceFlowError("unavailable").
|
|
263
|
+
const result = await discoverFromResource("https://3.basecampapi.com");
|
|
264
|
+
if (result.kind !== "selected") {
|
|
265
|
+
// "resource_discovery_failed" | "no_as_advertised" → Launchpad has no device
|
|
266
|
+
// flow; use the interactive (authorization-code) login instead.
|
|
267
|
+
throw new Error(`Device flow unavailable: ${result.reason}`);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
// 2. Run the device grant against the selected config.
|
|
271
|
+
const abortController = new AbortController();
|
|
272
|
+
try {
|
|
273
|
+
const token = await performDeviceLogin({
|
|
274
|
+
config: result.config,
|
|
275
|
+
clientId: "basecamp-cli",
|
|
276
|
+
// scope pinned explicitly — "read" is also the server default, but an
|
|
277
|
+
// explicit scope never depends on registry defaults staying put.
|
|
278
|
+
scope: "read",
|
|
279
|
+
display: ({ userCode, verificationUri }) => {
|
|
280
|
+
console.log(`Visit ${verificationUri} and enter code: ${userCode}`);
|
|
281
|
+
},
|
|
282
|
+
signal: abortController.signal, // optional: cancel the poll
|
|
283
|
+
});
|
|
284
|
+
// Use the token — hand it to a client or persist it via your token store.
|
|
285
|
+
// Never print the token value itself.
|
|
286
|
+
const client = createBasecampClient({
|
|
287
|
+
accountId: process.env.BASECAMP_ACCOUNT_ID!,
|
|
288
|
+
accessToken: token.accessToken,
|
|
289
|
+
});
|
|
290
|
+
// A long-lived CLI should PERSIST the whole token and mint a fresh one once it
|
|
291
|
+
// expires — a client built from a static accessToken stops working when the
|
|
292
|
+
// device access token expires. A device-token response MAY omit refresh_token,
|
|
293
|
+
// so GUARD it: refresh only when one was issued, otherwise re-run the device
|
|
294
|
+
// login to reauthenticate. Refresh hits the SAME first-party token endpoint
|
|
295
|
+
// with the standard grant (device tokens never use Launchpad's legacy
|
|
296
|
+
// `type=refresh` format):
|
|
297
|
+
if (isTokenExpired(token)) {
|
|
298
|
+
if (token.refreshToken) {
|
|
299
|
+
const fresh = await refreshToken({
|
|
300
|
+
tokenEndpoint: result.config.tokenEndpoint,
|
|
301
|
+
clientId: "basecamp-cli", // public client — no secret
|
|
302
|
+
refreshToken: token.refreshToken,
|
|
303
|
+
// ECHO the token's RFC 8707 resource indicator: BC5 device logins as
|
|
304
|
+
// basecamp-cli mint MULTI-ACCOUNT refresh tokens, and refreshing one
|
|
305
|
+
// without `resource` is rejected (400 invalid_request).
|
|
306
|
+
resource: token.resource,
|
|
307
|
+
});
|
|
308
|
+
// A refresh response MAY omit refresh_token (the server keeps the current
|
|
309
|
+
// one) and MAY omit resource (the binding is unchanged). Persist the fresh
|
|
310
|
+
// access token but FALL BACK to the prior values so the next refresh still
|
|
311
|
+
// works:
|
|
312
|
+
const nextRefresh = fresh.refreshToken ?? token.refreshToken;
|
|
313
|
+
const nextResource = fresh.resource ?? token.resource;
|
|
314
|
+
// ...persist { ...fresh, refreshToken: nextRefresh, resource: nextResource }
|
|
315
|
+
// and rebuild the client. (TokenManager does all of this automatically.)
|
|
316
|
+
} else {
|
|
317
|
+
// No refresh token was issued: refreshing is impossible, so the user must
|
|
318
|
+
// authorize again. Re-run the device login to get a new token — pass the
|
|
319
|
+
// SAME abort signal so Ctrl-C cancels this second poll too, and don't keep
|
|
320
|
+
// using the expired one.
|
|
321
|
+
const reauthed = await performDeviceLogin({
|
|
322
|
+
config: result.config,
|
|
323
|
+
clientId: "basecamp-cli",
|
|
324
|
+
display: ({ userCode, verificationUri }) => {
|
|
325
|
+
console.log(`Visit ${verificationUri} and enter code: ${userCode}`);
|
|
326
|
+
},
|
|
327
|
+
signal: abortController.signal,
|
|
328
|
+
});
|
|
329
|
+
// ...persist `reauthed` and rebuild the client from reauthed.accessToken.
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
} catch (err) {
|
|
333
|
+
if (err instanceof DeviceFlowError) {
|
|
334
|
+
// err.reason: "access_denied" | "expired" | "transport" | "unavailable" | "cancelled"
|
|
335
|
+
// err.code (parent category) is derived from the reason:
|
|
336
|
+
// access_denied/expired → auth_required, transport → network,
|
|
337
|
+
// unavailable → validation, cancelled → usage
|
|
338
|
+
} else {
|
|
339
|
+
// performDeviceLogin can also reject with BasecampError (e.g. a malformed
|
|
340
|
+
// or non-2xx server response) — don't swallow those.
|
|
341
|
+
throw err;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
The poll loop honors `interval`, sustains `slow_down` (+5s), backs off
|
|
347
|
+
exponentially on connection timeouts, and enforces a monotonic expiry deadline.
|
|
348
|
+
`requestDeviceAuthorization` and `pollDeviceToken` are exported for lower-level
|
|
349
|
+
use; the polling clock is injectable for testing.
|
|
350
|
+
|
|
230
351
|
## Services
|
|
231
352
|
|
|
232
353
|
The SDK provides typed services for the complete Basecamp API:
|
|
@@ -341,33 +462,44 @@ const result = await client.downloadURL(url);
|
|
|
341
462
|
|
|
342
463
|
## Pagination
|
|
343
464
|
|
|
344
|
-
|
|
465
|
+
Service `list()` methods auto-paginate: they follow the API's `Link: rel="next"` headers and return every item across all pages (up to a 10,000-page safety cap).
|
|
466
|
+
|
|
467
|
+
The result is a `ListResult<T>` — an `Array<T>` subclass that works with `for...of`, `.map()`, `.filter()`, spread, `.length`, indexing, and `Array.isArray()` — plus a `.meta` property with pagination metadata:
|
|
468
|
+
|
|
469
|
+
```ts
|
|
470
|
+
const projects = await client.projects.list();
|
|
471
|
+
|
|
472
|
+
console.log(`${projects.length} of ${projects.meta.totalCount} projects`);
|
|
473
|
+
if (projects.meta.truncated) console.warn("more results were available");
|
|
474
|
+
projects.forEach(p => console.log(p.name));
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
`meta.totalCount` is parsed from the `X-Total-Count` response header (0 when the header is absent). `meta.truncated` is `true` when items beyond those returned were available — more items than `maxItems` arrived, or the last-fetched page still advertised a next page (including when the page safety cap stopped pagination early); when it is `false`, the result is complete.
|
|
478
|
+
|
|
479
|
+
To bound the work, pass `maxItems` — every list options type extends `PaginationOptions`. When `maxItems` is omitted or `0`, all pages are fetched:
|
|
480
|
+
|
|
481
|
+
```ts
|
|
482
|
+
const firstFifty = await client.projects.list({ maxItems: 50 });
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
For endpoints not covered by a service, drive pagination yourself over a raw `client.GET` response with `fetchAllPages` (collects all pages into one array) or `paginateAll` (async generator that yields one page at a time):
|
|
345
486
|
|
|
346
487
|
```ts
|
|
347
488
|
import { fetchAllPages, paginateAll } from "@37signals/basecamp";
|
|
348
489
|
|
|
349
|
-
|
|
350
|
-
const initialResponse = await client.GET("/projects.json");
|
|
490
|
+
const initial = await client.GET("/projects.json");
|
|
351
491
|
|
|
352
492
|
// Option 1: fetchAllPages - returns all results as an array
|
|
353
|
-
const
|
|
354
|
-
initialResponse.response,
|
|
355
|
-
(response) => response.json()
|
|
356
|
-
);
|
|
493
|
+
const all = await fetchAllPages(initial.response, (r) => r.json() as Promise<any[]>);
|
|
357
494
|
|
|
358
495
|
// Option 2: paginateAll - async generator for streaming large result sets
|
|
359
|
-
for await (const page of paginateAll(
|
|
360
|
-
initialResponse.response,
|
|
361
|
-
(response) => response.json()
|
|
362
|
-
)) {
|
|
496
|
+
for await (const page of paginateAll(initial.response, (r) => r.json() as Promise<any[]>)) {
|
|
363
497
|
for (const project of page) {
|
|
364
498
|
console.log(project.name);
|
|
365
499
|
}
|
|
366
500
|
}
|
|
367
501
|
```
|
|
368
502
|
|
|
369
|
-
Paginated endpoints include an `X-Total-Count` HTTP header when available. You can access this header via the `response.headers` field on low-level `client.GET`/`client.POST` calls.
|
|
370
|
-
|
|
371
503
|
## Low-Level API Access
|
|
372
504
|
|
|
373
505
|
For endpoints not covered by services or advanced use cases, use the raw typed client:
|
package/dist/client.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ import { MessagesService } from "./generated/services/messages.js";
|
|
|
21
21
|
import { CommentsService } from "./generated/services/comments.js";
|
|
22
22
|
import { CampfiresService } from "./generated/services/campfires.js";
|
|
23
23
|
import { CardTablesService } from "./generated/services/card-tables.js";
|
|
24
|
-
import { CardsService } from "./
|
|
24
|
+
import { CardsService } from "./services/cards-extensions.js";
|
|
25
25
|
import { CardColumnsService } from "./generated/services/card-columns.js";
|
|
26
26
|
import { CardStepsService } from "./generated/services/card-steps.js";
|
|
27
27
|
import { WormholesService } from "./generated/services/wormholes.js";
|
|
@@ -50,6 +50,7 @@ import { TodolistGroupsService } from "./generated/services/todolist-groups.js";
|
|
|
50
50
|
import { ToolsService } from "./generated/services/tools.js";
|
|
51
51
|
import { TimesheetsService } from "./generated/services/timesheets.js";
|
|
52
52
|
import { TimelineService } from "./generated/services/timeline.js";
|
|
53
|
+
import { EverythingService } from "./generated/services/everything.js";
|
|
53
54
|
import { ClientVisibilityService } from "./generated/services/client-visibility.js";
|
|
54
55
|
import { BoostsService } from "./generated/services/boosts.js";
|
|
55
56
|
import { AccountService } from "./generated/services/account.js";
|
|
@@ -152,6 +153,8 @@ export interface BasecampClient extends RawClient {
|
|
|
152
153
|
readonly timesheets: TimesheetsService;
|
|
153
154
|
/** Timeline service - get project timeline */
|
|
154
155
|
readonly timeline: TimelineService;
|
|
156
|
+
/** Everything service - account-wide aggregate listings */
|
|
157
|
+
readonly everything: EverythingService;
|
|
155
158
|
/** Client visibility service - manage client visibility */
|
|
156
159
|
readonly clientVisibility: ClientVisibilityService;
|
|
157
160
|
/** Boosts service - manage recording boosts */
|
|
@@ -197,8 +200,8 @@ export interface BasecampClientOptions {
|
|
|
197
200
|
/** Maximum pages to follow during auto-pagination (defaults to 10,000) */
|
|
198
201
|
maxPages?: number;
|
|
199
202
|
}
|
|
200
|
-
export declare const VERSION = "0.
|
|
201
|
-
export declare const API_VERSION = "2026-07-
|
|
203
|
+
export declare const VERSION = "0.11.0";
|
|
204
|
+
export declare const API_VERSION = "2026-07-30";
|
|
202
205
|
/**
|
|
203
206
|
* Creates a type-safe Basecamp API client with built-in middleware for:
|
|
204
207
|
* - Authentication (Bearer token)
|
|
@@ -233,7 +236,7 @@ export declare function normalizeUrlPath(url: string): string;
|
|
|
233
236
|
*
|
|
234
237
|
* const allProjects = await fetchAllPages(
|
|
235
238
|
* response.response,
|
|
236
|
-
* (r) => r.json()
|
|
239
|
+
* (r) => r.json() as Promise<any[]>
|
|
237
240
|
* );
|
|
238
241
|
* ```
|
|
239
242
|
*/
|
|
@@ -244,7 +247,7 @@ export declare function fetchAllPages<T>(initialResponse: Response, parse: (resp
|
|
|
244
247
|
*
|
|
245
248
|
* @example
|
|
246
249
|
* ```ts
|
|
247
|
-
* for await (const page of paginateAll(response.response, (r) => r.json())) {
|
|
250
|
+
* for await (const page of paginateAll(response.response, (r) => r.json() as Promise<any[]>)) {
|
|
248
251
|
* console.log(`Processing ${page.length} items`);
|
|
249
252
|
* }
|
|
250
253
|
* ```
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,YAAiC,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,KAAK,EAAE,aAAa,EAA8B,MAAM,YAAY,CAAC;AAG5E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,KAAK,YAAY,EAAc,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAKvE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,YAAiC,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,KAAK,EAAE,aAAa,EAA8B,MAAM,YAAY,CAAC;AAG5E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,KAAK,YAAY,EAAc,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAKvE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAKlF,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGnE,YAAY,EAAE,KAAK,EAAE,CAAC;AAStB;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAE/D;;;GAGG;AACH,MAAM,WAAW,cAAe,SAAQ,SAAS;IAC/C,yDAAyD;IACzD,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAM/B,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,kEAAkE;IAClE,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAC7C,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,4DAA4D;IAC5D,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,gEAAgE;IAChE,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,qEAAqE;IACrE,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,2EAA2E;IAC3E,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,kDAAkD;IAClD,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAC7C,8EAA8E;IAC9E,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAC3C,2DAA2D;IAC3D,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,+DAA+D;IAC/D,QAAQ,CAAC,eAAe,EAAE,sBAAsB,CAAC;IACjD,2EAA2E;IAC3E,QAAQ,CAAC,qBAAqB,EAAE,4BAA4B,CAAC;IAC7D,2DAA2D;IAC3D,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAC7C,yDAAyD;IACzD,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,gEAAgE;IAChE,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAC7C,oEAAoE;IACpE,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,wDAAwD;IACxD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,qDAAqD;IACrD,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,gEAAgE;IAChE,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,0EAA0E;IAC1E,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,oDAAoD;IACpD,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,mDAAmD;IACnD,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,uEAAuE;IACvE,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,+DAA+D;IAC/D,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC;IAC/C,gDAAgD;IAChD,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,8CAA8C;IAC9C,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,8CAA8C;IAC9C,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,2DAA2D;IAC3D,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,2DAA2D;IAC3D,QAAQ,CAAC,gBAAgB,EAAE,uBAAuB,CAAC;IACnD,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,wDAAwD;IACxD,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,8DAA8D;IAC9D,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAC7C,8DAA8D;IAC9D,QAAQ,CAAC,eAAe,EAAE,sBAAsB,CAAC;IACjD,+DAA+D;IAC/D,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACtD;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,mFAAmF;IACnF,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0DAA0D;IAC1D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0DAA0D;IAC1D,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,OAAO,WAAW,CAAC;AAChC,eAAO,MAAM,WAAW,eAAe,CAAC;AAGxC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,cAAc,CA4MnF;AA4XD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAiHpD;AAuMD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,eAAe,EAAE,QAAQ,EACzB,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EAC3C,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,CAAC,EAAE,CAAC,CA4Bd;AAED;;;;;;;;;;GAUG;AACH,wBAAuB,WAAW,CAAC,CAAC,EAClC,eAAe,EAAE,QAAQ,EACzB,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EAC3C,UAAU,CAAC,EAAE,MAAM,GAClB,cAAc,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAyBpC;AAGD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC"}
|