@atproto/xrpc-server 0.8.0 → 0.9.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.
Files changed (45) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/auth.js +11 -11
  3. package/dist/auth.js.map +1 -1
  4. package/dist/errors.d.ts +67 -0
  5. package/dist/errors.d.ts.map +1 -0
  6. package/dist/errors.js +202 -0
  7. package/dist/errors.js.map +1 -0
  8. package/dist/index.d.ts +4 -3
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +3 -2
  11. package/dist/index.js.map +1 -1
  12. package/dist/rate-limiter.d.ts +69 -32
  13. package/dist/rate-limiter.d.ts.map +1 -1
  14. package/dist/rate-limiter.js +58 -41
  15. package/dist/rate-limiter.js.map +1 -1
  16. package/dist/server.d.ts +19 -14
  17. package/dist/server.d.ts.map +1 -1
  18. package/dist/server.js +151 -137
  19. package/dist/server.js.map +1 -1
  20. package/dist/types.d.ts +80 -178
  21. package/dist/types.d.ts.map +1 -1
  22. package/dist/types.js +9 -226
  23. package/dist/types.js.map +1 -1
  24. package/dist/util.d.ts +9 -8
  25. package/dist/util.d.ts.map +1 -1
  26. package/dist/util.js +103 -78
  27. package/dist/util.js.map +1 -1
  28. package/package.json +4 -3
  29. package/src/auth.ts +1 -1
  30. package/src/errors.ts +293 -0
  31. package/src/index.ts +4 -3
  32. package/src/rate-limiter.ts +188 -96
  33. package/src/server.ts +198 -154
  34. package/src/types.ts +144 -439
  35. package/src/util.ts +116 -84
  36. package/tests/auth.test.ts +2 -2
  37. package/tests/bodies.test.ts +18 -27
  38. package/tests/errors.test.ts +1 -1
  39. package/tests/ipld.test.ts +15 -14
  40. package/tests/parameters.test.ts +4 -7
  41. package/tests/procedures.test.ts +22 -34
  42. package/tests/queries.test.ts +9 -12
  43. package/tests/rate-limiter.test.ts +7 -7
  44. package/tests/responses.test.ts +12 -15
  45. package/tsconfig.build.tsbuildinfo +1 -1
package/dist/server.js CHANGED
@@ -44,6 +44,7 @@ const promises_1 = require("node:stream/promises");
44
44
  const express_1 = __importStar(require("express"));
45
45
  const common_1 = require("@atproto/common");
46
46
  const lexicon_1 = require("@atproto/lexicon");
47
+ const errors_1 = require("./errors");
47
48
  const logger_1 = __importStar(require("./logger"));
48
49
  const rate_limiter_1 = require("./rate-limiter");
49
50
  const stream_1 = require("./stream");
@@ -84,47 +85,85 @@ class Server {
84
85
  writable: true,
85
86
  value: void 0
86
87
  });
