@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/dist/types.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { ValidationError } from '@atproto/lexicon';
3
- export declare type QueryParams = Record<string, any>;
4
- export declare type Headers = Record<string, string>;
3
+ export type QueryParams = Record<string, any>;
4
+ export type Headers = Record<string, string>;
5
5
  export interface CallOptions {
6
6
  encoding?: string;
7
7
  headers?: Headers;
@@ -11,7 +11,7 @@ export interface FetchHandlerResponse {
11
11
  headers: Headers;
12
12
  body: ArrayBuffer | undefined;
13
13
  }
14
- export declare type FetchHandler = (httpUri: string, httpMethod: string, httpHeaders: Headers, httpReqBody: any) => Promise<FetchHandlerResponse>;
14
+ export type FetchHandler = (httpUri: string, httpMethod: string, httpHeaders: Headers, httpReqBody: any) => Promise<FetchHandlerResponse>;
15
15
  export declare const errorResponseBody: z.ZodObject<{
16
16
  error: z.ZodOptional<z.ZodString>;
17
17
  message: z.ZodOptional<z.ZodString>;
@@ -22,7 +22,7 @@ export declare const errorResponseBody: z.ZodObject<{
22
22
  error?: string | undefined;
23
23
  message?: string | undefined;
24
24
  }>;
25
- export declare type ErrorResponseBody = z.infer<typeof errorResponseBody>;
25
+ export type ErrorResponseBody = z.infer<typeof errorResponseBody>;
26
26
  export declare enum ResponseType {
27
27
  Unknown = 1,
28
28
  InvalidResponse = 2,
@@ -88,3 +88,4 @@ export declare class XRPCInvalidResponseError extends XRPCError {
88
88
  responseBody: unknown;
89
89
  constructor(lexiconNsid: string, validationError: ValidationError, responseBody: unknown);
90
90
  }
91
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAC7C,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAE5C,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,WAAW,GAAG,SAAS,CAAA;CAC9B;AAED,MAAM,MAAM,YAAY,GAAG,CACzB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,OAAO,EACpB,WAAW,EAAE,GAAG,KACb,OAAO,CAAC,oBAAoB,CAAC,CAAA;AAElC,eAAO,MAAM,iBAAiB;;;;;;;;;EAG5B,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAEjE,oBAAY,YAAY;IACtB,OAAO,IAAI;IACX,eAAe,IAAI;IACnB,OAAO,MAAM;IACb,cAAc,MAAM;IACpB,YAAY,MAAM;IAClB,SAAS,MAAM;IACf,gBAAgB,MAAM;IACtB,eAAe,MAAM;IACrB,iBAAiB,MAAM;IACvB,mBAAmB,MAAM;IACzB,oBAAoB,MAAM;IAC1B,eAAe,MAAM;IACrB,kBAAkB,MAAM;IACxB,eAAe,MAAM;CACtB;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;CAc7B,CAAA;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;CAc/B,CAAA;AAED,qBAAa,YAAY;IAGJ,IAAI,EAAE,GAAG;IAAS,OAAO,EAAE,OAAO;IAFrD,OAAO,UAAO;gBAEK,IAAI,EAAE,GAAG,EAAS,OAAO,EAAE,OAAO;CACtD;AAED,qBAAa,SAAU,SAAQ,KAAK;IAKzB,MAAM,EAAE,YAAY;IACpB,KAAK,CAAC;IALf,OAAO,UAAQ;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;gBAGR,MAAM,EAAE,YAAY,EACpB,KAAK,CAAC,oBAAQ,EACrB,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,OAAO;CAQpB;AAED,qBAAa,wBAAyB,SAAQ,SAAS;IAE5C,WAAW,EAAE,MAAM;IACnB,eAAe,EAAE,eAAe;IAChC,YAAY,EAAE,OAAO;gBAFrB,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,OAAO;CAQ/B"}
package/dist/types.js ADDED
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.XRPCInvalidResponseError = exports.XRPCError = exports.XRPCResponse = exports.ResponseTypeStrings = exports.ResponseTypeNames = exports.ResponseType = exports.errorResponseBody = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.errorResponseBody = zod_1.z.object({
6
+ error: zod_1.z.string().optional(),
7
+ message: zod_1.z.string().optional(),
8
+ });
9
+ var ResponseType;
10
+ (function (ResponseType) {
11
+ ResponseType[ResponseType["Unknown"] = 1] = "Unknown";
12
+ ResponseType[ResponseType["InvalidResponse"] = 2] = "InvalidResponse";
13
+ ResponseType[ResponseType["Success"] = 200] = "Success";
14
+ ResponseType[ResponseType["InvalidRequest"] = 400] = "InvalidRequest";
15
+ ResponseType[ResponseType["AuthRequired"] = 401] = "AuthRequired";
16
+ ResponseType[ResponseType["Forbidden"] = 403] = "Forbidden";
17
+ ResponseType[ResponseType["XRPCNotSupported"] = 404] = "XRPCNotSupported";
18
+ ResponseType[ResponseType["PayloadTooLarge"] = 413] = "PayloadTooLarge";
19
+ ResponseType[ResponseType["RateLimitExceeded"] = 429] = "RateLimitExceeded";
20
+ ResponseType[ResponseType["InternalServerError"] = 500] = "InternalServerError";
21
+ ResponseType[ResponseType["MethodNotImplemented"] = 501] = "MethodNotImplemented";
22
+ ResponseType[ResponseType["UpstreamFailure"] = 502] = "UpstreamFailure";
23
+ ResponseType[ResponseType["NotEnoughResources"] = 503] = "NotEnoughResources";
24
+ ResponseType[ResponseType["UpstreamTimeout"] = 504] = "UpstreamTimeout";
25
+ })(ResponseType || (exports.ResponseType = ResponseType = {}));
26
+ exports.ResponseTypeNames = {
27
+ [ResponseType.InvalidResponse]: 'InvalidResponse',
28
+ [ResponseType.Success]: 'Success',
29
+ [ResponseType.InvalidRequest]: 'InvalidRequest',
30
+ [ResponseType.AuthRequired]: 'AuthenticationRequired',
31
+ [ResponseType.Forbidden]: 'Forbidden',
32
+ [ResponseType.XRPCNotSupported]: 'XRPCNotSupported',
33
+ [ResponseType.PayloadTooLarge]: 'PayloadTooLarge',
34
+ [ResponseType.RateLimitExceeded]: 'RateLimitExceeded',
35
+ [ResponseType.InternalServerError]: 'InternalServerError',
36
+ [ResponseType.MethodNotImplemented]: 'MethodNotImplemented',
37
+ [ResponseType.UpstreamFailure]: 'UpstreamFailure',
38
+ [ResponseType.NotEnoughResources]: 'NotEnoughResources',
39
+ [ResponseType.UpstreamTimeout]: 'UpstreamTimeout',
40
+ };
41
+ exports.ResponseTypeStrings = {
42
+ [ResponseType.InvalidResponse]: 'Invalid Response',
43
+ [ResponseType.Success]: 'Success',
44
+ [ResponseType.InvalidRequest]: 'Invalid Request',
45
+ [ResponseType.AuthRequired]: 'Authentication Required',
46
+ [ResponseType.Forbidden]: 'Forbidden',
47
+ [ResponseType.XRPCNotSupported]: 'XRPC Not Supported',
48
+ [ResponseType.PayloadTooLarge]: 'Payload Too Large',
49
+ [ResponseType.RateLimitExceeded]: 'Rate Limit Exceeded',
50
+ [ResponseType.InternalServerError]: 'Internal Server Error',
51
+ [ResponseType.MethodNotImplemented]: 'Method Not Implemented',
52
+ [ResponseType.UpstreamFailure]: 'Upstream Failure',
53
+ [ResponseType.NotEnoughResources]: 'Not Enough Resources',
54
+ [ResponseType.UpstreamTimeout]: 'Upstream Timeout',
55
+ };
56
+ class XRPCResponse {
57
+ constructor(data, headers) {
58
+ Object.defineProperty(this, "data", {
59
+ enumerable: true,
60
+ configurable: true,
61
+ writable: true,
62
+ value: data
63
+ });
64
+ Object.defineProperty(this, "headers", {
65
+ enumerable: true,
66
+ configurable: true,
67
+ writable: true,
68
+ value: headers
69
+ });
70
+ Object.defineProperty(this, "success", {
71
+ enumerable: true,
72
+ configurable: true,
73
+ writable: true,
74
+ value: true
75
+ });
76
+ }
77
+ }
78
+ exports.XRPCResponse = XRPCResponse;
79
+ class XRPCError extends Error {
80
+ constructor(status, error, message, headers) {
81
+ super(message || error || exports.ResponseTypeStrings[status]);
82
+ Object.defineProperty(this, "status", {
83
+ enumerable: true,
84
+ configurable: true,
85
+ writable: true,
86
+ value: status
87
+ });
88
+ Object.defineProperty(this, "error", {
89
+ enumerable: true,
90
+ configurable: true,
91
+ writable: true,
92
+ value: error
93
+ });
94
+ Object.defineProperty(this, "success", {
95
+ enumerable: true,
96
+ configurable: true,
97
+ writable: true,
98
+ value: false
99
+ });
100
+ Object.defineProperty(this, "headers", {
101
+ enumerable: true,
102
+ configurable: true,
103
+ writable: true,
104
+ value: void 0
105
+ });
106
+ if (!this.error) {
107
+ this.error = exports.ResponseTypeNames[status];
108
+ }
109
+ this.headers = headers;
110
+ }
111
+ }
112
+ exports.XRPCError = XRPCError;
113
+ class XRPCInvalidResponseError extends XRPCError {
114
+ constructor(lexiconNsid, validationError, responseBody) {
115
+ super(ResponseType.InvalidResponse, exports.ResponseTypeStrings[ResponseType.InvalidResponse], `The server gave an invalid response and may be out of date.`);
116
+ Object.defineProperty(this, "lexiconNsid", {
117
+ enumerable: true,
118
+ configurable: true,
119
+ writable: true,
120
+ value: lexiconNsid
121
+ });
122
+ Object.defineProperty(this, "validationError", {
123
+ enumerable: true,
124
+ configurable: true,
125
+ writable: true,
126
+ value: validationError
127
+ });
128
+ Object.defineProperty(this, "responseBody", {
129
+ enumerable: true,
130
+ configurable: true,
131
+ writable: true,
132
+ value: responseBody
133
+ });
134
+ }
135
+ }
136
+ exports.XRPCInvalidResponseError = XRPCInvalidResponseError;
137
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/util.d.ts CHANGED
@@ -8,3 +8,4 @@ export declare function constructMethodCallHeaders(schema: LexXrpcProcedure | Le
8
8
  export declare function encodeMethodCallBody(headers: Headers, data?: any): ArrayBuffer | undefined;
9
9
  export declare function httpResponseCodeToEnum(status: number): ResponseType;
10
10
  export declare function httpResponseBodyParse(mimeType: string | null, data: ArrayBuffer | undefined): any;
11
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAChB,YAAY,EAEb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,WAAW,EACX,OAAO,EACP,WAAW,EACX,YAAY,EAEb,MAAM,SAAS,CAAA;AAEhB,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,gBAAgB,GAAG,YAAY,kBAMxC;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,gBAAgB,GAAG,YAAY,EACvC,UAAU,EAAE,GAAG,EACf,MAAM,CAAC,EAAE,WAAW,GACnB,MAAM,CA4BR;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EACA,QAAQ,GACR,OAAO,GACP,SAAS,GACT,SAAS,GACT,UAAU,GACV,OAAO,GACP,SAAS,EACb,KAAK,EAAE,GAAG,GACT,MAAM,CAiBR;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAO1D;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,gBAAgB,GAAG,YAAY,EACvC,IAAI,CAAC,EAAE,GAAG,EACV,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAaT;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,IAAI,CAAC,EAAE,GAAG,GACT,WAAW,GAAG,SAAS,CAczB;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAgBnE;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,IAAI,EAAE,WAAW,GAAG,SAAS,GAC5B,GAAG,CA4BL"}
package/dist/util.js ADDED
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.httpResponseBodyParse = exports.httpResponseCodeToEnum = exports.encodeMethodCallBody = exports.constructMethodCallHeaders = exports.normalizeHeaders = exports.encodeQueryParam = exports.constructMethodCallUri = exports.getMethodSchemaHTTPMethod = void 0;
4
+ const lexicon_1 = require("@atproto/lexicon");
5
+ const types_1 = require("./types");
6
+ function getMethodSchemaHTTPMethod(schema) {
7
+ if (schema.type === 'procedure') {
8
+ return 'post';
9
+ }
10
+ return 'get';
11
+ }
12
+ exports.getMethodSchemaHTTPMethod = getMethodSchemaHTTPMethod;
13
+ function constructMethodCallUri(nsid, schema, serviceUri, params) {
14
+ const uri = new URL(serviceUri);
15
+ uri.pathname = `/xrpc/${nsid}`;
16
+ // given parameters
17
+ if (params) {
18
+ for (const [key, value] of Object.entries(params)) {
19
+ const paramSchema = schema.parameters?.properties?.[key];
20
+ if (!paramSchema) {
21
+ throw new Error(`Invalid query parameter: ${key}`);
22
+ }
23
+ if (value !== undefined) {
24
+ if (paramSchema.type === 'array') {
25
+ const vals = [];
26
+ vals.concat(value).forEach((val) => {
27
+ uri.searchParams.append(key, encodeQueryParam(paramSchema.items.type, val));
28
+ });
29
+ }
30
+ else {
31
+ uri.searchParams.set(key, encodeQueryParam(paramSchema.type, value));
32
+ }
33
+ }
34
+ }
35
+ }
36
+ return uri.toString();
37
+ }
38
+ exports.constructMethodCallUri = constructMethodCallUri;
39
+ function encodeQueryParam(type, value) {
40
+ if (type === 'string' || type === 'unknown') {
41
+ return String(value);
42
+ }
43
+ if (type === 'float') {
44
+ return String(Number(value));
45
+ }
46
+ else if (type === 'integer') {
47
+ return String(Number(value) | 0);
48
+ }
49
+ else if (type === 'boolean') {
50
+ return value ? 'true' : 'false';
51
+ }
52
+ else if (type === 'datetime') {
53
+ if (value instanceof Date) {
54
+ return value.toISOString();
55
+ }
56
+ return String(value);
57
+ }
58
+ throw new Error(`Unsupported query param type: ${type}`);
59
+ }
60
+ exports.encodeQueryParam = encodeQueryParam;
61
+ function normalizeHeaders(headers) {
62
+ const normalized = {};
63
+ for (const [header, value] of Object.entries(headers)) {
64
+ normalized[header.toLowerCase()] = value;
65
+ }
66
+ return normalized;
67
+ }
68
+ exports.normalizeHeaders = normalizeHeaders;
69
+ function constructMethodCallHeaders(schema, data, opts) {
70
+ const headers = opts?.headers || {};
71
+ if (schema.type === 'procedure') {
72
+ if (opts?.encoding) {
73
+ headers['Content-Type'] = opts.encoding;
74
+ }
75
+ if (data && typeof data === 'object') {
76
+ if (!headers['Content-Type']) {
77
+ headers['Content-Type'] = 'application/json';
78
+ }
79
+ }
80
+ }
81
+ return headers;
82
+ }
83
+ exports.constructMethodCallHeaders = constructMethodCallHeaders;
84
+ function encodeMethodCallBody(headers, data) {
85
+ if (!headers['content-type'] || typeof data === 'undefined') {
86
+ return undefined;
87
+ }
88
+ if (data instanceof ArrayBuffer) {
89
+ return data;
90
+ }
91
+ if (headers['content-type'].startsWith('text/')) {
92
+ return new TextEncoder().encode(data.toString());
93
+ }
94
+ if (headers['content-type'].startsWith('application/json')) {
95
+ return new TextEncoder().encode((0, lexicon_1.stringifyLex)(data));
96
+ }
97
+ return data;
98
+ }
99
+ exports.encodeMethodCallBody = encodeMethodCallBody;
100
+ function httpResponseCodeToEnum(status) {
101
+ let resCode;
102
+ if (status in types_1.ResponseType) {
103
+ resCode = status;
104
+ }
105
+ else if (status >= 100 && status < 200) {
106
+ resCode = types_1.ResponseType.XRPCNotSupported;
107
+ }
108
+ else if (status >= 200 && status < 300) {
109
+ resCode = types_1.ResponseType.Success;
110
+ }
111
+ else if (status >= 300 && status < 400) {
112
+ resCode = types_1.ResponseType.XRPCNotSupported;
113
+ }
114
+ else if (status >= 400 && status < 500) {
115
+ resCode = types_1.ResponseType.InvalidRequest;
116
+ }
117
+ else {
118
+ resCode = types_1.ResponseType.InternalServerError;
119
+ }
120
+ return resCode;
121
+ }
122
+ exports.httpResponseCodeToEnum = httpResponseCodeToEnum;
123
+ function httpResponseBodyParse(mimeType, data) {
124
+ if (mimeType) {
125
+ if (mimeType.includes('application/json') && data?.byteLength) {
126
+ try {
127
+ const str = new TextDecoder().decode(data);
128
+ return (0, lexicon_1.jsonStringToLex)(str);
129
+ }
130
+ catch (e) {
131
+ throw new types_1.XRPCError(types_1.ResponseType.InvalidResponse, `Failed to parse response body: ${String(e)}`);
132
+ }
133
+ }
134
+ if (mimeType.startsWith('text/') && data?.byteLength) {
135
+ try {
136
+ return new TextDecoder().decode(data);
137
+ }
138
+ catch (e) {
139
+ throw new types_1.XRPCError(types_1.ResponseType.InvalidResponse, `Failed to parse response body: ${String(e)}`);
140
+ }
141
+ }
142
+ }
143
+ if (data instanceof ArrayBuffer) {
144
+ return new Uint8Array(data);
145
+ }
146
+ return data;
147
+ }
148
+ exports.httpResponseBodyParse = httpResponseBodyParse;
149
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;AAAA,8CAKyB;AACzB,mCAMgB;AAEhB,SAAgB,yBAAyB,CACvC,MAAuC;IAEvC,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO,MAAM,CAAA;IACf,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAPD,8DAOC;AAED,SAAgB,sBAAsB,CACpC,IAAY,EACZ,MAAuC,EACvC,UAAe,EACf,MAAoB;IAEpB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAA;IAC/B,GAAG,CAAC,QAAQ,GAAG,SAAS,IAAI,EAAE,CAAA;IAE9B,mBAAmB;IACnB,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,CAAA;YACxD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAA;YACpD,CAAC;YACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,IAAI,WAAW,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACjC,MAAM,IAAI,GAAmB,EAAE,CAAA;oBAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;wBACjC,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,GAAG,EACH,gBAAgB,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAC9C,CAAA;oBACH,CAAC,CAAC,CAAA;gBACJ,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;gBACtE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAA;AACvB,CAAC;AAjCD,wDAiCC;AAED,SAAgB,gBAAgB,CAC9B,IAOa,EACb,KAAU;IAEV,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9B,CAAC;SAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;IAClC,CAAC;SAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;IACjC,CAAC;SAAM,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/B,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC,WAAW,EAAE,CAAA;QAC5B,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,EAAE,CAAC,CAAA;AAC1D,CAAC;AA3BD,4CA2BC;AAED,SAAgB,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,UAAU,GAAY,EAAE,CAAA;IAC9B,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACtD,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAA;IAC1C,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC;AAPD,4CAOC;AAED,SAAgB,0BAA0B,CACxC,MAAuC,EACvC,IAAU,EACV,IAAkB;IAElB,MAAM,OAAO,GAAY,IAAI,EAAE,OAAO,IAAI,EAAE,CAAA;IAC5C,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAChC,IAAI,IAAI,EAAE,QAAQ,EAAE,CAAC;YACnB,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAA;QACzC,CAAC;QACD,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAA;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAjBD,gEAiBC;AAED,SAAgB,oBAAoB,CAClC,OAAgB,EAChB,IAAU;IAEV,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE,CAAC;QAC5D,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;QAChC,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAChD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IAClD,CAAC;IACD,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC3D,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAA,sBAAY,EAAC,IAAI,CAAC,CAAC,CAAA;IACrD,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAjBD,oDAiBC;AAED,SAAgB,sBAAsB,CAAC,MAAc;IACnD,IAAI,OAAqB,CAAA;IACzB,IAAI,MAAM,IAAI,oBAAY,EAAE,CAAC;QAC3B,OAAO,GAAG,MAAM,CAAA;IAClB,CAAC;SAAM,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QACzC,OAAO,GAAG,oBAAY,CAAC,gBAAgB,CAAA;IACzC,CAAC;SAAM,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QACzC,OAAO,GAAG,oBAAY,CAAC,OAAO,CAAA;IAChC,CAAC;SAAM,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QACzC,OAAO,GAAG,oBAAY,CAAC,gBAAgB,CAAA;IACzC,CAAC;SAAM,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QACzC,OAAO,GAAG,oBAAY,CAAC,cAAc,CAAA;IACvC,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,oBAAY,CAAC,mBAAmB,CAAA;IAC5C,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAhBD,wDAgBC;AAED,SAAgB,qBAAqB,CACnC,QAAuB,EACvB,IAA6B;IAE7B,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,IAAI,EAAE,UAAU,EAAE,CAAC;YAC9D,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gBAC1C,OAAO,IAAA,yBAAe,EAAC,GAAG,CAAC,CAAA;YAC7B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,iBAAS,CACjB,oBAAY,CAAC,eAAe,EAC5B,kCAAkC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC9C,CAAA;YACH,CAAC;QACH,CAAC;QACD,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,UAAU,EAAE,CAAC;YACrD,IAAI,CAAC;gBACH,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACvC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,iBAAS,CACjB,oBAAY,CAAC,eAAe,EAC5B,kCAAkC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC9C,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;QAChC,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AA/BD,sDA+BC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atproto/xrpc",
3
- "version": "0.4.1",
3
+ "version": "0.4.3-next.0",
4
4
  "license": "MIT",
5
5
  "description": "atproto HTTP API (XRPC) client library",
6
6
  "keywords": [
@@ -14,14 +14,15 @@
14
14
  "directory": "packages/xrpc"
15
15
  },
16
16
  "main": "dist/index.js",
17
+ "types": "dist/index.d.ts",
17
18
  "dependencies": {
18
19
  "zod": "^3.21.4",
19
- "@atproto/lexicon": "^0.3.1"
20
+ "@atproto/lexicon": "^0.3.3-next.0"
20
21
  },
21
- "scripts": {
22
- "build": "node ./build.js",
23
- "postbuild": "tsc --build tsconfig.build.json",
24
- "update-main-to-dist": "node ../../update-main-to-dist.js packages/xrpc"
22
+ "devDependencies": {
23
+ "typescript": "^5.3.3"
25
24
  },
26
- "types": "dist/index.d.ts"
25
+ "scripts": {
26
+ "build": "tsc --build tsconfig.build.json"
27
+ }
27
28
  }
@@ -1,4 +1,8 @@
1
1
  {
2
- "extends": "./tsconfig.json",
3
- "exclude": ["**/*.spec.ts", "**/*.test.ts"]
2
+ "extends": "../../tsconfig/isomorphic.json",
3
+ "compilerOptions": {
4
+ "rootDir": "./src",
5
+ "outDir": "./dist"
6
+ },
7
+ "include": ["./src"]
4
8
  }
package/tsconfig.json CHANGED
@@ -1,13 +1,4 @@
1
1
  {
2
- "extends": "../../tsconfig.json",
3
- "compilerOptions": {
4
- "rootDir": "./src",
5
- "outDir": "./dist", // Your outDir,
6
- "emitDeclarationOnly": true
7
- },
8
- "include": ["./src", "__tests__/**/**.ts"],
9
- "references": [
10
- { "path": "../common/tsconfig.build.json" },
11
- { "path": "../lexicon/tsconfig.build.json" }
12
- ]
2
+ "include": [],
3
+ "references": [{ "path": "./tsconfig.build.json" }]
13
4
  }
package/babel.config.js DELETED
@@ -1 +0,0 @@
1
- module.exports = require('../../babel.config.js')
package/build.js DELETED
@@ -1,14 +0,0 @@
1
- const { nodeExternalsPlugin } = require('esbuild-node-externals')
2
-
3
- const buildShallow =
4
- process.argv.includes('--shallow') || process.env.ATP_BUILD_SHALLOW === 'true'
5
-
6
- require('esbuild').build({
7
- logLevel: 'info',
8
- entryPoints: ['src/index.ts'],
9
- bundle: true,
10
- sourcemap: true,
11
- outdir: 'dist',
12
- platform: 'node',
13
- plugins: buildShallow ? [nodeExternalsPlugin()] : [],
14
- })