@atproto/xrpc 0.4.1 → 0.4.3-next.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 +16 -0
- package/LICENSE.txt +1 -1
- package/dist/client.d.ts +1 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +142 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -15322
- package/dist/index.js.map +1 -7
- package/dist/types.d.ts +5 -4
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +137 -0
- package/dist/types.js.map +1 -0
- package/dist/util.d.ts +1 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +149 -0
- package/dist/util.js.map +1 -0
- package/package.json +8 -7
- package/tsconfig.build.json +6 -2
- package/tsconfig.json +2 -11
- package/babel.config.js +0 -1
- package/build.js +0 -14
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @atproto/xrpc
|
|
2
2
|
|
|
3
|
+
## 0.4.3-next.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Overhaul of package builds, no longer bundling deps.
|
|
8
|
+
|
|
9
|
+
- Updated dependencies []:
|
|
10
|
+
- @atproto/lexicon@0.3.3-next.0
|
|
11
|
+
|
|
12
|
+
## 0.4.2
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- Updated dependencies []:
|
|
17
|
+
- @atproto/lexicon@0.3.2
|
|
18
|
+
|
|
3
19
|
## 0.4.1
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
package/LICENSE.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Dual MIT/Apache-2.0 License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2022-
|
|
3
|
+
Copyright (c) 2022-2024 Bluesky PBC, and Contributors
|
|
4
4
|
|
|
5
5
|
Except as otherwise noted in individual files, this software is licensed under the MIT license (<http://opensource.org/licenses/MIT>), or the Apache License, Version 2.0 (<http://www.apache.org/licenses/LICENSE-2.0>).
|
|
6
6
|
|
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":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -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"}
|