@atproto/xrpc 0.7.5 → 0.7.7

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/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @atproto/xrpc
2
2
 
3
+ ## 0.7.7
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`d551b0e`](https://github.com/bluesky-social/atproto/commit/d551b0e3527714c111c3ec6e4c90ad7f46369fab)]:
8
+ - @atproto/lexicon@0.6.0
9
+
10
+ ## 0.7.6
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies []:
15
+ - @atproto/lexicon@0.5.2
16
+
3
17
  ## 0.7.5
4
18
 
5
19
  ### Patch Changes
@@ -183,7 +197,7 @@
183
197
  `AtpAgent`.
184
198
 
185
199
  ```ts
186
- import { Agent, AtpAgent } from "@atproto/api";
200
+ import { Agent, AtpAgent } from '@atproto/api'
187
201
 
188
202
  async function setupAgent(
189
203
  service: string,
@@ -195,30 +209,30 @@
195
209
  persistSession: (evt, session) => {
196
210
  // handle session update
197
211
  },
198
- });
212
+ })
199
213
 
200
- await agent.login(username, password);
214
+ await agent.login(username, password)
201
215
 
202
- return agent;
216
+ return agent
203
217
  }
204
218
  ```
205
219
 
206
220
  ```ts
207
- import { Agent } from "@atproto/api";
221
+ import { Agent } from '@atproto/api'
208
222
 
209
223
  async function doStuffWithAgent(agent: Agent, arg: string) {
210
- return agent.resolveHandle(arg);
224
+ return agent.resolveHandle(arg)
211
225
  }
212
226
  ```
213
227
 
214
228
  ```ts
215
- import { Agent, AtpAgent } from "@atproto/api";
229
+ import { Agent, AtpAgent } from '@atproto/api'
216
230
 
217
231
  class MyClass {
218
- agent: Agent;
232
+ agent: Agent
219
233
 
220
234
  constructor() {
221
- this.agent = new AtpAgent();
235
+ this.agent = new AtpAgent()
222
236
  }
223
237
  }
224
238
  ```
@@ -296,24 +310,24 @@
296
310
  <td>
297
311
 
298
312
  ```ts
299
- import { AtpBaseClient, ComAtprotoSyncSubscribeRepos } from "@atproto/api";
313
+ import { AtpBaseClient, ComAtprotoSyncSubscribeRepos } from '@atproto/api'
300
314
 
301
- const baseClient = new AtpBaseClient();
315
+ const baseClient = new AtpBaseClient()
302
316
 
303
- baseClient.xrpc.lex.assertValidXrpcMessage("io.example.doStuff", {
317
+ baseClient.xrpc.lex.assertValidXrpcMessage('io.example.doStuff', {
304
318
  // ...
305
- });
319
+ })
306
320
  ```
307
321
 
308
322
  </td>
309
323
  <td>
310
324
 
311
325
  ```ts
312
- import { lexicons } from "@atproto/api";
326
+ import { lexicons } from '@atproto/api'
313
327
 
314
- lexicons.assertValidXrpcMessage("io.example.doStuff", {
328
+ lexicons.assertValidXrpcMessage('io.example.doStuff', {
315
329
  // ...
316
- });
330
+ })
317
331
  ```
318
332
 
319
333
  </td>
@@ -330,23 +344,23 @@
330
344
  <td>
331
345
 
332
346
  ```ts
333
- import { BskyAgent } from "@atproto/api";
347
+ import { BskyAgent } from '@atproto/api'
334
348
 
335
349
  class MyAgent extends BskyAgent {
336
- private accessToken?: string;
350
+ private accessToken?: string
337
351
 
338
352
  async createOrRefreshSession(identifier: string, password: string) {
339
353
  // custom logic here
340
354
 
341
- this.accessToken = "my-access-jwt";
355
+ this.accessToken = 'my-access-jwt'
342
356
  }
343
357
 
344
358
  async doStuff() {
345
- return this.call("io.example.doStuff", {
359
+ return this.call('io.example.doStuff', {
346
360
  headers: {
347
361
  Authorization: this.accessToken && `Bearer ${this.accessToken}`,
348
362
  },
349
- });
363
+ })
350
364
  }
351
365
  }
352
366
  ```
@@ -355,11 +369,11 @@
355
369
  <td>
356
370
 
357
371
  ```ts
358
- import { Agent } from "@atproto/api";
372
+ import { Agent } from '@atproto/api'
359
373
 
360
374
  class MyAgent extends Agent {
361
- private accessToken?: string;
362
- public did?: string;
375
+ private accessToken?: string
376
+ public did?: string
363
377
 
364
378
  constructor(private readonly service: string | URL) {
365
379
  super({
@@ -368,21 +382,21 @@
368
382
  Authorization: () =>
369
383
  this.accessToken ? `Bearer ${this.accessToken}` : null,
370
384
  },
371
- });
385
+ })
372
386
  }
373
387
 
374
388
  clone(): MyAgent {
375
- const agent = new MyAgent(this.service);
376
- agent.accessToken = this.accessToken;
377
- agent.did = this.did;
378
- return this.copyInto(agent);
389
+ const agent = new MyAgent(this.service)
390
+ agent.accessToken = this.accessToken
391
+ agent.did = this.did
392
+ return this.copyInto(agent)
379
393
  }
380
394
 
381
395
  async createOrRefreshSession(identifier: string, password: string) {
382
396
  // custom logic here
383
397
 
384
- this.did = "did:example:123";
385
- this.accessToken = "my-access-jwt";
398
+ this.did = 'did:example:123'
399
+ this.accessToken = 'my-access-jwt'
386
400
  }
387
401
  }
388
402
  ```
@@ -401,38 +415,38 @@
401
415
  <td>
402
416
 
403
417
  ```ts
404
- import { BskyAgent } from "@atproto/api";
405
- import { RateLimitThreshold } from "rate-limit-threshold";
418
+ import { BskyAgent } from '@atproto/api'
419
+ import { RateLimitThreshold } from 'rate-limit-threshold'
406
420
 
407
- const agent = new BskyAgent();
408
- const limiter = new RateLimitThreshold(3000, 300_000);
421
+ const agent = new BskyAgent()
422
+ const limiter = new RateLimitThreshold(3000, 300_000)
409
423
 
410
- const origCall = agent.api.xrpc.call;
424
+ const origCall = agent.api.xrpc.call
411
425
  agent.api.xrpc.call = async function (...args) {
412
- await limiter.wait();
413
- return origCall.call(this, ...args);
414
- };
426
+ await limiter.wait()
427
+ return origCall.call(this, ...args)
428
+ }
415
429
  ```
416
430
 
417
431
  </td>
418
432
  <td>
419
433
 
420
434
  ```ts
421
- import { AtpAgent } from "@atproto/api";
422
- import { RateLimitThreshold } from "rate-limit-threshold";
435
+ import { AtpAgent } from '@atproto/api'
436
+ import { RateLimitThreshold } from 'rate-limit-threshold'
423
437
 
424
438
  class LimitedAtpAgent extends AtpAgent {
425
439
  constructor(options: AtpAgentOptions) {
426
- const fetch: typeof globalThis.fetch = options.fetch ?? globalThis.fetch;
427
- const limiter = new RateLimitThreshold(3000, 300_000);
440
+ const fetch: typeof globalThis.fetch = options.fetch ?? globalThis.fetch
441
+ const limiter = new RateLimitThreshold(3000, 300_000)
428
442
 
429
443
  super({
430
444
  ...options,
431
445
  fetch: async (...args) => {
432
- await limiter.wait();
433
- return fetch(...args);
446
+ await limiter.wait()
447
+ return fetch(...args)
434
448
  },
435
- });
449
+ })
436
450
  }
437
451
  }
438
452
  ```
@@ -453,40 +467,40 @@
453
467
  <td>
454
468
 
455
469
  ```ts
456
- import { BskyAgent, defaultFetchHandler } from "@atproto/api";
470
+ import { BskyAgent, defaultFetchHandler } from '@atproto/api'
457
471
 
458
472
  BskyAgent.configure({
459
473
  fetch: async (httpUri, httpMethod, httpHeaders, httpReqBody) => {
460
- const ua = httpHeaders["User-Agent"];
474
+ const ua = httpHeaders['User-Agent']
461
475
 
462
- httpHeaders["User-Agent"] = ua ? `${ua} ${userAgent}` : userAgent;
476
+ httpHeaders['User-Agent'] = ua ? `${ua} ${userAgent}` : userAgent
463
477
 
464
- return defaultFetchHandler(httpUri, httpMethod, httpHeaders, httpReqBody);
478
+ return defaultFetchHandler(httpUri, httpMethod, httpHeaders, httpReqBody)
465
479
  },
466
- });
480
+ })
467
481
  ```
468
482
 
469
483
  </td>
470
484
  <td>
471
485
 
472
486
  ```ts
473
- import { AtpAgent } from "@atproto/api";
487
+ import { AtpAgent } from '@atproto/api'
474
488
 
475
489
  class MyAtpAgent extends AtpAgent {
476
490
  constructor(options: AtpAgentOptions) {
477
- const fetch = options.fetch ?? globalThis.fetch;
491
+ const fetch = options.fetch ?? globalThis.fetch
478
492
 
479
493
  super({
480
494
  ...options,
481
495
  fetch: async (url, init) => {
482
- const headers = new Headers(init.headers);
496
+ const headers = new Headers(init.headers)
483
497
 
484
- const ua = headersList.get("User-Agent");
485
- headersList.set("User-Agent", ua ? `${ua} ${userAgent}` : userAgent);
498
+ const ua = headersList.get('User-Agent')
499
+ headersList.set('User-Agent', ua ? `${ua} ${userAgent}` : userAgent)
486
500
 
487
- return fetch(url, { ...init, headers });
501
+ return fetch(url, { ...init, headers })
488
502
  },
489
- });
503
+ })
490
504
  }
491
505
  }
492
506
  ```
@@ -545,7 +559,7 @@
545
559
  */
546
560
  url: string,
547
561
  init: RequestInit,
548
- ) => Promise<Response>;
562
+ ) => Promise<Response>
549
563
  ```
550
564
 
551
565
  A noticeable change that has been introduced is that the `uri` field of the
@@ -583,7 +597,7 @@
583
597
  <td>
584
598
 
585
599
  ```ts
