@atcute/client 4.0.5 → 4.1.1
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 +338 -76
- package/dist/client.d.ts +35 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +75 -0
- package/dist/client.js.map +1 -1
- package/dist/credential-manager.d.ts +1 -1
- package/dist/credential-manager.d.ts.map +1 -1
- package/dist/credential-manager.js +6 -0
- package/dist/credential-manager.js.map +1 -1
- package/dist/fetch-handler.d.ts.map +1 -1
- package/dist/fetch-handler.js +1 -1
- package/dist/fetch-handler.js.map +1 -1
- package/dist/utils/jwt.d.ts.map +1 -1
- package/dist/utils/jwt.js.map +1 -1
- package/lib/client.ts +113 -0
- package/lib/fetch-handler.ts +1 -1
- package/package.json +8 -8
package/README.md
CHANGED
|
@@ -2,97 +2,359 @@
|
|
|
2
2
|
|
|
3
3
|
lightweight and cute API client for AT Protocol.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
```sh
|
|
6
|
+
npm install @atcute/client @atcute/bluesky
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## prerequisites
|
|
10
|
+
|
|
11
|
+
the client requires a definition package to know what queries and procedures are available. install
|
|
12
|
+
one alongside the client:
|
|
13
|
+
|
|
14
|
+
```sh
|
|
15
|
+
npm install @atcute/client @atcute/bluesky
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
then register the type definitions using one of these methods:
|
|
19
|
+
|
|
20
|
+
```jsonc
|
|
21
|
+
// tsconfig.json
|
|
22
|
+
{
|
|
23
|
+
"compilerOptions": {
|
|
24
|
+
"types": ["@atcute/bluesky"],
|
|
25
|
+
},
|
|
26
|
+
}
|
|
27
|
+
```
|
|
8
28
|
|
|
9
29
|
```ts
|
|
10
|
-
|
|
30
|
+
// env.d.ts
|
|
31
|
+
/// <reference types="@atcute/bluesky" />
|
|
32
|
+
```
|
|
11
33
|
|
|
12
|
-
|
|
34
|
+
```ts
|
|
35
|
+
// or as an import in your entrypoint
|
|
13
36
|
import type {} from '@atcute/bluesky';
|
|
37
|
+
```
|
|
14
38
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
39
|
+
now the XRPC methods will have full type information for the registered schemas.
|
|
40
|
+
|
|
41
|
+
available packages:
|
|
42
|
+
|
|
43
|
+
| package | schemas |
|
|
44
|
+
| ------------------------------------------------------------------ | --------------------------------------- |
|
|
45
|
+
| [`@atcute/atproto`](../../definitions/atproto) | `com.atproto.*` |
|
|
46
|
+
| [`@atcute/bluesky`](../../definitions/bluesky) | `app.bsky.*`, `chat.bsky.*` |
|
|
47
|
+
| [`@atcute/ozone`](../../definitions/ozone) | `tools.ozone.*` |
|
|
48
|
+
| [`@atcute/bluemoji`](../../definitions/bluemoji) | `blue.moji.*` |
|
|
49
|
+
| [`@atcute/frontpage`](../../definitions/frontpage) | `fyi.unravel.frontpage.*` |
|
|
50
|
+
| [`@atcute/whitewind`](../../definitions/whitewind) | `com.whtwnd.*` |
|
|
51
|
+
| [`@atcute/tangled`](../../definitions/tangled) | `sh.tangled.*` |
|
|
52
|
+
| [`@atcute/microcosm`](../../definitions/microcosm) | `blue.microcosm.*`, `com.bad-example.*` |
|
|
53
|
+
| [`@atcute/pckt`](../../definitions/pckt) | `blog.pckt.*` |
|
|
54
|
+
| [`@atcute/lexicon-community`](../../definitions/lexicon-community) | `community.lexicon.*` |
|
|
55
|
+
|
|
56
|
+
you can register multiple packages to combine their types.
|
|
57
|
+
|
|
58
|
+
## usage
|
|
59
|
+
|
|
60
|
+
the client communicates with AT Protocol services using XRPC, a simple RPC framework over HTTP.
|
|
61
|
+
queries are GET requests, procedures are POST requests.
|
|
62
|
+
|
|
63
|
+
### making requests
|
|
64
|
+
|
|
65
|
+
```ts
|
|
66
|
+
import { Client, simpleFetchHandler } from '@atcute/client';
|
|
67
|
+
import type {} from '@atcute/bluesky';
|
|
68
|
+
|
|
69
|
+
// create a client pointing to the Bluesky public API
|
|
70
|
+
const rpc = new Client({ handler: simpleFetchHandler({ service: 'https://public.api.bsky.app' }) });
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
use `get()` for queries and `post()` for procedures. both return a response object with `ok`,
|
|
74
|
+
`status`, `headers`, and `data` fields:
|
|
75
|
+
|
|
76
|
+
```ts
|
|
77
|
+
// queries use get()
|
|
78
|
+
const response = await rpc.get('app.bsky.actor.getProfile', {
|
|
79
|
+
params: { actor: 'bsky.app' },
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
if (response.ok) {
|
|
83
|
+
console.log(response.data.displayName);
|
|
84
|
+
// -> "Bluesky"
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
```ts
|
|
89
|
+
// procedures use post()
|
|
90
|
+
const response = await rpc.post('com.atproto.repo.createRecord', {
|
|
91
|
+
input: {
|
|
92
|
+
repo: 'did:plc:1234...',
|
|
93
|
+
collection: 'app.bsky.feed.post',
|
|
94
|
+
record: {
|
|
95
|
+
$type: 'app.bsky.feed.post',
|
|
96
|
+
text: 'hello world!',
|
|
97
|
+
createdAt: new Date().toISOString(),
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### handling errors
|
|
104
|
+
|
|
105
|
+
responses always include an `ok` field indicating success. for failed requests, `data` contains an
|
|
106
|
+
error object with `error` (the error name) and optionally `message` (description):
|
|
107
|
+
|
|
108
|
+
```ts
|
|
109
|
+
const response = await rpc.get('app.bsky.actor.getProfile', {
|
|
110
|
+
params: { actor: 'nonexistent.invalid' },
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
if (!response.ok) {
|
|
114
|
+
console.log(response.data.error);
|
|
115
|
+
// -> "InvalidRequest"
|
|
116
|
+
console.log(response.data.message);
|
|
117
|
+
// -> "Unable to resolve handle"
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
the error names are defined in the lexicon schema. you can switch on them for typed error handling:
|
|
122
|
+
|
|
123
|
+
```ts
|
|
124
|
+
if (!response.ok) {
|
|
125
|
+
switch (response.data.error) {
|
|
126
|
+
case 'InvalidRequest':
|
|
127
|
+
// handle or account doesn't exist
|
|
128
|
+
break;
|
|
129
|
+
case 'AccountTakedown':
|
|
130
|
+
// account was taken down
|
|
131
|
+
break;
|
|
132
|
+
case 'AccountDeactivated':
|
|
133
|
+
// account deactivated by user
|
|
134
|
+
break;
|
|
49
135
|
}
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### optimistic requests
|
|
140
|
+
|
|
141
|
+
if you prefer throwing on errors instead of checking `response.ok`, use the `ok()` helper:
|
|
142
|
+
|
|
143
|
+
```ts
|
|
144
|
+
import { Client, ok, simpleFetchHandler } from '@atcute/client';
|
|
145
|
+
|
|
146
|
+
const rpc = new Client({ handler: simpleFetchHandler({ service: 'https://public.api.bsky.app' }) });
|
|
50
147
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
148
|
+
// throws ClientResponseError if the request fails
|
|
149
|
+
const profile = await ok(rpc.get('app.bsky.actor.getProfile', { params: { actor: 'bsky.app' } }));
|
|
150
|
+
|
|
151
|
+
console.log(profile.displayName);
|
|
152
|
+
// -> "Bluesky"
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
catch errors with `ClientResponseError`:
|
|
156
|
+
|
|
157
|
+
```ts
|
|
158
|
+
import { ClientResponseError } from '@atcute/client';
|
|
159
|
+
|
|
160
|
+
try {
|
|
161
|
+
const profile = await ok(rpc.get('app.bsky.actor.getProfile', { params: { actor: 'invalid' } }));
|
|
162
|
+
} catch (err) {
|
|
163
|
+
if (err instanceof ClientResponseError) {
|
|
164
|
+
console.log(err.error); // error name from server
|
|
165
|
+
console.log(err.description); // error message from server
|
|
166
|
+
console.log(err.status); // HTTP status code
|
|
63
167
|
}
|
|
64
168
|
}
|
|
169
|
+
```
|
|
65
170
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
171
|
+
### authenticated requests
|
|
172
|
+
|
|
173
|
+
use `CredentialManager` to handle authentication. it manages tokens, automatically refreshes expired
|
|
174
|
+
access tokens, and can persist sessions:
|
|
70
175
|
|
|
71
|
-
|
|
176
|
+
```ts
|
|
177
|
+
import { Client, CredentialManager, ok } from '@atcute/client';
|
|
178
|
+
|
|
179
|
+
const manager = new CredentialManager({ service: 'https://bsky.social' });
|
|
180
|
+
const rpc = new Client({ handler: manager });
|
|
181
|
+
|
|
182
|
+
// sign in with handle/email and password (or app password)
|
|
183
|
+
await manager.login({ identifier: 'you.bsky.social', password: 'your-app-password' });
|
|
184
|
+
|
|
185
|
+
// requests are now authenticated
|
|
186
|
+
const session = await ok(rpc.get('com.atproto.server.getSession'));
|
|
187
|
+
console.log(session.did);
|
|
188
|
+
// -> "did:plc:..."
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
save `manager.session` to persist login across app restarts:
|
|
192
|
+
|
|
193
|
+
```ts
|
|
194
|
+
// after login, save the session
|
|
195
|
+
localStorage.setItem('session', JSON.stringify(manager.session));
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
```ts
|
|
199
|
+
// later, restore the session
|
|
200
|
+
const saved = localStorage.getItem('session');
|
|
201
|
+
if (saved) {
|
|
202
|
+
await manager.resume(JSON.parse(saved));
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
use callbacks to keep persisted sessions in sync:
|
|
207
|
+
|
|
208
|
+
```ts
|
|
209
|
+
const manager = new CredentialManager({
|
|
210
|
+
service: 'https://bsky.social',
|
|
211
|
+
onSessionUpdate(session) {
|
|
212
|
+
// called on login, resume, and token refresh
|
|
213
|
+
localStorage.setItem('session', JSON.stringify(session));
|
|
214
|
+
},
|
|
215
|
+
onExpired(session) {
|
|
216
|
+
// called when refresh token expires and can't be renewed
|
|
217
|
+
localStorage.removeItem('session');
|
|
218
|
+
},
|
|
219
|
+
});
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### response formats
|
|
223
|
+
|
|
224
|
+
by default, responses are parsed as JSON. for endpoints that return binary data, specify the format
|
|
225
|
+
with `as`:
|
|
226
|
+
|
|
227
|
+
```ts
|
|
228
|
+
// get response as a Blob
|
|
229
|
+
const { data: blob } = await ok(
|
|
230
|
+
rpc.get('com.atproto.sync.getBlob', {
|
|
231
|
+
params: { did: 'did:plc:...', cid: 'bafyrei...' },
|
|
232
|
+
as: 'blob',
|
|
233
|
+
}),
|
|
234
|
+
);
|
|
235
|
+
|
|
236
|
+
// get response as Uint8Array
|
|
237
|
+
const { data: bytes } = await ok(
|
|
238
|
+
rpc.get('com.atproto.sync.getBlob', {
|
|
239
|
+
params: { did: 'did:plc:...', cid: 'bafyrei...' },
|
|
240
|
+
as: 'bytes',
|
|
241
|
+
}),
|
|
242
|
+
);
|
|
243
|
+
|
|
244
|
+
// get response as ReadableStream
|
|
245
|
+
const { data: stream } = await ok(
|
|
246
|
+
rpc.get('com.atproto.sync.getBlob', {
|
|
247
|
+
params: { did: 'did:plc:...', cid: 'bafyrei...' },
|
|
248
|
+
as: 'stream',
|
|
249
|
+
}),
|
|
250
|
+
);
|
|
251
|
+
|
|
252
|
+
// discard response body
|
|
253
|
+
await ok(
|
|
254
|
+
rpc.post('com.atproto.repo.deleteRecord', {
|
|
255
|
+
input: { repo: 'did:plc:...', collection: '...', rkey: '...' },
|
|
256
|
+
as: null,
|
|
257
|
+
}),
|
|
258
|
+
);
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### runtime validation
|
|
262
|
+
|
|
263
|
+
by default, responses are trusted without validation. for stricter guarantees, use `call()` with the
|
|
264
|
+
schema from a definition package:
|
|
265
|
+
|
|
266
|
+
```ts
|
|
267
|
+
import { Client, ok, simpleFetchHandler } from '@atcute/client';
|
|
268
|
+
import { AppBskyActorGetProfile } from '@atcute/bluesky';
|
|
269
|
+
|
|
270
|
+
const rpc = new Client({ handler: simpleFetchHandler({ service: 'https://public.api.bsky.app' }) });
|
|
72
271
|
|
|
73
|
-
|
|
74
|
-
|
|
272
|
+
// validates params, input, and output against the schema
|
|
273
|
+
const response = await rpc.call(AppBskyActorGetProfile, {
|
|
274
|
+
params: { actor: 'bsky.app' },
|
|
275
|
+
});
|
|
75
276
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
277
|
+
if (response.ok) {
|
|
278
|
+
// response.data is validated
|
|
279
|
+
console.log(response.data.displayName);
|
|
280
|
+
}
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
validation errors throw `ClientValidationError`:
|
|
284
|
+
|
|
285
|
+
```ts
|
|
286
|
+
import { ClientValidationError } from '@atcute/client';
|
|
83
287
|
|
|
84
|
-
|
|
85
|
-
|
|
288
|
+
try {
|
|
289
|
+
await rpc.call(AppBskyActorGetProfile, { params: { actor: 'invalid!' } });
|
|
290
|
+
} catch (err) {
|
|
291
|
+
if (err instanceof ClientValidationError) {
|
|
292
|
+
console.log(err.target); // 'params', 'input', or 'output'
|
|
293
|
+
console.log(err.message); // validation error details
|
|
294
|
+
}
|
|
86
295
|
}
|
|
87
296
|
```
|
|
88
297
|
|
|
89
|
-
|
|
90
|
-
|
|
298
|
+
### service proxying
|
|
299
|
+
|
|
300
|
+
service proxying lets you make authenticated requests through your PDS to other services. the PDS
|
|
301
|
+
forwards the request with authorization headers proving it's acting on your behalf.
|
|
302
|
+
|
|
303
|
+
```ts
|
|
304
|
+
// must be authenticated via CredentialManager
|
|
305
|
+
const manager = new CredentialManager({ service: 'https://bsky.social' });
|
|
306
|
+
await manager.login({ identifier: 'you.bsky.social', password: 'your-app-password' });
|
|
307
|
+
|
|
308
|
+
// create a client that proxies requests through your PDS to the chat service
|
|
309
|
+
const chatClient = new Client({
|
|
310
|
+
handler: manager,
|
|
311
|
+
proxy: {
|
|
312
|
+
did: 'did:web:api.bsky.chat',
|
|
313
|
+
serviceId: '#bsky_chat',
|
|
314
|
+
},
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
// request goes to your PDS, which forwards it to api.bsky.chat with auth headers
|
|
318
|
+
const convos = await ok(chatClient.get('chat.bsky.convo.listConvos'));
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
common service IDs include:
|
|
322
|
+
|
|
323
|
+
- `#atproto_pds` - personal data server
|
|
324
|
+
- `#atproto_labeler` - labeler service
|
|
325
|
+
- `#bsky_chat` - Bluesky chat service
|
|
326
|
+
|
|
327
|
+
### custom fetch handlers
|
|
328
|
+
|
|
329
|
+
the `simpleFetchHandler` works for most cases. for advanced scenarios, provide your own handler:
|
|
330
|
+
|
|
331
|
+
```ts
|
|
332
|
+
import type { FetchHandler } from '@atcute/client';
|
|
333
|
+
|
|
334
|
+
const customHandler: FetchHandler = async (pathname, init) => {
|
|
335
|
+
// pathname is like "/xrpc/app.bsky.actor.getProfile?actor=bsky.app"
|
|
336
|
+
const url = new URL(pathname, 'https://public.api.bsky.app');
|
|
337
|
+
|
|
338
|
+
// add custom headers, logging, retry logic, etc.
|
|
339
|
+
console.log(`${init.method?.toUpperCase()} ${url}`);
|
|
340
|
+
|
|
341
|
+
return fetch(url, init);
|
|
342
|
+
};
|
|
343
|
+
|
|
344
|
+
const rpc = new Client({ handler: customHandler });
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
or implement `FetchHandlerObject` for stateful handlers (like `CredentialManager` does):
|
|
348
|
+
|
|
349
|
+
```ts
|
|
350
|
+
import type { FetchHandlerObject } from '@atcute/client';
|
|
91
351
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
352
|
+
class MyHandler implements FetchHandlerObject {
|
|
353
|
+
async handle(pathname: string, init: RequestInit): Promise<Response> {
|
|
354
|
+
// your implementation
|
|
355
|
+
return fetch(new URL(pathname, 'https://...'), init);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
const rpc = new Client({ handler: new MyHandler() });
|
|
360
|
+
```
|
package/dist/client.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Did } from '@atcute/lexicons';
|
|
2
2
|
import type { XRPCProcedures, XRPCQueries } from '@atcute/lexicons/ambient';
|
|
3
|
+
import * as v from '@atcute/lexicons/validations';
|
|
3
4
|
import type { InferInput, InferOutput, ObjectSchema, XRPCBlobBodyParam, XRPCLexBodyParam, XRPCProcedureMetadata, XRPCQueryMetadata } from '@atcute/lexicons/validations';
|
|
4
5
|
import { type FetchHandler, type FetchHandlerObject } from './fetch-handler.js';
|
|
5
6
|
type RequiredKeysOf<TType extends object> = TType extends any ? Exclude<{
|
|
@@ -48,6 +49,23 @@ export type ProcedureRequestOptions<TDef> = BaseRequestOptions & (TDef extends X
|
|
|
48
49
|
input?: Record<string, unknown> | Blob | ArrayBuffer | ArrayBufferView | ReadableStream;
|
|
49
50
|
params?: Record<string, unknown>;
|
|
50
51
|
});
|
|
52
|
+
export type CallRequestOptions<TMeta> = BaseRequestOptions & {
|
|
53
|
+
as?: ResponseFormat | null;
|
|
54
|
+
} & (TMeta extends XRPCQueryMetadata<infer Params, any, any> ? Params extends ObjectSchema ? {
|
|
55
|
+
params: InferInput<Params>;
|
|
56
|
+
} : {
|
|
57
|
+
params?: Record<string, unknown>;
|
|
58
|
+
} : TMeta extends XRPCProcedureMetadata<infer Params, infer Input, any, any> ? (Params extends ObjectSchema ? {
|
|
59
|
+
params: InferInput<Params>;
|
|
60
|
+
} : {
|
|
61
|
+
params?: Record<string, unknown>;
|
|
62
|
+
}) & (Input extends XRPCLexBodyParam ? {
|
|
63
|
+
input: InferInput<Input['schema']>;
|
|
64
|
+
} : Input extends XRPCBlobBodyParam ? {
|
|
65
|
+
input: Blob | ArrayBuffer | ArrayBufferView | ReadableStream;
|
|
66
|
+
} : {
|
|
67
|
+
input?: Record<string, unknown> | Blob | ArrayBuffer | ArrayBufferView | ReadableStream;
|
|
68
|
+
}) : never);
|
|
51
69
|
/** standard XRPC error payload structure */
|
|
52
70
|
export type XRPCErrorPayload = {
|
|
53
71
|
/** error name */
|
|
@@ -87,6 +105,9 @@ type UnknownClientResponse = {
|
|
|
87
105
|
ok: false;
|
|
88
106
|
data: XRPCErrorPayload;
|
|
89
107
|
});
|
|
108
|
+
type Namespaced<T> = {
|
|
109
|
+
mainSchema: T;
|
|
110
|
+
};
|
|
90
111
|
/** options for configuring service proxying */
|
|
91
112
|
export type ServiceProxyOptions = {
|
|
92
113
|
/** DID identifier that the upstream service should look up */
|
|
@@ -135,6 +156,12 @@ export declare class Client<TQueries = XRPCQueries, TProcedures = XRPCProcedures
|
|
|
135
156
|
* @param options procedure options
|
|
136
157
|
*/
|
|
137
158
|
post<TName extends keyof TProcedures, TInit extends ProcedureRequestOptions<TProcedures[TName]>>(name: TName, ...options: HasRequiredKeys<TInit> extends true ? [init: TInit] : [init?: TInit]): Promise<ClientResponse<TProcedures[TName], TInit>>;
|
|
159
|
+
/**
|
|
160
|
+
* performs an XRPC call with schema validation
|
|
161
|
+
* @param schema the lexicon schema for the endpoint, or a namespace containing mainSchema
|
|
162
|
+
* @param options call options
|
|
163
|
+
*/
|
|
164
|
+
call<TMeta extends XRPCQueryMetadata | XRPCProcedureMetadata, TInit extends CallRequestOptions<TMeta>>(schema: TMeta | Namespaced<TMeta>, ...options: HasRequiredKeys<TInit> extends true ? [init: TInit] : [init?: TInit]): Promise<ClientResponse<TMeta, TInit>>;
|
|
138
165
|
}
|
|
139
166
|
export declare const isXRPCErrorPayload: (input: any) => input is XRPCErrorPayload;
|
|
140
167
|
type ExtractSuccessData<R> = R extends {
|
|
@@ -173,5 +200,13 @@ export declare class ClientResponseError extends Error {
|
|
|
173
200
|
readonly headers: Headers;
|
|
174
201
|
constructor({ status, headers, data }: ClientResponseErrorOptions);
|
|
175
202
|
}
|
|
203
|
+
/** represents a validation error during typed calls */
|
|
204
|
+
export declare class ClientValidationError extends Error {
|
|
205
|
+
/** validation target (params, input, or output) */
|
|
206
|
+
readonly target: 'params' | 'input' | 'output';
|
|
207
|
+
/** validation result */
|
|
208
|
+
readonly result: v.Err;
|
|
209
|
+
constructor(target: 'params' | 'input' | 'output', result: v.Err);
|
|
210
|
+
}
|
|
176
211
|
export {};
|
|
177
212
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../lib/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../lib/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import * as v from '@atcute/lexicons/validations';
|
|
1
2
|
import { buildFetchHandler } from './fetch-handler.js';
|
|
2
3
|
const JSON_CONTENT_TYPE_RE = /\bapplication\/json\b/;
|
|
3
4
|
/** XRPC API client */
|
|
4
5
|
export class Client {
|
|
6
|
+
handler;
|
|
7
|
+
proxy;
|
|
5
8
|
constructor({ handler, proxy = null }) {
|
|
6
9
|
this.handler = buildFetchHandler(handler);
|
|
7
10
|
this.proxy = proxy;
|
|
@@ -20,6 +23,57 @@ export class Client {
|
|
|
20
23
|
post(name, options = {}) {
|
|
21
24
|
return this.#perform('post', name, options);
|
|
22
25
|
}
|
|
26
|
+
async call(schema, options = {}) {
|
|
27
|
+
// early bailout for tree-shaking when schemas aren't used
|
|
28
|
+
if (!v.xrpcSchemaGenerated) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
// extract mainSchema if namespace was passed
|
|
32
|
+
if ('mainSchema' in schema) {
|
|
33
|
+
schema = schema.mainSchema;
|
|
34
|
+
}
|
|
35
|
+
if (schema.params !== null) {
|
|
36
|
+
const paramsResult = v.safeParse(schema.params, options.params);
|
|
37
|
+
if (!paramsResult.ok) {
|
|
38
|
+
throw new ClientValidationError('params', paramsResult);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (schema.type === 'xrpc_procedure' && schema.input?.type === 'lex') {
|
|
42
|
+
const inputResult = v.safeParse(schema.input.schema, options.input);
|
|
43
|
+
if (!inputResult.ok) {
|
|
44
|
+
throw new ClientValidationError('input', inputResult);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const isQuery = schema.type === 'xrpc_query';
|
|
48
|
+
const method = isQuery ? 'get' : 'post';
|
|
49
|
+
const format = options.as !== undefined
|
|
50
|
+
? options.as
|
|
51
|
+
: schema.output?.type === 'lex'
|
|
52
|
+
? 'json'
|
|
53
|
+
: schema.output?.type === 'blob'
|
|
54
|
+
? 'blob'
|
|
55
|
+
: null;
|
|
56
|
+
const response = await this.#perform(method, schema.nsid, {
|
|
57
|
+
params: options.params,
|
|
58
|
+
input: isQuery ? undefined : options.input,
|
|
59
|
+
as: format,
|
|
60
|
+
signal: options.signal,
|
|
61
|
+
headers: options.headers,
|
|
62
|
+
});
|
|
63
|
+
if (format === 'json' && response.ok && schema.output?.type === 'lex') {
|
|
64
|
+
const outputResult = v.safeParse(schema.output.schema, response.data);
|
|
65
|
+
if (!outputResult.ok) {
|
|
66
|
+
throw new ClientValidationError('output', outputResult);
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
ok: true,
|
|
70
|
+
status: response.status,
|
|
71
|
+
headers: response.headers,
|
|
72
|
+
data: outputResult.value,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
return response;
|
|
76
|
+
}
|
|
23
77
|
async #perform(method, name, { signal, as: format = 'json', headers, input, params }) {
|
|
24
78
|
const isWebInput = input &&
|
|
25
79
|
(input instanceof Blob ||
|
|
@@ -176,6 +230,14 @@ export const ok = (input) => {
|
|
|
176
230
|
};
|
|
177
231
|
/** represents an error response returned by the client */
|
|
178
232
|
export class ClientResponseError extends Error {
|
|
233
|
+
/** error name returned by service */
|
|
234
|
+
error;
|
|
235
|
+
/** error message returned by service */
|
|
236
|
+
description;
|
|
237
|
+
/** response status */
|
|
238
|
+
status;
|
|
239
|
+
/** response headers */
|
|
240
|
+
headers;
|
|
179
241
|
constructor({ status, headers = new Headers(), data }) {
|
|
180
242
|
super(`${data.error} > ${data.message ?? '(unspecified description)'}`);
|
|
181
243
|
this.name = 'ClientResponseError';
|
|
@@ -185,5 +247,18 @@ export class ClientResponseError extends Error {
|
|
|
185
247
|
this.headers = headers;
|
|
186
248
|
}
|
|
187
249
|
}
|
|
250
|
+
/** represents a validation error during typed calls */
|
|
251
|
+
export class ClientValidationError extends Error {
|
|
252
|
+
/** validation target (params, input, or output) */
|
|
253
|
+
target;
|
|
254
|
+
/** validation result */
|
|
255
|
+
result;
|
|
256
|
+
constructor(target, result) {
|
|
257
|
+
super(`validation failed for ${target}: ${result.message}`);
|
|
258
|
+
this.name = 'ClientValidationError';
|
|
259
|
+
this.target = target;
|
|
260
|
+
this.result = result;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
188
263
|
// #endregion
|
|
189
264
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../lib/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../lib/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,8BAA8B,CAAC;AAWlD,OAAO,EAAE,iBAAiB,EAA8C,MAAM,oBAAoB,CAAC;AA6LnG,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAErD,sBAAsB;AACtB,MAAM,OAAO,MAAM;IAClB,OAAO,CAAe;IACtB,KAAK,CAA6B;IAElC,YAAY,EAAE,OAAO,EAAE,KAAK,GAAG,IAAI,EAAiB,EAAE;QACrD,IAAI,CAAC,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAAA,CACnB;IAED;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,GAA2B,EAAE,EAG/E;QACD,OAAO,IAAI,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAAA,CACtC;IAYD,GAAG,CAAC,IAAY,EAAE,OAAO,GAA2B,EAAE,EAAE;QACvD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAAA,CAC3C;IAYD,IAAI,CAAC,IAAY,EAAE,OAAO,GAA2B,EAAE,EAAE;QACxD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAAA,CAC5C;IAYD,KAAK,CAAC,IAAI,CAAC,MAAW,EAAE,OAAO,GAAQ,EAAE,EAAgB;QACxD,0DAA0D;QAC1D,IAAI,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC;YAC5B,OAAO;QACR,CAAC;QAED,6CAA6C;QAC7C,IAAI,YAAY,IAAI,MAAM,EAAE,CAAC;YAC5B,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;QAC5B,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC5B,MAAM,YAAY,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAChE,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;gBACtB,MAAM,IAAI,qBAAqB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACzD,CAAC;QACF,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,CAAC;YACtE,MAAM,WAAW,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACpE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;gBACrB,MAAM,IAAI,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACvD,CAAC;QACF,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC;QAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAExC,MAAM,MAAM,GACX,OAAO,CAAC,EAAE,KAAK,SAAS;YACvB,CAAC,CAAC,OAAO,CAAC,EAAE;YACZ,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,KAAK;gBAC9B,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,MAAM;oBAC/B,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,IAAI,CAAC;QAEX,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;YACzD,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK;YAC1C,EAAE,EAAE,MAAM;YACV,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;SACxB,CAAC,CAAC;QAEH,IAAI,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,KAAK,EAAE,CAAC;YACvE,MAAM,YAAY,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtE,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;gBACtB,MAAM,IAAI,qBAAqB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACzD,CAAC;YAED,OAAO;gBACN,EAAE,EAAE,IAAI;gBACR,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,IAAI,EAAE,YAAY,CAAC,KAAK;aACxB,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAAA,CAChB;IAED,KAAK,CAAC,QAAQ,CACb,MAAsB,EACtB,IAAY,EACZ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAA0B,EAC9E;QACD,MAAM,UAAU,GACf,KAAK;YACL,CAAC,KAAK,YAAY,IAAI;gBACrB,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;gBACzB,KAAK,YAAY,WAAW;gBAC5B,KAAK,YAAY,cAAc,CAAC,CAAC;QAEnC,MAAM,GAAG,GAAG,SAAS,IAAI,EAAE,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAE7D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YACxC,MAAM;YACN,MAAM;YACN,IAAI,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK;YAC1D,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE;gBAC/B,cAAc,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI;gBAChE,eAAe,EAAE,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC;aAClD,CAAC;SACF,CAAC,CAAC;QAEH,CAAC;YACA,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;YAEjC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAEzC,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;gBACpB,IAAI,IAAS,CAAC;gBAEd,IAAI,IAAI,IAAI,IAAI,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrD,sDAAsD;oBACtD,IAAI,CAAC;wBACJ,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;wBACrC,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;4BAChC,IAAI,GAAG,MAAM,CAAC;wBACf,CAAC;oBACF,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;gBACX,CAAC;qBAAM,CAAC;oBACP,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;gBAC/B,CAAC;gBAED,OAAO;oBACN,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,OAAO;oBAChB,IAAI,EAAE,IAAI,IAAI;wBACb,KAAK,EAAE,kBAAkB;wBACzB,OAAO,EAAE,mCAAmC,MAAM,EAAE;qBACpD;iBACD,CAAC;YACH,CAAC;YAED,CAAC;gBACA,IAAI,IAAS,CAAC;gBACd,QAAQ,MAAM,EAAE,CAAC;oBAChB,KAAK,MAAM,EAAE,CAAC;wBACb,IAAI,IAAI,IAAI,IAAI,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;4BACrD,0CAA0C;4BAC1C,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;wBAC9B,CAAC;6BAAM,CAAC;4BACP,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;4BAE9B,MAAM,IAAI,SAAS,CAAC,sCAAsC,IAAI,GAAG,CAAC,CAAC;wBACpE,CAAC;wBAED,MAAM;oBACP,CAAC;oBAED,KAAK,IAAI,EAAE,CAAC;wBACX,IAAI,GAAG,IAAI,CAAC;wBAEZ,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;wBAE9B,MAAM;oBACP,CAAC;oBAED,KAAK,MAAM,EAAE,CAAC;wBACb,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;wBAC7B,MAAM;oBACP,CAAC;oBACD,KAAK,OAAO,EAAE,CAAC;wBACd,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;wBACpD,MAAM;oBACP,CAAC;oBACD,KAAK,QAAQ,EAAE,CAAC;wBACf,IAAI,GAAG,QAAQ,CAAC,IAAK,CAAC;wBACtB,MAAM;oBACP,CAAC;gBACF,CAAC;gBAED,OAAO;oBACN,EAAE,EAAE,IAAI;oBACR,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,OAAO;oBAChB,IAAI,EAAE,IAAI;iBACV,CAAC;YACH,CAAC;QACF,CAAC;IAAA,CACD;CACD;AAED,aAAa;AAEb,4BAA4B;AAC5B,MAAM,sBAAsB,GAAG,CAAC,MAA2C,EAAU,EAAE,CAAC;IACvF,IAAI,YAAyC,CAAC;IAE9C,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAE1B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,YAAY,KAAK,IAAI,eAAe,EAAE,CAAC;YAEvC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;oBACxD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;oBACvB,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC;gBACpC,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC;YACnC,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAAA,CACzD,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,KAA6C,EAAiB,EAAE,CAAC;IAC/F,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QACnB,OAAO,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IACzC,CAAC;IAED,OAAO,IAAI,CAAC;AAAA,CACZ,CAAC;AAEF,MAAM,aAAa,GAAG,CACrB,IAA6B,EAC7B,QAAuC,EACb,EAAE,CAAC;IAC7B,IAAI,OAA4B,CAAC;IAEjC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE7B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;YAE9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC1B,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,OAAO,IAAI,IAAI,CAAC;AAAA,CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAU,EAA6B,EAAE,CAAC;IAC5E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,KAAK,CAAC,KAAK,CAAC;IACpC,MAAM,WAAW,GAAG,OAAO,KAAK,CAAC,OAAO,CAAC;IAEzC,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,WAAW,KAAK,WAAW,IAAI,WAAW,KAAK,QAAQ,CAAC,CAAC;AAAA,CAC1F,CAAC;AAMF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,EAAE,GAGX,CAAC,KAA6D,EAAO,EAAE,CAAC;IAC3E,IAAI,KAAK,YAAY,OAAO,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;QACd,OAAO,KAAK,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAAA,CACrC,CAAC;AASF,0DAA0D;AAC1D,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC7C,qCAAqC;IAC5B,KAAK,CAAS;IACvB,wCAAwC;IAC/B,WAAW,CAAU;IAE9B,sBAAsB;IACb,MAAM,CAAS;IACxB,uBAAuB;IACd,OAAO,CAAU;IAE1B,YAAY,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,OAAO,EAAE,EAAE,IAAI,EAA8B,EAAE;QAClF,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,OAAO,IAAI,2BAA2B,EAAE,CAAC,CAAC;QAExE,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAElC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;QAEhC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAAA,CACvB;CACD;AAED,uDAAuD;AACvD,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC/C,mDAAmD;IAC1C,MAAM,CAAgC;IAC/C,wBAAwB;IACf,MAAM,CAAQ;IAEvB,YAAY,MAAqC,EAAE,MAAa,EAAE;QACjE,KAAK,CAAC,yBAAyB,MAAM,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAE5D,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IAAA,CACrB;CACD;AAED,aAAa"}
|
|
@@ -75,7 +75,7 @@ export declare class CredentialManager implements FetchHandlerObject {
|
|
|
75
75
|
fetch: typeof fetch;
|
|
76
76
|
/** current active session, undefined if not authenticated */
|
|
77
77
|
session?: AtpSessionData;
|
|
78
|
-
constructor({ service, onExpired, onRefresh, onSessionUpdate, fetch: _fetch
|
|
78
|
+
constructor({ service, onExpired, onRefresh, onSessionUpdate, fetch: _fetch }: CredentialManagerOptions);
|
|
79
79
|
/** service URL to make actual API requests with */
|
|
80
80
|
get dispatchUrl(): string;
|
|
81
81
|
handle(pathname: string, init: RequestInit): Promise<Response>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential-manager.d.ts","sourceRoot":"","sources":["../lib/credential-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAK5C,OAAO,EAAsB,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIjF;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC5B,yBAAyB;IACzB,KAAK,EACF,oBAAoB,GACpB,qBAAqB,GACrB,+BAA+B,GAC/B,0BAA0B,GAC1B,uBAAuB,CAAC;IAC3B,kBAAkB;IAClB,GAAG,EAAE,GAAG,CAAC;IACT,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;CACZ;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC7B,0BAA0B;IAC1B,KAAK,EAAE,qBAAqB,CAAC;IAC7B,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,kBAAkB;IAClB,GAAG,EAAE,GAAG,CAAC;IACT,sDAAsD;IACtD,GAAG,EAAE,GAAG,CAAC;IACT,uCAAuC;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,mCAAmC;IACnC,GAAG,EAAE,MAAM,CAAC;CACZ;AAED,gDAAgD;AAChD,MAAM,WAAW,cAAc;IAC9B,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,GAAG,EAAE,GAAG,CAAC;IACT,+FAA+F;IAC/F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4EAA4E;IAC5E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gFAAgF;IAChF,MAAM,EAAE,OAAO,CAAC;IAChB,sDAAsD;IACtD,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACxC,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAEhB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAErB,sEAAsE;IACtE,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9C,yDAAyD;IACzD,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9C,sFAAsF;IACtF,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;CACpD;AAED,qBAAa,iBAAkB,YAAW,kBAAkB;;IAC3D,uDAAuD;IACvD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,2BAA2B;IAC3B,KAAK,EAAE,OAAO,KAAK,CAAC;IAcpB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"credential-manager.d.ts","sourceRoot":"","sources":["../lib/credential-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,10 @@ import { Client, ClientResponseError, isXRPCErrorPayload, ok } from './client.js
|
|
|
3
3
|
import { simpleFetchHandler } from './fetch-handler.js';
|
|
4
4
|
import { decodeJwt } from './utils/jwt.js';
|
|
5
5
|
export class CredentialManager {
|
|
6
|
+
/** service URL to make authentication requests with */
|
|
7
|
+
serviceUrl;
|
|
8
|
+
/** fetch implementation */
|
|
9
|
+
fetch;
|
|
6
10
|
/** internal client instance for making authentication requests */
|
|
7
11
|
#server;
|
|
8
12
|
/** holds a promise for the current refresh operation, used for debouncing */
|
|
@@ -13,6 +17,8 @@ export class CredentialManager {
|
|
|
13
17
|
#onRefresh;
|
|
14
18
|
/** callback for session updates */
|
|
15
19
|
#onSessionUpdate;
|
|
20
|
+
/** current active session, undefined if not authenticated */
|
|
21
|
+
session;
|
|
16
22
|
constructor({ service, onExpired, onRefresh, onSessionUpdate, fetch: _fetch = fetch, }) {
|
|
17
23
|
this.serviceUrl = service;
|
|
18
24
|
this.fetch = _fetch;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential-manager.js","sourceRoot":"","sources":["../lib/credential-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAoB,MAAM,kBAAkB,CAAC;AAKpE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAA2B,MAAM,oBAAoB,CAAC;AAEjF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAgF3C,MAAM,OAAO,iBAAiB;
|
|
1
|
+
{"version":3,"file":"credential-manager.js","sourceRoot":"","sources":["../lib/credential-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-handler.d.ts","sourceRoot":"","sources":["../lib/fetch-handler.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,MAAM,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEtF,iCAAiC;AACjC,MAAM,WAAW,kBAAkB;IAClC,MAAM,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACzF;AAED,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"fetch-handler.d.ts","sourceRoot":"","sources":["../lib/fetch-handler.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,MAAM,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEtF,iCAAiC;AACjC,MAAM,WAAW,kBAAkB;IAClC,MAAM,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACzF;AAED,eAAO,MAAM,iBAAiB,8DAM7B,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACzC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CAChC;AAED,eAAO,MAAM,kBAAkB,0EAQ9B,CAAC"}
|
package/dist/fetch-handler.js
CHANGED
|
@@ -7,7 +7,7 @@ export const buildFetchHandler = (handler) => {
|
|
|
7
7
|
export const simpleFetchHandler = ({ service, fetch: _fetch = fetch, }) => {
|
|
8
8
|
return async (pathname, init) => {
|
|
9
9
|
const url = new URL(pathname, service);
|
|
10
|
-
return await _fetch(url, init);
|
|
10
|
+
return await _fetch(url.href, init);
|
|
11
11
|
};
|
|
12
12
|
};
|
|
13
13
|
//# sourceMappingURL=fetch-handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-handler.js","sourceRoot":"","sources":["../lib/fetch-handler.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAA0C,EAAgB,EAAE;
|
|
1
|
+
{"version":3,"file":"fetch-handler.js","sourceRoot":"","sources":["../lib/fetch-handler.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAA0C,EAAgB,EAAE,CAAC;IAC9F,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,OAAO,CAAC;AAAA,CACf,CAAC;AAOF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EAClC,OAAO,EACP,KAAK,EAAE,MAAM,GAAG,KAAK,GACM,EAAgB,EAAE,CAAC;IAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACvC,OAAO,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAAA,CACpC,CAAC;AAAA,CACF,CAAC"}
|
package/dist/utils/jwt.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../lib/utils/jwt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,eAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../lib/utils/jwt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,eAAO,MAAM,SAAS,4BAqBrB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,yBAqB3B,CAAC"}
|
package/dist/utils/jwt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.js","sourceRoot":"","sources":["../../lib/utils/jwt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAW,EAAE;
|
|
1
|
+
{"version":3,"file":"jwt.js","sourceRoot":"","sources":["../../lib/utils/jwt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC;IACpD,MAAM,GAAG,GAAG,CAAC,CAAC;IACd,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjC,IAAI,OAAe,CAAC;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,CAAC;QACJ,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,GAAI,CAAW,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC;IACzG,CAAC;IAED,IAAI,CAAC;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,GAAI,CAAW,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC;IAC1G,CAAC;AAAA,CACD,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC;IACvD,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAEvD,QAAQ,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC;YACL,MAAM;QACP,KAAK,CAAC;YACL,MAAM,IAAI,IAAI,CAAC;YACf,MAAM;QACP,KAAK,CAAC;YACL,MAAM,IAAI,GAAG,CAAC;YACd,MAAM;QACP;YACC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,CAAC;QACJ,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;AAAA,CACD,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC;IACjD,OAAO,kBAAkB,CACxB,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,IAAI,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAEtD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;QACnB,CAAC;QAED,OAAO,GAAG,GAAG,IAAI,CAAC;IAAA,CAClB,CAAC,CACF,CAAC;AAAA,CACF,CAAC"}
|
package/lib/client.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Did } from '@atcute/lexicons';
|
|
2
2
|
import type { XRPCProcedures, XRPCQueries } from '@atcute/lexicons/ambient';
|
|
3
|
+
import * as v from '@atcute/lexicons/validations';
|
|
3
4
|
import type {
|
|
4
5
|
InferInput,
|
|
5
6
|
InferOutput,
|
|
@@ -90,6 +91,25 @@ export type ProcedureRequestOptions<TDef> = BaseRequestOptions &
|
|
|
90
91
|
params?: Record<string, unknown>;
|
|
91
92
|
});
|
|
92
93
|
|
|
94
|
+
export type CallRequestOptions<TMeta> = BaseRequestOptions & {
|
|
95
|
+
as?: ResponseFormat | null;
|
|
96
|
+
} & (TMeta extends XRPCQueryMetadata<infer Params, any, any>
|
|
97
|
+
? // query
|
|
98
|
+
Params extends ObjectSchema
|
|
99
|
+
? { params: InferInput<Params> }
|
|
100
|
+
: { params?: Record<string, unknown> }
|
|
101
|
+
: TMeta extends XRPCProcedureMetadata<infer Params, infer Input, any, any>
|
|
102
|
+
? // procedure
|
|
103
|
+
(Params extends ObjectSchema
|
|
104
|
+
? { params: InferInput<Params> }
|
|
105
|
+
: { params?: Record<string, unknown> }) &
|
|
106
|
+
(Input extends XRPCLexBodyParam
|
|
107
|
+
? { input: InferInput<Input['schema']> }
|
|
108
|
+
: Input extends XRPCBlobBodyParam
|
|
109
|
+
? { input: Blob | ArrayBuffer | ArrayBufferView | ReadableStream }
|
|
110
|
+
: { input?: Record<string, unknown> | Blob | ArrayBuffer | ArrayBufferView | ReadableStream })
|
|
111
|
+
: never);
|
|
112
|
+
|
|
93
113
|
type InternalRequestOptions = BaseRequestOptions & {
|
|
94
114
|
as?: ResponseFormat | null;
|
|
95
115
|
params?: Record<string, unknown>;
|
|
@@ -148,6 +168,11 @@ type UnknownClientResponse = { status: number; headers: Headers } & (
|
|
|
148
168
|
|
|
149
169
|
// #endregion
|
|
150
170
|
|
|
171
|
+
// #region Type definitions for call method
|
|
172
|
+
type Namespaced<T> = { mainSchema: T };
|
|
173
|
+
|
|
174
|
+
// #endregion
|
|
175
|
+
|
|
151
176
|
// #region Client
|
|
152
177
|
/** options for configuring service proxying */
|
|
153
178
|
export type ServiceProxyOptions = {
|
|
@@ -227,6 +252,78 @@ export class Client<TQueries = XRPCQueries, TProcedures = XRPCProcedures> {
|
|
|
227
252
|
return this.#perform('post', name, options);
|
|
228
253
|
}
|
|
229
254
|
|
|
255
|
+
/**
|
|
256
|
+
* performs an XRPC call with schema validation
|
|
257
|
+
* @param schema the lexicon schema for the endpoint, or a namespace containing mainSchema
|
|
258
|
+
* @param options call options
|
|
259
|
+
*/
|
|
260
|
+
call<TMeta extends XRPCQueryMetadata | XRPCProcedureMetadata, TInit extends CallRequestOptions<TMeta>>(
|
|
261
|
+
schema: TMeta | Namespaced<TMeta>,
|
|
262
|
+
...options: HasRequiredKeys<TInit> extends true ? [init: TInit] : [init?: TInit]
|
|
263
|
+
): Promise<ClientResponse<TMeta, TInit>>;
|
|
264
|
+
|
|
265
|
+
async call(schema: any, options: any = {}): Promise<any> {
|
|
266
|
+
// early bailout for tree-shaking when schemas aren't used
|
|
267
|
+
if (!v.xrpcSchemaGenerated) {
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// extract mainSchema if namespace was passed
|
|
272
|
+
if ('mainSchema' in schema) {
|
|
273
|
+
schema = schema.mainSchema;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
if (schema.params !== null) {
|
|
277
|
+
const paramsResult = v.safeParse(schema.params, options.params);
|
|
278
|
+
if (!paramsResult.ok) {
|
|
279
|
+
throw new ClientValidationError('params', paramsResult);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
if (schema.type === 'xrpc_procedure' && schema.input?.type === 'lex') {
|
|
284
|
+
const inputResult = v.safeParse(schema.input.schema, options.input);
|
|
285
|
+
if (!inputResult.ok) {
|
|
286
|
+
throw new ClientValidationError('input', inputResult);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
const isQuery = schema.type === 'xrpc_query';
|
|
291
|
+
const method = isQuery ? 'get' : 'post';
|
|
292
|
+
|
|
293
|
+
const format =
|
|
294
|
+
options.as !== undefined
|
|
295
|
+
? options.as
|
|
296
|
+
: schema.output?.type === 'lex'
|
|
297
|
+
? 'json'
|
|
298
|
+
: schema.output?.type === 'blob'
|
|
299
|
+
? 'blob'
|
|
300
|
+
: null;
|
|
301
|
+
|
|
302
|
+
const response = await this.#perform(method, schema.nsid, {
|
|
303
|
+
params: options.params,
|
|
304
|
+
input: isQuery ? undefined : options.input,
|
|
305
|
+
as: format,
|
|
306
|
+
signal: options.signal,
|
|
307
|
+
headers: options.headers,
|
|
308
|
+
});
|
|
309
|
+
|
|
310
|
+
if (format === 'json' && response.ok && schema.output?.type === 'lex') {
|
|
311
|
+
const outputResult = v.safeParse(schema.output.schema, response.data);
|
|
312
|
+
if (!outputResult.ok) {
|
|
313
|
+
throw new ClientValidationError('output', outputResult);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
return {
|
|
317
|
+
ok: true,
|
|
318
|
+
status: response.status,
|
|
319
|
+
headers: response.headers,
|
|
320
|
+
data: outputResult.value,
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
return response;
|
|
325
|
+
}
|
|
326
|
+
|
|
230
327
|
async #perform(
|
|
231
328
|
method: 'get' | 'post',
|
|
232
329
|
name: string,
|
|
@@ -459,4 +556,20 @@ export class ClientResponseError extends Error {
|
|
|
459
556
|
}
|
|
460
557
|
}
|
|
461
558
|
|
|
559
|
+
/** represents a validation error during typed calls */
|
|
560
|
+
export class ClientValidationError extends Error {
|
|
561
|
+
/** validation target (params, input, or output) */
|
|
562
|
+
readonly target: 'params' | 'input' | 'output';
|
|
563
|
+
/** validation result */
|
|
564
|
+
readonly result: v.Err;
|
|
565
|
+
|
|
566
|
+
constructor(target: 'params' | 'input' | 'output', result: v.Err) {
|
|
567
|
+
super(`validation failed for ${target}: ${result.message}`);
|
|
568
|
+
|
|
569
|
+
this.name = 'ClientValidationError';
|
|
570
|
+
this.target = target;
|
|
571
|
+
this.result = result;
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
|
|
462
575
|
// #endregion
|
package/lib/fetch-handler.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@atcute/client",
|
|
4
|
-
"version": "4.
|
|
4
|
+
"version": "4.1.1",
|
|
5
5
|
"description": "lightweight and cute API client for AT Protocol",
|
|
6
6
|
"license": "0BSD",
|
|
7
7
|
"repository": {
|
|
@@ -18,18 +18,18 @@
|
|
|
18
18
|
".": "./dist/index.js"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@atcute/identity": "^1.1.
|
|
22
|
-
"@atcute/lexicons": "^1.2.
|
|
21
|
+
"@atcute/identity": "^1.1.3",
|
|
22
|
+
"@atcute/lexicons": "^1.2.5"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@vitest/coverage-v8": "^
|
|
26
|
-
"vitest": "^
|
|
27
|
-
"@atcute/atproto": "^3.1.
|
|
28
|
-
"@atcute/bluesky": "^3.2.
|
|
25
|
+
"@vitest/coverage-v8": "^4.0.14",
|
|
26
|
+
"vitest": "^4.0.14",
|
|
27
|
+
"@atcute/atproto": "^3.1.9",
|
|
28
|
+
"@atcute/bluesky": "^3.2.13",
|
|
29
29
|
"@atcute/internal-dev-env": "^1.0.2"
|
|
30
30
|
},
|
|
31
31
|
"scripts": {
|
|
32
|
-
"build": "
|
|
32
|
+
"build": "tsgo --project tsconfig.build.json",
|
|
33
33
|
"postbuild": "node ./scripts/ensure-files.js",
|
|
34
34
|
"test": "vitest run --coverage",
|
|
35
35
|
"prepublish": "rm -rf dist; pnpm run build"
|