@atproto/xrpc 0.4.3 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @atproto/xrpc
2
2
 
3
+ ## 0.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#2169](https://github.com/bluesky-social/atproto/pull/2169) [`f689bd51a`](https://github.com/bluesky-social/atproto/commit/f689bd51a2f4e02d4eca40eb2568a1fcb95494e9) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Build system rework, stop bundling dependencies.
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [[`f689bd51a`](https://github.com/bluesky-social/atproto/commit/f689bd51a2f4e02d4eca40eb2568a1fcb95494e9)]:
12
+ - @atproto/lexicon@0.4.0
13
+
3
14
  ## 0.4.3
4
15
 
5
16
  ### Patch Changes
package/dist/client.d.ts CHANGED
@@ -19,3 +19,4 @@ export declare class ServiceClient {
19
19
  call(methodNsid: string, params?: QueryParams, data?: unknown, opts?: CallOptions): Promise<XRPCResponse>;
20
20
  }
21
21
  export declare function defaultFetchHandler(httpUri: string, httpMethod: string, httpHeaders: Headers, httpReqBody: unknown): Promise<FetchHandlerResponse>;
22
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAmB,MAAM,kBAAkB,CAAA;AAUxE,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,OAAO,EACP,WAAW,EACX,WAAW,EAIX,YAAY,EAGb,MAAM,SAAS,CAAA;AAEhB,qBAAa,MAAM;IACjB,KAAK,EAAE,YAAY,CAAsB;IACzC,GAAG,WAAiB;IAKd,IAAI,CACR,UAAU,EAAE,MAAM,GAAG,GAAG,EACxB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,WAAW,EACpB,IAAI,CAAC,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,WAAW;IAKpB,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG;IAOhC,UAAU,CAAC,GAAG,EAAE,UAAU;IAI1B,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE;IAM9B,aAAa,CAAC,GAAG,EAAE,MAAM;CAG1B;AAED,qBAAa,aAAa;IACxB,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,GAAG,CAAA;IACR,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAK;gBAExB,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,GAAG;IAKxD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI3C,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIxB,IAAI,CACR,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,WAAW,EACpB,IAAI,CAAC,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,WAAW;CAmDrB;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,OAAO,EACpB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,oBAAoB,CAAC,CAqB/B"}
package/dist/client.js ADDED
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultFetchHandler = exports.ServiceClient = exports.Client = void 0;
4
+ const lexicon_1 = require("@atproto/lexicon");
5
+ const util_1 = require("./util");
6
+ const types_1 = require("./types");
7
+ class Client {
8
+ constructor() {
9
+ Object.defineProperty(this, "fetch", {
10
+ enumerable: true,
11
+ configurable: true,
12
+ writable: true,
13
+ value: defaultFetchHandler
14
+ });
15
+ Object.defineProperty(this, "lex", {
16
+ enumerable: true,
17
+ configurable: true,
18
+ writable: true,
19
+ value: new lexicon_1.Lexicons()
20
+ });
21
+ }
22
+ // method calls
23
+ //
24
+ async call(serviceUri, methodNsid, params, data, opts) {
25
+ return this.service(serviceUri).call(methodNsid, params, data, opts);
26
+ }
27
+ service(serviceUri) {
28
+ return new ServiceClient(this, serviceUri);
29
+ }
30
+ // schemas
31
+ // =
32
+ addLexicon(doc) {
33
+ this.lex.add(doc);
34
+ }
35
+ addLexicons(docs) {
36
+ for (const doc of docs) {
37
+ this.addLexicon(doc);
38
+ }
39
+ }
40
+ removeLexicon(uri) {
41
+ this.lex.remove(uri);
42
+ }
43
+ }
44
+ exports.Client = Client;
45
+ class ServiceClient {
46
+ constructor(baseClient, serviceUri) {
47
+ Object.defineProperty(this, "baseClient", {
48
+ enumerable: true,
49
+ configurable: true,
50
+ writable: true,
51
+ value: void 0
52
+ });
53
+ Object.defineProperty(this, "uri", {
54
+ enumerable: true,
55
+ configurable: true,
56
+ writable: true,
57
+ value: void 0
58
+ });
59
+ Object.defineProperty(this, "headers", {
60
+ enumerable: true,
61
+ configurable: true,
62
+ writable: true,
63
+ value: {}
64
+ });
65
+ this.baseClient = baseClient;
66
+ this.uri = typeof serviceUri === 'string' ? new URL(serviceUri) : serviceUri;
67
+ }
68
+ setHeader(key, value) {
69
+ this.headers[key] = value;
70
+ }
71
+ unsetHeader(key) {
72
+ delete this.headers[key];
73
+ }
74
+ async call(methodNsid, params, data, opts) {
75
+ const def = this.baseClient.lex.getDefOrThrow(methodNsid);
76
+ if (!def || (def.type !== 'query' && def.type !== 'procedure')) {
77
+ throw new Error(`Invalid lexicon: ${methodNsid}. Must be a query or procedure.`);
78
+ }
79
+ const httpMethod = (0, util_1.getMethodSchemaHTTPMethod)(def);
80
+ const httpUri = (0, util_1.constructMethodCallUri)(methodNsid, def, this.uri, params);
81
+ const httpHeaders = (0, util_1.constructMethodCallHeaders)(def, data, {
82
+ headers: {
83
+ ...this.headers,
84
+ ...opts?.headers,
85
+ },
86
+ encoding: opts?.encoding,
87
+ });
88
+ const res = await this.baseClient.fetch(httpUri, httpMethod, httpHeaders, data);
89
+ const resCode = (0, util_1.httpResponseCodeToEnum)(res.status);
90
+ if (resCode === types_1.ResponseType.Success) {
91
+ try {
92
+ this.baseClient.lex.assertValidXrpcOutput(methodNsid, res.body);
93
+ }
94
+ catch (e) {
95
+ if (e instanceof lexicon_1.ValidationError) {
96
+ throw new types_1.XRPCInvalidResponseError(methodNsid, e, res.body);
97
+ }
98
+ else {
99
+ throw e;
100
+ }
101
+ }
102
+ return new types_1.XRPCResponse(res.body, res.headers);
103
+ }
104
+ else {
105
+ if (res.body && isErrorResponseBody(res.body)) {
106
+ throw new types_1.XRPCError(resCode, res.body.error, res.body.message, res.headers);
107
+ }
108
+ else {
109
+ throw new types_1.XRPCError(resCode);
110
+ }
111
+ }
112
+ }
113
+ }
114
+ exports.ServiceClient = ServiceClient;
115
+ async function defaultFetchHandler(httpUri, httpMethod, httpHeaders, httpReqBody) {
116
+ try {
117
+ // The duplex field is now required for streaming bodies, but not yet reflected
118
+ // anywhere in docs or types. See whatwg/fetch#1438, nodejs/node#46221.
119
+ const headers = (0, util_1.normalizeHeaders)(httpHeaders);
120
+ const reqInit = {
121
+ method: httpMethod,
122
+ headers,
123
+ body: (0, util_1.encodeMethodCallBody)(headers, httpReqBody),
124
+ duplex: 'half',
125
+ };
126
+ const res = await fetch(httpUri, reqInit);
127
+ const resBody = await res.arrayBuffer();
128
+ return {
129
+ status: res.status,
130
+ headers: Object.fromEntries(res.headers.entries()),
131
+ body: (0, util_1.httpResponseBodyParse)(res.headers.get('content-type'), resBody),
132
+ };
133
+ }
134
+ catch (e) {
135
+ throw new types_1.XRPCError(types_1.ResponseType.Unknown, String(e));
136
+ }
137
+ }
138
+ exports.defaultFetchHandler = defaultFetchHandler;
139
+ function isErrorResponseBody(v) {
140
+ return types_1.errorResponseBody.safeParse(v).success;
141
+ }
142
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AAAA,8CAAwE;AACxE,iCAQe;AACf,mCAYgB;AAEhB,MAAa,MAAM;IAAnB;QACE;;;;mBAAsB,mBAAmB;WAAA;QACzC;;;;mBAAM,IAAI,kBAAQ,EAAE;WAAA;IAmCtB,CAAC;IAjCC,eAAe;IACf,EAAE;IAEF,KAAK,CAAC,IAAI,CACR,UAAwB,EACxB,UAAkB,EAClB,MAAoB,EACpB,IAAc,EACd,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;AArCD,wBAqCC;AAED,MAAa,aAAa;IAKxB,YAAY,UAAkB,EAAE,UAAwB;QAJxD;;;;;WAAkB;QAClB;;;;;WAAQ;QACR;;;;mBAAkC,EAAE;WAAA;QAGlC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,GAAG,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;IAC9E,CAAC;IAED,SAAS,CAAC,GAAW,EAAE,KAAa;QAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IAC3B,CAAC;IAED,WAAW,CAAC,GAAW;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAC1B,CAAC;IAED,KAAK,CAAC,IAAI,CACR,UAAkB,EAClB,MAAoB,EACpB,IAAc,EACd,IAAkB;QAElB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;QACzD,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,CACb,oBAAoB,UAAU,iCAAiC,CAChE,CAAA;QACH,CAAC;QAED,MAAM,UAAU,GAAG,IAAA,gCAAyB,EAAC,GAAG,CAAC,CAAA;QACjD,MAAM,OAAO,GAAG,IAAA,6BAAsB,EAAC,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QACzE,MAAM,WAAW,GAAG,IAAA,iCAA0B,EAAC,GAAG,EAAE,IAAI,EAAE;YACxD,OAAO,EAAE;gBACP,GAAG,IAAI,CAAC,OAAO;gBACf,GAAG,IAAI,EAAE,OAAO;aACjB;YACD,QAAQ,EAAE,IAAI,EAAE,QAAQ;SACzB,CAAC,CAAA;QAEF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CACrC,OAAO,EACP,UAAU,EACV,WAAW,EACX,IAAI,CACL,CAAA;QAED,MAAM,OAAO,GAAG,IAAA,6BAAsB,EAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAClD,IAAI,OAAO,KAAK,oBAAY,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,CAAC;gBACH,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,qBAAqB,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;YACjE,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,YAAY,yBAAe,EAAE,CAAC;oBACjC,MAAM,IAAI,gCAAwB,CAAC,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;gBAC7D,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,CAAA;gBACT,CAAC;YACH,CAAC;YACD,OAAO,IAAI,oBAAY,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;QAChD,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,CAAC,IAAI,IAAI,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,iBAAS,CACjB,OAAO,EACP,GAAG,CAAC,IAAI,CAAC,KAAK,EACd,GAAG,CAAC,IAAI,CAAC,OAAO,EAChB,GAAG,CAAC,OAAO,CACZ,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,iBAAS,CAAC,OAAO,CAAC,CAAA;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAzED,sCAyEC;AAEM,KAAK,UAAU,mBAAmB,CACvC,OAAe,EACf,UAAkB,EAClB,WAAoB,EACpB,WAAoB;IAEpB,IAAI,CAAC;QACH,+EAA+E;QAC/E,uEAAuE;QACvE,MAAM,OAAO,GAAG,IAAA,uBAAgB,EAAC,WAAW,CAAC,CAAA;QAC7C,MAAM,OAAO,GAAqC;YAChD,MAAM,EAAE,UAAU;YAClB,OAAO;YACP,IAAI,EAAE,IAAA,2BAAoB,EAAC,OAAO,EAAE,WAAW,CAAC;YAChD,MAAM,EAAE,MAAM;SACf,CAAA;QACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACzC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAA;QACvC,OAAO;YACL,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAClD,IAAI,EAAE,IAAA,4BAAqB,EAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;SACtE,CAAA;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,iBAAS,CAAC,oBAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACtD,CAAC;AACH,CAAC;AA1BD,kDA0BC;AAED,SAAS,mBAAmB,CAAC,CAAU;IACrC,OAAO,yBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;AAC/C,CAAC"}
package/dist/index.d.ts CHANGED
@@ -3,3 +3,4 @@ export * from './client';
3
3
  import { Client } from './client';
4
4
  declare const defaultInst: Client;
5
5
  export default defaultInst;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,QAAA,MAAM,WAAW,QAAe,CAAA;AAChC,eAAe,WAAW,CAAA"}