@c9up/ream 0.2.28 → 0.2.29
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/Codemods.d.ts +16 -0
- package/dist/Codemods.d.ts.map +1 -1
- package/dist/Codemods.js +182 -0
- package/dist/Codemods.js.map +1 -1
- package/dist/Ignitor.d.ts +10 -2
- package/dist/Ignitor.d.ts.map +1 -1
- package/dist/Ignitor.js +21 -22
- package/dist/Ignitor.js.map +1 -1
- package/dist/bodyparser/BodyParserMiddleware.d.ts.map +1 -1
- package/dist/bodyparser/BodyParserMiddleware.js +3 -0
- package/dist/bodyparser/BodyParserMiddleware.js.map +1 -1
- package/dist/bodyparser/qsParse.d.ts +10 -1
- package/dist/bodyparser/qsParse.d.ts.map +1 -1
- package/dist/bodyparser/qsParse.js +53 -15
- package/dist/bodyparser/qsParse.js.map +1 -1
- package/dist/codemods/source.d.ts +57 -0
- package/dist/codemods/source.d.ts.map +1 -0
- package/dist/codemods/source.js +282 -0
- package/dist/codemods/source.js.map +1 -0
- package/dist/graphql/GraphQLEngine.d.ts.map +1 -1
- package/dist/graphql/GraphQLEngine.js +3 -2
- package/dist/graphql/GraphQLEngine.js.map +1 -1
- package/dist/http/Exception.d.ts +14 -1
- package/dist/http/Exception.d.ts.map +1 -1
- package/dist/http/Exception.js +10 -2
- package/dist/http/Exception.js.map +1 -1
- package/dist/http/HttpContext.d.ts +11 -0
- package/dist/http/HttpContext.d.ts.map +1 -1
- package/dist/http/HttpContext.js +2 -1
- package/dist/http/HttpContext.js.map +1 -1
- package/dist/http/RedirectBuilder.d.ts +9 -3
- package/dist/http/RedirectBuilder.d.ts.map +1 -1
- package/dist/http/RedirectBuilder.js +39 -37
- package/dist/http/RedirectBuilder.js.map +1 -1
- package/dist/http/Request.d.ts +42 -17
- package/dist/http/Request.d.ts.map +1 -1
- package/dist/http/Request.js +65 -29
- package/dist/http/Request.js.map +1 -1
- package/dist/http/SseStream.js +6 -7
- package/dist/http/SseStream.js.map +1 -1
- package/dist/http/permissions.d.ts +19 -0
- package/dist/http/permissions.d.ts.map +1 -0
- package/dist/http/permissions.js +28 -0
- package/dist/http/permissions.js.map +1 -0
- package/dist/http-client/HttpClient.d.ts +111 -0
- package/dist/http-client/HttpClient.d.ts.map +1 -0
- package/dist/http-client/HttpClient.js +386 -0
- package/dist/http-client/HttpClient.js.map +1 -0
- package/dist/http-client/addresses.d.ts +14 -0
- package/dist/http-client/addresses.d.ts.map +1 -0
- package/dist/http-client/addresses.js +57 -0
- package/dist/http-client/addresses.js.map +1 -0
- package/dist/http-client/fake.d.ts +50 -0
- package/dist/http-client/fake.d.ts.map +1 -0
- package/dist/http-client/fake.js +95 -0
- package/dist/http-client/fake.js.map +1 -0
- package/dist/http-client/index.d.ts +7 -0
- package/dist/http-client/index.d.ts.map +1 -0
- package/dist/http-client/index.js +7 -0
- package/dist/http-client/index.js.map +1 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/middleware/Pipeline.d.ts.map +1 -1
- package/dist/middleware/Pipeline.js +6 -3
- package/dist/middleware/Pipeline.js.map +1 -1
- package/dist/native/generated.d.ts +78 -7
- package/dist/native/generated.d.ts.map +1 -1
- package/dist/rpc/RpcProvider.d.ts +6 -0
- package/dist/rpc/RpcProvider.d.ts.map +1 -1
- package/dist/rpc/RpcProvider.js +4 -1
- package/dist/rpc/RpcProvider.js.map +1 -1
- package/dist/rpc/RpcRouter.d.ts +27 -14
- package/dist/rpc/RpcRouter.d.ts.map +1 -1
- package/dist/rpc/RpcRouter.js +95 -38
- package/dist/rpc/RpcRouter.js.map +1 -1
- package/dist/scheduler/locks/RedisLockBackend.d.ts.map +1 -1
- package/dist/scheduler/locks/RedisLockBackend.js +13 -2
- package/dist/scheduler/locks/RedisLockBackend.js.map +1 -1
- package/dist/security/CookieSigner.d.ts.map +1 -1
- package/dist/security/CookieSigner.js +17 -3
- package/dist/security/CookieSigner.js.map +1 -1
- package/dist/security/SignedUrl.d.ts.map +1 -1
- package/dist/security/SignedUrl.js +6 -1
- package/dist/security/SignedUrl.js.map +1 -1
- package/dist/server/Server.d.ts +41 -12
- package/dist/server/Server.d.ts.map +1 -1
- package/dist/server/Server.js +31 -10
- package/dist/server/Server.js.map +1 -1
- package/dist/server/nativeGrpc.d.ts +27 -0
- package/dist/server/nativeGrpc.d.ts.map +1 -0
- package/dist/server/nativeGrpc.js +47 -0
- package/dist/server/nativeGrpc.js.map +1 -0
- package/dist/server/nativeLimits.d.ts +49 -0
- package/dist/server/nativeLimits.d.ts.map +1 -0
- package/dist/server/nativeLimits.js +67 -0
- package/dist/server/nativeLimits.js.map +1 -0
- package/dist/session/Session.d.ts +12 -0
- package/dist/session/Session.d.ts.map +1 -1
- package/dist/session/Session.js.map +1 -1
- package/dist/session/SessionMiddleware.d.ts.map +1 -1
- package/dist/session/SessionMiddleware.js +28 -9
- package/dist/session/SessionMiddleware.js.map +1 -1
- package/dist/session/config.d.ts +5 -0
- package/dist/session/config.d.ts.map +1 -1
- package/dist/session/config.js +8 -0
- package/dist/session/config.js.map +1 -1
- package/dist/session/drivers/MemoryDriver.d.ts.map +1 -1
- package/dist/session/drivers/MemoryDriver.js +12 -5
- package/dist/session/drivers/MemoryDriver.js.map +1 -1
- package/dist/session/errors.d.ts +17 -0
- package/dist/session/errors.d.ts.map +1 -1
- package/dist/session/errors.js +21 -0
- package/dist/session/errors.js.map +1 -1
- package/dist/session/templateTags.d.ts +14 -0
- package/dist/session/templateTags.d.ts.map +1 -1
- package/dist/session/templateTags.js +45 -17
- package/dist/session/templateTags.js.map +1 -1
- package/dist/storage/StaticMiddleware.d.ts.map +1 -1
- package/dist/storage/StaticMiddleware.js +29 -18
- package/dist/storage/StaticMiddleware.js.map +1 -1
- package/events.darwin-arm64.node +0 -0
- package/events.darwin-x64.node +0 -0
- package/events.win32-x64-msvc.node +0 -0
- package/index.darwin-arm64.node +0 -0
- package/index.darwin-x64.node +0 -0
- package/index.linux-arm64-gnu.node +0 -0
- package/index.linux-x64-gnu.node +0 -0
- package/index.win32-x64-msvc.node +0 -0
- package/package.json +11 -2
- package/scheduler.darwin-arm64.node +0 -0
- package/scheduler.darwin-x64.node +0 -0
- package/scheduler.win32-x64-msvc.node +0 -0
- package/src/Codemods.ts +265 -0
- package/src/Ignitor.ts +37 -22
- package/src/bodyparser/BodyParserMiddleware.ts +3 -0
- package/src/bodyparser/qsParse.ts +69 -14
- package/src/codemods/source.ts +303 -0
- package/src/graphql/GraphQLEngine.ts +3 -2
- package/src/http/Exception.ts +17 -2
- package/src/http/HttpContext.ts +14 -1
- package/src/http/RedirectBuilder.ts +48 -37
- package/src/http/Request.ts +87 -29
- package/src/http/SseStream.ts +6 -7
- package/src/http/permissions.ts +31 -0
- package/src/http-client/HttpClient.ts +505 -0
- package/src/http-client/addresses.ts +58 -0
- package/src/http-client/fake.ts +141 -0
- package/src/http-client/index.ts +21 -0
- package/src/index.ts +5 -1
- package/src/middleware/Pipeline.ts +7 -3
- package/src/native/generated.ts +89 -7
- package/src/rpc/RpcProvider.ts +10 -1
- package/src/rpc/RpcRouter.ts +126 -42
- package/src/scheduler/locks/RedisLockBackend.ts +12 -4
- package/src/security/CookieSigner.ts +17 -3
- package/src/security/SignedUrl.ts +6 -1
- package/src/server/Server.ts +57 -12
- package/src/server/nativeGrpc.ts +59 -0
- package/src/server/nativeLimits.ts +94 -0
- package/src/session/Session.ts +16 -0
- package/src/session/SessionMiddleware.ts +30 -10
- package/src/session/config.ts +7 -0
- package/src/session/drivers/MemoryDriver.ts +11 -5
- package/src/session/errors.ts +31 -0
- package/src/session/templateTags.ts +57 -0
- package/src/storage/StaticMiddleware.ts +28 -18
package/dist/rpc/RpcRouter.js
CHANGED
|
@@ -5,13 +5,15 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Usage:
|
|
7
7
|
* rpc.method('task.validate', handler).guard('jwt').role('cs_member')
|
|
8
|
-
* rpc.namespace('task', TaskController) //
|
|
8
|
+
* rpc.namespace('task', TaskController, ['show', 'update']) // listed methods, DI-resolved per call
|
|
9
9
|
* rpc.group({ guard: 'jwt' }, (r) => { r.method('user.find', handler) })
|
|
10
10
|
*
|
|
11
11
|
* @implements MISS-27
|
|
12
12
|
*/
|
|
13
13
|
import { buildSuccess, isNotification, isRpcShapedError, parseRequest as parseRpcRequest, buildError as rpcError, } from '@c9up/comet';
|
|
14
14
|
import { currentNodeEnv } from '../env/nodeEnv.js';
|
|
15
|
+
import { isReamError, ReamError } from '../errors/ReamError.js';
|
|
16
|
+
import { holdsPermissions } from '../http/permissions.js';
|
|
15
17
|
import { composeMiddleware, runValidator } from '../middleware/Pipeline.js';
|
|
16
18
|
export class RpcMethodBuilder {
|
|
17
19
|
#def;
|
|
@@ -40,18 +42,42 @@ export class RpcMethodBuilder {
|
|
|
40
42
|
}
|
|
41
43
|
}
|
|
42
44
|
/**
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* JSON-RPC batch arrives this way; a single request is a plain object and is
|
|
46
|
-
* returned unchanged.
|
|
45
|
+
* A -32603 whose detail reaches the caller only outside production: an
|
|
46
|
+
* internal failure's message is where hosts, credentials and queries end up.
|
|
47
47
|
*/
|
|
48
|
-
function
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
48
|
+
function internalError(detail, id) {
|
|
49
|
+
return rpcError(-32603, currentNodeEnv() !== 'production' ? detail : 'Internal error', id);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Whether `name` is a plain method of the controller's own class chain.
|
|
53
|
+
* The walk stops before `Object.prototype` and reads descriptors, so
|
|
54
|
+
* neither `toString` nor a getter (whose read would run code) qualifies.
|
|
55
|
+
*/
|
|
56
|
+
function isControllerMethod(proto, name) {
|
|
57
|
+
if (typeof name !== 'string' || name === '' || name === 'constructor')
|
|
58
|
+
return false;
|
|
59
|
+
let current = proto;
|
|
60
|
+
while (typeof current === 'object' && current !== null && current !== Object.prototype) {
|
|
61
|
+
const descriptor = Object.getOwnPropertyDescriptor(current, name);
|
|
62
|
+
if (descriptor)
|
|
63
|
+
return typeof descriptor.value === 'function';
|
|
64
|
+
current = Object.getPrototypeOf(current);
|
|
53
65
|
}
|
|
54
|
-
return
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The JSON media types JSON-RPC over HTTP is sent with. None of them is a
|
|
70
|
+
* CORS-safelisted request type, so a foreign page cannot send one without a
|
|
71
|
+
* preflight.
|
|
72
|
+
*/
|
|
73
|
+
const DEFAULT_CONTENT_TYPES = [
|
|
74
|
+
'application/json',
|
|
75
|
+
'application/json-rpc',
|
|
76
|
+
'application/jsonrequest',
|
|
77
|
+
];
|
|
78
|
+
/** `Application/JSON; charset=utf-8` → `application/json`. */
|
|
79
|
+
function mediaType(contentType) {
|
|
80
|
+
return (contentType?.split(';')[0] ?? '').trim().toLowerCase();
|
|
55
81
|
}
|
|
56
82
|
/**
|
|
57
83
|
* Enforce the method's guards/roles/permissions against the request auth state.
|
|
@@ -71,9 +97,9 @@ function checkRpcAuthorization(ctx, def) {
|
|
|
71
97
|
return { code: -32003, message: 'Insufficient role' };
|
|
72
98
|
}
|
|
73
99
|
}
|
|
100
|
+
// A token-authenticated call also needs the token to allow each permission.
|
|
74
101
|
if (def.permissions.length > 0) {
|
|
75
|
-
|
|
76
|
-
if (!def.permissions.every((p) => userPerms.includes(p))) {
|
|
102
|
+
if (!holdsPermissions(ctx.auth, def.permissions)) {
|
|
77
103
|
return { code: -32003, message: 'Insufficient permissions' };
|
|
78
104
|
}
|
|
79
105
|
}
|
|
@@ -83,6 +109,10 @@ export class RpcRouter {
|
|
|
83
109
|
#methods = new Map();
|
|
84
110
|
#groupConfig = null;
|
|
85
111
|
#container;
|
|
112
|
+
#contentTypes;
|
|
113
|
+
constructor(options = {}) {
|
|
114
|
+
this.#contentTypes = new Set((options.contentTypes ?? DEFAULT_CONTENT_TYPES).map((type) => mediaType(type)));
|
|
115
|
+
}
|
|
86
116
|
/**
|
|
87
117
|
* Set the IoC container used to resolve `namespace()` controllers — mirrors
|
|
88
118
|
* `GraphQLEngine.useContainer()` so RPC and GraphQL resolve class handlers the
|
|
@@ -92,8 +122,20 @@ export class RpcRouter {
|
|
|
92
122
|
useContainer(container) {
|
|
93
123
|
this.#container = container;
|
|
94
124
|
}
|
|
95
|
-
/**
|
|
125
|
+
/**
|
|
126
|
+
* Register an RPC method. JSON-RPC 2.0 §4 reserves names starting with
|
|
127
|
+
* `rpc.` for the protocol itself, so they are refused here, as an empty
|
|
128
|
+
* name is.
|
|
129
|
+
*/
|
|
96
130
|
method(name, handler) {
|
|
131
|
+
if (typeof name !== 'string' || name === '') {
|
|
132
|
+
throw new ReamError('E_RPC_INVALID_METHOD_NAME', 'An RPC method name must be a non-empty string');
|
|
133
|
+
}
|
|
134
|
+
if (name.startsWith('rpc.')) {
|
|
135
|
+
throw new ReamError('E_RPC_RESERVED_METHOD_NAME', `'${name}' is a reserved RPC method name`, {
|
|
136
|
+
hint: 'JSON-RPC 2.0 reserves names starting with "rpc." for rpc-internal methods; pick another prefix.',
|
|
137
|
+
});
|
|
138
|
+
}
|
|
97
139
|
const def = {
|
|
98
140
|
name,
|
|
99
141
|
handler,
|
|
@@ -106,22 +148,21 @@ export class RpcRouter {
|
|
|
106
148
|
return new RpcMethodBuilder(def);
|
|
107
149
|
}
|
|
108
150
|
/**
|
|
109
|
-
* Register methods
|
|
110
|
-
*
|
|
111
|
-
* The parameter used to demand
|
|
112
|
-
* `new (...args: unknown[]) => Record<string, (...args: unknown[]) => unknown>`,
|
|
113
|
-
* which NO real controller satisfies: a class with any non-method property
|
|
114
|
-
* fails the `Record`, and a method declared `bump(): number` fails the
|
|
115
|
-
* `unknown[]` parameters, which are compared contravariantly. So the
|
|
116
|
-
* documented call — `rpc.namespace('task', TaskController)` — did not
|
|
117
|
-
* typecheck, and nothing noticed because the tests were outside `tsc`.
|
|
151
|
+
* Register the listed methods of a controller as `<prefix>.<method>`.
|
|
118
152
|
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
153
|
+
* The list is explicit, like a route binding one `[Controller, 'method']`
|
|
154
|
+
* pair: TypeScript `private`/`protected` vanish at runtime, so a namespace
|
|
155
|
+
* that published "every method on the prototype" made helpers the author
|
|
156
|
+
* never meant to expose remotely callable. The type admits only public
|
|
157
|
+
* method names; the runtime check refuses a name with no plain method
|
|
158
|
+
* behind it (a getter, `constructor`, anything from `Object.prototype`).
|
|
121
159
|
*/
|
|
122
|
-
namespace(prefix, controller) {
|
|
123
|
-
const
|
|
124
|
-
|
|
160
|
+
namespace(prefix, controller, methods) {
|
|
161
|
+
for (const methodName of methods) {
|
|
162
|
+
if (!isControllerMethod(controller.prototype, methodName)) {
|
|
163
|
+
throw new ReamError('E_RPC_UNKNOWN_CONTROLLER_METHOD', `${controller.name} has no method '${String(methodName)}' to expose as an RPC method`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
125
166
|
for (const methodName of methods) {
|
|
126
167
|
this.method(`${prefix}.${methodName}`, async (ctx, params) => {
|
|
127
168
|
// Resolve through the container on every call (fresh DI per request,
|
|
@@ -158,10 +199,26 @@ export class RpcRouter {
|
|
|
158
199
|
}
|
|
159
200
|
/** Handle an incoming JSON-RPC request. */
|
|
160
201
|
async handle(ctx) {
|
|
161
|
-
//
|
|
162
|
-
//
|
|
163
|
-
//
|
|
164
|
-
|
|
202
|
+
// A form post, a text/plain body or one with no Content-Type is a CORS
|
|
203
|
+
// simple request: a foreign page sends it with the victim's cookies and
|
|
204
|
+
// no preflight. Refused before the body is read, as JSON-RPC servers
|
|
205
|
+
// answer 415 to anything but JSON.
|
|
206
|
+
if (!this.#contentTypes.has(mediaType(ctx.request.header('content-type')))) {
|
|
207
|
+
ctx.response.status(415).send('');
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
// Parsed here, not through `request.body()`, which turns malformed JSON
|
|
211
|
+
// into `{}` — and §5.1 answers invalid JSON with -32700, not -32600.
|
|
212
|
+
// `raw()` stays outside the try: its 413 is not a parse error.
|
|
213
|
+
const raw = ctx.request.raw();
|
|
214
|
+
let body;
|
|
215
|
+
try {
|
|
216
|
+
body = JSON.parse(raw);
|
|
217
|
+
}
|
|
218
|
+
catch {
|
|
219
|
+
ctx.response.status(200).json(rpcError(-32700, 'Parse error', null));
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
165
222
|
// Batch support (max 50 to prevent DoS)
|
|
166
223
|
if (Array.isArray(body)) {
|
|
167
224
|
// §6: "If the batch rpc call itself fails to be recognized as an valid
|
|
@@ -250,7 +307,7 @@ export class RpcRouter {
|
|
|
250
307
|
if (def.validator) {
|
|
251
308
|
const token = `validator:${def.validator}`;
|
|
252
309
|
if (!this.#container?.has(token)) {
|
|
253
|
-
return
|
|
310
|
+
return internalError(`Validator '${def.validator}' is not registered (bind container.singleton('${token}', () => schema)).`, id);
|
|
254
311
|
}
|
|
255
312
|
const validator = await this.#container.resolve(token);
|
|
256
313
|
// `runValidator` picks the async result form first — the synchronous
|
|
@@ -261,7 +318,10 @@ export class RpcRouter {
|
|
|
261
318
|
outcome = await runValidator(validator, params);
|
|
262
319
|
}
|
|
263
320
|
catch (err) {
|
|
264
|
-
|
|
321
|
+
// Caught here rather than below so a validator's error is never
|
|
322
|
+
// honoured as a domain error: a rule hitting the database throws
|
|
323
|
+
// whatever the driver throws.
|
|
324
|
+
return internalError(isReamError(err, 'E_VALIDATOR_UNUSABLE')
|
|
265
325
|
? `Validator '${def.validator}' exposes no usable validate method.`
|
|
266
326
|
: `Validator '${def.validator}' failed: ${err instanceof Error ? err.message : String(err)}`, id);
|
|
267
327
|
}
|
|
@@ -280,10 +340,7 @@ export class RpcRouter {
|
|
|
280
340
|
const message = typeof err.message === 'string' ? err.message : 'RPC error';
|
|
281
341
|
return rpcError(err.code, message, id, err.data);
|
|
282
342
|
}
|
|
283
|
-
|
|
284
|
-
const isDev = currentNodeEnv() !== 'production';
|
|
285
|
-
const message = isDev && err instanceof Error ? err.message : 'Internal error';
|
|
286
|
-
return rpcError(-32603, message, id);
|
|
343
|
+
return internalError(err instanceof Error ? err.message : 'Internal error', id);
|
|
287
344
|
}
|
|
288
345
|
}
|
|
289
346
|
/** Get all registered method names. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RpcRouter.js","sourceRoot":"","sources":["../../src/rpc/RpcRouter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RpcRouter.js","sourceRoot":"","sources":["../../src/rpc/RpcRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RedisLockBackend.d.ts","sourceRoot":"","sources":["../../../src/scheduler/locks/RedisLockBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnE,mEAAmE;AACnE,MAAM,WAAW,eAAe;IAC9B,8EAA8E;IAC9E,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACrE,2EAA2E;IAC3E,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAC5E;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAA;AAEpG,MAAM,WAAW,uBAAuB;IACtC,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAkBD,qBAAa,gBAAiB,YAAW,WAAW;;gBAOtC,MAAM,EAAE,iBAAiB,EAAE,OAAO,GAAE,uBAA4B;
|
|
1
|
+
{"version":3,"file":"RedisLockBackend.d.ts","sourceRoot":"","sources":["../../../src/scheduler/locks/RedisLockBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnE,mEAAmE;AACnE,MAAM,WAAW,eAAe;IAC9B,8EAA8E;IAC9E,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACrE,2EAA2E;IAC3E,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAC5E;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAA;AAEpG,MAAM,WAAW,uBAAuB;IACtC,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAkBD,qBAAa,gBAAiB,YAAW,WAAW;;gBAOtC,MAAM,EAAE,iBAAiB,EAAE,OAAO,GAAE,uBAA4B;IA2B5E;;;;;;OAMG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY5D;;;OAGG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAO3C"}
|
|
@@ -38,10 +38,21 @@ export class RedisLockBackend {
|
|
|
38
38
|
this.#source = client;
|
|
39
39
|
this.#prefix = options.prefix ?? 'ream:schedule:lock:';
|
|
40
40
|
}
|
|
41
|
-
/**
|
|
41
|
+
/**
|
|
42
|
+
* The client, resolved once and kept. Only a success is kept: a lookup
|
|
43
|
+
* that fails (the connection is not registered yet at boot, Redis is
|
|
44
|
+
* briefly down) is forgotten so the next task retries it, instead of
|
|
45
|
+
* every lock failing with the same error until the process restarts.
|
|
46
|
+
*/
|
|
42
47
|
#client() {
|
|
43
48
|
if (!this.#resolved) {
|
|
44
|
-
|
|
49
|
+
const source = this.#source;
|
|
50
|
+
const pending = (async () => (typeof source === 'function' ? source() : source))();
|
|
51
|
+
this.#resolved = pending;
|
|
52
|
+
pending.catch(() => {
|
|
53
|
+
if (this.#resolved === pending)
|
|
54
|
+
this.#resolved = undefined;
|
|
55
|
+
});
|
|
45
56
|
}
|
|
46
57
|
return this.#resolved;
|
|
47
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RedisLockBackend.js","sourceRoot":"","sources":["../../../src/scheduler/locks/RedisLockBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,cAAc,EAAoB,MAAM,kBAAkB,CAAA;AA0BnE;;;;;;;;GAQG;AACH,MAAM,OAAO,GAAG;;;;;CAKf,CAAA;AAED,MAAM,OAAO,gBAAgB;IAClB,OAAO,CAAmB;IAC1B,OAAO,CAAQ;IACxB,SAAS,CAAsC;IAC/C,yEAAyE;IAChE,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAA;IAE5C,YAAY,MAAyB,EAAE,UAAmC,EAAE;QAC1E,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,IAAI,qBAAqB,CAAA;IACxD,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"RedisLockBackend.js","sourceRoot":"","sources":["../../../src/scheduler/locks/RedisLockBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,cAAc,EAAoB,MAAM,kBAAkB,CAAA;AA0BnE;;;;;;;;GAQG;AACH,MAAM,OAAO,GAAG;;;;;CAKf,CAAA;AAED,MAAM,OAAO,gBAAgB;IAClB,OAAO,CAAmB;IAC1B,OAAO,CAAQ;IACxB,SAAS,CAAsC;IAC/C,yEAAyE;IAChE,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAA;IAE5C,YAAY,MAAyB,EAAE,UAAmC,EAAE;QAC1E,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,IAAI,qBAAqB,CAAA;IACxD,CAAC;IAED;;;;;OAKG;IACH,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAA;YAC3B,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAA;YAClF,IAAI,CAAC,SAAS,GAAG,OAAO,CAAA;YACxB,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;gBACjB,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO;oBAAE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;YAC5D,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;IAED,IAAI,CAAC,IAAY;QACf,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAA;IACjC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,KAAa;QACvC,cAAc,CAAC,KAAK,CAAC,CAAA;QACrB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;QACnC,MAAM,KAAK,GAAG,UAAU,EAAE,CAAA;QAC1B,uEAAuE;QACvE,yCAAyC;QACzC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAA;QACrF,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,KAAK,CAAA;QACzD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC7B,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,IAAY;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAM;QAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;QACnC,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAA;IACvD,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CookieSigner.d.ts","sourceRoot":"","sources":["../../src/security/CookieSigner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;
|
|
1
|
+
{"version":3,"file":"CookieSigner.d.ts","sourceRoot":"","sources":["../../src/security/CookieSigner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAUH,2EAA2E;AAC3E,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,EAAG,mBAAmB,CAAS;;CAK7C;AAED,gFAAgF;AAChF,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,EAAG,oBAAoB,CAAS;gBACjC,MAAM,SAAsC;CAIzD;AA8BD,qBAAa,YAAY;;gBAIX,MAAM,EAAE,MAAM;IAyD1B;;;;;OAKG;IACH,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;IAMlE,iFAAiF;IACjF,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAa9D;;;;;;OAMG;IACH,IAAI,SAAS,IAAI,aAAa,CAE7B;IAED;;;;;;;OAOG;IACH,IAAI,MAAM,IAAI;QACZ,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;QAC7B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;QACpC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;QAChC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;KACxC,CAOA;IAED;;;;;;OAMG;IACH,IAAI,QAAQ,IAAI;QACd,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;QACpE,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAAA;KAChE,CAKA;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY;IAIpC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;IAWrE,OAAO,CAAC,CAAC,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;CAgCnE"}
|
|
@@ -21,6 +21,10 @@
|
|
|
21
21
|
*/
|
|
22
22
|
import { createCipheriv, createDecipheriv, createHmac, randomBytes } from 'node:crypto';
|
|
23
23
|
import { hmacSign, hmacVerify } from './crypto.js';
|
|
24
|
+
/** The 96-bit nonce GCM is specified for. */
|
|
25
|
+
const GCM_IV_BYTES = 12;
|
|
26
|
+
/** The full 128-bit authentication tag — never a truncated one. */
|
|
27
|
+
const GCM_TAG_BYTES = 16;
|
|
24
28
|
/** Raised when no APP_KEY is configured (AdonisJS `E_MISSING_APP_KEY`). */
|
|
25
29
|
export class E_MISSING_APP_KEY extends Error {
|
|
26
30
|
code = 'E_MISSING_APP_KEY';
|
|
@@ -190,8 +194,10 @@ export class CookieSigner {
|
|
|
190
194
|
return new CookieSigner(secret ?? this.#secret);
|
|
191
195
|
}
|
|
192
196
|
encrypt(value, expiresIn, purpose) {
|
|
193
|
-
const iv = randomBytes(
|
|
194
|
-
const cipher = createCipheriv('aes-256-gcm', this.#keyBuffer, iv
|
|
197
|
+
const iv = randomBytes(GCM_IV_BYTES);
|
|
198
|
+
const cipher = createCipheriv('aes-256-gcm', this.#keyBuffer, iv, {
|
|
199
|
+
authTagLength: GCM_TAG_BYTES,
|
|
200
|
+
});
|
|
195
201
|
const sealed = this.#seal(value, expiresIn, purpose);
|
|
196
202
|
const encrypted = Buffer.concat([cipher.update(sealed, 'utf8'), cipher.final()]);
|
|
197
203
|
const tag = cipher.getAuthTag();
|
|
@@ -212,7 +218,15 @@ export class CookieSigner {
|
|
|
212
218
|
const iv = Buffer.from(ivPart, 'base64url');
|
|
213
219
|
const data = Buffer.from(dataPart, 'base64url');
|
|
214
220
|
const tag = Buffer.from(tagPart, 'base64url');
|
|
215
|
-
|
|
221
|
+
// GCM verifies only as many tag bytes as it is handed: a client that
|
|
222
|
+
// trims the tag to 4 bytes would cut forgery cost from 2^128 to 2^32
|
|
223
|
+
// guesses. Only what `encrypt` produces is accepted — a 12-byte IV and
|
|
224
|
+
// the full 16-byte tag — and the decipher is pinned to that length too.
|
|
225
|
+
if (iv.length !== GCM_IV_BYTES || tag.length !== GCM_TAG_BYTES)
|
|
226
|
+
return null;
|
|
227
|
+
const decipher = createDecipheriv('aes-256-gcm', this.#keyBuffer, iv, {
|
|
228
|
+
authTagLength: GCM_TAG_BYTES,
|
|
229
|
+
});
|
|
216
230
|
decipher.setAuthTag(tag);
|
|
217
231
|
const raw = Buffer.concat([decipher.update(data), decipher.final()]).toString('utf8');
|
|
218
232
|
return this.#open(raw, purpose);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CookieSigner.js","sourceRoot":"","sources":["../../src/security/CookieSigner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACvF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAElD,2EAA2E;AAC3E,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACjC,IAAI,GAAG,mBAA4B,CAAA;IAC5C;QACE,KAAK,CAAC,yEAAyE,CAAC,CAAA;QAChF,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAA;IACjC,CAAC;CACF;AAED,gFAAgF;AAChF,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,IAAI,GAAG,oBAA6B,CAAA;IAC7C,YAAY,MAAM,GAAG,mCAAmC;QACtD,KAAK,CAAC,2BAA2B,MAAM,GAAG,CAAC,CAAA;QAC3C,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;IAClC,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,yCAAyC;IACzC,WAAW;IACX,mBAAmB;IACnB,QAAQ;CACT,CAAC,CAAA;AAgBF,MAAM,OAAO,YAAY;IACvB,OAAO,CAAQ;IACf,UAAU,CAAQ;IAElB,YAAY,MAAc;QACxB,oEAAoE;QACpE,kEAAkE;QAClE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,iBAAiB,EAAE,CAAA;QACpF,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE;YAAE,MAAM,IAAI,kBAAkB,EAAE,CAAA;QACtD,IAAI,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,kBAAkB,CAC1B,4FAA4F,CAC7F,CAAA;QACH,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,gEAAgE;QAChE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;IAC3F,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAc,EAAE,SAAkB,EAAE,OAAgB;QACxD,MAAM,QAAQ,GAAa,EAAE,CAAC,EAAE,KAAK,EAAE,CAAA;QACvC,IAAI,SAAS,KAAK,SAAS;YAAE,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;QAChE,IAAI,OAAO,KAAK,SAAS;YAAE,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAA;QAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IACjC,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,GAAW,EAAE,OAAgB;QACjC,IAAI,MAAe,CAAA;QACnB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;QACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QAC9D,MAAM,QAAQ,GAAG,MAAkB,CAAA;QACnC,2EAA2E;QAC3E,4EAA4E;QAC5E,sBAAsB;QACtB,IAAI,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAA;QACnC,IAAI,QAAQ,CAAC,CAAC,KAAK,SAAS,IAAI,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;YAAE,OAAO,IAAI,CAAA;QACpE,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,SAAS,CAAC,KAAK,OAAO;YAAE,OAAO,IAAI,CAAA;QACtD,OAAO,QAAQ,CAAC,CAAC,CAAA;IACnB,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC,KAAc,EAAE,SAAkB,EAAE,OAAgB;QACvD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;QACvF,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAC1C,OAAO,GAAG,MAAM,IAAI,GAAG,EAAE,CAAA;IAC3B,CAAC;IAED,iFAAiF;IACjF,MAAM,CAAa,MAAc,EAAE,OAAgB;QACjD,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QACvC,IAAI,OAAO,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAA;QAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QACvC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAA;QACrC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAA;QACvD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAa,CAAA;QAC3F,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,IAAI,SAAS;QACX,OAAO,aAAa,CAAA;IACtB,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,MAAM;QAMR,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;QAClF,MAAM,MAAM,GAAG,CAAC,KAAa,EAAiB,EAAE;YAC9C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YAC5D,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAA;QAC9E,CAAC,CAAA;QACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAA;IACjE,CAAC;IAED;;;;;;OAMG;IACH,IAAI,QAAQ;QAIV,OAAO;YACL,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC;YAC7E,MAAM,EAAE,CAAI,OAAe,EAAE,OAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAI,OAAO,EAAE,OAAO,CAAC;SACnF,CAAA;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAe;QACnB,OAAO,IAAI,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,CAAA;IACjD,CAAC;IAED,OAAO,CAAC,KAAc,EAAE,SAAkB,EAAE,OAAgB;QAC1D,MAAM,EAAE,GAAG,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"CookieSigner.js","sourceRoot":"","sources":["../../src/security/CookieSigner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACvF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAElD,6CAA6C;AAC7C,MAAM,YAAY,GAAG,EAAE,CAAA;AACvB,mEAAmE;AACnE,MAAM,aAAa,GAAG,EAAE,CAAA;AAExB,2EAA2E;AAC3E,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACjC,IAAI,GAAG,mBAA4B,CAAA;IAC5C;QACE,KAAK,CAAC,yEAAyE,CAAC,CAAA;QAChF,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAA;IACjC,CAAC;CACF;AAED,gFAAgF;AAChF,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,IAAI,GAAG,oBAA6B,CAAA;IAC7C,YAAY,MAAM,GAAG,mCAAmC;QACtD,KAAK,CAAC,2BAA2B,MAAM,GAAG,CAAC,CAAA;QAC3C,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;IAClC,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,yCAAyC;IACzC,WAAW;IACX,mBAAmB;IACnB,QAAQ;CACT,CAAC,CAAA;AAgBF,MAAM,OAAO,YAAY;IACvB,OAAO,CAAQ;IACf,UAAU,CAAQ;IAElB,YAAY,MAAc;QACxB,oEAAoE;QACpE,kEAAkE;QAClE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,iBAAiB,EAAE,CAAA;QACpF,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE;YAAE,MAAM,IAAI,kBAAkB,EAAE,CAAA;QACtD,IAAI,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,kBAAkB,CAC1B,4FAA4F,CAC7F,CAAA;QACH,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,gEAAgE;QAChE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;IAC3F,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAc,EAAE,SAAkB,EAAE,OAAgB;QACxD,MAAM,QAAQ,GAAa,EAAE,CAAC,EAAE,KAAK,EAAE,CAAA;QACvC,IAAI,SAAS,KAAK,SAAS;YAAE,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;QAChE,IAAI,OAAO,KAAK,SAAS;YAAE,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAA;QAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IACjC,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,GAAW,EAAE,OAAgB;QACjC,IAAI,MAAe,CAAA;QACnB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;QACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QAC9D,MAAM,QAAQ,GAAG,MAAkB,CAAA;QACnC,2EAA2E;QAC3E,4EAA4E;QAC5E,sBAAsB;QACtB,IAAI,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAA;QACnC,IAAI,QAAQ,CAAC,CAAC,KAAK,SAAS,IAAI,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;YAAE,OAAO,IAAI,CAAA;QACpE,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,SAAS,CAAC,KAAK,OAAO;YAAE,OAAO,IAAI,CAAA;QACtD,OAAO,QAAQ,CAAC,CAAC,CAAA;IACnB,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC,KAAc,EAAE,SAAkB,EAAE,OAAgB;QACvD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;QACvF,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAC1C,OAAO,GAAG,MAAM,IAAI,GAAG,EAAE,CAAA;IAC3B,CAAC;IAED,iFAAiF;IACjF,MAAM,CAAa,MAAc,EAAE,OAAgB;QACjD,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QACvC,IAAI,OAAO,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAA;QAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QACvC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAA;QACrC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAA;QACvD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAa,CAAA;QAC3F,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,IAAI,SAAS;QACX,OAAO,aAAa,CAAA;IACtB,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,MAAM;QAMR,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;QAClF,MAAM,MAAM,GAAG,CAAC,KAAa,EAAiB,EAAE;YAC9C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YAC5D,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAA;QAC9E,CAAC,CAAA;QACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAA;IACjE,CAAC;IAED;;;;;;OAMG;IACH,IAAI,QAAQ;QAIV,OAAO;YACL,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC;YAC7E,MAAM,EAAE,CAAI,OAAe,EAAE,OAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAI,OAAO,EAAE,OAAO,CAAC;SACnF,CAAA;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAe;QACnB,OAAO,IAAI,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,CAAA;IACjD,CAAC;IAED,OAAO,CAAC,KAAc,EAAE,SAAkB,EAAE,OAAgB;QAC1D,MAAM,EAAE,GAAG,WAAW,CAAC,YAAY,CAAC,CAAA;QACpC,MAAM,MAAM,GAAG,cAAc,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE;YAChE,aAAa,EAAE,aAAa;SAC7B,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QACpD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAChF,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,CAAA;QAC/B,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAA;IACtG,CAAC;IAED,OAAO,CAAa,SAAiB,EAAE,OAAgB;QACrD,sEAAsE;QACtE,0EAA0E;QAC1E,2CAA2C;QAC3C,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC/D,IACE,MAAM,KAAK,SAAS;YACpB,QAAQ,KAAK,SAAS;YACtB,OAAO,KAAK,SAAS;YACrB,KAAK,KAAK,SAAS,EACnB,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QACD,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;YAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;YAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;YAC7C,qEAAqE;YACrE,qEAAqE;YACrE,uEAAuE;YACvE,wEAAwE;YACxE,IAAI,EAAE,CAAC,MAAM,KAAK,YAAY,IAAI,GAAG,CAAC,MAAM,KAAK,aAAa;gBAAE,OAAO,IAAI,CAAA;YAC3E,MAAM,QAAQ,GAAG,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE;gBACpE,aAAa,EAAE,aAAa;aAC7B,CAAC,CAAA;YACF,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;YACxB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YACrF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAa,CAAA;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignedUrl.d.ts","sourceRoot":"","sources":["../../src/security/SignedUrl.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,SAAS;;gBAGR,MAAM,EAAE,eAAe;IAInC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAqBvF,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO;
|
|
1
|
+
{"version":3,"file":"SignedUrl.d.ts","sourceRoot":"","sources":["../../src/security/SignedUrl.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,SAAS;;gBAGR,MAAM,EAAE,eAAe;IAInC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAqBvF,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO;CAiBrD"}
|
|
@@ -33,7 +33,12 @@ export class SignedUrl {
|
|
|
33
33
|
const expires = url.searchParams.get('expires');
|
|
34
34
|
if (expires && Math.floor(Date.now() / 1000) > parseInt(expires, 10))
|
|
35
35
|
return false;
|
|
36
|
-
|
|
36
|
+
// Exact match both ways: a URL minted for `password-reset` must not pass a
|
|
37
|
+
// check that names no purpose (or another one), and a purpose-less URL
|
|
38
|
+
// must not pass a check that names one. An empty purpose is no purpose,
|
|
39
|
+
// as in `make`.
|
|
40
|
+
const signedPurpose = url.searchParams.get('purpose') || undefined;
|
|
41
|
+
if (signedPurpose !== (purpose || undefined))
|
|
37
42
|
return false;
|
|
38
43
|
url.searchParams.delete('signature');
|
|
39
44
|
const expectedSig = hmacSign(url.pathname + url.search, this.#secret);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignedUrl.js","sourceRoot":"","sources":["../../src/security/SignedUrl.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAMtD,MAAM,OAAO,SAAS;IACpB,OAAO,CAAQ;IAEf,YAAY,MAAuB;QACjC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAA;IAC9B,CAAC;IAED,IAAI,CAAC,IAAY,EAAE,OAA2D;QAC5E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAA;QAC7C,uEAAuE;QACvE,uEAAuE;QACvE,wEAAwE;QACxE,mEAAmE;QACnE,yEAAyE;QACzE,+DAA+D;QAC/D,IAAI,OAAO,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;YACrC,GAAG,CAAC,YAAY,CAAC,GAAG,CAClB,SAAS,EACT,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACvE,CAAA;QACH,CAAC;QACD,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;YACrB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;QAClD,CAAC;QACD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;QACpF,OAAO,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAA;IAClC,CAAC;IAED,MAAM,CAAC,SAAiB,EAAE,OAAgB;QACxC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAA;QAClD,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QACrD,IAAI,CAAC,WAAW;YAAE,OAAO,KAAK,CAAA;QAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC/C,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YAAE,OAAO,KAAK,CAAA;QAClF,
|
|
1
|
+
{"version":3,"file":"SignedUrl.js","sourceRoot":"","sources":["../../src/security/SignedUrl.ts"],"names":[],"mappings":"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"}
|
package/dist/server/Server.d.ts
CHANGED
|
@@ -29,12 +29,20 @@ export type MiddlewareEntry = LazyImport<MiddlewareClassConstructor> | Middlewar
|
|
|
29
29
|
export interface GrpcCall {
|
|
30
30
|
/** `/package.Service/Method`, as it arrived. */
|
|
31
31
|
path: string;
|
|
32
|
-
/**
|
|
33
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Request metadata: the request headers, every value of a repeated one in
|
|
34
|
+
* order, names lowercased. Never the client's trailers.
|
|
35
|
+
*/
|
|
36
|
+
metadata: Record<string, string[]>;
|
|
34
37
|
/** The request message, still encoded. */
|
|
35
38
|
message: Uint8Array;
|
|
36
39
|
/** Resolved client IP, by the same trusted-proxy rules as `request.ip()`. */
|
|
37
40
|
ip: string;
|
|
41
|
+
/**
|
|
42
|
+
* Aborted when the client gives up on the call — resets its stream or
|
|
43
|
+
* closes the connection — before the handler answered.
|
|
44
|
+
*/
|
|
45
|
+
signal: AbortSignal;
|
|
38
46
|
}
|
|
39
47
|
/** A reply message, still encoded — or a gRPC status code instead of one. */
|
|
40
48
|
export type GrpcReply = {
|
|
@@ -44,20 +52,39 @@ export type GrpcReply = {
|
|
|
44
52
|
details: string;
|
|
45
53
|
};
|
|
46
54
|
export type GrpcHandler = (call: GrpcCall) => Promise<GrpcReply>;
|
|
55
|
+
/**
|
|
56
|
+
* Message size bounds of the gRPC calls, in bytes; `-1` for none. A request
|
|
57
|
+
* past its bound is refused, `RESOURCE_EXHAUSTED`, before it is read; a reply
|
|
58
|
+
* past its bound is answered `RESOURCE_EXHAUSTED` instead.
|
|
59
|
+
*/
|
|
60
|
+
export interface GrpcLimits {
|
|
61
|
+
/** Default 4 MiB. */
|
|
62
|
+
maxReceiveMessageLength?: number;
|
|
63
|
+
/** Default `-1`: no bound. */
|
|
64
|
+
maxSendMessageLength?: number;
|
|
65
|
+
}
|
|
47
66
|
export declare class Server {
|
|
48
67
|
#private;
|
|
49
68
|
constructor(router: Router);
|
|
50
69
|
/**
|
|
51
|
-
* Configure the trusted
|
|
52
|
-
* pre-resolve `request.ip` once per request — JS reads
|
|
53
|
-
* matching in TS.
|
|
70
|
+
* Configure the trusted proxies. The Rust HyperServer uses them to
|
|
71
|
+
* pre-resolve `request.ip()` / `request.ips()` once per request — JS reads
|
|
72
|
+
* the fields, no CIDR matching in TS.
|
|
73
|
+
*
|
|
74
|
+
* The chain is the socket peer, then the `X-Forwarded-For` entries read
|
|
75
|
+
* right to left; it stops at the first hop that is not a trusted proxy, and
|
|
76
|
+
* its last entry is the client IP. Proxies append what they saw, so the
|
|
77
|
+
* left-most entry — the one a client writes itself — is only reached when
|
|
78
|
+
* every hop after it is trusted. `X-Real-IP` is never read.
|
|
79
|
+
*
|
|
80
|
+
* Entries: addresses or CIDR ranges, IPv4 or IPv6 (`'10.0.0.0/8'`,
|
|
81
|
+
* `'fd00::/8'`), IPv4 netmasks (`'10.0.0.0/255.0.0.0'`), the named ranges
|
|
82
|
+
* `'loopback'`, `'linklocal'`, `'uniquelocal'`, or `'*'` to trust every hop
|
|
83
|
+
* (the left-most entry wins — any client can choose its IP). An entry that is
|
|
84
|
+
* none of these makes the server refuse to start.
|
|
54
85
|
*
|
|
55
|
-
* Empty list (default
|
|
56
|
-
*
|
|
57
|
-
* Apps deployed behind a reverse proxy must list the proxy's CIDR
|
|
58
|
-
* (`'10.0.0.0/8'`, `'192.0.2.0/24'`, etc.) or pass the `'*'` sentinel
|
|
59
|
-
* for permissive mode (accepts spoofing as the explicit trade-off when
|
|
60
|
-
* proxy CIDRs can't be enumerated).
|
|
86
|
+
* Empty list (default) is **strict fail-closed**: `X-Forwarded-For` is
|
|
87
|
+
* ignored and only the socket peer is used.
|
|
61
88
|
*/
|
|
62
89
|
trustedProxies(cidrs: string[]): this;
|
|
63
90
|
/** Read the current trusted-proxy list (consumed by Ignitor at boot). */
|
|
@@ -77,7 +104,9 @@ export declare class Server {
|
|
|
77
104
|
* One handler per server: a second one throws. Two packages both serving
|
|
78
105
|
* gRPC is a conflict to resolve, not to settle by load order.
|
|
79
106
|
*/
|
|
80
|
-
grpc(handler: GrpcHandler): this;
|
|
107
|
+
grpc(handler: GrpcHandler, limits?: GrpcLimits): this;
|
|
108
|
+
/** The message bounds given with the gRPC handler (consumed by Ignitor at boot). */
|
|
109
|
+
getGrpcLimits(): GrpcLimits;
|
|
81
110
|
/** The gRPC handler, if one is set (consumed by Ignitor at boot). */
|
|
82
111
|
getGrpcHandler(): GrpcHandler | undefined;
|
|
83
112
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../../src/server/Server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAEjD;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAC1F;AAED,4DAA4D;AAC5D,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC;IAAE,OAAO,EAAE,CAAC,CAAA;CAAE,CAAC,CAAA;AAIzD,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,gBAAgB,CAAA;AAE1E,MAAM,MAAM,0BAA0B,GAAG,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,eAAe,CAAA;AAElF,mFAAmF;AACnF,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,0BAA0B,CAAC,GAAG,kBAAkB,CAAA;AAEzF,+DAA+D;AAC/D,MAAM,WAAW,QAAQ;IACvB,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAA;IACZ
|
|
1
|
+
{"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../../src/server/Server.ts"],"names":[],"mappings":"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"}
|
package/dist/server/Server.js
CHANGED
|
@@ -6,6 +6,11 @@
|
|
|
6
6
|
* - server.errorHandler(() => import('#exceptions/handler')) — custom exception handler
|
|
7
7
|
*/
|
|
8
8
|
import { ReamError } from '../errors/ReamError.js';
|
|
9
|
+
function checkGrpcLimit(name, value) {
|
|
10
|
+
if (value === undefined || value === -1 || (Number.isSafeInteger(value) && value >= 0))
|
|
11
|
+
return;
|
|
12
|
+
throw new ReamError('E_SERVER_GRPC_INVALID_LIMIT', `${name} must be a whole number of bytes, or -1 for no limit — got ${value}.`);
|
|
13
|
+
}
|
|
9
14
|
export class Server {
|
|
10
15
|
#router;
|
|
11
16
|
#serverMiddleware = [];
|
|
@@ -13,20 +18,29 @@ export class Server {
|
|
|
13
18
|
#resolvedErrorHandler;
|
|
14
19
|
#trustedProxies = [];
|
|
15
20
|
#grpcHandler;
|
|
21
|
+
#grpcLimits = {};
|
|
16
22
|
constructor(router) {
|
|
17
23
|
this.#router = router;
|
|
18
24
|
}
|
|
19
25
|
/**
|
|
20
|
-
* Configure the trusted
|
|
21
|
-
* pre-resolve `request.ip` once per request — JS reads
|
|
22
|
-
* matching in TS.
|
|
26
|
+
* Configure the trusted proxies. The Rust HyperServer uses them to
|
|
27
|
+
* pre-resolve `request.ip()` / `request.ips()` once per request — JS reads
|
|
28
|
+
* the fields, no CIDR matching in TS.
|
|
29
|
+
*
|
|
30
|
+
* The chain is the socket peer, then the `X-Forwarded-For` entries read
|
|
31
|
+
* right to left; it stops at the first hop that is not a trusted proxy, and
|
|
32
|
+
* its last entry is the client IP. Proxies append what they saw, so the
|
|
33
|
+
* left-most entry — the one a client writes itself — is only reached when
|
|
34
|
+
* every hop after it is trusted. `X-Real-IP` is never read.
|
|
23
35
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* (
|
|
28
|
-
*
|
|
29
|
-
*
|
|
36
|
+
* Entries: addresses or CIDR ranges, IPv4 or IPv6 (`'10.0.0.0/8'`,
|
|
37
|
+
* `'fd00::/8'`), IPv4 netmasks (`'10.0.0.0/255.0.0.0'`), the named ranges
|
|
38
|
+
* `'loopback'`, `'linklocal'`, `'uniquelocal'`, or `'*'` to trust every hop
|
|
39
|
+
* (the left-most entry wins — any client can choose its IP). An entry that is
|
|
40
|
+
* none of these makes the server refuse to start.
|
|
41
|
+
*
|
|
42
|
+
* Empty list (default) is **strict fail-closed**: `X-Forwarded-For` is
|
|
43
|
+
* ignored and only the socket peer is used.
|
|
30
44
|
*/
|
|
31
45
|
trustedProxies(cidrs) {
|
|
32
46
|
this.#trustedProxies = [...cidrs];
|
|
@@ -51,15 +65,22 @@ export class Server {
|
|
|
51
65
|
* One handler per server: a second one throws. Two packages both serving
|
|
52
66
|
* gRPC is a conflict to resolve, not to settle by load order.
|
|
53
67
|
*/
|
|
54
|
-
grpc(handler) {
|
|
68
|
+
grpc(handler, limits = {}) {
|
|
55
69
|
if (this.#grpcHandler) {
|
|
56
70
|
throw new ReamError('E_SERVER_GRPC_ALREADY_SET', 'A gRPC handler is already registered.', {
|
|
57
71
|
hint: 'Only one package can serve gRPC on the HTTP port.',
|
|
58
72
|
});
|
|
59
73
|
}
|
|
74
|
+
checkGrpcLimit('maxReceiveMessageLength', limits.maxReceiveMessageLength);
|
|
75
|
+
checkGrpcLimit('maxSendMessageLength', limits.maxSendMessageLength);
|
|
60
76
|
this.#grpcHandler = handler;
|
|
77
|
+
this.#grpcLimits = { ...limits };
|
|
61
78
|
return this;
|
|
62
79
|
}
|
|
80
|
+
/** The message bounds given with the gRPC handler (consumed by Ignitor at boot). */
|
|
81
|
+
getGrpcLimits() {
|
|
82
|
+
return { ...this.#grpcLimits };
|
|
83
|
+
}
|
|
63
84
|
/** The gRPC handler, if one is set (consumed by Ignitor at boot). */
|
|
64
85
|
getGrpcHandler() {
|
|
65
86
|
return this.#grpcHandler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Server.js","sourceRoot":"","sources":["../../src/server/Server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"Server.js","sourceRoot":"","sources":["../../src/server/Server.ts"],"names":[],"mappings":"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"}
|