@atproto/xrpc-server 0.6.3 → 0.7.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 +37 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +2 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +55 -78
- package/dist/server.js.map +1 -1
- package/dist/types.d.ts +73 -17
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +97 -40
- package/dist/types.js.map +1 -1
- package/dist/util.d.ts +6 -2
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +85 -27
- package/dist/util.js.map +1 -1
- package/package.json +4 -4
- package/src/index.ts +1 -1
- package/src/server.ts +78 -104
- package/src/types.ts +209 -41
- package/src/util.ts +103 -33
- package/tests/bodies.test.ts +120 -21
- package/tests/parsing.test.ts +89 -0
package/dist/types.js
CHANGED
|
@@ -3,10 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.MethodNotImplementedError = exports.UpstreamTimeoutError = exports.NotEnoughResourcesError = exports.UpstreamFailureError = exports.InternalServerError = exports.RateLimitExceededError = exports.ForbiddenError = exports.AuthRequiredError = exports.InvalidRequestError = exports.isHandlerError = exports.XRPCError = exports.isShared = exports.handlerError = exports.handlerPipeThrough = exports.handlerSuccess = exports.handlerAuth = exports.handlerInput = void 0;
|
|
6
|
+
exports.MethodNotImplementedError = exports.UpstreamTimeoutError = exports.NotEnoughResourcesError = exports.UpstreamFailureError = exports.InternalServerError = exports.RateLimitExceededError = exports.ForbiddenError = exports.AuthRequiredError = exports.InvalidRequestError = exports.isHandlerPipeThroughStream = exports.isHandlerPipeThroughBuffer = exports.isHandlerError = exports.XRPCError = exports.isShared = exports.handlerError = exports.handlerPipeThrough = exports.handlerPipeThroughStream = exports.handlerPipeThroughBuffer = exports.handlerSuccess = exports.headersSchema = exports.handlerAuth = exports.handlerInput = void 0;
|
|
7
|
+
const xrpc_1 = require("@atproto/xrpc");
|
|
7
8
|
const http_errors_1 = require("http-errors");
|
|
9
|
+
const stream_1 = require("stream");
|
|
8
10
|
const zod_1 = __importDefault(require("zod"));
|
|
9
|
-
const xrpc_1 = require("@atproto/xrpc");
|
|
10
11
|
exports.handlerInput = zod_1.default.object({
|
|
11
12
|
encoding: zod_1.default.string(),
|
|
12
13
|
body: zod_1.default.any(),
|
|
@@ -15,16 +16,26 @@ exports.handlerAuth = zod_1.default.object({
|
|
|
15
16
|
credentials: zod_1.default.any(),
|
|
16
17
|
artifacts: zod_1.default.any(),
|
|
17
18
|
});
|
|
19
|
+
exports.headersSchema = zod_1.default.record(zod_1.default.string());
|
|
18
20
|
exports.handlerSuccess = zod_1.default.object({
|
|
19
21
|
encoding: zod_1.default.string(),
|
|
20
22
|
body: zod_1.default.any(),
|
|
21
|
-
headers:
|
|
23
|
+
headers: exports.headersSchema.optional(),
|
|
24
|
+
});
|
|
25
|
+
exports.handlerPipeThroughBuffer = zod_1.default.object({
|
|
26
|
+
encoding: zod_1.default.string(),
|
|
27
|
+
buffer: zod_1.default.instanceof(Buffer),
|
|
28
|
+
headers: exports.headersSchema.optional(),
|
|
22
29
|
});
|
|
23
|
-
exports.
|
|
30
|
+
exports.handlerPipeThroughStream = zod_1.default.object({
|
|
24
31
|
encoding: zod_1.default.string(),
|
|
25
|
-
|
|
26
|
-
headers:
|
|
32
|
+
stream: zod_1.default.instanceof(stream_1.Readable),
|
|
33
|
+
headers: exports.headersSchema.optional(),
|
|
27
34
|
});
|
|
35
|
+
exports.handlerPipeThrough = zod_1.default.union([
|
|
36
|
+
exports.handlerPipeThroughBuffer,
|
|
37
|
+
exports.handlerPipeThroughStream,
|
|
38
|
+
]);
|
|
28
39
|
exports.handlerError = zod_1.default.object({
|
|
29
40
|
status: zod_1.default.number(),
|
|
30
41
|
error: zod_1.default.string().optional(),
|
|
@@ -35,8 +46,8 @@ const isShared = (opts) => {
|
|
|
35
46
|
};
|
|
36
47
|
exports.isShared = isShared;
|
|
37
48
|
class XRPCError extends Error {
|
|
38
|
-
constructor(type, errorMessage, customErrorName) {
|
|
39
|
-
super(errorMessage);
|
|
49
|
+
constructor(type, errorMessage, customErrorName, options) {
|
|
50
|
+
super(errorMessage, options);
|
|
40
51
|
Object.defineProperty(this, "type", {
|
|
41
52
|
enumerable: true,
|
|
42
53
|
configurable: true,
|
|
@@ -70,25 +81,26 @@ class XRPCError extends Error {
|
|
|
70
81
|
get typeStr() {
|
|
71
82
|
return xrpc_1.ResponseTypeStrings[this.type];
|
|
72
83
|
}
|
|
73
|
-
static fromError(
|
|
74
|
-
if (
|
|
75
|
-
return
|
|
84
|
+
static fromError(cause) {
|
|
85
|
+
if (cause instanceof XRPCError) {
|
|
86
|
+
return cause;
|
|
76
87
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
resultErr = new XRPCError(error.status, error.message, error.name);
|
|
88
|
+
if (cause instanceof xrpc_1.XRPCError) {
|
|
89
|
+
return new XRPCError(cause.status, cause.message, cause.error, { cause });
|
|
80
90
|
}
|
|
81
|
-
|
|
82
|
-
|
|
91
|
+
if ((0, http_errors_1.isHttpError)(cause)) {
|
|
92
|
+
return new XRPCError(cause.status, cause.message, cause.name, { cause });
|
|
83
93
|
}
|
|
84
|
-
|
|
85
|
-
|
|
94
|
+
if (isHandlerError(cause)) {
|
|
95
|
+
return this.fromHandlerError(cause);
|
|
86
96
|
}
|
|
87
|
-
|
|
88
|
-
|
|
97
|
+
if (cause instanceof Error) {
|
|
98
|
+
return new InternalServerError(cause.message, undefined, { cause });
|
|
89
99
|
}
|
|
90
|
-
|
|
91
|
-
|
|
100
|
+
return new InternalServerError('Unexpected internal server error', undefined, { cause });
|
|
101
|
+
}
|
|
102
|
+
static fromHandlerError(err) {
|
|
103
|
+
return new XRPCError(err.status, err.message, err.error, { cause: err });
|
|
92
104
|
}
|
|
93
105
|
}
|
|
94
106
|
exports.XRPCError = XRPCError;
|
|
@@ -100,27 +112,48 @@ function isHandlerError(v) {
|
|
|
100
112
|
(v['message'] === undefined || typeof v['message'] === 'string'));
|
|
101
113
|
}
|
|
102
114
|
exports.isHandlerError = isHandlerError;
|
|
115
|
+
function isHandlerPipeThroughBuffer(v) {
|
|
116
|
+
// We only need to discriminate between possible HandlerOutput values
|
|
117
|
+
return v['buffer'] !== undefined;
|
|
118
|
+
}
|
|
119
|
+
exports.isHandlerPipeThroughBuffer = isHandlerPipeThroughBuffer;
|
|
120
|
+
function isHandlerPipeThroughStream(v) {
|
|
121
|
+
// We only need to discriminate between possible HandlerOutput values
|
|
122
|
+
return v['stream'] !== undefined;
|
|
123
|
+
}
|
|
124
|
+
exports.isHandlerPipeThroughStream = isHandlerPipeThroughStream;
|
|
103
125
|
class InvalidRequestError extends XRPCError {
|
|
104
|
-
constructor(errorMessage, customErrorName) {
|
|
105
|
-
super(xrpc_1.ResponseType.InvalidRequest, errorMessage, customErrorName);
|
|
126
|
+
constructor(errorMessage, customErrorName, options) {
|
|
127
|
+
super(xrpc_1.ResponseType.InvalidRequest, errorMessage, customErrorName, options);
|
|
128
|
+
}
|
|
129
|
+
[Symbol.hasInstance](instance) {
|
|
130
|
+
return (instance instanceof XRPCError &&
|
|
131
|
+
instance.type === xrpc_1.ResponseType.InvalidRequest);
|
|
106
132
|
}
|
|
107
133
|
}
|
|
108
134
|
exports.InvalidRequestError = InvalidRequestError;
|
|
109
135
|
class AuthRequiredError extends XRPCError {
|
|
110
|
-
constructor(errorMessage, customErrorName) {
|
|
111
|
-
super(xrpc_1.ResponseType.AuthRequired, errorMessage, customErrorName);
|
|
136
|
+
constructor(errorMessage, customErrorName, options) {
|
|
137
|
+
super(xrpc_1.ResponseType.AuthRequired, errorMessage, customErrorName, options);
|
|
138
|
+
}
|
|
139
|
+
[Symbol.hasInstance](instance) {
|
|
140
|
+
return (instance instanceof XRPCError &&
|
|
141
|
+
instance.type === xrpc_1.ResponseType.AuthRequired);
|
|
112
142
|
}
|
|
113
143
|
}
|
|
114
144
|
exports.AuthRequiredError = AuthRequiredError;
|
|
115
145
|
class ForbiddenError extends XRPCError {
|
|
116
|
-
constructor(errorMessage, customErrorName) {
|
|
117
|
-
super(xrpc_1.ResponseType.Forbidden, errorMessage, customErrorName);
|
|
146
|
+
constructor(errorMessage, customErrorName, options) {
|
|
147
|
+
super(xrpc_1.ResponseType.Forbidden, errorMessage, customErrorName, options);
|
|
148
|
+
}
|
|
149
|
+
[Symbol.hasInstance](instance) {
|
|
150
|
+
return (instance instanceof XRPCError && instance.type === xrpc_1.ResponseType.Forbidden);
|
|
118
151
|
}
|
|
119
152
|
}
|
|
120
153
|
exports.ForbiddenError = ForbiddenError;
|
|
121
154
|
class RateLimitExceededError extends XRPCError {
|
|
122
|
-
constructor(status, errorMessage, customErrorName) {
|
|
123
|
-
super(xrpc_1.ResponseType.RateLimitExceeded, errorMessage, customErrorName);
|
|
155
|
+
constructor(status, errorMessage, customErrorName, options) {
|
|
156
|
+
super(xrpc_1.ResponseType.RateLimitExceeded, errorMessage, customErrorName, options);
|
|
124
157
|
Object.defineProperty(this, "status", {
|
|
125
158
|
enumerable: true,
|
|
126
159
|
configurable: true,
|
|
@@ -128,35 +161,59 @@ class RateLimitExceededError extends XRPCError {
|
|
|
128
161
|
value: status
|
|
129
162
|
});
|
|
130
163
|
}
|
|
164
|
+
[Symbol.hasInstance](instance) {
|
|
165
|
+
return (instance instanceof XRPCError &&
|
|
166
|
+
instance.type === xrpc_1.ResponseType.RateLimitExceeded);
|
|
167
|
+
}
|
|
131
168
|
}
|
|
132
169
|
exports.RateLimitExceededError = RateLimitExceededError;
|
|
133
170
|
class InternalServerError extends XRPCError {
|
|
134
|
-
constructor(errorMessage, customErrorName) {
|
|
135
|
-
super(xrpc_1.ResponseType.InternalServerError, errorMessage, customErrorName);
|
|
171
|
+
constructor(errorMessage, customErrorName, options) {
|
|
172
|
+
super(xrpc_1.ResponseType.InternalServerError, errorMessage, customErrorName, options);
|
|
173
|
+
}
|
|
174
|
+
[Symbol.hasInstance](instance) {
|
|
175
|
+
return (instance instanceof XRPCError &&
|
|
176
|
+
instance.type === xrpc_1.ResponseType.InternalServerError);
|
|
136
177
|
}
|
|
137
178
|
}
|
|
138
179
|
exports.InternalServerError = InternalServerError;
|
|
139
180
|
class UpstreamFailureError extends XRPCError {
|
|
140
|
-
constructor(errorMessage, customErrorName) {
|
|
141
|
-
super(xrpc_1.ResponseType.UpstreamFailure, errorMessage, customErrorName);
|
|
181
|
+
constructor(errorMessage, customErrorName, options) {
|
|
182
|
+
super(xrpc_1.ResponseType.UpstreamFailure, errorMessage, customErrorName, options);
|
|
183
|
+
}
|
|
184
|
+
[Symbol.hasInstance](instance) {
|
|
185
|
+
return (instance instanceof XRPCError &&
|
|
186
|
+
instance.type === xrpc_1.ResponseType.UpstreamFailure);
|
|
142
187
|
}
|
|
143
188
|
}
|
|
144
189
|
exports.UpstreamFailureError = UpstreamFailureError;
|
|
145
190
|
class NotEnoughResourcesError extends XRPCError {
|
|
146
|
-
constructor(errorMessage, customErrorName) {
|
|
147
|
-
super(xrpc_1.ResponseType.NotEnoughResources, errorMessage, customErrorName);
|
|
191
|
+
constructor(errorMessage, customErrorName, options) {
|
|
192
|
+
super(xrpc_1.ResponseType.NotEnoughResources, errorMessage, customErrorName, options);
|
|
193
|
+
}
|
|
194
|
+
[Symbol.hasInstance](instance) {
|
|
195
|
+
return (instance instanceof XRPCError &&
|
|
196
|
+
instance.type === xrpc_1.ResponseType.NotEnoughResources);
|
|
148
197
|
}
|
|
149
198
|
}
|
|
150
199
|
exports.NotEnoughResourcesError = NotEnoughResourcesError;
|
|
151
200
|
class UpstreamTimeoutError extends XRPCError {
|
|
152
|
-
constructor(errorMessage, customErrorName) {
|
|
153
|
-
super(xrpc_1.ResponseType.UpstreamTimeout, errorMessage, customErrorName);
|
|
201
|
+
constructor(errorMessage, customErrorName, options) {
|
|
202
|
+
super(xrpc_1.ResponseType.UpstreamTimeout, errorMessage, customErrorName, options);
|
|
203
|
+
}
|
|
204
|
+
[Symbol.hasInstance](instance) {
|
|
205
|
+
return (instance instanceof XRPCError &&
|
|
206
|
+
instance.type === xrpc_1.ResponseType.UpstreamTimeout);
|
|
154
207
|
}
|
|
155
208
|
}
|
|
156
209
|
exports.UpstreamTimeoutError = UpstreamTimeoutError;
|
|
157
210
|
class MethodNotImplementedError extends XRPCError {
|
|
158
|
-
constructor(errorMessage, customErrorName) {
|
|
159
|
-
super(xrpc_1.ResponseType.MethodNotImplemented, errorMessage, customErrorName);
|
|
211
|
+
constructor(errorMessage, customErrorName, options) {
|
|
212
|
+
super(xrpc_1.ResponseType.MethodNotImplemented, errorMessage, customErrorName, options);
|
|
213
|
+
}
|
|
214
|
+
[Symbol.hasInstance](instance) {
|
|
215
|
+
return (instance instanceof XRPCError &&
|
|
216
|
+
instance.type === xrpc_1.ResponseType.MethodNotImplemented);
|
|
160
217
|
}
|
|
161
218
|
}
|
|
162
219
|
exports.MethodNotImplementedError = MethodNotImplementedError;
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/util.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
/// <reference types="node" />
|
|
3
|
-
import { IncomingMessage } from 'http';
|
|
3
|
+
import { IncomingMessage } from 'node:http';
|
|
4
4
|
import express from 'express';
|
|
5
5
|
import { Lexicons, LexXrpcProcedure, LexXrpcQuery, LexXrpcSubscription } from '@atproto/lexicon';
|
|
6
6
|
import { UndecodedParams, Params, HandlerInput, HandlerSuccess, RouteOpts } from './types';
|
|
@@ -8,7 +8,7 @@ export declare function decodeQueryParams(def: LexXrpcProcedure | LexXrpcQuery |
|
|
|
8
8
|
export declare function decodeQueryParam(type: string, value: unknown): string | number | boolean | undefined;
|
|
9
9
|
export declare function getQueryParams(url?: string): Record<string, string | string[]>;
|
|
10
10
|
export declare function validateInput(nsid: string, def: LexXrpcProcedure | LexXrpcQuery, req: express.Request, opts: RouteOpts, lexicons: Lexicons): HandlerInput | undefined;
|
|
11
|
-
export declare function validateOutput(nsid: string, def: LexXrpcProcedure | LexXrpcQuery, output: HandlerSuccess | undefined, lexicons: Lexicons):
|
|
11
|
+
export declare function validateOutput(nsid: string, def: LexXrpcProcedure | LexXrpcQuery, output: HandlerSuccess | undefined, lexicons: Lexicons): void;
|
|
12
12
|
export declare function normalizeMime(v: string): any;
|
|
13
13
|
export declare function processBodyAsBytes(req: express.Request): Promise<Uint8Array>;
|
|
14
14
|
export declare function serverTimingHeader(timings: ServerTiming[]): string;
|
|
@@ -27,4 +27,8 @@ export interface ServerTiming {
|
|
|
27
27
|
description?: string;
|
|
28
28
|
}
|
|
29
29
|
export declare const parseReqNsid: (req: express.Request | IncomingMessage) => string;
|
|
30
|
+
/**
|
|
31
|
+
* Validates and extracts the nsid from an xrpc path
|
|
32
|
+
*/
|
|
33
|
+
export declare const parseUrlNsid: (url: string) => string;
|
|
30
34
|
//# sourceMappingURL=util.d.ts.map
|
package/dist/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,OAAO,MAAM,SAAS,CAAA;AAE7B,OAAO,EAEL,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACpB,MAAM,kBAAkB,CAAA;AAIzB,OAAO,EACL,eAAe,EACf,MAAM,EACN,YAAY,EACZ,cAAc,EAKd,SAAS,EACV,MAAM,SAAS,CAAA;AAEhB,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,gBAAgB,GAAG,YAAY,GAAG,mBAAmB,EAC1D,MAAM,EAAE,eAAe,GACtB,MAAM,CAmBR;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GACb,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAcvC;AAED,wBAAgB,cAAc,CAAC,GAAG,SAAK,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAU1E;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,gBAAgB,GAAG,YAAY,EACpC,GAAG,EAAE,OAAO,CAAC,OAAO,EACpB,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,QAAQ,GACjB,YAAY,GAAG,SAAS,CA+D1B;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,gBAAgB,GAAG,YAAY,EACpC,MAAM,EAAE,cAAc,GAAG,SAAS,EAClC,QAAQ,EAAE,QAAQ,GACjB,IAAI,CAwCN;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,OAOtC;AAmBD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAM5E;AAsDD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,UASzD;AAED,qBAAa,WAAY,YAAW,YAAY;IAIrC,IAAI,EAAE,MAAM;IACZ,WAAW,CAAC;IAJd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACxB,OAAO,CAAC,OAAO,CAAC,CAAQ;gBAEf,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,oBAAQ;IAE7B,KAAK;IAIL,IAAI;CAKL;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,eAAO,MAAM,YAAY,QAAS,eAAe,GAAG,eAAe,WACI,CAAA;AAEvE;;GAEG;AACH,eAAO,MAAM,YAAY,QAAS,MAAM,KAAG,MA4D1C,CAAA"}
|
package/dist/util.js
CHANGED
|
@@ -3,12 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.parseReqNsid = exports.ServerTimer = exports.serverTimingHeader = exports.processBodyAsBytes = exports.normalizeMime = exports.validateOutput = exports.validateInput = exports.getQueryParams = exports.decodeQueryParam = exports.decodeQueryParams = void 0;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
6
|
+
exports.parseUrlNsid = exports.parseReqNsid = exports.ServerTimer = exports.serverTimingHeader = exports.processBodyAsBytes = exports.normalizeMime = exports.validateOutput = exports.validateInput = exports.getQueryParams = exports.decodeQueryParam = exports.decodeQueryParams = void 0;
|
|
7
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
8
|
+
const node_stream_1 = require("node:stream");
|
|
9
9
|
const mime_types_1 = __importDefault(require("mime-types"));
|
|
10
10
|
const lexicon_1 = require("@atproto/lexicon");
|
|
11
11
|
const common_1 = require("@atproto/common");
|
|
12
|
+
const xrpc_1 = require("@atproto/xrpc");
|
|
12
13
|
const types_1 = require("./types");
|
|
13
14
|
function decodeQueryParams(def, params) {
|
|
14
15
|
const decoded = {};
|
|
@@ -144,7 +145,6 @@ function validateOutput(nsid, def, output, lexicons) {
|
|
|
144
145
|
throw new types_1.InternalServerError(e instanceof Error ? e.message : String(e));
|
|
145
146
|
}
|
|
146
147
|
}
|
|
147
|
-
return output;
|
|
148
148
|
}
|
|
149
149
|
exports.validateOutput = validateOutput;
|
|
150
150
|
function normalizeMime(v) {
|
|
@@ -186,31 +186,33 @@ function processBodyAsBytes(req) {
|
|
|
186
186
|
}
|
|
187
187
|
exports.processBodyAsBytes = processBodyAsBytes;
|
|
188
188
|
function decodeBodyStream(req, maxSize) {
|
|
189
|
-
let stream = req;
|
|
190
189
|
const contentEncoding = req.headers['content-encoding'];
|
|
191
190
|
const contentLength = req.headers['content-length'];
|
|
192
|
-
|
|
193
|
-
contentLength
|
|
194
|
-
|
|
195
|
-
|
|
191
|
+
const contentLengthParsed = contentLength
|
|
192
|
+
? parseInt(contentLength, 10)
|
|
193
|
+
: undefined;
|
|
194
|
+
if (Number.isNaN(contentLengthParsed)) {
|
|
195
|
+
throw new types_1.XRPCError(xrpc_1.ResponseType.InvalidRequest, 'invalid content-length');
|
|
196
196
|
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
197
|
+
if (maxSize !== undefined &&
|
|
198
|
+
contentLengthParsed !== undefined &&
|
|
199
|
+
contentLengthParsed > maxSize) {
|
|
200
|
+
throw new types_1.XRPCError(xrpc_1.ResponseType.PayloadTooLarge, 'request entity too large');
|
|
200
201
|
}
|
|
201
|
-
|
|
202
|
-
|
|
202
|
+
let transforms;
|
|
203
|
+
try {
|
|
204
|
+
transforms = (0, common_1.createDecoders)(contentEncoding);
|
|
203
205
|
}
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
stream = stream.pipe(decoder);
|
|
206
|
+
catch (cause) {
|
|
207
|
+
throw new types_1.XRPCError(xrpc_1.ResponseType.UnsupportedMediaType, 'unsupported content-encoding', undefined, { cause });
|
|
207
208
|
}
|
|
208
209
|
if (maxSize !== undefined) {
|
|
209
|
-
const maxSizeChecker = new common_1.MaxSizeChecker(maxSize, () => new types_1.XRPCError(
|
|
210
|
-
|
|
211
|
-
stream = stream.pipe(maxSizeChecker);
|
|
210
|
+
const maxSizeChecker = new common_1.MaxSizeChecker(maxSize, () => new types_1.XRPCError(xrpc_1.ResponseType.PayloadTooLarge, 'request entity too large'));
|
|
211
|
+
transforms.push(maxSizeChecker);
|
|
212
212
|
}
|
|
213
|
-
return
|
|
213
|
+
return transforms.length > 0
|
|
214
|
+
? (0, node_stream_1.pipeline)([req, ...transforms], () => { })
|
|
215
|
+
: req;
|
|
214
216
|
}
|
|
215
217
|
function serverTimingHeader(timings) {
|
|
216
218
|
return timings
|
|
@@ -257,16 +259,72 @@ class ServerTimer {
|
|
|
257
259
|
return this;
|
|
258
260
|
}
|
|
259
261
|
stop() {
|
|
260
|
-
(0,
|
|
262
|
+
(0, node_assert_1.default)(this.startMs, "timer hasn't been started");
|
|
261
263
|
this.duration = Date.now() - this.startMs;
|
|
262
264
|
return this;
|
|
263
265
|
}
|
|
264
266
|
}
|
|
265
267
|
exports.ServerTimer = ServerTimer;
|
|
266
|
-
const parseReqNsid = (req) =>
|
|
267
|
-
const originalUrl = ('originalUrl' in req && req.originalUrl) || req.url || '/';
|
|
268
|
-
const nsid = originalUrl.split('?')[0].replace('/xrpc/', '');
|
|
269
|
-
return nsid.endsWith('/') ? nsid.slice(0, -1) : nsid; // trim trailing slash
|
|
270
|
-
};
|
|
268
|
+
const parseReqNsid = (req) => (0, exports.parseUrlNsid)('originalUrl' in req ? req.originalUrl : req.url || '/');
|
|
271
269
|
exports.parseReqNsid = parseReqNsid;
|
|
270
|
+
/**
|
|
271
|
+
* Validates and extracts the nsid from an xrpc path
|
|
272
|
+
*/
|
|
273
|
+
const parseUrlNsid = (url) => {
|
|
274
|
+
// /!\ Hot path
|
|
275
|
+
if (
|
|
276
|
+
// Ordered by likelihood of failure
|
|
277
|
+
url.length <= 6 ||
|
|
278
|
+
url[5] !== '/' ||
|
|
279
|
+
url[4] !== 'c' ||
|
|
280
|
+
url[3] !== 'p' ||
|
|
281
|
+
url[2] !== 'r' ||
|
|
282
|
+
url[1] !== 'x' ||
|
|
283
|
+
url[0] !== '/') {
|
|
284
|
+
throw new types_1.InvalidRequestError('invalid xrpc path');
|
|
285
|
+
}
|
|
286
|
+
const startOfNsid = 6;
|
|
287
|
+
let curr = startOfNsid;
|
|
288
|
+
let char;
|
|
289
|
+
let alphaNumRequired = true;
|
|
290
|
+
for (; curr < url.length; curr++) {
|
|
291
|
+
char = url.charCodeAt(curr);
|
|
292
|
+
if ((char >= 48 && char <= 57) || // 0-9
|
|
293
|
+
(char >= 65 && char <= 90) || // A-Z
|
|
294
|
+
(char >= 97 && char <= 122) // a-z
|
|
295
|
+
) {
|
|
296
|
+
alphaNumRequired = false;
|
|
297
|
+
}
|
|
298
|
+
else if (char === 45 /* "-" */ || char === 46 /* "." */) {
|
|
299
|
+
if (alphaNumRequired) {
|
|
300
|
+
throw new types_1.InvalidRequestError('invalid xrpc path');
|
|
301
|
+
}
|
|
302
|
+
alphaNumRequired = true;
|
|
303
|
+
}
|
|
304
|
+
else if (char === 47 /* "/" */) {
|
|
305
|
+
// Allow trailing slash (next char is either EOS or "?")
|
|
306
|
+
if (curr === url.length - 1 || url.charCodeAt(curr + 1) === 63) {
|
|
307
|
+
break;
|
|
308
|
+
}
|
|
309
|
+
throw new types_1.InvalidRequestError('invalid xrpc path');
|
|
310
|
+
}
|
|
311
|
+
else if (char === 63 /* "?"" */) {
|
|
312
|
+
break;
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
throw new types_1.InvalidRequestError('invalid xrpc path');
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
// last char was one of: '-', '.', '/'
|
|
319
|
+
if (alphaNumRequired) {
|
|
320
|
+
throw new types_1.InvalidRequestError('invalid xrpc path');
|
|
321
|
+
}
|
|
322
|
+
// A domain name consists of minimum two characters
|
|
323
|
+
if (curr - startOfNsid < 2) {
|
|
324
|
+
throw new types_1.InvalidRequestError('invalid xrpc path');
|
|
325
|
+
}
|
|
326
|
+
// @TODO is there a max ?
|
|
327
|
+
return url.slice(startOfNsid, curr);
|
|
328
|
+
};
|
|
329
|
+
exports.parseUrlNsid = parseUrlNsid;
|
|
272
330
|
//# sourceMappingURL=util.js.map
|
package/dist/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atproto/xrpc-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "atproto HTTP API (XRPC) server library",
|
|
6
6
|
"keywords": [
|
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
"uint8arrays": "3.0.0",
|
|
25
25
|
"ws": "^8.12.0",
|
|
26
26
|
"zod": "^3.23.8",
|
|
27
|
-
"@atproto/common": "^0.4.
|
|
27
|
+
"@atproto/common": "^0.4.3",
|
|
28
28
|
"@atproto/crypto": "^0.4.1",
|
|
29
|
-
"@atproto/lexicon": "^0.4.
|
|
30
|
-
"@atproto/xrpc": "^0.6.
|
|
29
|
+
"@atproto/lexicon": "^0.4.2",
|
|
30
|
+
"@atproto/xrpc": "^0.6.3"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@types/express": "^4.17.13",
|
package/src/index.ts
CHANGED