87
- Object.defineProperty(this, "middleware", {
88
+ Object.defineProperty(this, "globalRateLimiter", {
88
89
  enumerable: true,
89
90
  configurable: true,
90
91
  writable: true,
91
92
  value: void 0
92
93
  });
93
- Object.defineProperty(this, "globalRateLimiter", {
94
+ Object.defineProperty(this, "sharedRateLimiters", {
94
95
  enumerable: true,
95
96
  configurable: true,
96
97
  writable: true,
97
98
  value: void 0
98
99
  });
99
- Object.defineProperty(this, "sharedRateLimiters", {
100
+ Object.defineProperty(this, "catchall", {
100
101
  enumerable: true,
101
102
  configurable: true,
102
103
  writable: true,
103
- value: void 0
104
+ value: async (req, res, next) => {
105
+ // catchall handler only applies to XRPC routes
106
+ if (!req.url.startsWith('/xrpc/'))
107
+ return next();
108
+ // Validate the NSID
109
+ const nsid = (0, util_1.extractUrlNsid)(req.url);
110
+ if (!nsid) {
111
+ return next(new errors_1.InvalidRequestError('invalid xrpc path'));
112
+ }
113
+ if (this.globalRateLimiter) {
114
+ try {
115
+ await this.globalRateLimiter.handle({
116
+ req,
117
+ res,
118
+ auth: undefined,
119
+ params: {},
120
+ input: undefined,
121
+ async resetRouteRateLimits() { },
122
+ });
123
+ }
124
+ catch (err) {
125
+ return next(err);
126
+ }
127
+ }
128
+ // Ensure that known XRPC methods are only called with the correct HTTP
129
+ // method.
130
+ const def = this.lex.getDef(nsid);
131
+ if (def) {
132
+ const expectedMethod = def.type === 'procedure' ? 'POST' : def.type === 'query' ? 'GET' : null;
133
+ if (expectedMethod != null && expectedMethod !== req.method) {
134
+ return next(new errors_1.InvalidRequestError(`Incorrect HTTP method (${req.method}) expected ${expectedMethod}`));
135
+ }
136
+ }
137
+ if (this.options.catchall) {
138
+ this.options.catchall.call(null, req, res, next);
139
+ }
140
+ else if (!def) {
141
+ next(new errors_1.MethodNotImplementedError());
142
+ }
143
+ else {
144
+ next();
145
+ }
146
+ }
104
147
  });
105
148
  if (lexicons) {
106
149
  this.addLexicons(lexicons);
107
150
  }
108
151
  this.router.use(this.routes);
109
- this.router.use('/xrpc/:methodId', this.catchall.bind(this));
152
+ this.router.use(this.catchall);
110
153
  this.router.use(createErrorMiddleware(opts));
111
154
  this.router.once('mount', (app) => {
112
155
  this.enableStreamingOnListen(app);
113
156
  });
114
157
  this.options = opts;
115
- this.middleware = {
116
- json: (0, express_1.json)({ limit: opts?.payload?.jsonLimit }),
117
- text: (0, express_1.text)({ limit: opts?.payload?.textLimit }),
118
- };
119
158
  if (opts.rateLimits) {
120
159
  const { global, shared, creator, bypass } = opts.rateLimits;
121
160
  if (global) {
122
- this.globalRateLimiter = rate_limiter_1.RouteRateLimiter.from(global.map(({ name, ...limit }) => creator({ ...limit, keyPrefix: `rl-${name}` })), { bypass });
161
+ this.globalRateLimiter = rate_limiter_1.RouteRateLimiter.from(global.map((options) => creator(buildRateLimiterOptions(options))), { bypass });
123
162
  }
124
163
  if (shared) {
125
- this.sharedRateLimiters = new Map(shared.map(({ name, ...limit }) => [
126
- name,
127
- creator({ ...limit, keyPrefix: `rl-${name}` }),
164
+ this.sharedRateLimiters = new Map(shared.map((options) => [
165
+ options.name,
166
+ creator(buildRateLimiterOptions(options)),
128
167
  ]));
129
168
  }
130
169
  }
@@ -170,88 +209,74 @@ class Server {
170
209
  // http
171
210
  // =
172
211
  async addRoute(nsid, def, config) {
173
- const verb = def.type === 'procedure' ? 'post' : 'get';
174
- const middleware = [];
175
- middleware.push(createLocalsMiddleware(nsid));
176
- if (config.auth) {
177
- middleware.push(createAuthMiddleware(config.auth));
212
+ const path = `/xrpc/${nsid}`;
213
+ const handler = this.createHandler(nsid, def, config);
214
+ if (def.type === 'procedure') {
215
+ this.routes.post(path, handler);
178
216
  }
179
- if (verb === 'post') {
180
- middleware.push(this.middleware.json);
181
- middleware.push(this.middleware.text);
217
+ else {
218
+ this.routes.get(path, handler);
182
219
  }
183
- this.routes[verb](`/xrpc/${nsid}`, ...middleware, this.createHandler(nsid, def, config));
184
220
  }
185
- async catchall(req, res, next) {
186
- if (this.globalRateLimiter) {
221
+ createParamsVerifier(nsid, def) {
222
+ return (req) => {
223
+ const queryParams = 'query' in req ? req.query : (0, util_1.getQueryParams)(req.url);
224
+ const params = (0, util_1.decodeQueryParams)(def, queryParams);
187
225
  try {
188
- await this.globalRateLimiter.handle({
189
- req,
190
- res,
191
- auth: undefined,
192
- params: {},
193
- input: undefined,
194
- async resetRouteRateLimits() { },
195
- });
196
- }
197
- catch (err) {
198
- return next(err);
226
+ return this.lex.assertValidXrpcParams(nsid, params);
199
227
  }
200
- }
201
- // Ensure that known XRPC methods are only called with the correct HTTP
202
- // method.
203
- const def = this.lex.getDef(req.params.methodId);
204
- if (def) {
205
- const expectedMethod = def.type === 'procedure' ? 'POST' : def.type === 'query' ? 'GET' : null;
206
- if (expectedMethod != null && expectedMethod !== req.method) {
207
- return next(new types_1.InvalidRequestError(`Incorrect HTTP method (${req.method}) expected ${expectedMethod}`));
228
+ catch (e) {
229
+ throw new errors_1.InvalidRequestError(String(e));
208
230
  }
209
- }
210
- if (this.options.catchall) {
211
- this.options.catchall.call(null, req, res, next);
212
- }
213
- else if (!def) {
214
- next(new types_1.MethodNotImplementedError());
215
- }
216
- else {
217
- next();
218
- }
231
+ };
219
232
  }
220
- createHandler(nsid, def, routeCfg) {
221
- const routeOpts = {
222
- blobLimit: routeCfg.opts?.blobLimit ?? this.options.payload?.blobLimit,
233
+ createInputVerifier(nsid, def, routeOpts) {
234
+ return (0, util_1.createInputVerifier)(nsid, def, routeOpts, this.lex);
235
+ }
236
+ createAuthVerifier(cfg) {
237
+ const { auth } = cfg;
238
+ if (!auth)
239
+ return null;
240
+ return async (ctx) => {
241
+ const result = await auth(ctx);
242
+ return (0, errors_1.excludeErrorResult)(result);
223
243
  };
224
- const validateReqInput = (req) => (0, util_1.validateInput)(nsid, def, req, routeOpts, this.lex);
244
+ }
245
+ createHandler(nsid, def, cfg) {
246
+ const authVerifier = this.createAuthVerifier(cfg);
247
+ const paramsVerifier = this.createParamsVerifier(nsid, def);
248
+ const inputVerifier = this.createInputVerifier(nsid, def, {
249
+ blobLimit: cfg.opts?.blobLimit ?? this.options.payload?.blobLimit,
250
+ jsonLimit: cfg.opts?.jsonLimit ?? this.options.payload?.jsonLimit,
251
+ textLimit: cfg.opts?.textLimit ?? this.options.payload?.textLimit,
252
+ });
225
253
  const validateResOutput = this.options.validateResponse === false
226
254
  ? null
227
255
  : (output) => (0, util_1.validateOutput)(nsid, def, output, this.lex);
228
- const assertValidXrpcParams = (params) => this.lex.assertValidXrpcParams(nsid, params);
229
- const routeLimiter = this.createRouteRateLimiter(nsid, routeCfg);
256
+ const routeLimiter = this.createRouteRateLimiter(nsid, cfg);
230
257
  return async function (req, res, next) {
231
258
  try {
232
- // validate request
233
- let params = (0, util_1.decodeQueryParams)(def, req.query);
234
- try {
235
- params = assertValidXrpcParams(params);
236
- }
237
- catch (e) {
238
- throw new types_1.InvalidRequestError(String(e));
239
- }
240
- const input = validateReqInput(req);
241
- const locals = req[kRequestLocals];
242
- const reqCtx = {
259
+ // parse & validate params
260
+ const params = paramsVerifier(req);
261
+ // authenticate request
262
+ const auth = authVerifier
263
+ ? await authVerifier({ req, res, params })
264
+ : undefined;
265
+ // parse & validate input
266
+ const input = await inputVerifier(req, res);
267
+ const ctx = {
243
268
  params,
244
269
  input,
245
- auth: locals.auth,
270
+ auth,
246
271
  req,
247
272
  res,
248
- resetRouteRateLimits: async () => routeLimiter?.reset(reqCtx),
273
+ resetRouteRateLimits: async () => routeLimiter?.reset(ctx),
249
274
  };
250
275
  // handle rate limits
251
276
  if (routeLimiter)
252
- await routeLimiter.handle(reqCtx);
277
+ await routeLimiter.handle(ctx);
253
278
  // run the handler
254
- const output = await routeCfg.handler(reqCtx);
279
+ const output = await cfg.handler(ctx);
255
280
  if (!output) {
256
281
  validateResOutput?.(output);
257
282
  res.status(200);
@@ -269,8 +294,8 @@ class Server {
269
294
  res.header('Content-Type', output.encoding);
270
295
  res.end(output.buffer);
271
296
  }
272
- else if ((0, types_1.isHandlerError)(output)) {
273
- next(types_1.XRPCError.fromError(output));
297
+ else if ((0, errors_1.isErrorResult)(output)) {
298
+ next(errors_1.XRPCError.fromError(output));
274
299
  }
275
300
  else {
276
301
  validateResOutput?.(output);
@@ -300,7 +325,7 @@ class Server {
300
325
  // if the value passed to next is false-y (e.g. null, undefined, 0).
301
326
  // Hence we replace it with an InternalServerError.
302
327
  if (!err) {
303
- next(new types_1.InternalServerError());
328
+ next(new errors_1.InternalServerError());
304
329
  }
305
330
  else {
306
331
  next(err);
@@ -308,28 +333,22 @@ class Server {
308
333
  }
309
334
  };
310
335
  }
311
- async addSubscription(nsid, def, config) {
312
- const assertValidXrpcParams = (params) => this.lex.assertValidXrpcParams(nsid, params);
336
+ async addSubscription(nsid, def, cfg) {
337
+ const paramsVerifier = this.createParamsVerifier(nsid, def);
338
+ const authVerifier = this.createAuthVerifier(cfg);
339
+ const { handler } = cfg;
313
340
  this.subscriptions.set(nsid, new stream_1.XrpcStreamServer({
314
341
  noServer: true,
315
342
  handler: async function* (req, signal) {
316
343
  try {
317
- // authenticate request
318
- const auth = await config.auth?.({ req });
319
- if ((0, types_1.isHandlerError)(auth)) {
320
- throw types_1.XRPCError.fromHandlerError(auth);
321
- }
322
344
  // validate request
323
- let params = (0, util_1.decodeQueryParams)(def, (0, util_1.getQueryParams)(req.url));
324
- try {
325
- params = assertValidXrpcParams(params);
326
- }
327
- catch (e) {
328
- throw new types_1.InvalidRequestError(String(e));
329
- }
345
+ const params = paramsVerifier(req);
346
+ // authenticate request
347
+ const auth = authVerifier
348
+ ? await authVerifier({ req, params })
349
+ : undefined;
330
350
  // stream
331
- const items = config.handler({ req, params, auth, signal });
332
- for await (const item of items) {
351
+ for await (const item of handler({ req, params, auth, signal })) {
333
352
  if (item instanceof stream_1.Frame) {
334
353
  yield item;
335
354
  continue;
@@ -354,7 +373,7 @@ class Server {
354
373
  }
355
374
  }
356
375
  catch (err) {
357
- const xrpcErrPayload = types_1.XRPCError.fromError(err).payload;
376
+ const xrpcErrPayload = errors_1.XRPCError.fromError(err).payload;
358
377
  yield new stream_1.ErrorFrame({
359
378
  error: xrpcErrPayload.error ?? 'Unknown',
360
379
  message: xrpcErrPayload.message,
@@ -369,10 +388,8 @@ class Server {
369
388
  // @ts-ignore the args spread
370
389
  const httpServer = _listen.call(app, ...args);
371
390
  httpServer.on('upgrade', (req, socket, head) => {
372
- const url = new URL(req.url || '', 'http://x');
373
- const sub = url.pathname.startsWith('/xrpc/')
374
- ? this.subscriptions.get(url.pathname.replace('/xrpc/', ''))
375
- : undefined;
391
+ const nsid = req.url ? (0, util_1.extractUrlNsid)(req.url) : undefined;
392
+ const sub = nsid ? this.subscriptions.get(nsid) : undefined;
376
393
  if (!sub)
377
394
  return socket.destroy();
378
395
  sub.wss.handleUpgrade(req, socket, head, (ws) => sub.wss.emit('connection', ws, req));
@@ -381,17 +398,22 @@ class Server {
381
398
  };
382
399
  }
383
400
  createRouteRateLimiter(nsid, config) {
401
+ // @NOTE global & shared rate limiters are instantiated with a context of
402
+ // HandlerContext which is compatible (more generic) with the context of
403
+ // this route specific rate limiters (C). For this reason, it's safe to
404
+ // cast these with an `any` context
405
+ const globalRateLimiter = this.globalRateLimiter;
384
406
  // No route specific rate limiting configured, use the global rate limiter.
385
407
  if (!config.rateLimit)
386
- return this.globalRateLimiter;
408
+ return globalRateLimiter;
387
409
  const { rateLimits } = this.options;
388
410
  // @NOTE Silently ignore creation of route specific rate limiter if the
389
411
  // `rateLimits` options was not provided to the constructor.
390
412
  if (!rateLimits)
391
- return this.globalRateLimiter;
413
+ return globalRateLimiter;
392
414
  const { creator, bypass } = rateLimits;
393
415
  const rateLimiters = (0, util_1.asArray)(config.rateLimit).map((options, i) => {
394
- if ((0, types_1.isShared)(options)) {
416
+ if ((0, types_1.isSharedRateLimitOpts)(options)) {
395
417
  const rateLimiter = this.sharedRateLimiters?.get(options.name);
396
418
  // The route config references a shared rate limiter that does not
397
419
  // exist. This is a configuration error.
@@ -399,53 +421,36 @@ class Server {
399
421
  return rate_limiter_1.WrappedRateLimiter.from(rateLimiter, options);
400
422
  }
401
423
  else {
402
- return creator({ ...options, keyPrefix: `${nsid}-${i}` });
424
+ return creator({
425
+ ...options,
426
+ calcKey: options.calcKey ?? defaultKey,
427
+ calcPoints: options.calcPoints ?? defaultPoints,
428
+ keyPrefix: `${nsid}-${i}`,
429
+ });
403
430
  }
404
431
  });
405
432
  // If the route config contains an empty array, use global rate limiter.
406
433
  if (!rateLimiters.length)
407
- return this.globalRateLimiter;
434
+ return globalRateLimiter;
408
435
  // The global rate limiter (if present) should be applied in addition to
409
436
  // the route specific rate limiters.
410
- if (this.globalRateLimiter)
411
- rateLimiters.push(this.globalRateLimiter);
437
+ if (globalRateLimiter)
438
+ rateLimiters.push(globalRateLimiter);
412
439
  return rate_limiter_1.RouteRateLimiter.from(rateLimiters, { bypass });
413
440
  }
414
441
  }
415
442
  exports.Server = Server;
416
- const kRequestLocals = Symbol('requestLocals');
417
- function createLocalsMiddleware(nsid) {
418
- return function (req, _res, next) {
419
- const locals = { auth: undefined, nsid };
420
- req[kRequestLocals] = locals;
421
- return next();
422
- };
423
- }
424
- function createAuthMiddleware(verifier) {
425
- return async function (req, res, next) {
426
- try {
427
- const result = await verifier({ req, res });
428
- if ((0, types_1.isHandlerError)(result)) {
429
- throw types_1.XRPCError.fromHandlerError(result);
430
- }
431
- const locals = req[kRequestLocals];
432
- locals.auth = result;
433
- next();
434
- }
435
- catch (err) {
436
- next(err);
437
- }
438
- };
439
- }
440
- function createErrorMiddleware({ errorParser = (err) => types_1.XRPCError.fromError(err), }) {
443
+ function createErrorMiddleware({ errorParser = (err) => errors_1.XRPCError.fromError(err), }) {
441
444
  return (err, req, res, next) => {
442
- const locals = req[kRequestLocals];
443
- const methodSuffix = locals ? ` method ${locals.nsid}` : '';
445
+ const nsid = (0, util_1.extractUrlNsid)(req.originalUrl);
444
446
  const xrpcError = errorParser(err);
445
447
  // Use the request's logger (if available) to benefit from request context
446
448
  // (id, timing) and logging configuration (serialization, etc.).
447
449
  const logger = isPinoHttpRequest(req) ? req.log : logger_1.default;
448
- const isInternalError = xrpcError instanceof types_1.InternalServerError;
450
+ const isInternalError = xrpcError instanceof errors_1.InternalServerError;
451
+ const msgPrefix = isInternalError ? 'unhandled exception' : 'error';
452
+ const msgSuffix = nsid ? `xrpc method ${nsid}` : `${req.method} ${req.url}`;
453
+ const msg = `${msgPrefix} in ${msgSuffix}`;
449
454
  logger.error({
450
455
  // @NOTE Computation of error stack is an expensive operation, so
451
456
  // we strip it for expected errors.
@@ -453,16 +458,14 @@ function createErrorMiddleware({ errorParser = (err) => types_1.XRPCError.fromEr
453
458
  ? err
454
459
  : toSimplifiedErrorLike(err),
455
460
  // XRPC specific properties, for easier browsing of logs
456
- nsid: locals?.nsid,
461
+ nsid,
457
462
  type: xrpcError.type,
458
463
  status: xrpcError.statusCode,
459
464
  payload: xrpcError.payload,
460
465
  // Ensure that the logged item's name is set to LOGGER_NAME, instead of
461
466
  // the name of the pino-http logger, to ensure consistency across logs.
462
467
  name: logger_1.LOGGER_NAME,
463
- }, isInternalError
464
- ? `unhandled exception in xrpc${methodSuffix}`
465
- : `error in xrpc${methodSuffix}`);
468
+ }, msg);
466
469
  if (res.headersSent) {
467
470
  return next(err);
468
471
  }
@@ -489,4 +492,15 @@ function toSimplifiedErrorLike(err) {
489
492
  }
490
493
  return err;
491
494
  }
495
+ function buildRateLimiterOptions({ name, calcKey = defaultKey, calcPoints = defaultPoints, ...desc }) {
496
+ return { ...desc, calcKey, calcPoints, keyPrefix: `rl-${name}` };
497
+ }
498
+ const defaultPoints = () => 1;
499
+ /**
500
+ * @note when using a proxy, ensure headers are getting forwarded correctly:
501
+ * `app.set('trust proxy', true)`
502
+ *
503
+ * @see {@link https://expressjs.com/en/guide/behind-proxies.html}
504
+ */
505
+ const defaultKey = ({ req }) => req.ip;
492
506
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}