586
- import client, { defaultFetchHandler } from "@atproto/xrpc";
600
+ import client, { defaultFetchHandler } from '@atproto/xrpc'
587
601
 
588
602
  client.fetch = function (
589
603
  httpUri: string,
@@ -592,50 +606,50 @@
592
606
  httpReqBody: unknown,
593
607
  ) {
594
608
  // Custom logic here
595
- return defaultFetchHandler(httpUri, httpMethod, httpHeaders, httpReqBody);
596
- };
609
+ return defaultFetchHandler(httpUri, httpMethod, httpHeaders, httpReqBody)
610
+ }
597
611
 
598
612
  client.addLexicon({
599
613
  lexicon: 1,
600
- id: "io.example.doStuff",
614
+ id: 'io.example.doStuff',
601
615
  defs: {},
602
- });
616
+ })
603
617
 
604
- const instance = client.service("http://my-service.com");
618
+ const instance = client.service('http://my-service.com')
605
619
 
606
- instance.setHeader("my-header", "my-value");
620
+ instance.setHeader('my-header', 'my-value')
607
621
 
608
- await instance.call("io.example.doStuff");
622
+ await instance.call('io.example.doStuff')
609
623
  ```
610
624
 
611
625
  </td>
612
626
  <td>
613
627
 
614
628
  ```ts
615
- import { XrpcClient } from "@atproto/xrpc";
629
+ import { XrpcClient } from '@atproto/xrpc'
616
630
 
617
631
  const instance = new XrpcClient(
618
632
  async (url, init) => {
619
- const headers = new Headers(init.headers);
633
+ const headers = new Headers(init.headers)
620
634
 
621
- headers.set("my-header", "my-value");
635
+ headers.set('my-header', 'my-value')
622
636
 
623
637
  // Custom logic here
624
638
 
625
- const fullUrl = new URL(url, "http://my-service.com");
639
+ const fullUrl = new URL(url, 'http://my-service.com')
626
640
 
627
- return fetch(fullUrl, { ...init, headers });
641
+ return fetch(fullUrl, { ...init, headers })
628
642
  },
629
643
  [
630
644
  {
631
645
  lexicon: 1,
632
- id: "io.example.doStuff",
646
+ id: 'io.example.doStuff',
633
647
  defs: {},
634
648
  },
635
649
  ],
636
- );
650
+ )
637
651
 
638
- await instance.call("io.example.doStuff");
652
+ await instance.call('io.example.doStuff')
639
653
  ```
640
654
 
641
655
  </td>
@@ -647,62 +661,62 @@
647
661
  previous example can be simplified to:
648
662
 
649
663
  ```ts
650
- import { XrpcClient } from "@atproto/xrpc";
664
+ import { XrpcClient } from '@atproto/xrpc'
651
665
 
