@atproto/xrpc-server 0.7.19 → 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.
- package/CHANGELOG.md +42 -0
- package/dist/auth.js +11 -11
- package/dist/auth.js.map +1 -1
- package/dist/errors.d.ts +67 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +202 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/rate-limiter.d.ts +95 -26
- package/dist/rate-limiter.d.ts.map +1 -1
- package/dist/rate-limiter.js +179 -85
- package/dist/rate-limiter.js.map +1 -1
- package/dist/server.d.ts +20 -15
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +185 -220
- package/dist/server.js.map +1 -1
- package/dist/types.d.ts +80 -175
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +9 -226
- package/dist/types.js.map +1 -1
- package/dist/util.d.ts +12 -9
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +114 -78
- package/dist/util.js.map +1 -1
- package/package.json +4 -3
- package/src/auth.ts +1 -1
- package/src/errors.ts +293 -0
- package/src/index.ts +4 -3
- package/src/rate-limiter.ts +270 -104
- package/src/server.ts +265 -276
- package/src/types.ts +144 -429
- package/src/util.ts +131 -85
- package/tests/auth.test.ts +2 -2
- package/tests/bodies.test.ts +18 -27
- package/tests/errors.test.ts +1 -1
- package/tests/ipld.test.ts +15 -14
- package/tests/parameters.test.ts +4 -7
- package/tests/procedures.test.ts +22 -34
- package/tests/queries.test.ts +9 -12
- package/tests/rate-limiter.test.ts +8 -11
- package/tests/responses.test.ts +12 -15
- package/tsconfig.build.tsbuildinfo +1 -1
package/dist/server.js
CHANGED
|
@@ -32,14 +32,19 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
32
|
return result;
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
35
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
39
|
exports.Server = void 0;
|
|
37
40
|
exports.createServer = createServer;
|
|
41
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
38
42
|
const node_stream_1 = require("node:stream");
|
|
39
43
|
const promises_1 = require("node:stream/promises");
|
|
40
44
|
const express_1 = __importStar(require("express"));
|
|
41
45
|
const common_1 = require("@atproto/common");
|
|
42
46
|
const lexicon_1 = require("@atproto/lexicon");
|
|
47
|
+
const errors_1 = require("./errors");
|
|
43
48
|
const logger_1 = __importStar(require("./logger"));
|
|
44
49
|
const rate_limiter_1 = require("./rate-limiter");
|
|
45
50
|
const stream_1 = require("./stream");
|
|
@@ -80,13 +85,7 @@ class Server {
|
|
|
80
85
|
writable: true,
|
|
81
86
|
value: void 0
|
|
82
87
|
});
|
|
83
|
-
Object.defineProperty(this, "
|
|
84
|
-
enumerable: true,
|
|
85
|
-
configurable: true,
|
|
86
|
-
writable: true,
|
|
87
|
-
value: void 0
|
|
88
|
-
});
|
|
89
|
-
Object.defineProperty(this, "globalRateLimiters", {
|
|
88
|
+
Object.defineProperty(this, "globalRateLimiter", {
|
|
90
89
|
enumerable: true,
|
|
91
90
|
configurable: true,
|
|
92
91
|
writable: true,
|
|
@@ -98,45 +97,74 @@ class Server {
|
|
|
98
97
|
writable: true,
|
|
99
98
|
value: void 0
|
|
100
99
|
});
|
|
101
|
-
Object.defineProperty(this, "
|
|
100
|
+
Object.defineProperty(this, "catchall", {
|
|
102
101
|
enumerable: true,
|
|
103
102
|
configurable: true,
|
|
104
103
|
writable: true,
|
|
105
|
-
value:
|
|
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
|
+
}
|
|
106
147
|
});
|
|
107
148
|
if (lexicons) {
|
|
108
149
|
this.addLexicons(lexicons);
|
|
109
150
|
}
|
|
110
151
|
this.router.use(this.routes);
|
|
111
|
-
this.router.use(
|
|
152
|
+
this.router.use(this.catchall);
|
|
112
153
|
this.router.use(createErrorMiddleware(opts));
|
|
113
154
|
this.router.once('mount', (app) => {
|
|
114
155
|
this.enableStreamingOnListen(app);
|
|
115
156
|
});
|
|
116
157
|
this.options = opts;
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
this.globalRateLimiters = [];
|
|
122
|
-
this.sharedRateLimiters = {};
|
|
123
|
-
this.routeRateLimiters = {};
|
|
124
|
-
if (opts?.rateLimits?.global) {
|
|
125
|
-
for (const limit of opts.rateLimits.global) {
|
|
126
|
-
const rateLimiter = opts.rateLimits.creator({
|
|
127
|
-
...limit,
|
|
128
|
-
keyPrefix: `rl-${limit.name}`,
|
|
129
|
-
});
|
|
130
|
-
this.globalRateLimiters.push(rateLimiter);
|
|
158
|
+
if (opts.rateLimits) {
|
|
159
|
+
const { global, shared, creator, bypass } = opts.rateLimits;
|
|
160
|
+
if (global) {
|
|
161
|
+
this.globalRateLimiter = rate_limiter_1.RouteRateLimiter.from(global.map((options) => creator(buildRateLimiterOptions(options))), { bypass });
|
|
131
162
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
keyPrefix: `rl-${limit.name}`,
|
|
138
|
-
});
|
|
139
|
-
this.sharedRateLimiters[limit.name] = rateLimiter;
|
|
163
|
+
if (shared) {
|
|
164
|
+
this.sharedRateLimiters = new Map(shared.map((options) => [
|
|
165
|
+
options.name,
|
|
166
|
+
creator(buildRateLimiterOptions(options)),
|
|
167
|
+
]));
|
|
140
168
|
}
|
|
141
169
|
}
|
|
142
170
|
}
|
|
@@ -181,117 +209,98 @@ class Server {
|
|
|
181
209
|
// http
|
|
182
210
|
// =
|
|
183
211
|
async addRoute(nsid, def, config) {
|
|
184
|
-
const
|
|
185
|
-
const
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
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);
|
|
189
216
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
middleware.push(this.middleware.text);
|
|
217
|
+
else {
|
|
218
|
+
this.routes.get(path, handler);
|
|
193
219
|
}
|
|
194
|
-
this.setupRouteRateLimits(nsid, config);
|
|
195
|
-
this.routes[verb](`/xrpc/${nsid}`, ...middleware, this.createHandler(nsid, def, config));
|
|
196
220
|
}
|
|
197
|
-
|
|
198
|
-
|
|
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);
|
|
199
225
|
try {
|
|
200
|
-
|
|
201
|
-
req,
|
|
202
|
-
res,
|
|
203
|
-
auth: undefined,
|
|
204
|
-
params: {},
|
|
205
|
-
input: undefined,
|
|
206
|
-
async resetRouteRateLimits() { },
|
|
207
|
-
}, this.globalRateLimiters.map((rl) => (ctx) => rl.consume(ctx)));
|
|
208
|
-
if (rlRes instanceof types_1.RateLimitExceededError) {
|
|
209
|
-
return next(rlRes);
|
|
210
|
-
}
|
|
226
|
+
return this.lex.assertValidXrpcParams(nsid, params);
|
|
211
227
|
}
|
|
212
|
-
catch (
|
|
213
|
-
|
|
228
|
+
catch (e) {
|
|
229
|
+
throw new errors_1.InvalidRequestError(String(e));
|
|
214
230
|
}
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
const def = this.lex.getDef(req.params.methodId);
|
|
220
|
-
if (!def) {
|
|
221
|
-
return next(new types_1.MethodNotImplementedError());
|
|
222
|
-
}
|
|
223
|
-
// validate method
|
|
224
|
-
if (def.type === 'query' && req.method !== 'GET') {
|
|
225
|
-
return next(new types_1.InvalidRequestError(`Incorrect HTTP method (${req.method}) expected GET`));
|
|
226
|
-
}
|
|
227
|
-
else if (def.type === 'procedure' && req.method !== 'POST') {
|
|
228
|
-
return next(new types_1.InvalidRequestError(`Incorrect HTTP method (${req.method}) expected POST`));
|
|
229
|
-
}
|
|
230
|
-
return next();
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
createInputVerifier(nsid, def, routeOpts) {
|
|
234
|
+
return (0, util_1.createInputVerifier)(nsid, def, routeOpts, this.lex);
|
|
231
235
|
}
|
|
232
|
-
|
|
233
|
-
const
|
|
234
|
-
|
|
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);
|
|
235
243
|
};
|
|
236
|
-
|
|
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
|
+
});
|
|
237
253
|
const validateResOutput = this.options.validateResponse === false
|
|
238
254
|
? null
|
|
239
255
|
: (output) => (0, util_1.validateOutput)(nsid, def, output, this.lex);
|
|
240
|
-
const
|
|
241
|
-
const rls = this.routeRateLimiters[nsid] ?? [];
|
|
242
|
-
const consumeRateLimit = (reqCtx) => (0, rate_limiter_1.consumeMany)(reqCtx, rls.map((rl) => (ctx) => rl.consume(ctx)));
|
|
243
|
-
const resetRateLimit = (reqCtx) => (0, rate_limiter_1.resetMany)(reqCtx, rls.map((rl) => (ctx) => rl.reset(ctx)));
|
|
256
|
+
const routeLimiter = this.createRouteRateLimiter(nsid, cfg);
|
|
244
257
|
return async function (req, res, next) {
|
|
245
258
|
try {
|
|
246
|
-
// validate
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
const
|
|
255
|
-
const locals = req[kRequestLocals];
|
|
256
|
-
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 = {
|
|
257
268
|
params,
|
|
258
269
|
input,
|
|
259
|
-
auth
|
|
270
|
+
auth,
|
|
260
271
|
req,
|
|
261
272
|
res,
|
|
262
|
-
resetRouteRateLimits: async () =>
|
|
273
|
+
resetRouteRateLimits: async () => routeLimiter?.reset(ctx),
|
|
263
274
|
};
|
|
264
275
|
// handle rate limits
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
return next(result);
|
|
268
|
-
}
|
|
276
|
+
if (routeLimiter)
|
|
277
|
+
await routeLimiter.handle(ctx);
|
|
269
278
|
// run the handler
|
|
270
|
-
const output = await
|
|
279
|
+
const output = await cfg.handler(ctx);
|
|
271
280
|
if (!output) {
|
|
272
281
|
validateResOutput?.(output);
|
|
273
282
|
res.status(200);
|
|
274
283
|
res.end();
|
|
275
284
|
}
|
|
276
285
|
else if ((0, types_1.isHandlerPipeThroughStream)(output)) {
|
|
277
|
-
setHeaders(res, output);
|
|
286
|
+
(0, util_1.setHeaders)(res, output.headers);
|
|
278
287
|
res.status(200);
|
|
279
288
|
res.header('Content-Type', output.encoding);
|
|
280
289
|
await (0, promises_1.pipeline)(output.stream, res);
|
|
281
290
|
}
|
|
282
291
|
else if ((0, types_1.isHandlerPipeThroughBuffer)(output)) {
|
|
283
|
-
setHeaders(res, output);
|
|
292
|
+
(0, util_1.setHeaders)(res, output.headers);
|
|
284
293
|
res.status(200);
|
|
285
294
|
res.header('Content-Type', output.encoding);
|
|
286
295
|
res.end(output.buffer);
|
|
287
296
|
}
|
|
288
|
-
else if ((0,
|
|
289
|
-
next(
|
|
297
|
+
else if ((0, errors_1.isErrorResult)(output)) {
|
|
298
|
+
next(errors_1.XRPCError.fromError(output));
|
|
290
299
|
}
|
|
291
300
|
else {
|
|
292
301
|
validateResOutput?.(output);
|
|
293
302
|
res.status(200);
|
|
294
|
-
setHeaders(res, output);
|
|
303
|
+
(0, util_1.setHeaders)(res, output.headers);
|
|
295
304
|
if (output.encoding === 'application/json' ||
|
|
296
305
|
output.encoding === 'json') {
|
|
297
306
|
const json = (0, lexicon_1.lexToJson)(output.body);
|
|
@@ -316,7 +325,7 @@ class Server {
|
|
|
316
325
|
// if the value passed to next is false-y (e.g. null, undefined, 0).
|
|
317
326
|
// Hence we replace it with an InternalServerError.
|
|
318
327
|
if (!err) {
|
|
319
|
-
next(new
|
|
328
|
+
next(new errors_1.InternalServerError());
|
|
320
329
|
}
|
|
321
330
|
else {
|
|
322
331
|
next(err);
|
|
@@ -324,28 +333,22 @@ class Server {
|
|
|
324
333
|
}
|
|
325
334
|
};
|
|
326
335
|
}
|
|
327
|
-
async addSubscription(nsid, def,
|
|
328
|
-
const
|
|
336
|
+
async addSubscription(nsid, def, cfg) {
|
|
337
|
+
const paramsVerifier = this.createParamsVerifier(nsid, def);
|
|
338
|
+
const authVerifier = this.createAuthVerifier(cfg);
|
|
339
|
+
const { handler } = cfg;
|
|
329
340
|
this.subscriptions.set(nsid, new stream_1.XrpcStreamServer({
|
|
330
341
|
noServer: true,
|
|
331
342
|
handler: async function* (req, signal) {
|
|
332
343
|
try {
|
|
333
|
-
// authenticate request
|
|
334
|
-
const auth = await config.auth?.({ req });
|
|
335
|
-
if ((0, types_1.isHandlerError)(auth)) {
|
|
336
|
-
throw types_1.XRPCError.fromHandlerError(auth);
|
|
337
|
-
}
|
|
338
344
|
// validate request
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
throw new types_1.InvalidRequestError(String(e));
|
|
345
|
-
}
|
|
345
|
+
const params = paramsVerifier(req);
|
|
346
|
+
// authenticate request
|
|
347
|
+
const auth = authVerifier
|
|
348
|
+
? await authVerifier({ req, params })
|
|
349
|
+
: undefined;
|
|
346
350
|
// stream
|
|
347
|
-
const
|
|
348
|
-
for await (const item of items) {
|
|
351
|
+
for await (const item of handler({ req, params, auth, signal })) {
|
|
349
352
|
if (item instanceof stream_1.Frame) {
|
|
350
353
|
yield item;
|
|
351
354
|
continue;
|
|
@@ -370,7 +373,7 @@ class Server {
|
|
|
370
373
|
}
|
|
371
374
|
}
|
|
372
375
|
catch (err) {
|
|
373
|
-
const xrpcErrPayload =
|
|
376
|
+
const xrpcErrPayload = errors_1.XRPCError.fromError(err).payload;
|
|
374
377
|
yield new stream_1.ErrorFrame({
|
|
375
378
|
error: xrpcErrPayload.error ?? 'Unknown',
|
|
376
379
|
message: xrpcErrPayload.message,
|
|
@@ -385,10 +388,8 @@ class Server {
|
|
|
385
388
|
// @ts-ignore the args spread
|
|
386
389
|
const httpServer = _listen.call(app, ...args);
|
|
387
390
|
httpServer.on('upgrade', (req, socket, head) => {
|
|
388
|
-
const
|
|
389
|
-
const sub =
|
|
390
|
-
? this.subscriptions.get(url.pathname.replace('/xrpc/', ''))
|
|
391
|
-
: undefined;
|
|
391
|
+
const nsid = req.url ? (0, util_1.extractUrlNsid)(req.url) : undefined;
|
|
392
|
+
const sub = nsid ? this.subscriptions.get(nsid) : undefined;
|
|
392
393
|
if (!sub)
|
|
393
394
|
return socket.destroy();
|
|
394
395
|
sub.wss.handleUpgrade(req, socket, head, (ws) => sub.wss.emit('connection', ws, req));
|
|
@@ -396,105 +397,60 @@ class Server {
|
|
|
396
397
|
return httpServer;
|
|
397
398
|
};
|
|
398
399
|
}
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
calcPoints,
|
|
422
|
-
}),
|
|
423
|
-
reset: (ctx) => rateLimiter.reset(ctx, {
|
|
424
|
-
calcKey,
|
|
425
|
-
}),
|
|
426
|
-
});
|
|
427
|
-
}
|
|
428
|
-
}
|
|
429
|
-
else {
|
|
430
|
-
const { durationMs, points } = limit;
|
|
431
|
-
const rateLimiter = this.options.rateLimits?.creator({
|
|
432
|
-
keyPrefix: `nsid-${i}`,
|
|
433
|
-
durationMs,
|
|
434
|
-
points,
|
|
435
|
-
calcKey,
|
|
436
|
-
calcPoints,
|
|
437
|
-
});
|
|
438
|
-
if (rateLimiter) {
|
|
439
|
-
this.sharedRateLimiters[nsid] = rateLimiter;
|
|
440
|
-
this.routeRateLimiters[nsid].push({
|
|
441
|
-
consume: (ctx) => rateLimiter.consume(ctx, {
|
|
442
|
-
calcKey,
|
|
443
|
-
calcPoints,
|
|
444
|
-
}),
|
|
445
|
-
reset: (ctx) => rateLimiter.reset(ctx, {
|
|
446
|
-
calcKey,
|
|
447
|
-
}),
|
|
448
|
-
});
|
|
449
|
-
}
|
|
450
|
-
}
|
|
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;
|
|
406
|
+
// No route specific rate limiting configured, use the global rate limiter.
|
|
407
|
+
if (!config.rateLimit)
|
|
408
|
+
return globalRateLimiter;
|
|
409
|
+
const { rateLimits } = this.options;
|
|
410
|
+
// @NOTE Silently ignore creation of route specific rate limiter if the
|
|
411
|
+
// `rateLimits` options was not provided to the constructor.
|
|
412
|
+
if (!rateLimits)
|
|
413
|
+
return globalRateLimiter;
|
|
414
|
+
const { creator, bypass } = rateLimits;
|
|
415
|
+
const rateLimiters = (0, util_1.asArray)(config.rateLimit).map((options, i) => {
|
|
416
|
+
if ((0, types_1.isSharedRateLimitOpts)(options)) {
|
|
417
|
+
const rateLimiter = this.sharedRateLimiters?.get(options.name);
|
|
418
|
+
// The route config references a shared rate limiter that does not
|
|
419
|
+
// exist. This is a configuration error.
|
|
420
|
+
(0, node_assert_1.default)(rateLimiter, `Shared rate limiter "${options.name}" not defined`);
|
|
421
|
+
return rate_limiter_1.WrappedRateLimiter.from(rateLimiter, options);
|
|
451
422
|
}
|
|
452
|
-
|
|
423
|
+
else {
|
|
424
|
+
return creator({
|
|
425
|
+
...options,
|
|
426
|
+
calcKey: options.calcKey ?? defaultKey,
|
|
427
|
+
calcPoints: options.calcPoints ?? defaultPoints,
|
|
428
|
+
keyPrefix: `${nsid}-${i}`,
|
|
429
|
+
});
|
|
430
|
+
}
|
|
431
|
+
});
|
|
432
|
+
// If the route config contains an empty array, use global rate limiter.
|
|
433
|
+
if (!rateLimiters.length)
|
|
434
|
+
return globalRateLimiter;
|
|
435
|
+
// The global rate limiter (if present) should be applied in addition to
|
|
436
|
+
// the route specific rate limiters.
|
|
437
|
+
if (globalRateLimiter)
|
|
438
|
+
rateLimiters.push(globalRateLimiter);
|
|
439
|
+
return rate_limiter_1.RouteRateLimiter.from(rateLimiters, { bypass });
|
|
453
440
|
}
|
|
454
441
|
}
|
|
455
442
|
exports.Server = Server;
|
|
456
|
-
function
|
|
457
|
-
const { headers } = result;
|
|
458
|
-
if (headers) {
|
|
459
|
-
for (const [name, val] of Object.entries(headers)) {
|
|
460
|
-
if (val != null)
|
|
461
|
-
res.header(name, val);
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
const kRequestLocals = Symbol('requestLocals');
|
|
466
|
-
function createLocalsMiddleware(nsid) {
|
|
467
|
-
return function (req, _res, next) {
|
|
468
|
-
const locals = { auth: undefined, nsid };
|
|
469
|
-
req[kRequestLocals] = locals;
|
|
470
|
-
return next();
|
|
471
|
-
};
|
|
472
|
-
}
|
|
473
|
-
function createAuthMiddleware(verifier) {
|
|
474
|
-
return async function (req, res, next) {
|
|
475
|
-
try {
|
|
476
|
-
const result = await verifier({ req, res });
|
|
477
|
-
if ((0, types_1.isHandlerError)(result)) {
|
|
478
|
-
throw types_1.XRPCError.fromHandlerError(result);
|
|
479
|
-
}
|
|
480
|
-
const locals = req[kRequestLocals];
|
|
481
|
-
locals.auth = result;
|
|
482
|
-
next();
|
|
483
|
-
}
|
|
484
|
-
catch (err) {
|
|
485
|
-
next(err);
|
|
486
|
-
}
|
|
487
|
-
};
|
|
488
|
-
}
|
|
489
|
-
function createErrorMiddleware({ errorParser = (err) => types_1.XRPCError.fromError(err), }) {
|
|
443
|
+
function createErrorMiddleware({ errorParser = (err) => errors_1.XRPCError.fromError(err), }) {
|
|
490
444
|
return (err, req, res, next) => {
|
|
491
|
-
const
|
|
492
|
-
const methodSuffix = locals ? ` method ${locals.nsid}` : '';
|
|
445
|
+
const nsid = (0, util_1.extractUrlNsid)(req.originalUrl);
|
|
493
446
|
const xrpcError = errorParser(err);
|
|
494
447
|
// Use the request's logger (if available) to benefit from request context
|
|
495
448
|
// (id, timing) and logging configuration (serialization, etc.).
|
|
496
449
|
const logger = isPinoHttpRequest(req) ? req.log : logger_1.default;
|
|
497
|
-
const isInternalError = xrpcError instanceof
|
|
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}`;
|
|
498
454
|
logger.error({
|
|
499
455
|
// @NOTE Computation of error stack is an expensive operation, so
|
|
500
456
|
// we strip it for expected errors.
|
|
@@ -502,16 +458,14 @@ function createErrorMiddleware({ errorParser = (err) => types_1.XRPCError.fromEr
|
|
|
502
458
|
? err
|
|
503
459
|
: toSimplifiedErrorLike(err),
|
|
504
460
|
// XRPC specific properties, for easier browsing of logs
|
|
505
|
-
nsid
|
|
461
|
+
nsid,
|
|
506
462
|
type: xrpcError.type,
|
|
507
463
|
status: xrpcError.statusCode,
|
|
508
464
|
payload: xrpcError.payload,
|
|
509
465
|
// Ensure that the logged item's name is set to LOGGER_NAME, instead of
|
|
510
466
|
// the name of the pino-http logger, to ensure consistency across logs.
|
|
511
467
|
name: logger_1.LOGGER_NAME,
|
|
512
|
-
},
|
|
513
|
-
? `unhandled exception in xrpc${methodSuffix}`
|
|
514
|
-
: `error in xrpc${methodSuffix}`);
|
|
468
|
+
}, msg);
|
|
515
469
|
if (res.headersSent) {
|
|
516
470
|
return next(err);
|
|
517
471
|
}
|
|
@@ -538,4 +492,15 @@ function toSimplifiedErrorLike(err) {
|
|
|
538
492
|
}
|
|
539
493
|
return err;
|
|
540
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;
|
|
541
506
|
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDA,oCAEC;AA1DD,6CAAsC;AACtC,mDAA+C;AAC/C,mDAWgB;AAChB,4CAA+C;AAC/C,8CAOyB;AACzB,mDAA2C;AAC3C,iDAAuD;AACvD,qCAA4E;AAC5E,mCAsBgB;AAChB,iCAKe;AAEf,SAAgB,YAAY,CAAC,QAAuB,EAAE,OAAiB;IACrE,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;AACtC,CAAC;AAED,MAAa,MAAM;IAWjB,YAAY,QAAuB,EAAE,OAAgB,EAAE;QAVvD;;;;mBAAkB,IAAA,iBAAO,GAAE;WAAA;QAC3B;;;;mBAAiB,IAAA,gBAAM,GAAE;WAAA;QACzB;;;;mBAAgB,IAAI,GAAG,EAA4B;WAAA;QACnD;;;;mBAAM,IAAI,kBAAQ,EAAE;WAAA;QACpB;;;;;WAAgB;QAChB;;;;;WAAmD;QACnD;;;;;WAAkC;QAClC;;;;;WAAgD;QAChD;;;;;WAAiD;QAG/C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;QAC5B,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAC5D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAA;QAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAgB,EAAE,EAAE;YAC7C,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,IAAI,CAAC,UAAU,GAAG;YAChB,IAAI,EAAE,IAAA,cAAU,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;YACrD,IAAI,EAAE,IAAA,cAAU,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;SACtD,CAAA;QACD,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAA;QAC5B,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAA;QAC5B,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAA;QAC3B,IAAI,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;YAC7B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;gBAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;oBAC1C,GAAG,KAAK;oBACR,SAAS,EAAE,MAAM,KAAK,CAAC,IAAI,EAAE;iBAC9B,CAAC,CAAA;gBACF,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YAC3C,CAAC;QACH,CAAC;QACD,IAAI,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;YAC7B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;gBAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;oBAC1C,GAAG,KAAK;oBACR,SAAS,EAAE,MAAM,KAAK,CAAC,IAAI,EAAE;iBAC9B,CAAC,CAAA;gBACF,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAA;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IAED,WAAW;IACX,IAAI;IAEJ,MAAM,CAAC,IAAY,EAAE,UAA2C;QAC9D,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IAClC,CAAC;IAED,SAAS,CAAC,IAAY,EAAE,UAA2C;QACjE,MAAM,MAAM,GACV,OAAO,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAA;QACzE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACjC,IAAI,GAAG,EAAE,IAAI,KAAK,OAAO,IAAI,GAAG,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;YACvD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;QAClC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,gCAAgC,CAAC,CAAA;QACtE,CAAC;IACH,CAAC;IAED,YAAY,CACV,IAAY,EACZ,UAAuD;QAEvD,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IACxC,CAAC;IAED,eAAe,CACb,IAAY,EACZ,UAAuD;QAEvD,MAAM,MAAM,GACV,OAAO,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAA;QACzE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACjC,IAAI,GAAG,EAAE,IAAI,KAAK,cAAc,EAAE,CAAC;YACjC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;QACzC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,wBAAwB,CAAC,CAAA;QAC9D,CAAC;IACH,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,OAAO;IACP,IAAI;IAEM,KAAK,CAAC,QAAQ,CACtB,IAAY,EACZ,GAAoC,EACpC,MAAyB;QAEzB,MAAM,IAAI,GAAmB,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAA;QACtE,MAAM,UAAU,GAAqB,EAAE,CAAA;QACvC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAA;QAC7C,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;QACpD,CAAC;QACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;YACrC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACvC,CAAC;QACD,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CACf,SAAS,IAAI,EAAE,EACf,GAAG,UAAU,EACb,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CACtC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;QAC5D,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,IAAA,0BAAW,EAC7B;oBACE,GAAG;oBACH,GAAG;oBACH,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,EAAE;oBACV,KAAK,EAAE,SAAS;oBAChB,KAAK,CAAC,oBAAoB,KAAI,CAAC;iBAChC,EACD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CACzB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAmB,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CACjD,CACF,CAAA;gBACD,IAAI,KAAK,YAAY,8BAAsB,EAAE,CAAC;oBAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAA;gBACpB,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC,GAAG,CAAC,CAAA;YAClB,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;QAC9C,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAChD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,IAAI,CAAC,IAAI,iCAAyB,EAAE,CAAC,CAAA;QAC9C,CAAC;QACD,kBAAkB;QAClB,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YACjD,OAAO,IAAI,CACT,IAAI,2BAAmB,CACrB,0BAA0B,GAAG,CAAC,MAAM,gBAAgB,CACrD,CACF,CAAA;QACH,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC7D,OAAO,IAAI,CACT,IAAI,2BAAmB,CACrB,0BAA0B,GAAG,CAAC,MAAM,iBAAiB,CACtD,CACF,CAAA;QACH,CAAC;QACD,OAAO,IAAI,EAAE,CAAA;IACf,CAAC;IAED,aAAa,CACX,IAAY,EACZ,GAAoC,EACpC,QAA2B;QAE3B,MAAM,SAAS,GAAG;YAChB,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS;SACvE,CAAA;QACD,MAAM,gBAAgB,GAAG,CAAC,GAAY,EAAE,EAAE,CACxC,IAAA,oBAAa,EAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;QACpD,MAAM,iBAAiB,GACrB,IAAI,CAAC,OAAO,CAAC,gBAAgB,KAAK,KAAK;YACrC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,CAAC,MAAkC,EAAE,EAAE,CACrC,IAAA,qBAAc,EAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;QACnD,MAAM,qBAAqB,GAAG,CAAC,MAAe,EAAE,EAAE,CAChD,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QAC9C,MAAM,gBAAgB,GAAG,CAAC,MAAsB,EAAE,EAAE,CAClD,IAAA,0BAAW,EACT,MAAM,EACN,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAmB,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAC1D,CAAA;QAEH,MAAM,cAAc,GAAG,CAAC,MAAsB,EAAE,EAAE,CAChD,IAAA,wBAAS,EACP,MAAM,EACN,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAmB,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CACxD,CAAA;QAEH,OAAO,KAAK,WAAW,GAAG,EAAE,GAAG,EAAE,IAAI;YACnC,IAAI,CAAC;gBACH,mBAAmB;gBACnB,IAAI,MAAM,GAAG,IAAA,wBAAiB,EAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;gBAC9C,IAAI,CAAC;oBACH,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAW,CAAA;gBAClD,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,IAAI,2BAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC1C,CAAC;gBACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;gBAEnC,MAAM,MAAM,GAAkB,GAAG,CAAC,cAAc,CAAC,CAAA;gBAEjD,MAAM,MAAM,GAAmB;oBAC7B,MAAM;oBACN,KAAK;oBACL,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,GAAG;oBACH,GAAG;oBACH,oBAAoB,EAAE,KAAK,IAAI,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC;iBACzD,CAAA;gBAED,qBAAqB;gBACrB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAA;gBAC7C,IAAI,MAAM,YAAY,8BAAsB,EAAE,CAAC;oBAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAA;gBACrB,CAAC;gBAED,kBAAkB;gBAClB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;gBAE7C,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAA;oBAC3B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;oBACf,GAAG,CAAC,GAAG,EAAE,CAAA;gBACX,CAAC;qBAAM,IAAI,IAAA,kCAA0B,EAAC,MAAM,CAAC,EAAE,CAAC;oBAC9C,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;oBACvB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;oBACf,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;oBAC3C,MAAM,IAAA,mBAAQ,EAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;gBACpC,CAAC;qBAAM,IAAI,IAAA,kCAA0B,EAAC,MAAM,CAAC,EAAE,CAAC;oBAC9C,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;oBACvB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;oBACf,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;oBAC3C,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;gBACxB,CAAC;qBAAM,IAAI,IAAA,sBAAc,EAAC,MAAM,CAAC,EAAE,CAAC;oBAClC,IAAI,CAAC,iBAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;gBACnC,CAAC;qBAAM,CAAC;oBACN,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAA;oBAE3B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;oBACf,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;oBAEvB,IACE,MAAM,CAAC,QAAQ,KAAK,kBAAkB;wBACtC,MAAM,CAAC,QAAQ,KAAK,MAAM,EAC1B,CAAC;wBACD,MAAM,IAAI,GAAG,IAAA,mBAAS,EAAC,MAAM,CAAC,IAAI,CAAC,CAAA;wBACnC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBAChB,CAAC;yBAAM,IAAI,MAAM,CAAC,IAAI,YAAY,sBAAQ,EAAE,CAAC;wBAC3C,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;wBAC3C,MAAM,IAAA,mBAAQ,EAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;oBAClC,CAAC;yBAAM,CAAC;wBACN,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;wBAC3C,GAAG,CAAC,IAAI,CACN,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;4BAC1B,CAAC,CAAC,MAAM,CAAC,IAAI;4BACb,CAAC,CAAC,MAAM,CAAC,IAAI,YAAY,UAAU;gCACjC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gCAC1B,CAAC,CAAC,MAAM,CAAC,IAAI,CAClB,CAAA;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,2EAA2E;gBAC3E,oEAAoE;gBACpE,mDAAmD;gBACnD,IAAI,CAAC,GAAG,EAAE,CAAC;oBACT,IAAI,CAAC,IAAI,2BAAmB,EAAE,CAAC,CAAA;gBACjC,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,GAAG,CAAC,CAAA;gBACX,CAAC;YACH,CAAC;QACH,CAAC,CAAA;IACH,CAAC;IAES,KAAK,CAAC,eAAe,CAC7B,IAAY,EACZ,GAAwB,EACxB,MAA+B;QAE/B,MAAM,qBAAqB,GAAG,CAAC,MAAe,EAAE,EAAE,CAChD,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC9C,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,EACJ,IAAI,yBAAgB,CAAC;YACnB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,KAAK,SAAS,CAAC,EAAE,GAAG,EAAE,MAAM;gBACnC,IAAI,CAAC;oBACH,uBAAuB;oBACvB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;oBACzC,IAAI,IAAA,sBAAc,EAAC,IAAI,CAAC,EAAE,CAAC;wBACzB,MAAM,iBAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;oBACxC,CAAC;oBACD,mBAAmB;oBACnB,IAAI,MAAM,GAAG,IAAA,wBAAiB,EAAC,GAAG,EAAE,IAAA,qBAAc,EAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;oBAC5D,IAAI,CAAC;wBACH,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAW,CAAA;oBAClD,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,MAAM,IAAI,2BAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;oBAC1C,CAAC;oBACD,SAAS;oBACT,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;oBAC3D,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;wBAC/B,IAAI,IAAI,YAAY,cAAK,EAAE,CAAC;4BAC1B,MAAM,IAAI,CAAA;4BACV,SAAQ;wBACV,CAAC;wBACD,MAAM,IAAI,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,CAAA;wBAC5B,IAAI,CAAC,cAAK,CAAC,EAAE,CAAC,IAAI,EAAE,eAAM,CAAC,GAAG,CAAC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;4BAC5D,MAAM,IAAI,qBAAY,CAAC,IAAI,CAAC,CAAA;4BAC5B,SAAQ;wBACV,CAAC;wBACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;wBAC7B,IAAI,CAAS,CAAA;wBACb,IACE,KAAK,CAAC,MAAM,KAAK,CAAC;4BAClB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EACtC,CAAC;4BACD,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;wBACpB,CAAC;6BAAM,CAAC;4BACN,CAAC,GAAG,IAAI,CAAA;wBACV,CAAC;wBACD,MAAM,KAAK,GAAG,EAAE,GAAG,IAAI,EAAE,CAAA;wBACzB,OAAO,KAAK,CAAC,OAAO,CAAC,CAAA;wBACrB,MAAM,IAAI,qBAAY,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;oBAC5C,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,cAAc,GAAG,iBAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAA;oBACvD,MAAM,IAAI,mBAAU,CAAC;wBACnB,KAAK,EAAE,cAAc,CAAC,KAAK,IAAI,SAAS;wBACxC,OAAO,EAAE,cAAc,CAAC,OAAO;qBAChC,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;SACF,CAAC,CACH,CAAA;IACH,CAAC;IAEO,uBAAuB,CAAC,GAAgB;QAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAA;QAC1B,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE;YACvB,6BAA6B;YAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;YAC7C,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;gBAC7C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,UAAU,CAAC,CAAA;gBAC9C,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC;oBAC3C,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;oBAC5D,CAAC,CAAC,SAAS,CAAA;gBACb,IAAI,CAAC,GAAG;oBAAE,OAAO,MAAM,CAAC,OAAO,EAAE,CAAA;gBACjC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAC9C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,GAAG,CAAC,CACpC,CAAA;YACH,CAAC,CAAC,CAAA;YACF,OAAO,UAAU,CAAA;QACnB,CAAC,CAAA;IACH,CAAC;IAEO,oBAAoB,CAAC,IAAY,EAAE,MAAyB;QAClE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;QACjC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;gBAChC,OAAO,EAAE,CAAC,GAAmB,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;gBACpD,KAAK,EAAE,CAAC,GAAmB,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;aACjD,CAAC,CAAA;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;gBAC5C,CAAC,CAAC,MAAM,CAAC,SAAS;gBAClB,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YACtB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;YACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;gBACvB,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,KAAK,CAAA;gBACrC,IAAI,IAAA,gBAAQ,EAAC,KAAK,CAAC,EAAE,CAAC;oBACpB,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;oBACvD,IAAI,WAAW,EAAE,CAAC;wBAChB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;4BAChC,OAAO,EAAE,CAAC,GAAmB,EAAE,EAAE,CAC/B,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE;gCACvB,OAAO;gCACP,UAAU;6BACX,CAAC;4BACJ,KAAK,EAAE,CAAC,GAAmB,EAAE,EAAE,CAC7B,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE;gCACrB,OAAO;6BACR,CAAC;yBACL,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;oBACpC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC;wBACnD,SAAS,EAAE,QAAQ,CAAC,EAAE;wBACtB,UAAU;wBACV,MAAM;wBACN,OAAO;wBACP,UAAU;qBACX,CAAC,CAAA;oBACF,IAAI,WAAW,EAAE,CAAC;wBAChB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,WAAW,CAAA;wBAC3C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;4BAChC,OAAO,EAAE,CAAC,GAAmB,EAAE,EAAE,CAC/B,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE;gCACvB,OAAO;gCACP,UAAU;6BACX,CAAC;4BACJ,KAAK,EAAE,CAAC,GAAmB,EAAE,EAAE,CAC7B,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE;gCACrB,OAAO;6BACR,CAAC;yBACL,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAjbD,wBAibC;AAED,SAAS,UAAU,CACjB,GAAa,EACb,MAA2C;IAE3C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;IAC1B,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,IAAI,GAAG,IAAI,IAAI;gBAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACxC,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,cAAc,GAAG,MAAM,CAAC,eAAe,CAAC,CAAA;AAE9C,SAAS,sBAAsB,CAAC,IAAY;IAC1C,OAAO,UAAU,GAAG,EAAE,IAAI,EAAE,IAAI;QAC9B,MAAM,MAAM,GAAkB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;QACvD,GAAG,CAAC,cAAc,CAAC,GAAG,MAAM,CAAA;QAC5B,OAAO,IAAI,EAAE,CAAA;IACf,CAAC,CAAA;AACH,CAAC;AAOD,SAAS,oBAAoB,CAAC,QAAsB;IAClD,OAAO,KAAK,WAAW,GAAG,EAAE,GAAG,EAAE,IAAI;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;YAC3C,IAAI,IAAA,sBAAc,EAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,MAAM,iBAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;YAC1C,CAAC;YACD,MAAM,MAAM,GAAkB,GAAG,CAAC,cAAc,CAAC,CAAA;YACjD,MAAM,CAAC,IAAI,GAAG,MAAM,CAAA;YACpB,IAAI,EAAE,CAAA;QACR,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,CAAC;IACH,CAAC,CAAA;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,EAC7B,WAAW,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAS,CAAC,SAAS,CAAC,GAAG,CAAC,GACvC;IACR,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC7B,MAAM,MAAM,GAA8B,GAAG,CAAC,cAAc,CAAC,CAAA;QAC7D,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAE3D,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;QAElC,0EAA0E;QAC1E,gEAAgE;QAChE,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAG,CAAA;QAErD,MAAM,eAAe,GAAG,SAAS,YAAY,2BAAmB,CAAA;QAEhE,MAAM,CAAC,KAAK,CACV;YACE,iEAAiE;YACjE,mCAAmC;YACnC,GAAG,EACD,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;gBACvD,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC;YAEhC,wDAAwD;YACxD,IAAI,EAAE,MAAM,EAAE,IAAI;YAClB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,MAAM,EAAE,SAAS,CAAC,UAAU;YAC5B,OAAO,EAAE,SAAS,CAAC,OAAO;YAE1B,uEAAuE;YACvE,uEAAuE;YACvE,IAAI,EAAE,oBAAW;SAClB,EACD,eAAe;YACb,CAAC,CAAC,8BAA8B,YAAY,EAAE;YAC9C,CAAC,CAAC,gBAAgB,YAAY,EAAE,CACnC,CAAA;QAED,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAA;QAClB,CAAC;QAED,OAAO,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IACjE,CAAC,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAY;IAGrC,OAAO,OAAQ,GAAqB,CAAC,GAAG,EAAE,KAAK,KAAK,UAAU,CAAA;AAChE,CAAC;AAED,SAAS,qBAAqB,CAAC,GAAY;IACzC,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,gEAAgE;QAChE,OAAO;YACL,GAAG,GAAG;YACN,uCAAuC;YACvC,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,IAAI,EACF,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC;gBAC3B,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,mBAAmB;gBACrE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,kDAAkD;gBACzE,CAAC,CAAC,GAAG,CAAC,IAAI;YACd,kEAAkE;YAClE,iEAAiE;SAClE,CAAA;IACH,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|