exisjs 0.8.1 → 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/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +20 -1
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/dev.d.ts +8 -0
- package/dist/cli/commands/dev.d.ts.map +1 -1
- package/dist/cli/commands/dev.js +96 -36
- package/dist/cli/commands/dev.js.map +1 -1
- package/dist/cli/index.js +1 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/manifest.d.ts.map +1 -1
- package/dist/cli/manifest.js +2 -1
- package/dist/cli/manifest.js.map +1 -1
- package/dist/cli/routes.d.ts +2 -0
- package/dist/cli/routes.d.ts.map +1 -1
- package/dist/cli/routes.js +14 -5
- package/dist/cli/routes.js.map +1 -1
- package/dist/config/config.d.ts +3 -1
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js.map +1 -1
- package/dist/config/types.d.ts +11 -1
- package/dist/config/types.d.ts.map +1 -1
- package/dist/cron/job.d.ts +2 -0
- package/dist/cron/job.d.ts.map +1 -1
- package/dist/cron/job.js +33 -1
- package/dist/cron/job.js.map +1 -1
- package/dist/cron/manager.d.ts +12 -1
- package/dist/cron/manager.d.ts.map +1 -1
- package/dist/cron/manager.js +7 -1
- package/dist/cron/manager.js.map +1 -1
- package/dist/cron/types.d.ts +24 -0
- package/dist/cron/types.d.ts.map +1 -1
- package/dist/decorators/index.d.ts +1 -0
- package/dist/decorators/index.d.ts.map +1 -1
- package/dist/decorators/index.js +5 -0
- package/dist/decorators/index.js.map +1 -1
- package/dist/decorators/pipes.d.ts +2 -0
- package/dist/decorators/pipes.d.ts.map +1 -1
- package/dist/decorators/pipes.js +39 -18
- package/dist/decorators/pipes.js.map +1 -1
- package/dist/di/container.d.ts +6 -0
- package/dist/di/container.d.ts.map +1 -1
- package/dist/di/container.js +73 -57
- package/dist/di/container.js.map +1 -1
- package/dist/docs/content/cli/commands.mdx +2 -1
- package/dist/docs/content/config.mdx +5 -3
- package/dist/docs/content/cron.mdx +25 -1
- package/dist/docs/content/decorators.mdx +4 -4
- package/dist/docs/content/errors.mdx +37 -36
- package/dist/docs/content/installation.mdx +3 -4
- package/dist/docs/content/introduction.mdx +1 -1
- package/dist/docs/content/providers.mdx +2 -0
- package/dist/docs/content/requests.mdx +2 -2
- package/dist/docs/content/responses.mdx +18 -0
- package/dist/docs/content/security.mdx +93 -4
- package/dist/docs/content/testing.mdx +38 -0
- package/dist/docs/content/validation.mdx +21 -1
- package/dist/docs/reference/decorators.mdx +2 -4
- package/dist/docs/reference/router.mdx +5 -7
- package/dist/error/errors.d.ts +9 -1
- package/dist/error/errors.d.ts.map +1 -1
- package/dist/error/errors.js +24 -15
- package/dist/error/errors.js.map +1 -1
- package/dist/index.d.ts +11 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/lib/inspect-routes.js +2 -0
- package/dist/lib/inspect-routes.js.map +1 -1
- package/dist/middleware/idempotency.d.ts +25 -23
- package/dist/middleware/idempotency.d.ts.map +1 -1
- package/dist/middleware/idempotency.js +70 -35
- package/dist/middleware/idempotency.js.map +1 -1
- package/dist/middleware/middleware.d.ts.map +1 -1
- package/dist/middleware/middleware.js +1 -0
- package/dist/middleware/middleware.js.map +1 -1
- package/dist/middleware/rate-limit.d.ts +36 -0
- package/dist/middleware/rate-limit.d.ts.map +1 -1
- package/dist/middleware/rate-limit.js +33 -19
- package/dist/middleware/rate-limit.js.map +1 -1
- package/dist/middleware/security.d.ts.map +1 -1
- package/dist/middleware/security.js +12 -5
- package/dist/middleware/security.js.map +1 -1
- package/dist/router/authorize.d.ts +43 -0
- package/dist/router/authorize.d.ts.map +1 -0
- package/dist/router/authorize.js +66 -0
- package/dist/router/authorize.js.map +1 -0
- package/dist/router/controller-registrar.d.ts.map +1 -1
- package/dist/router/controller-registrar.js +117 -149
- package/dist/router/controller-registrar.js.map +1 -1
- package/dist/router/route-scanner.d.ts +3 -0
- package/dist/router/route-scanner.d.ts.map +1 -1
- package/dist/router/route-scanner.js +32 -21
- package/dist/router/route-scanner.js.map +1 -1
- package/dist/router/router.d.ts +2 -0
- package/dist/router/router.d.ts.map +1 -1
- package/dist/router/router.js +49 -46
- package/dist/router/router.js.map +1 -1
- package/dist/router/scanner/boundary-loader.d.ts.map +1 -1
- package/dist/router/scanner/boundary-loader.js +16 -12
- package/dist/router/scanner/boundary-loader.js.map +1 -1
- package/dist/router/scanner/cron-mounter.d.ts.map +1 -1
- package/dist/router/scanner/cron-mounter.js +32 -18
- package/dist/router/scanner/cron-mounter.js.map +1 -1
- package/dist/router/scanner/functional-compiler.d.ts.map +1 -1
- package/dist/router/scanner/functional-compiler.js +27 -128
- package/dist/router/scanner/functional-compiler.js.map +1 -1
- package/dist/router/send-result.d.ts +24 -0
- package/dist/router/send-result.d.ts.map +1 -0
- package/dist/router/send-result.js +81 -0
- package/dist/router/send-result.js.map +1 -0
- package/dist/server/app.d.ts +5 -0
- package/dist/server/app.d.ts.map +1 -1
- package/dist/server/app.js +44 -5
- package/dist/server/app.js.map +1 -1
- package/dist/server/engines/node-engine.d.ts.map +1 -1
- package/dist/server/engines/node-engine.js +6 -1
- package/dist/server/engines/node-engine.js.map +1 -1
- package/dist/server/request-handler.d.ts +2 -0
- package/dist/server/request-handler.d.ts.map +1 -1
- package/dist/server/request-handler.js +11 -2
- package/dist/server/request-handler.js.map +1 -1
- package/dist/server/request.d.ts +8 -1
- package/dist/server/request.d.ts.map +1 -1
- package/dist/server/request.js +19 -1
- package/dist/server/request.js.map +1 -1
- package/dist/server/response.d.ts +2 -0
- package/dist/server/response.d.ts.map +1 -1
- package/dist/server/response.js +6 -0
- package/dist/server/response.js.map +1 -1
- package/dist/swagger/mounter.d.ts.map +1 -1
- package/dist/swagger/mounter.js +2 -0
- package/dist/swagger/mounter.js.map +1 -1
- package/dist/testing/client.d.ts +32 -0
- package/dist/testing/client.d.ts.map +1 -1
- package/dist/testing/client.js +69 -0
- package/dist/testing/client.js.map +1 -1
- package/dist/testing/index.d.ts +10 -2
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +7 -2
- package/dist/testing/index.js.map +1 -1
- package/dist/validator/builder.d.ts +33 -16
- package/dist/validator/builder.d.ts.map +1 -1
- package/dist/validator/builder.js.map +1 -1
- package/dist/validator/engine.d.ts +9 -0
- package/dist/validator/engine.d.ts.map +1 -1
- package/dist/validator/engine.js +148 -96
- package/dist/validator/engine.js.map +1 -1
- package/dist/validator/error.d.ts +4 -0
- package/dist/validator/error.d.ts.map +1 -1
- package/dist/validator/error.js +20 -4
- package/dist/validator/error.js.map +1 -1
- package/dist/validator/index.d.ts +12 -1
- package/dist/validator/index.d.ts.map +1 -1
- package/dist/validator/index.js.map +1 -1
- package/dist/validator/tex-types.d.ts +29 -2
- package/dist/validator/tex-types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect-routes.js","sourceRoot":"","sources":["../../src/lib/inspect-routes.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAwC;AACxC,0DAA4B;AAC5B,sDAAwB;
|
|
1
|
+
{"version":3,"file":"inspect-routes.js","sourceRoot":"","sources":["../../src/lib/inspect-routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,39 +1,41 @@
|
|
|
1
1
|
import type { Handler } from '../types';
|
|
2
|
+
import type { ExisRequest } from '../server/request';
|
|
3
|
+
export interface IdempotencyRecord {
|
|
4
|
+
statusCode: number;
|
|
5
|
+
headers: Record<string, string>;
|
|
6
|
+
body: any;
|
|
7
|
+
/** SHA-256 of the request body the response belongs to */
|
|
8
|
+
fingerprint?: string;
|
|
9
|
+
}
|
|
2
10
|
export interface IdempotencyStore {
|
|
3
|
-
get(key: string): Promise<
|
|
4
|
-
|
|
5
|
-
headers: Record<string, string>;
|
|
6
|
-
body: any;
|
|
7
|
-
} | null>;
|
|
8
|
-
set(key: string, data: {
|
|
9
|
-
statusCode: number;
|
|
10
|
-
headers: Record<string, string>;
|
|
11
|
-
body: any;
|
|
12
|
-
}, ttlMs?: number): Promise<void>;
|
|
11
|
+
get(key: string): Promise<IdempotencyRecord | null>;
|
|
12
|
+
set(key: string, data: IdempotencyRecord, ttlMs?: number): Promise<void>;
|
|
13
13
|
}
|
|
14
14
|
export declare class MemoryIdempotencyStore implements IdempotencyStore {
|
|
15
15
|
private cache;
|
|
16
|
-
get(key: string): Promise<
|
|
17
|
-
|
|
18
|
-
headers: Record<string, string>;
|
|
19
|
-
body: any;
|
|
20
|
-
} | null>;
|
|
21
|
-
set(key: string, data: {
|
|
22
|
-
statusCode: number;
|
|
23
|
-
headers: Record<string, string>;
|
|
24
|
-
body: any;
|
|
25
|
-
}, ttlMs?: number): Promise<void>;
|
|
16
|
+
get(key: string): Promise<IdempotencyRecord | null>;
|
|
17
|
+
set(key: string, data: IdempotencyRecord, ttlMs?: number): Promise<void>;
|
|
26
18
|
}
|
|
27
19
|
export interface IdempotentOptions {
|
|
28
20
|
store?: IdempotencyStore;
|
|
29
21
|
headerName?: string;
|
|
30
22
|
/** Time-to-live in milliseconds for cached idempotent responses. Default: 86400000 (24h) */
|
|
31
23
|
ttlMs?: number;
|
|
24
|
+
/**
|
|
25
|
+
* Who a key belongs to. Keys are only shared between requests with the
|
|
26
|
+
* same scope, so one client can never receive another client's response.
|
|
27
|
+
* Default: `req.user.id` (or `sub`), and one shared scope for anonymous requests.
|
|
28
|
+
*/
|
|
29
|
+
scope?: (req: ExisRequest<any, any, any>) => string | undefined;
|
|
32
30
|
}
|
|
33
31
|
/**
|
|
34
|
-
* Idempotency
|
|
35
|
-
*
|
|
36
|
-
*
|
|
32
|
+
* Idempotency middleware (IETF `Idempotency-Key` draft).
|
|
33
|
+
*
|
|
34
|
+
* - A repeated request with the same key, user, method, path and body gets
|
|
35
|
+
* the first response again; the handler does not run twice.
|
|
36
|
+
* - The same key with a **different body** is refused with `422`.
|
|
37
|
+
* - A repeat that arrives while the first request is still running gets `409`.
|
|
38
|
+
* - Only successful (2xx/3xx) responses are stored, so a failed request can be retried.
|
|
37
39
|
*/
|
|
38
40
|
export declare function idempotent(options?: IdempotentOptions): Handler;
|
|
39
41
|
/** @deprecated Use `idempotent` (camelCase) instead */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idempotency.d.ts","sourceRoot":"","sources":["../../src/middleware/idempotency.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"idempotency.d.ts","sourceRoot":"","sources":["../../src/middleware/idempotency.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAIpD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,IAAI,EAAE,GAAG,CAAA;IACT,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAA;IACnD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACzE;AAED,qBAAa,sBAAuB,YAAW,gBAAgB;IAE7D,OAAO,CAAC,KAAK,CAAyC;IAEhD,GAAG,CAAC,GAAG,EAAE,MAAM;IAIf,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,SAAW;CAGjE;AAID,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,gBAAgB,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,4FAA4F;IAC5F,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,MAAM,GAAG,SAAS,CAAA;CAChE;AAQD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CA4GnE;AAED,uDAAuD;AACvD,eAAO,MAAM,UAAU,mBAAa,CAAA"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.Idempotent = exports.MemoryIdempotencyStore = void 0;
|
|
4
7
|
exports.idempotent = idempotent;
|
|
8
|
+
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
9
|
+
const errors_1 = require("../error/errors");
|
|
5
10
|
const ttl_cache_1 = require("../utils/ttl-cache");
|
|
6
11
|
class MemoryIdempotencyStore {
|
|
7
12
|
constructor() {
|
|
@@ -17,61 +22,91 @@ class MemoryIdempotencyStore {
|
|
|
17
22
|
}
|
|
18
23
|
exports.MemoryIdempotencyStore = MemoryIdempotencyStore;
|
|
19
24
|
const defaultStore = new MemoryIdempotencyStore();
|
|
25
|
+
function defaultScope(req) {
|
|
26
|
+
const user = req.user;
|
|
27
|
+
const id = user?.id ?? user?.sub ?? user?.userId;
|
|
28
|
+
return id === undefined || id === null ? undefined : String(id);
|
|
29
|
+
}
|
|
20
30
|
/**
|
|
21
|
-
* Idempotency
|
|
22
|
-
*
|
|
23
|
-
*
|
|
31
|
+
* Idempotency middleware (IETF `Idempotency-Key` draft).
|
|
32
|
+
*
|
|
33
|
+
* - A repeated request with the same key, user, method, path and body gets
|
|
34
|
+
* the first response again; the handler does not run twice.
|
|
35
|
+
* - The same key with a **different body** is refused with `422`.
|
|
36
|
+
* - A repeat that arrives while the first request is still running gets `409`.
|
|
37
|
+
* - Only successful (2xx/3xx) responses are stored, so a failed request can be retried.
|
|
24
38
|
*/
|
|
25
39
|
function idempotent(options = {}) {
|
|
26
40
|
const store = options.store || defaultStore;
|
|
27
41
|
const headerName = (options.headerName || 'Idempotency-Key').toLowerCase();
|
|
28
42
|
const ttlMs = options.ttlMs ?? 86400000; // 24 hours
|
|
43
|
+
const scopeOf = options.scope || defaultScope;
|
|
44
|
+
// Requests in progress in this process
|
|
45
|
+
const inFlight = new Set();
|
|
29
46
|
return async (req, res, next) => {
|
|
30
47
|
const key = req.header(headerName);
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
//
|
|
36
|
-
const
|
|
48
|
+
if (!key)
|
|
49
|
+
return next();
|
|
50
|
+
const cacheKey = [scopeOf(req) ?? '', req.method, req.path, key].join('\u0000');
|
|
51
|
+
// Multipart bodies are streamed to the upload parser and cannot be read
|
|
52
|
+
// twice, so they are matched on key alone
|
|
53
|
+
const contentType = req.header('content-type') || '';
|
|
54
|
+
const fingerprint = contentType.includes('multipart/form-data')
|
|
55
|
+
? undefined
|
|
56
|
+
: node_crypto_1.default
|
|
57
|
+
.createHash('sha256')
|
|
58
|
+
.update(await req.text())
|
|
59
|
+
.digest('base64url');
|
|
60
|
+
const cached = await store.get(cacheKey);
|
|
37
61
|
if (cached) {
|
|
62
|
+
if (cached.fingerprint !== undefined &&
|
|
63
|
+
fingerprint !== undefined &&
|
|
64
|
+
cached.fingerprint !== fingerprint) {
|
|
65
|
+
return next(new errors_1.HttpError('Idempotency-Key was already used with a different request body', 422, 'IDEMPOTENCY_KEY_REUSED'));
|
|
66
|
+
}
|
|
38
67
|
res.status(cached.statusCode);
|
|
39
68
|
for (const [k, v] of Object.entries(cached.headers)) {
|
|
40
69
|
res.setHeader(k, v);
|
|
41
70
|
}
|
|
71
|
+
res.setHeader('Idempotent-Replayed', 'true');
|
|
72
|
+
if (typeof cached.body === 'string' || Buffer.isBuffer(cached.body)) {
|
|
73
|
+
return res.send(cached.body);
|
|
74
|
+
}
|
|
42
75
|
return res.json(cached.body);
|
|
43
76
|
}
|
|
44
|
-
|
|
77
|
+
if (inFlight.has(cacheKey)) {
|
|
78
|
+
return next(new errors_1.HttpError('A request with this Idempotency-Key is still being processed', 409, 'IDEMPOTENCY_IN_PROGRESS'));
|
|
79
|
+
}
|
|
80
|
+
inFlight.add(cacheKey);
|
|
81
|
+
const release = () => inFlight.delete(cacheKey);
|
|
82
|
+
res.raw.once('close', release);
|
|
83
|
+
res.raw.once('finish', release);
|
|
84
|
+
const save = (body) => {
|
|
85
|
+
if (res.statusCode < 200 || res.statusCode >= 400)
|
|
86
|
+
return;
|
|
87
|
+
const contentTypeOut = res.getHeader('Content-Type');
|
|
88
|
+
store
|
|
89
|
+
.set(cacheKey, {
|
|
90
|
+
statusCode: res.statusCode,
|
|
91
|
+
headers: contentTypeOut
|
|
92
|
+
? { 'content-type': String(contentTypeOut) }
|
|
93
|
+
: {},
|
|
94
|
+
body,
|
|
95
|
+
fingerprint,
|
|
96
|
+
}, ttlMs)
|
|
97
|
+
.catch((err) => req.log?.error?.({ err }, '[exis] Failed to store idempotent response'));
|
|
98
|
+
};
|
|
45
99
|
const originalJson = res.json.bind(res);
|
|
46
100
|
const originalSend = res.send.bind(res);
|
|
47
|
-
let interceptedBody = undefined;
|
|
48
|
-
const cacheResponse = () => {
|
|
49
|
-
if ((res.statusCode >= 200 && res.statusCode < 400) ||
|
|
50
|
-
res.statusCode === undefined) {
|
|
51
|
-
if (interceptedBody !== undefined) {
|
|
52
|
-
store
|
|
53
|
-
.set(key, {
|
|
54
|
-
statusCode: res.statusCode || 200,
|
|
55
|
-
headers: { 'content-type': 'application/json; charset=utf-8' },
|
|
56
|
-
body: interceptedBody,
|
|
57
|
-
}, ttlMs)
|
|
58
|
-
.catch(console.error);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
// Override json
|
|
63
101
|
res.json = (body) => {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
cacheResponse();
|
|
67
|
-
return ret;
|
|
102
|
+
originalJson(body);
|
|
103
|
+
save(body);
|
|
68
104
|
};
|
|
69
|
-
// Override send
|
|
70
105
|
res.send = (body) => {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
106
|
+
originalSend(body);
|
|
107
|
+
// send() hands objects to json(), which already saved them
|
|
108
|
+
if (typeof body === 'string' || Buffer.isBuffer(body))
|
|
109
|
+
save(body);
|
|
75
110
|
};
|
|
76
111
|
next();
|
|
77
112
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idempotency.js","sourceRoot":"","sources":["../../src/middleware/idempotency.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"idempotency.js","sourceRoot":"","sources":["../../src/middleware/idempotency.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACV,YAAY,EACZ,MAAM,EACN,OAAO,EACP,QAAQ,EACT,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,SAAS,EAEV,MAAM,kBAAkB,CAAA;AAOzB,wBAAgB,IAAI,CAAC,MAAM,GAAE,UAAe,GAAG,OAAO,CAiMrD;AAUD,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI,CAoBjE;AAED,wBAAgB,SAAS,IAAI,OAAO,CAKnC;AAID,wBAAgB,aAAa,CAC3B,cAAc,GAAE,MAAM,GAAG,YAAiB,GACzC,OAAO,CA0ET;AAID,eAAO,MAAM,QAAQ,EAAE,OAStB,CAAA;AAID,OAAO,EAAE,WAAW,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,EACL,MAAM,EACN,IAAI,EACJ,OAAO,EACP,GAAG,EACH,aAAa,EACb,UAAU,EACV,qBAAqB,EACrB,WAAW,EACX,sBAAsB,GACvB,MAAM,YAAY,CAAA;AACnB,YAAY,EACV,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,kBAAkB,GACnB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,gBAAgB,IAAI,MAAM,EAAE,MAAM,UAAU,CAAA;AACrD,OAAO,EAAE,sBAAsB,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACvE,OAAO,EAAE,kBAAkB,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAClD,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AACnE,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AAEtB,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;CACV,GACL,OAAO,CAiHT;AAID,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAA;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAA;IACtB,MAAM,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAA;CACxB;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACV,YAAY,EACZ,MAAM,EACN,OAAO,EACP,QAAQ,EACT,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,SAAS,EAEV,MAAM,kBAAkB,CAAA;AAOzB,wBAAgB,IAAI,CAAC,MAAM,GAAE,UAAe,GAAG,OAAO,CAiMrD;AAUD,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI,CAoBjE;AAED,wBAAgB,SAAS,IAAI,OAAO,CAKnC;AAID,wBAAgB,aAAa,CAC3B,cAAc,GAAE,MAAM,GAAG,YAAiB,GACzC,OAAO,CA0ET;AAID,eAAO,MAAM,QAAQ,EAAE,OAStB,CAAA;AAID,OAAO,EAAE,WAAW,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,EACL,MAAM,EACN,IAAI,EACJ,OAAO,EACP,GAAG,EACH,aAAa,EACb,UAAU,EACV,qBAAqB,EACrB,WAAW,EACX,sBAAsB,GACvB,MAAM,YAAY,CAAA;AACnB,YAAY,EACV,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,kBAAkB,GACnB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,gBAAgB,IAAI,MAAM,EAAE,MAAM,UAAU,CAAA;AACrD,OAAO,EAAE,sBAAsB,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACvE,OAAO,EAAE,kBAAkB,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAClD,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AACnE,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AAEtB,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;CACV,GACL,OAAO,CAiHT;AAID,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAA;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAA;IACtB,MAAM,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAA;CACxB;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CA+BxD;AAID,wBAAgB,cAAc,IAAI,OAAO,CAKxC;AAED,cAAc,eAAe,CAAA;AAC7B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/middleware/middleware.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/middleware/middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,42 @@ export interface RateLimitOptions {
|
|
|
5
5
|
message?: string;
|
|
6
6
|
statusCode?: number;
|
|
7
7
|
keyGenerator?: (req: Request) => string;
|
|
8
|
+
/**
|
|
9
|
+
* Where hits are counted. The default memory store counts per process, so
|
|
10
|
+
* with several instances (or serverless) each one allows `max`. Pass a
|
|
11
|
+
* shared store (Redis, a database) to enforce one limit across instances.
|
|
12
|
+
*/
|
|
13
|
+
store?: RateLimitStore;
|
|
14
|
+
}
|
|
15
|
+
export interface RateLimitHit {
|
|
16
|
+
/** Hits in the current window, including this one */
|
|
17
|
+
count: number;
|
|
18
|
+
/** When the window ends, in milliseconds since the epoch */
|
|
19
|
+
resetTime: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Counts hits per key in fixed windows.
|
|
23
|
+
*
|
|
24
|
+
* @example Redis (ioredis or node-redis)
|
|
25
|
+
* ```ts
|
|
26
|
+
* const redisStore: RateLimitStore = {
|
|
27
|
+
* async increment(key, windowMs) {
|
|
28
|
+
* const k = `rl:${key}`
|
|
29
|
+
* const [[, count], [, ttl]] = await redis
|
|
30
|
+
* .multi().incr(k).pexpire(k, windowMs, 'NX').pttl(k).exec()
|
|
31
|
+
* return { count, resetTime: Date.now() + Math.max(ttl, 0) }
|
|
32
|
+
* },
|
|
33
|
+
* }
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export interface RateLimitStore {
|
|
37
|
+
increment(key: string, windowMs: number): RateLimitHit | Promise<RateLimitHit>;
|
|
38
|
+
}
|
|
39
|
+
/** Per-process store; idle keys are dropped once their window ends. */
|
|
40
|
+
export declare class MemoryRateLimitStore implements RateLimitStore {
|
|
41
|
+
private hits;
|
|
42
|
+
private sweep?;
|
|
43
|
+
increment(key: string, windowMs: number): RateLimitHit;
|
|
8
44
|
}
|
|
9
45
|
export declare function rateLimit(options?: RateLimitOptions): Handler;
|
|
10
46
|
//# sourceMappingURL=rate-limit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../../src/middleware/rate-limit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAA0B,OAAO,EAAE,MAAM,UAAU,CAAA;AAGxE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../../src/middleware/rate-limit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAA0B,OAAO,EAAE,MAAM,UAAU,CAAA;AAGxE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAA;IACvC;;;;OAIG;IACH,KAAK,CAAC,EAAE,cAAc,CAAA;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAA;IACb,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;CAC/E;AAED,uEAAuE;AACvE,qBAAa,oBAAqB,YAAW,cAAc;IACzD,OAAO,CAAC,IAAI,CAAkC;IAC9C,OAAO,CAAC,KAAK,CAAC,CAAgB;IAE9B,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY;CAmBvD;AAED,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CA4DjE"}
|
|
@@ -1,7 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MemoryRateLimitStore = void 0;
|
|
3
4
|
exports.rateLimit = rateLimit;
|
|
4
5
|
const errors_1 = require("../error/errors");
|
|
6
|
+
/** Per-process store; idle keys are dropped once their window ends. */
|
|
7
|
+
class MemoryRateLimitStore {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.hits = new Map();
|
|
10
|
+
}
|
|
11
|
+
increment(key, windowMs) {
|
|
12
|
+
if (!this.sweep) {
|
|
13
|
+
this.sweep = setInterval(() => {
|
|
14
|
+
const now = Date.now();
|
|
15
|
+
for (const [k, data] of this.hits) {
|
|
16
|
+
if (data.resetTime <= now)
|
|
17
|
+
this.hits.delete(k);
|
|
18
|
+
}
|
|
19
|
+
}, windowMs);
|
|
20
|
+
this.sweep.unref();
|
|
21
|
+
}
|
|
22
|
+
const now = Date.now();
|
|
23
|
+
let record = this.hits.get(key);
|
|
24
|
+
if (!record || record.resetTime <= now) {
|
|
25
|
+
record = { count: 0, resetTime: now + windowMs };
|
|
26
|
+
this.hits.set(key, record);
|
|
27
|
+
}
|
|
28
|
+
record.count += 1;
|
|
29
|
+
return { count: record.count, resetTime: record.resetTime };
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.MemoryRateLimitStore = MemoryRateLimitStore;
|
|
5
33
|
function rateLimit(options = {}) {
|
|
6
34
|
const windowMs = options.windowMs || 60000; // 1 minute
|
|
7
35
|
const max = options.max || 100;
|
|
@@ -14,27 +42,12 @@ function rateLimit(options = {}) {
|
|
|
14
42
|
// If the app is behind a reverse proxy, the user should configure the proxy settings on the app instance.
|
|
15
43
|
return req.ip || 'unknown';
|
|
16
44
|
});
|
|
17
|
-
const
|
|
18
|
-
// Drop expired windows so idle keys do not accumulate
|
|
19
|
-
const sweepInterval = setInterval(() => {
|
|
20
|
-
const now = Date.now();
|
|
21
|
-
for (const [key, data] of hits.entries()) {
|
|
22
|
-
if (data.resetTime <= now) {
|
|
23
|
-
hits.delete(key);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}, windowMs);
|
|
27
|
-
sweepInterval.unref();
|
|
45
|
+
const store = options.store ?? new MemoryRateLimitStore();
|
|
28
46
|
return async (req, res, next) => {
|
|
29
47
|
try {
|
|
30
48
|
const key = keyGenerator(req);
|
|
31
49
|
const now = Date.now();
|
|
32
|
-
|
|
33
|
-
if (!record || record.resetTime <= now) {
|
|
34
|
-
record = { count: 0, resetTime: now + windowMs };
|
|
35
|
-
hits.set(key, record);
|
|
36
|
-
}
|
|
37
|
-
record.count += 1;
|
|
50
|
+
const record = await store.increment(key, windowMs);
|
|
38
51
|
const currentHits = record.count;
|
|
39
52
|
// Report when this key's window actually ends, not a full window from now
|
|
40
53
|
const resetSeconds = Math.max(1, Math.ceil((record.resetTime - now) / 1000));
|
|
@@ -53,8 +66,9 @@ function rateLimit(options = {}) {
|
|
|
53
66
|
}
|
|
54
67
|
next();
|
|
55
68
|
}
|
|
56
|
-
catch {
|
|
57
|
-
//
|
|
69
|
+
catch (err) {
|
|
70
|
+
// A store outage must not take the API down: let the request through
|
|
71
|
+
req.log?.warn?.({ err }, '[exis] Rate limit store failed; request allowed');
|
|
58
72
|
next();
|
|
59
73
|
}
|
|
60
74
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../src/middleware/rate-limit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../src/middleware/rate-limit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/middleware/security.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAgB,MAAM,UAAU,CAAA;AAKxE,MAAM,WAAW,aAAa;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,IAAI,CAAC,EAAE,OAAO,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,OAAO,CAAA;KAAE,CAAA;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,CAAC,EAAE,OAAO,GAAG;QAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CAAA;KAAE,CAAA;CACzD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/middleware/security.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,10 +49,12 @@ function helmet(options = {}) {
|
|
|
49
49
|
: 'DENY';
|
|
50
50
|
staticHeaders['X-Frame-Options'] = action;
|
|
51
51
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
// Not in staticHeaders: a policy set earlier (another helmet(), a route)
|
|
53
|
+
// is kept rather than overwritten
|
|
54
|
+
const staticCsp = options.contentSecurityPolicy &&
|
|
55
|
+
!options.contentSecurityPolicy.includes('{nonce}')
|
|
56
|
+
? options.contentSecurityPolicy
|
|
57
|
+
: undefined;
|
|
56
58
|
const hidePoweredBy = options.hidePoweredBy !== false;
|
|
57
59
|
const headerKeys = Object.keys(staticHeaders);
|
|
58
60
|
const headerValues = Object.values(staticHeaders);
|
|
@@ -63,7 +65,8 @@ function helmet(options = {}) {
|
|
|
63
65
|
options.contentSecurityPolicy.includes('{nonce}')) {
|
|
64
66
|
const nonce = node_crypto_1.default.randomBytes(16).toString('base64url');
|
|
65
67
|
req.cspNonce = nonce;
|
|
66
|
-
res.
|
|
68
|
+
if (!res.hasHeader('Content-Security-Policy'))
|
|
69
|
+
res.setHeader('Content-Security-Policy', options.contentSecurityPolicy.replace(/\{nonce\}/g, nonce));
|
|
67
70
|
}
|
|
68
71
|
if (hidePoweredBy) {
|
|
69
72
|
res.removeHeader('X-Powered-By');
|
|
@@ -72,6 +75,9 @@ function helmet(options = {}) {
|
|
|
72
75
|
for (let i = 0; i < headerCount; i++) {
|
|
73
76
|
res.setHeader(headerKeys[i], headerValues[i]);
|
|
74
77
|
}
|
|
78
|
+
if (staticCsp !== undefined && !res.hasHeader('Content-Security-Policy')) {
|
|
79
|
+
res.setHeader('Content-Security-Policy', staticCsp);
|
|
80
|
+
}
|
|
75
81
|
next();
|
|
76
82
|
};
|
|
77
83
|
}
|
|
@@ -195,6 +201,7 @@ function timeout(msOrOptions) {
|
|
|
195
201
|
if (!res.headersSent) {
|
|
196
202
|
res.status(statusCode).json({
|
|
197
203
|
success: false,
|
|
204
|
+
statusCode,
|
|
198
205
|
error: {
|
|
199
206
|
code: 'TIMEOUT',
|
|
200
207
|
message,
|