652
- const instance = new XrpcClient("http://my-service.com", [
666
+ const instance = new XrpcClient('http://my-service.com', [
653
667
  {
654
668
  lexicon: 1,
655
- id: "io.example.doStuff",
669
+ id: 'io.example.doStuff',
656
670
  defs: {},
657
671
  },
658
- ]);
672
+ ])
659
673
  ```
660
674
 
661
675
  If you need to add static headers to all requests, you can instead instantiate
662
676
  the `XrpcClient` as follows:
663
677
 
664
678
  ```ts
665
- import { XrpcClient } from "@atproto/xrpc";
679
+ import { XrpcClient } from '@atproto/xrpc'
666
680
 
667
681
  const instance = new XrpcClient(
668
682
  {
669
- service: "http://my-service.com",
683
+ service: 'http://my-service.com',
670
684
  headers: {
671
- "my-header": "my-value",
685
+ 'my-header': 'my-value',
672
686
  },
673
687
  },
674
688
  [
675
689
  {
676
690
  lexicon: 1,
677
- id: "io.example.doStuff",
691
+ id: 'io.example.doStuff',
678
692
  defs: {},
679
693
  },
680
694
  ],
681
- );
695
+ )
682
696
  ```
683
697
 
684
698
  If you need the headers or service url to be dynamic, you can define them using
685
699
  functions:
686
700
 
687
701
  ```ts
688
- import { XrpcClient } from "@atproto/xrpc";
702
+ import { XrpcClient } from '@atproto/xrpc'
689
703
 
690
704
  const instance = new XrpcClient(
691
705
  {
692
- service: () => "http://my-service.com",
706
+ service: () => 'http://my-service.com',
693
707
  headers: {
694
- "my-header": () => "my-value",
695
- "my-ignored-header": () => null, // ignored
708
+ 'my-header': () => 'my-value',
709
+ 'my-ignored-header': () => null, // ignored
696
710
  },
697
711
  },
698
712
  [
699
713
  {
700
714
  lexicon: 1,
701
- id: "io.example.doStuff",
715
+ id: 'io.example.doStuff',
702
716
  defs: {},
703
717
  },
704
718
  ],
705
- );
719
+ )
706
720
  ```
707
721
 
708
722
  - [#2483](https://github.com/bluesky-social/atproto/pull/2483) [`b934b396b`](https://github.com/bluesky-social/atproto/commit/b934b396b13ba32bf2bf7e75ecdf6871e5f310dd) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Add the ability to use `fetch()` compatible `BodyInit` body when making XRPC calls.
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AAAA,8CAAuD;AAEvD,iCAAuC;AACvC,+CAA0C;AAE1C,iDAAiD;AACjD,MAAa,MAAM;IAAnB;QAeE;;;;mBAAM,IAAI,kBAAQ,EAAE;WAAA;IAmCtB,CAAC;IAjDC,kBAAkB;IAClB,IAAI,KAAK;QACP,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAA;IACH,CAAC;IAED,kBAAkB;IAClB,IAAI,KAAK,CAAC,CAAQ;QAChB,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAA;IACH,CAAC;IAID,eAAe;IACf,EAAE;IAEF,KAAK,CAAC,IAAI,CACR,UAAwB,EACxB,UAAkB,EAClB,MAAoB,EACpB,IAAsB,EACtB,IAAkB;QAElB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IACtE,CAAC;IAED,OAAO,CAAC,UAAwB;QAC9B,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IAC5C,CAAC;IAED,UAAU;IACV,IAAI;IAEJ,UAAU,CAAC,GAAe;QACxB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACnB,CAAC;IAED,WAAW,CAAC,IAAkB;QAC5B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;IAED,aAAa,CAAC,GAAW;QACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACtB,CAAC;CACF;AAlDD,wBAkDC;AAED,iDAAiD;AACjD,MAAa,aAAc,SAAQ,wBAAU;IAG3C,YACS,UAAkB,EACzB,UAAwB;QAExB,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC1B,MAAM,OAAO,GAAG,IAAA,qBAAc,EAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;YAC1E,OAAO,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QAC9D,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAA;QANlB;;;;mBAAO,UAAU;WAAQ;QAH3B;;;;;WAAQ;QAUN,IAAI,CAAC,GAAG,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;IAC9E,CAAC;CACF;AAbD,sCAaC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AAAA,8CAAuD;AAEvD,iCAAuC;AACvC,+CAA0C;AAE1C,iDAAiD;AACjD,MAAa,MAAM;IAAnB;QAeE;;;;mBAAM,IAAI,kBAAQ,EAAE;WAAA;IAmCtB,CAAC;IAjDC,kBAAkB;IAClB,IAAI,KAAK;QACP,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAA;IACH,CAAC;IAED,kBAAkB;IAClB,IAAI,KAAK,CAAC,CAAQ;QAChB,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAA;IACH,CAAC;IAID,eAAe;IACf,EAAE;IAEF,KAAK,CAAC,IAAI,CACR,UAAwB,EACxB,UAAkB,EAClB,MAAoB,EACpB,IAAsB,EACtB,IAAkB;QAElB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IACtE,CAAC;IAED,OAAO,CAAC,UAAwB;QAC9B,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IAC5C,CAAC;IAED,UAAU;IACV,IAAI;IAEJ,UAAU,CAAC,GAAe;QACxB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACnB,CAAC;IAED,WAAW,CAAC,IAAkB;QAC5B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;IAED,aAAa,CAAC,GAAW;QACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACtB,CAAC;CACF;AAlDD,wBAkDC;AAED,iDAAiD;AACjD,MAAa,aAAc,SAAQ,wBAAU;IAG3C,YACS,UAAkB,EACzB,UAAwB;QAExB,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC1B,MAAM,OAAO,GAAG,IAAA,qBAAc,EAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;YAC1E,OAAO,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QAC9D,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAA;QANlB;;;;mBAAO,UAAU;WAAQ;QAH3B;;;;;WAAQ;QAUN,IAAI,CAAC,GAAG,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;IAC9E,CAAC;CACF;AAbD,sCAaC","sourcesContent":["import { LexiconDoc, Lexicons } from '@atproto/lexicon'\nimport { CallOptions, QueryParams } from './types'\nimport { combineHeaders } from './util'\nimport { XrpcClient } from './xrpc-client'\n\n/** @deprecated Use {@link XrpcClient} instead */\nexport class Client {\n /** @deprecated */\n get fetch(): never {\n throw new Error(\n 'Client.fetch is no longer supported. Use an XrpcClient instead.',\n )\n }\n\n /** @deprecated */\n set fetch(_: never) {\n throw new Error(\n 'Client.fetch is no longer supported. Use an XrpcClient instead.',\n )\n }\n\n lex = new Lexicons()\n\n // method calls\n //\n\n async call(\n serviceUri: string | URL,\n methodNsid: string,\n params?: QueryParams,\n data?: BodyInit | null,\n opts?: CallOptions,\n ) {\n return this.service(serviceUri).call(methodNsid, params, data, opts)\n }\n\n service(serviceUri: string | URL) {\n return new ServiceClient(this, serviceUri)\n }\n\n // schemas\n // =\n\n addLexicon(doc: LexiconDoc) {\n this.lex.add(doc)\n }\n\n addLexicons(docs: LexiconDoc[]) {\n for (const doc of docs) {\n this.addLexicon(doc)\n }\n }\n\n removeLexicon(uri: string) {\n this.lex.remove(uri)\n }\n}\n\n/** @deprecated Use {@link XrpcClient} instead */\nexport class ServiceClient extends XrpcClient {\n uri: URL\n\n constructor(\n public baseClient: Client,\n serviceUri: string | URL,\n ) {\n super(async (input, init) => {\n const headers = combineHeaders(init.headers, Object.entries(this.headers))\n return fetch(new URL(input, this.uri), { ...init, headers })\n }, baseClient.lex)\n this.uri = typeof serviceUri === 'string' ? new URL(serviceUri) : serviceUri\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-handler.js","sourceRoot":"","sources":["../src/fetch-handler.ts"],"names":[],"mappings":";;AAuDA,8CAkCC;AAxFD,iCAAuC;AAsDvC,SAAgB,iBAAiB,CAC/B,OAAgE;IAEhE,oDAAoD;IACpD,IAAI,OAAO,OAAO,KAAK,UAAU;QAAE,OAAO,OAAO,CAAA;IACjD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,cAAc,IAAI,OAAO,EAAE,CAAC;QAC7D,OAAO,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC3C,CAAC;IAED,MAAM,EACJ,OAAO,EACP,OAAO,EAAE,cAAc,GAAG,SAAS,EACnC,KAAK,GAAG,UAAU,CAAC,KAAK,GACzB,GAAG,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,YAAY,GAAG;QACvD,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE;QACtB,CAAC,CAAC,OAAO,CAAA;IAEX,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,SAAS,CACjB,sEAAsE,CACvE,CAAA;IACH,CAAC;IAED,MAAM,qBAAqB,GACzB,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAErE,OAAO,KAAK,WAAW,GAAG,EAAE,IAAI;QAC9B,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;QAChE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAElC,MAAM,OAAO,GAAG,IAAA,qBAAc,EAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAA;QAEnE,OAAO,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IAC7C,CAAC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"fetch-handler.js","sourceRoot":"","sources":["../src/fetch-handler.ts"],"names":[],"mappings":";;AAuDA,8CAkCC;AAxFD,iCAAuC;AAsDvC,SAAgB,iBAAiB,CAC/B,OAAgE;IAEhE,oDAAoD;IACpD,IAAI,OAAO,OAAO,KAAK,UAAU;QAAE,OAAO,OAAO,CAAA;IACjD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,cAAc,IAAI,OAAO,EAAE,CAAC;QAC7D,OAAO,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC3C,CAAC;IAED,MAAM,EACJ,OAAO,EACP,OAAO,EAAE,cAAc,GAAG,SAAS,EACnC,KAAK,GAAG,UAAU,CAAC,KAAK,GACzB,GAAG,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,YAAY,GAAG;QACvD,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE;QACtB,CAAC,CAAC,OAAO,CAAA;IAEX,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,SAAS,CACjB,sEAAsE,CACvE,CAAA;IACH,CAAC;IAED,MAAM,qBAAqB,GACzB,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAErE,OAAO,KAAK,WAAW,GAAG,EAAE,IAAI;QAC9B,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;QAChE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAElC,MAAM,OAAO,GAAG,IAAA,qBAAc,EAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAA;QAEnE,OAAO,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IAC7C,CAAC,CAAA;AACH,CAAC","sourcesContent":["import { Gettable } from './types'\nimport { combineHeaders } from './util'\n\nexport type FetchHandler = (\n this: void,\n /**\n * The URL (pathname + query parameters) to make the request to, without the\n * origin. The origin (protocol, hostname, and port) must be added by this\n * {@link FetchHandler}, typically based on authentication or other factors.\n */\n url: string,\n init: RequestInit,\n) => Promise<Response>\n\nexport type FetchHandlerOptions = BuildFetchHandlerOptions | string | URL\n\nexport type BuildFetchHandlerOptions = {\n /**\n * The service URL to make requests to. This can be a string, URL, or a\n * function that returns a string or URL. This is useful for dynamic URLs,\n * such as a service URL that changes based on authentication.\n */\n service: Gettable<string | URL>\n\n /**\n * Headers to be added to every request. If a function is provided, it will be\n * called on each request to get the headers. This is useful for dynamic\n * headers, such as authentication tokens that may expire.\n */\n headers?: {\n [_ in string]?: Gettable<null | string>\n }\n\n /**\n * Bring your own fetch implementation. Typically useful for testing, logging,\n * mocking, or adding retries, session management, signatures, proof of\n * possession (DPoP), SSRF protection, etc. Defaults to the global `fetch`\n * function.\n */\n fetch?: typeof globalThis.fetch\n}\n\nexport interface FetchHandlerObject {\n fetchHandler: (\n this: FetchHandlerObject,\n /**\n * The URL (pathname + query parameters) to make the request to, without the\n * origin. The origin (protocol, hostname, and port) must be added by this\n * {@link FetchHandler}, typically based on authentication or other factors.\n */\n url: string,\n init: RequestInit,\n ) => Promise<Response>\n}\n\nexport function buildFetchHandler(\n options: FetchHandler | FetchHandlerObject | FetchHandlerOptions,\n): FetchHandler {\n // Already a fetch handler (allowed for convenience)\n if (typeof options === 'function') return options\n if (typeof options === 'object' && 'fetchHandler' in options) {\n return options.fetchHandler.bind(options)\n }\n\n const {\n service,\n headers: defaultHeaders = undefined,\n fetch = globalThis.fetch,\n } = typeof options === 'string' || options instanceof URL\n ? { service: options }\n : options\n\n if (typeof fetch !== 'function') {\n throw new TypeError(\n 'XrpcDispatcher requires fetch() to be available in your environment.',\n )\n }\n\n const defaultHeadersEntries =\n defaultHeaders != null ? Object.entries(defaultHeaders) : undefined\n\n return async function (url, init) {\n const base = typeof service === 'function' ? service() : service\n const fullUrl = new URL(url, base)\n\n const headers = combineHeaders(init.headers, defaultHeadersEntries)\n\n return fetch(fullUrl, { ...init, headers })\n }\n}\n"]}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,kDAA+B;AAC/B,0CAAuB;AACvB,yCAAsB;AACtB,gDAA6B;AAE7B,yCAAyC;AACzC,qCAAiC;AACjC,qEAAqE;AACrE,MAAM,WAAW,GAAG,IAAI,eAAM,EAAE,CAAA;AAChC,kBAAe,WAAW,CAAA;AAC1B,wCAAwC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,kDAA+B;AAC/B,0CAAuB;AACvB,yCAAsB;AACtB,gDAA6B;AAE7B,yCAAyC;AACzC,qCAAiC;AACjC,qEAAqE;AACrE,MAAM,WAAW,GAAG,IAAI,eAAM,EAAE,CAAA;AAChC,kBAAe,WAAW,CAAA;AAC1B,wCAAwC","sourcesContent":["export * from './client'\nexport * from './fetch-handler'\nexport * from './types'\nexport * from './util'\nexport * from './xrpc-client'\n\n/* eslint-disable import/no-deprecated */\nimport { Client } from './client'\n/** @deprecated create a local {@link XrpcClient} instance instead */\nconst defaultInst = new Client()\nexport default defaultInst\n/* eslint-enable import/no-deprecated */\n"]}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod'\nimport { ValidationError } from '@atproto/lexicon'\n\nexport type QueryParams = Record<string, any>\nexport type HeadersMap = Record<string, string | undefined>\n\nexport type {\n /** @deprecated not to be confused with the WHATWG Headers constructor */\n HeadersMap as Headers,\n}\n\nexport type Gettable<T> = T | (() => T)\n\nexport interface CallOptions {\n encoding?: string\n signal?: AbortSignal\n headers?: HeadersMap\n}\n\nexport const errorResponseBody = z.object({\n error: z.string().optional(),\n message: z.string().optional(),\n})\nexport type ErrorResponseBody = z.infer<typeof errorResponseBody>\n\nexport enum ResponseType {\n /**\n * Network issue, unable to get response from the server.\n */\n Unknown = 1,\n /**\n * Response failed lexicon validation.\n */\n InvalidResponse = 2,\n Success = 200,\n InvalidRequest = 400,\n AuthenticationRequired = 401,\n Forbidden = 403,\n XRPCNotSupported = 404,\n NotAcceptable = 406,\n PayloadTooLarge = 413,\n UnsupportedMediaType = 415,\n RateLimitExceeded = 429,\n InternalServerError = 500,\n MethodNotImplemented = 501,\n UpstreamFailure = 502,\n NotEnoughResources = 503,\n UpstreamTimeout = 504,\n}\n\nexport function httpResponseCodeToEnum(status: number): ResponseType {\n if (status in ResponseType) {\n return status\n } else if (status >= 100 && status < 200) {\n return ResponseType.XRPCNotSupported\n } else if (status >= 200 && status < 300) {\n return ResponseType.Success\n } else if (status >= 300 && status < 400) {\n return ResponseType.XRPCNotSupported\n } else if (status >= 400 && status < 500) {\n return ResponseType.InvalidRequest\n } else {\n return ResponseType.InternalServerError\n }\n}\n\nexport function httpResponseCodeToName(status: number): string {\n return ResponseType[httpResponseCodeToEnum(status)]\n}\n\nexport const ResponseTypeStrings = {\n [ResponseType.Unknown]: 'Unknown',\n [ResponseType.InvalidResponse]: 'Invalid Response',\n [ResponseType.Success]: 'Success',\n [ResponseType.InvalidRequest]: 'Invalid Request',\n [ResponseType.AuthenticationRequired]: 'Authentication Required',\n [ResponseType.Forbidden]: 'Forbidden',\n [ResponseType.XRPCNotSupported]: 'XRPC Not Supported',\n [ResponseType.NotAcceptable]: 'Not Acceptable',\n [ResponseType.PayloadTooLarge]: 'Payload Too Large',\n [ResponseType.UnsupportedMediaType]: 'Unsupported Media Type',\n [ResponseType.RateLimitExceeded]: 'Rate Limit Exceeded',\n [ResponseType.InternalServerError]: 'Internal Server Error',\n [ResponseType.MethodNotImplemented]: 'Method Not Implemented',\n [ResponseType.UpstreamFailure]: 'Upstream Failure',\n [ResponseType.NotEnoughResources]: 'Not Enough Resources',\n [ResponseType.UpstreamTimeout]: 'Upstream Timeout',\n} as const satisfies Record<ResponseType, string>\n\nexport function httpResponseCodeToString(status: number): string {\n return ResponseTypeStrings[httpResponseCodeToEnum(status)]\n}\n\nexport class XRPCResponse {\n success = true\n\n constructor(\n public data: any,\n public headers: HeadersMap,\n ) {}\n}\n\nexport class XRPCError extends Error {\n success = false\n\n public status: ResponseType\n\n constructor(\n statusCode: number,\n public error: string = httpResponseCodeToName(statusCode),\n message?: string,\n public headers?: HeadersMap,\n options?: ErrorOptions,\n ) {\n super(message || error || httpResponseCodeToString(statusCode), options)\n\n this.status = httpResponseCodeToEnum(statusCode)\n\n // Pre 2022 runtimes won't handle the \"options\" constructor argument\n const cause = options?.cause\n if (this.cause === undefined && cause !== undefined) {\n this.cause = cause\n }\n }\n\n static from(cause: unknown, fallbackStatus?: ResponseType): XRPCError {\n if (cause instanceof XRPCError) {\n return cause\n }\n\n // Type cast the cause to an Error if it is one\n const causeErr = cause instanceof Error ? cause : undefined\n\n // Try and find a Response object in the cause\n const causeResponse: Response | undefined =\n cause instanceof Response\n ? cause\n : cause?.['response'] instanceof Response\n ? cause['response']\n : undefined\n\n const statusCode: unknown =\n // Extract status code from \"http-errors\" like errors\n causeErr?.['statusCode'] ??\n causeErr?.['status'] ??\n // Use the status code from the response object as fallback\n causeResponse?.status\n\n // Convert the status code to a ResponseType\n const status: ResponseType =\n typeof statusCode === 'number'\n ? httpResponseCodeToEnum(statusCode)\n : fallbackStatus ?? ResponseType.Unknown\n\n const message = causeErr?.message ?? String(cause)\n\n const headers = causeResponse\n ? Object.fromEntries(causeResponse.headers.entries())\n : undefined\n\n return new XRPCError(status, undefined, message, headers, { cause })\n }\n}\n\nexport class XRPCInvalidResponseError extends XRPCError {\n constructor(\n public lexiconNsid: string,\n public validationError: ValidationError,\n public responseBody: unknown,\n ) {\n super(\n ResponseType.InvalidResponse,\n // @NOTE: This is probably wrong and should use ResponseTypeNames instead.\n // But it would mean a breaking change.\n ResponseTypeStrings[ResponseType.InvalidResponse],\n `The server gave an invalid response and may be out of date.`,\n undefined,\n { cause: validationError },\n )\n }\n}\n"]}
package/dist/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n LexXrpcProcedure,\n LexXrpcQuery,\n jsonStringToLex,\n stringifyLex,\n} from '@atproto/lexicon'\nimport {\n CallOptions,\n ErrorResponseBody,\n Gettable,\n QueryParams,\n ResponseType,\n XRPCError,\n errorResponseBody,\n} from './types'\n\nconst ReadableStream =\n globalThis.ReadableStream ||\n (class {\n constructor() {\n // This anonymous class will never pass any \"instanceof\" check and cannot\n // be instantiated.\n throw new Error('ReadableStream is not supported in this environment')\n }\n } as typeof globalThis.ReadableStream)\n\nexport function isErrorResponseBody(v: unknown): v is ErrorResponseBody {\n return errorResponseBody.safeParse(v).success\n}\n\nexport function getMethodSchemaHTTPMethod(\n schema: LexXrpcProcedure | LexXrpcQuery,\n) {\n if (schema.type === 'procedure') {\n return 'post'\n }\n return 'get'\n}\n\nexport function constructMethodCallUri(\n nsid: string,\n schema: LexXrpcProcedure | LexXrpcQuery,\n serviceUri: URL,\n params?: QueryParams,\n): string {\n const uri = new URL(constructMethodCallUrl(nsid, schema, params), serviceUri)\n return uri.toString()\n}\n\nexport function constructMethodCallUrl(\n nsid: string,\n schema: LexXrpcProcedure | LexXrpcQuery,\n params?: QueryParams,\n): string {\n const pathname = `/xrpc/${encodeURIComponent(nsid)}`\n if (!params) return pathname\n\n const searchParams: [string, string][] = []\n\n for (const [key, value] of Object.entries(params)) {\n const paramSchema = schema.parameters?.properties?.[key]\n if (!paramSchema) {\n throw new Error(`Invalid query parameter: ${key}`)\n }\n if (value !== undefined) {\n if (paramSchema.type === 'array') {\n const values = Array.isArray(value) ? value : [value]\n for (const val of values) {\n searchParams.push([\n key,\n encodeQueryParam(paramSchema.items.type, val),\n ])\n }\n } else {\n searchParams.push([key, encodeQueryParam(paramSchema.type, value)])\n }\n }\n }\n\n if (!searchParams.length) return pathname\n\n return `${pathname}?${new URLSearchParams(searchParams).toString()}`\n}\n\nexport function encodeQueryParam(\n type:\n | 'string'\n | 'float'\n | 'integer'\n | 'boolean'\n | 'datetime'\n | 'array'\n | 'unknown',\n value: any,\n): string {\n if (type === 'string' || type === 'unknown') {\n return String(value)\n }\n if (type === 'float') {\n return String(Number(value))\n } else if (type === 'integer') {\n return String(Number(value) | 0)\n } else if (type === 'boolean') {\n return value ? 'true' : 'false'\n } else if (type === 'datetime') {\n if (value instanceof Date) {\n return value.toISOString()\n }\n return String(value)\n }\n throw new Error(`Unsupported query param type: ${type}`)\n}\n\nexport function constructMethodCallHeaders(\n schema: LexXrpcProcedure | LexXrpcQuery,\n data?: unknown,\n opts?: CallOptions,\n): Headers {\n // Not using `new Headers(opts?.headers)` to avoid duplicating headers values\n // due to inconsistent casing in headers name. In case of multiple headers\n // with the same name (but using a different case), the last one will be used.\n\n // new Headers({ 'content-type': 'foo', 'Content-Type': 'bar' }).get('content-type')\n // => 'foo, bar'\n const headers = new Headers()\n\n if (opts?.headers) {\n for (const name in opts.headers) {\n if (headers.has(name)) {\n throw new TypeError(`Duplicate header: ${name}`)\n }\n\n const value = opts.headers[name]\n if (value != null) {\n headers.set(name, value)\n }\n }\n }\n\n if (schema.type === 'procedure') {\n if (opts?.encoding) {\n headers.set('content-type', opts.encoding)\n } else if (!headers.has('content-type') && typeof data !== 'undefined') {\n // Special handling of BodyInit types before falling back to JSON encoding\n if (\n data instanceof ArrayBuffer ||\n data instanceof ReadableStream ||\n ArrayBuffer.isView(data)\n ) {\n headers.set('content-type', 'application/octet-stream')\n } else if (data instanceof FormData) {\n // Note: The multipart form data boundary is missing from the header\n // we set here, making that header invalid. This special case will be\n // handled in encodeMethodCallBody()\n headers.set('content-type', 'multipart/form-data')\n } else if (data instanceof URLSearchParams) {\n headers.set(\n 'content-type',\n 'application/x-www-form-urlencoded;charset=UTF-8',\n )\n } else if (isBlobLike(data)) {\n headers.set('content-type', data.type || 'application/octet-stream')\n } else if (typeof data === 'string') {\n headers.set('content-type', 'text/plain;charset=UTF-8')\n }\n // At this point, data is not a valid BodyInit type.\n else if (isIterable(data)) {\n headers.set('content-type', 'application/octet-stream')\n } else if (\n typeof data === 'boolean' ||\n typeof data === 'number' ||\n typeof data === 'string' ||\n typeof data === 'object' // covers \"null\"\n ) {\n headers.set('content-type', 'application/json')\n } else {\n // symbol, function, bigint\n throw new XRPCError(\n ResponseType.InvalidRequest,\n `Unsupported data type: ${typeof data}`,\n )\n }\n }\n }\n return headers\n}\n\nexport function combineHeaders(\n headersInit: undefined | HeadersInit,\n defaultHeaders?: Iterable<[string, undefined | Gettable<null | string>]>,\n): undefined | HeadersInit {\n if (!defaultHeaders) return headersInit\n\n let headers: Headers | undefined = undefined\n\n for (const [name, definition] of defaultHeaders) {\n // Ignore undefined values (allowed for convenience when using\n // Object.entries).\n if (definition === undefined) continue\n\n // Lazy initialization of the headers object\n headers ??= new Headers(headersInit)\n\n if (headers.has(name)) continue\n\n const value = typeof definition === 'function' ? definition() : definition\n\n if (typeof value === 'string') headers.set(name, value)\n else if (value === null) headers.delete(name)\n else throw new TypeError(`Invalid \"${name}\" header value: ${typeof value}`)\n }\n\n return headers ?? headersInit\n}\n\nfunction isBlobLike(value: unknown): value is Blob {\n if (value == null) return false\n if (typeof value !== 'object') return false\n if (typeof Blob === 'function' && value instanceof Blob) return true\n\n // Support for Blobs provided by libraries that don't use the native Blob\n // (e.g. fetch-blob from node-fetch).\n // https://github.com/node-fetch/fetch-blob/blob/a1a182e5978811407bef4ea1632b517567dda01f/index.js#L233-L244\n\n const tag = value[Symbol.toStringTag]\n if (tag === 'Blob' || tag === 'File') {\n return 'stream' in value && typeof value.stream === 'function'\n }\n\n return false\n}\n\nexport function isBodyInit(value: unknown): value is BodyInit {\n switch (typeof value) {\n case 'string':\n return true\n case 'object':\n return (\n value instanceof ArrayBuffer ||\n value instanceof FormData ||\n value instanceof URLSearchParams ||\n value instanceof ReadableStream ||\n ArrayBuffer.isView(value) ||\n isBlobLike(value)\n )\n default:\n return false\n }\n}\n\nexport function isIterable(\n value: unknown,\n): value is Iterable<unknown> | AsyncIterable<unknown> {\n return (\n value != null &&\n typeof value === 'object' &&\n (Symbol.iterator in value || Symbol.asyncIterator in value)\n )\n}\n\nexport function encodeMethodCallBody(\n headers: Headers,\n data?: unknown,\n): BodyInit | undefined {\n // Silently ignore the body if there is no content-type header.\n const contentType = headers.get('content-type')\n if (!contentType) {\n return undefined\n }\n\n if (typeof data === 'undefined') {\n // This error would be returned by the server, but we can catch it earlier\n // to avoid un-necessary requests. Note that a content-length of 0 does not\n // necessary mean that the body is \"empty\" (e.g. an empty txt file).\n throw new XRPCError(\n ResponseType.InvalidRequest,\n `A request body is expected but none was provided`,\n )\n }\n\n if (isBodyInit(data)) {\n if (data instanceof FormData && contentType === 'multipart/form-data') {\n // fetch() will encode FormData payload itself, but it won't override the\n // content-type header if already present. This would cause the boundary\n // to be missing from the content-type header, resulting in a 400 error.\n // Deleting the content-type header here to let fetch() re-create it.\n headers.delete('content-type')\n }\n\n // Will be encoded by the fetch API.\n return data\n }\n\n if (isIterable(data)) {\n // Note that some environments support using Iterable & AsyncIterable as the\n // body (e.g. Node's fetch), but not all of them do (browsers).\n return iterableToReadableStream(data)\n }\n\n if (contentType.startsWith('text/')) {\n return new TextEncoder().encode(String(data))\n }\n if (contentType.startsWith('application/json')) {\n const json = stringifyLex(data)\n // Server would return a 400 error if the JSON is invalid (e.g. trying to\n // JSONify a function, or an object that implements toJSON() poorly).\n if (json === undefined) {\n throw new XRPCError(\n ResponseType.InvalidRequest,\n `Failed to encode request body as JSON`,\n )\n }\n return new TextEncoder().encode(json)\n }\n\n // At this point, \"data\" is not a valid BodyInit value, and we don't know how\n // to encode it into one. Passing it to fetch would result in an error. Let's\n // throw our own error instead.\n\n const type =\n !data || typeof data !== 'object'\n ? typeof data\n : data.constructor !== Object &&\n typeof data.constructor === 'function' &&\n typeof data.constructor?.name === 'string'\n ? data.constructor.name\n : 'object'\n\n throw new XRPCError(\n ResponseType.InvalidRequest,\n `Unable to encode ${type} as ${contentType} data`,\n )\n}\n\n/**\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/from_static}\n */\nfunction iterableToReadableStream(\n iterable: Iterable<unknown> | AsyncIterable<unknown>,\n): ReadableStream<Uint8Array> {\n // Use the native ReadableStream.from() if available.\n if ('from' in ReadableStream && typeof ReadableStream.from === 'function') {\n return ReadableStream.from(iterable)\n }\n\n // If you see this error, consider using a polyfill for ReadableStream. For\n // example, the \"web-streams-polyfill\" package:\n // https://github.com/MattiasBuelens/web-streams-polyfill\n\n throw new TypeError(\n 'ReadableStream.from() is not supported in this environment. ' +\n 'It is required to support using iterables as the request body. ' +\n 'Consider using a polyfill or re-write your code to use a different body type.',\n )\n}\n\nexport function httpResponseBodyParse(\n mimeType: string | null,\n data: ArrayBuffer | undefined,\n): any {\n try {\n if (mimeType) {\n if (mimeType.includes('application/json')) {\n const str = new TextDecoder().decode(data)\n return jsonStringToLex(str)\n }\n if (mimeType.startsWith('text/')) {\n return new TextDecoder().decode(data)\n }\n }\n if (data instanceof ArrayBuffer) {\n return new Uint8Array(data)\n }\n return data\n } catch (cause) {\n throw new XRPCError(\n ResponseType.InvalidResponse,\n undefined,\n `Failed to parse response body: ${String(cause)}`,\n undefined,\n { cause },\n )\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"xrpc-client.js","sourceRoot":"","sources":["../src/xrpc-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xrpc-client.js","sourceRoot":"","sources":["../src/xrpc-client.ts"],"names":[],"mappings":";;;AAAA,8CAAwE;AACxE,mDAKwB;AACxB,mCASgB;AAChB,iCAQe;AAEf,MAAa,UAAU;IAKrB,YACE,gBAAyE;IACzE,8DAA8D;IAC9D,2DAA2D;IAC3D,GAAoC;QAR7B;;;;;WAA0B;QAC1B;;;;mBAAU,IAAI,GAAG,EAAmC;WAAA;QACpD;;;;;WAAa;QAQpB,IAAI,CAAC,YAAY,GAAG,IAAA,iCAAiB,EAAC,gBAAgB,CAAC,CAAA;QAEvD,IAAI,CAAC,GAAG,GAAG,GAAG,YAAY,kBAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,kBAAQ,CAAC,GAAG,CAAC,CAAA;IAC9D,CAAC;IAED,SAAS,CAAC,GAAW,EAAE,KAA8B;QACnD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAA;IAC5C,CAAC;IAED,WAAW,CAAC,GAAW;QACrB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAA;IACxC,CAAC;IAED,YAAY;QACV,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,IAAI,CACR,UAAkB,EAClB,MAAoB,EACpB,IAAc,EACd,IAAkB;QAElB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;QAC9C,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,CAAC;YAC/D,MAAM,IAAI,SAAS,CACjB,oBAAoB,UAAU,iCAAiC,CAChE,CAAA;QACH,CAAC;QAED,sDAAsD;QACtD,qDAAqD;QACrD,4BAA4B;QAC5B,oDAAoD;QACpD,IAAI;QAEJ,MAAM,MAAM,GAAG,IAAA,6BAAsB,EAAC,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;QAC9D,MAAM,SAAS,GAAG,IAAA,gCAAyB,EAAC,GAAG,CAAC,CAAA;QAChD,MAAM,UAAU,GAAG,IAAA,iCAA0B,EAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAC9D,MAAM,OAAO,GAAG,IAAA,2BAAoB,EAAC,UAAU,EAAE,IAAI,CAAC,CAAA;QAEtD,2EAA2E;QAC3E,uEAAuE;QACvE,MAAM,IAAI,GAAqC;YAC7C,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,IAAA,qBAAc,EAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC;YACjD,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,IAAI,EAAE,MAAM;SACrB,CAAA;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;YAEtE,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAA;YACjC,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;YACjE,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;YACjD,MAAM,OAAO,GAAG,IAAA,4BAAqB,EACnC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EACpC,YAAY,CACb,CAAA;YAED,MAAM,OAAO,GAAG,IAAA,8BAAsB,EAAC,SAAS,CAAC,CAAA;YACjD,IAAI,OAAO,KAAK,oBAAY,CAAC,OAAO,EAAE,CAAC;gBACrC,MAAM,EAAE,KAAK,GAAG,SAAS,EAAE,OAAO,GAAG,SAAS,EAAE,GAC9C,OAAO,IAAI,IAAA,0BAAmB,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;gBACxD,MAAM,IAAI,iBAAS,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;YAC1D,CAAC;YAED,IAAI,CAAC;gBACH,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;YACrD,CAAC;YAAC,OAAO,CAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,YAAY,yBAAe,EAAE,CAAC;oBACjC,MAAM,IAAI,gCAAwB,CAAC,UAAU,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;gBAC5D,CAAC;gBAED,MAAM,CAAC,CAAA;YACT,CAAC;YAED,OAAO,IAAI,oBAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,iBAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;CACF;AAhGD,gCAgGC","sourcesContent":["import { LexiconDoc, Lexicons, ValidationError } from '@atproto/lexicon'\nimport {\n FetchHandler,\n FetchHandlerObject,\n FetchHandlerOptions,\n buildFetchHandler,\n} from './fetch-handler'\nimport {\n CallOptions,\n Gettable,\n QueryParams,\n ResponseType,\n XRPCError,\n XRPCInvalidResponseError,\n XRPCResponse,\n httpResponseCodeToEnum,\n} from './types'\nimport {\n combineHeaders,\n constructMethodCallHeaders,\n constructMethodCallUrl,\n encodeMethodCallBody,\n getMethodSchemaHTTPMethod,\n httpResponseBodyParse,\n isErrorResponseBody,\n} from './util'\n\nexport class XrpcClient {\n readonly fetchHandler: FetchHandler\n readonly headers = new Map<string, Gettable<null | string>>()\n readonly lex: Lexicons\n\n constructor(\n fetchHandlerOpts: FetchHandler | FetchHandlerObject | FetchHandlerOptions,\n // \"Lexicons\" is redundant here (because that class implements\n // \"Iterable<LexiconDoc>\") but we keep it for explicitness:\n lex: Lexicons | Iterable<LexiconDoc>,\n ) {\n this.fetchHandler = buildFetchHandler(fetchHandlerOpts)\n\n this.lex = lex instanceof Lexicons ? lex : new Lexicons(lex)\n }\n\n setHeader(key: string, value: Gettable<null | string>): void {\n this.headers.set(key.toLowerCase(), value)\n }\n\n unsetHeader(key: string): void {\n this.headers.delete(key.toLowerCase())\n }\n\n clearHeaders(): void {\n this.headers.clear()\n }\n\n async call(\n methodNsid: string,\n params?: QueryParams,\n data?: unknown,\n opts?: CallOptions,\n ): Promise<XRPCResponse> {\n const def = this.lex.getDefOrThrow(methodNsid)\n if (!def || (def.type !== 'query' && def.type !== 'procedure')) {\n throw new TypeError(\n `Invalid lexicon: ${methodNsid}. Must be a query or procedure.`,\n )\n }\n\n // @TODO: should we validate the params and data here?\n // this.lex.assertValidXrpcParams(methodNsid, params)\n // if (data !== undefined) {\n // this.lex.assertValidXrpcInput(methodNsid, data)\n // }\n\n const reqUrl = constructMethodCallUrl(methodNsid, def, params)\n const reqMethod = getMethodSchemaHTTPMethod(def)\n const reqHeaders = constructMethodCallHeaders(def, data, opts)\n const reqBody = encodeMethodCallBody(reqHeaders, data)\n\n // The duplex field is required for streaming bodies, but not yet reflected\n // anywhere in docs or types. See whatwg/fetch#1438, nodejs/node#46221.\n const init: RequestInit & { duplex: 'half' } = {\n method: reqMethod,\n headers: combineHeaders(reqHeaders, this.headers),\n body: reqBody,\n duplex: 'half',\n redirect: 'follow',\n signal: opts?.signal,\n }\n\n try {\n const response = await this.fetchHandler.call(undefined, reqUrl, init)\n\n const resStatus = response.status\n const resHeaders = Object.fromEntries(response.headers.entries())\n const resBodyBytes = await response.arrayBuffer()\n const resBody = httpResponseBodyParse(\n response.headers.get('content-type'),\n resBodyBytes,\n )\n\n const resCode = httpResponseCodeToEnum(resStatus)\n if (resCode !== ResponseType.Success) {\n const { error = undefined, message = undefined } =\n resBody && isErrorResponseBody(resBody) ? resBody : {}\n throw new XRPCError(resCode, error, message, resHeaders)\n }\n\n try {\n this.lex.assertValidXrpcOutput(methodNsid, resBody)\n } catch (e: unknown) {\n if (e instanceof ValidationError) {\n throw new XRPCInvalidResponseError(methodNsid, e, resBody)\n }\n\n throw e\n }\n\n return new XRPCResponse(resBody, resHeaders)\n } catch (err) {\n throw XRPCError.from(err)\n }\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atproto/xrpc",
3
- "version": "0.7.5",
3
+ "version": "0.7.7",
4
4
  "license": "MIT",
5
5
  "description": "atproto HTTP API (XRPC) client library",
6
6
  "keywords": [
@@ -17,7 +17,7 @@
17
17
  "types": "dist/index.d.ts",
18
18
  "dependencies": {
19
19
  "zod": "^3.23.8",
20
- "@atproto/lexicon": "^0.5.1"
20
+ "@atproto/lexicon": "^0.6.0"
21
21
  },
22
22
  "devDependencies": {
23
23
  "typescript": "^5.6.3"