@nifrajs/middleware 5.0.0 → 5.1.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/admission.d.ts +4 -2
- package/dist/admission.d.ts.map +1 -1
- package/dist/admission.js +17 -5
- package/dist/admission.js.map +1 -1
- package/dist/idempotency.d.ts +10 -2
- package/dist/idempotency.d.ts.map +1 -1
- package/dist/idempotency.js +36 -13
- package/dist/idempotency.js.map +1 -1
- package/dist/jwt.d.ts +7 -0
- package/dist/jwt.d.ts.map +1 -1
- package/dist/jwt.js +20 -2
- package/dist/jwt.js.map +1 -1
- package/dist/openapi.d.ts +16 -4
- package/dist/openapi.d.ts.map +1 -1
- package/dist/openapi.js +20 -7
- package/dist/openapi.js.map +1 -1
- package/package.json +3 -3
- package/src/admission.ts +15 -5
- package/src/idempotency.ts +47 -13
- package/src/jwt.ts +37 -7
- package/src/openapi.ts +39 -8
package/dist/admission.d.ts
CHANGED
|
@@ -81,8 +81,10 @@ export type LoopDelayMonitor = (resolutionMs: number) => LoopDelayHistogram | un
|
|
|
81
81
|
/**
|
|
82
82
|
* Event-loop-lag sampler. By default it measures timer drift using only Web/JS runtime primitives, so
|
|
83
83
|
* it works under Node ESM, Bun, Deno, and workers without a hidden CommonJS `require` fallback. An
|
|
84
|
-
* injected histogram remains available for deterministic tests or a runtime-native monitor.
|
|
85
|
-
* returns
|
|
84
|
+
* injected histogram remains available for deterministic tests or a runtime-native monitor. A read
|
|
85
|
+
* returns the mean lag of the samples taken since the previous read and starts a new window; a read
|
|
86
|
+
* with no new sample since then returns the same value again, so every request that arrives between
|
|
87
|
+
* two samples of a lagging loop sees the lag.
|
|
86
88
|
*/
|
|
87
89
|
export declare function createEventLoopLagSampler(resolutionMs?: number, monitor?: LoopDelayMonitor): () => number;
|
|
88
90
|
/**
|
package/dist/admission.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admission.d.ts","sourceRoot":"","sources":["../src/admission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAqB,MAAM,sBAAsB,CAAA;AAElF;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,eAAe,GAAG,QAAQ,GAAG,WAAW,CAAA;AAE3F,oGAAoG;AACpG,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,CAC5B,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,iBAAiB,KACxB;IAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAA;AAEvE,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,sGAAsG;IACtG,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,iGAAiG;IACjG,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,gFAAgF;IAChF,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,8FAA8F;IAC9F,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IACnC,qEAAqE;IACrE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IACnC;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,MAAM,CAAA;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAA;IACjC,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,KAAK;QAAE,MAAM,IAAI,IAAI,CAAA;KAAE,CAAA;CACvE;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;IACpE,uEAAuE;IACvE,QAAQ,IAAI,iBAAiB,CAAA;CAC9B;AAaD,gFAAgF;AAChF,MAAM,WAAW,kBAAkB;IACjC,MAAM,IAAI,IAAI,CAAA;IACd,KAAK,IAAI,IAAI,CAAA;IACb,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,kBAAkB,GAAG,SAAS,CAAA;AAKvF
|
|
1
|
+
{"version":3,"file":"admission.d.ts","sourceRoot":"","sources":["../src/admission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAqB,MAAM,sBAAsB,CAAA;AAElF;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,eAAe,GAAG,QAAQ,GAAG,WAAW,CAAA;AAE3F,oGAAoG;AACpG,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,CAC5B,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,iBAAiB,KACxB;IAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAA;AAEvE,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,sGAAsG;IACtG,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,iGAAiG;IACjG,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,gFAAgF;IAChF,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,8FAA8F;IAC9F,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IACnC,qEAAqE;IACrE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IACnC;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,MAAM,CAAA;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAA;IACjC,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,KAAK;QAAE,MAAM,IAAI,IAAI,CAAA;KAAE,CAAA;CACvE;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;IACpE,uEAAuE;IACvE,QAAQ,IAAI,iBAAiB,CAAA;CAC9B;AAaD,gFAAgF;AAChF,MAAM,WAAW,kBAAkB;IACjC,MAAM,IAAI,IAAI,CAAA;IACd,KAAK,IAAI,IAAI,CAAA;IACb,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,kBAAkB,GAAG,SAAS,CAAA;AAKvF;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,SAAK,EACjB,OAAO,CAAC,EAAE,gBAAgB,GACzB,MAAM,MAAM,CA8Cd;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,gBAAgB,GAAG,yBAAyB,CA8K9F"}
|
package/dist/admission.js
CHANGED
|
@@ -4,8 +4,10 @@ const NO_LAG = () => 0;
|
|
|
4
4
|
/**
|
|
5
5
|
* Event-loop-lag sampler. By default it measures timer drift using only Web/JS runtime primitives, so
|
|
6
6
|
* it works under Node ESM, Bun, Deno, and workers without a hidden CommonJS `require` fallback. An
|
|
7
|
-
* injected histogram remains available for deterministic tests or a runtime-native monitor.
|
|
8
|
-
* returns
|
|
7
|
+
* injected histogram remains available for deterministic tests or a runtime-native monitor. A read
|
|
8
|
+
* returns the mean lag of the samples taken since the previous read and starts a new window; a read
|
|
9
|
+
* with no new sample since then returns the same value again, so every request that arrives between
|
|
10
|
+
* two samples of a lagging loop sees the lag.
|
|
9
11
|
*/
|
|
10
12
|
export function createEventLoopLagSampler(resolutionMs = 20, monitor) {
|
|
11
13
|
if (!Number.isFinite(resolutionMs) || resolutionMs <= 0) {
|
|
@@ -23,11 +25,16 @@ export function createEventLoopLagSampler(resolutionMs = 20, monitor) {
|
|
|
23
25
|
expected = now + resolutionMs;
|
|
24
26
|
}, resolutionMs);
|
|
25
27
|
timer.unref?.();
|
|
28
|
+
let latest = 0;
|
|
26
29
|
return () => {
|
|
27
|
-
|
|
30
|
+
// An empty window is not a healthy loop: a burst of requests reads between two ticks.
|
|
31
|
+
if (samples === 0)
|
|
32
|
+
return latest;
|
|
33
|
+
const mean = totalLagMs / samples;
|
|
28
34
|
totalLagMs = 0;
|
|
29
35
|
samples = 0;
|
|
30
|
-
|
|
36
|
+
latest = Number.isFinite(mean) ? mean : 0;
|
|
37
|
+
return latest;
|
|
31
38
|
};
|
|
32
39
|
}
|
|
33
40
|
let histogram;
|
|
@@ -40,10 +47,15 @@ export function createEventLoopLagSampler(resolutionMs = 20, monitor) {
|
|
|
40
47
|
if (histogram === undefined)
|
|
41
48
|
return NO_LAG;
|
|
42
49
|
histogram.enable();
|
|
50
|
+
let latest = 0;
|
|
43
51
|
return () => {
|
|
44
52
|
const meanNs = histogram.mean;
|
|
53
|
+
// A histogram reads NaN until it records a sample after a reset: the window is still open.
|
|
54
|
+
if (!Number.isFinite(meanNs))
|
|
55
|
+
return latest;
|
|
45
56
|
histogram.reset();
|
|
46
|
-
|
|
57
|
+
latest = Math.max(0, meanNs / 1e6 - resolutionMs);
|
|
58
|
+
return latest;
|
|
47
59
|
};
|
|
48
60
|
}
|
|
49
61
|
/**
|
package/dist/admission.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admission.js","sourceRoot":"","sources":["../src/admission.ts"],"names":[],"mappings":"AAoFA,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAA;AAe1E,gGAAgG;AAChG,MAAM,MAAM,GAAiB,GAAG,EAAE,CAAC,CAAC,CAAA;AAEpC
|
|
1
|
+
{"version":3,"file":"admission.js","sourceRoot":"","sources":["../src/admission.ts"],"names":[],"mappings":"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"}
|
package/dist/idempotency.d.ts
CHANGED
|
@@ -2,8 +2,10 @@ import { type Middleware } from "@nifrajs/core/server";
|
|
|
2
2
|
/**
|
|
3
3
|
* Idempotency keys for unsafe requests - a client retrying a `POST` (dropped connection, impatient
|
|
4
4
|
* tap) with the same `Idempotency-Key` gets the **first** response replayed instead of the side effect
|
|
5
|
-
* running twice (double-charge, double-publish).
|
|
6
|
-
*
|
|
5
|
+
* running twice (double-charge, double-publish). The key is claimed in `onRequest`, so an in-flight
|
|
6
|
+
* collision short-circuits before any mutation; a replay waits for `beforeHandle`, so a credential
|
|
7
|
+
* revoked since the first request gets the route's current auth answer, not the stored response.
|
|
8
|
+
* That needs the route declared after `.use(idempotency())` - `beforeHandle` is order-scoped.
|
|
7
9
|
*
|
|
8
10
|
* Pair it with a DB uniqueness constraint - this stops the *retry*, the constraint is the source of
|
|
9
11
|
* truth for genuinely-concurrent distinct requests. Production MUST use a shared {@link IdempotencyStore}
|
|
@@ -16,6 +18,12 @@ export interface IdempotencyRecord {
|
|
|
16
18
|
readonly headers: ReadonlyArray<readonly [string, string]>;
|
|
17
19
|
/** Response body, base64-encoded. */
|
|
18
20
|
readonly body: string;
|
|
21
|
+
/**
|
|
22
|
+
* The response came from a route this middleware's `beforeHandle` covers, so a retry is replayed
|
|
23
|
+
* from there - after the route's authentication, validation and earlier guards accept it again. A
|
|
24
|
+
* record without it (a route declared before `.use(idempotency())`) is replayed in `onRequest`.
|
|
25
|
+
*/
|
|
26
|
+
readonly recheck?: boolean;
|
|
19
27
|
}
|
|
20
28
|
export type IdempotencyClaim = {
|
|
21
29
|
readonly state: "new";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idempotency.d.ts","sourceRoot":"","sources":["../src/idempotency.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,UAAU,EAEhB,MAAM,sBAAsB,CAAA;AAE7B
|
|
1
|
+
{"version":3,"file":"idempotency.d.ts","sourceRoot":"","sources":["../src/idempotency.ts"],"names":[],"mappings":"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"}
|
package/dist/idempotency.js
CHANGED
|
@@ -220,6 +220,17 @@ function replay(record) {
|
|
|
220
220
|
const body = bodyFor(fromBase64(record.body));
|
|
221
221
|
return new Response(body === null ? null : body.slice(), { status: record.status, headers });
|
|
222
222
|
}
|
|
223
|
+
/** The request `onRequest` recorded in `map`, walking back past a later hook's replacement of it
|
|
224
|
+
* (methodOverride, a transport codec). */
|
|
225
|
+
function recordedRequest(map, req) {
|
|
226
|
+
for (let current = req; current !== undefined;) {
|
|
227
|
+
const found = map.get(current);
|
|
228
|
+
if (found !== undefined)
|
|
229
|
+
return [current, found];
|
|
230
|
+
current = replacedRequestOf(current);
|
|
231
|
+
}
|
|
232
|
+
return undefined;
|
|
233
|
+
}
|
|
223
234
|
const DEFAULT_PRINCIPAL_HEADERS = ["authorization", "cookie", "x-api-key"];
|
|
224
235
|
/** SHA-256 of the caller's credential headers, base64url. Only the digest ever becomes part of a store
|
|
225
236
|
* key: a raw `Authorization` value used as a key would be printed by every Redis `KEYS` dump, slow-log
|
|
@@ -286,6 +297,9 @@ export function idempotency(options) {
|
|
|
286
297
|
? (req) => defaultIdempotencyKey(req, header, principalHeaders)
|
|
287
298
|
: (req) => custom(req, header);
|
|
288
299
|
const claimed = new WeakMap();
|
|
300
|
+
// Replays held for `beforeHandle`, and fresh claims whose route `beforeHandle` reached.
|
|
301
|
+
const deferred = new WeakMap();
|
|
302
|
+
const rechecked = new WeakSet();
|
|
289
303
|
const middleware = {
|
|
290
304
|
name: "idempotency",
|
|
291
305
|
async onRequest(req) {
|
|
@@ -309,8 +323,12 @@ export function idempotency(options) {
|
|
|
309
323
|
headers: { "content-type": "application/json", "retry-after": "1" },
|
|
310
324
|
});
|
|
311
325
|
}
|
|
312
|
-
if (claim.state === "replay")
|
|
313
|
-
|
|
326
|
+
if (claim.state === "replay") {
|
|
327
|
+
if (claim.record.recheck !== true)
|
|
328
|
+
return replay(claim.record);
|
|
329
|
+
deferred.set(req, claim.record);
|
|
330
|
+
return undefined;
|
|
331
|
+
}
|
|
314
332
|
if (claim.state === "in_flight") {
|
|
315
333
|
return new Response(JSON.stringify({ ok: false, error: "idempotency_in_progress" }), {
|
|
316
334
|
status: 409,
|
|
@@ -326,18 +344,23 @@ export function idempotency(options) {
|
|
|
326
344
|
claimed.set(req, { key, reservation: claim.reservation, anonymous });
|
|
327
345
|
return undefined;
|
|
328
346
|
},
|
|
329
|
-
|
|
330
|
-
//
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
claimedReq = replacedRequestOf(claimedReq);
|
|
336
|
-
if (claimedReq !== undefined)
|
|
337
|
-
claim = claimed.get(claimedReq);
|
|
347
|
+
beforeHandle(context) {
|
|
348
|
+
// Authentication and validation have accepted this retry; only now is the stored answer its own.
|
|
349
|
+
const held = recordedRequest(deferred, context.req);
|
|
350
|
+
if (held !== undefined) {
|
|
351
|
+
deferred.delete(held[0]);
|
|
352
|
+
return replay(held[1]);
|
|
338
353
|
}
|
|
339
|
-
|
|
354
|
+
const fresh = recordedRequest(claimed, context.req);
|
|
355
|
+
if (fresh !== undefined)
|
|
356
|
+
rechecked.add(fresh[0]);
|
|
357
|
+
return undefined;
|
|
358
|
+
},
|
|
359
|
+
async onResponse(res, req) {
|
|
360
|
+
const found = recordedRequest(claimed, req);
|
|
361
|
+
if (found === undefined)
|
|
340
362
|
return res; // not a claimed request
|
|
363
|
+
const [claimedReq, claim] = found;
|
|
341
364
|
claimed.delete(claimedReq);
|
|
342
365
|
if (!shouldCache(res) ||
|
|
343
366
|
(claim.anonymous && (isAuthenticatedRequest(req) || isAuthenticatedRequest(claimedReq)))) {
|
|
@@ -359,7 +382,7 @@ export function idempotency(options) {
|
|
|
359
382
|
}
|
|
360
383
|
const bytes = captured.bytes;
|
|
361
384
|
const headers = [...captured.response.headers].filter(([name]) => name !== "set-cookie");
|
|
362
|
-
await store.complete(claim.key, claim.reservation, { status: res.status, headers, body: toBase64(bytes) }, ttlMs);
|
|
385
|
+
await store.complete(claim.key, claim.reservation, { status: res.status, headers, body: toBase64(bytes), recheck: rechecked.has(claimedReq) }, ttlMs);
|
|
363
386
|
return captured.response;
|
|
364
387
|
},
|
|
365
388
|
};
|
package/dist/idempotency.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idempotency.js","sourceRoot":"","sources":["../src/idempotency.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"idempotency.js","sourceRoot":"","sources":["../src/idempotency.ts"],"names":[],"mappings":"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"}
|
package/dist/jwt.d.ts
CHANGED
|
@@ -81,6 +81,13 @@ export interface JwksOptions {
|
|
|
81
81
|
* Default 30 s.
|
|
82
82
|
*/
|
|
83
83
|
readonly cooldownMs?: number;
|
|
84
|
+
/**
|
|
85
|
+
* Least time (ms) between fetches after one that failed or returned no keys. Inside it a request
|
|
86
|
+
* that needs the set gets that outcome again at once (the same error, or no key) instead of
|
|
87
|
+
* waiting up to `timeoutMs` on a fetch of its own, so an identity provider outage does not hold
|
|
88
|
+
* every request. Default 5 s; `0` fetches again for every such request.
|
|
89
|
+
*/
|
|
90
|
+
readonly failureCooldownMs?: number;
|
|
84
91
|
}
|
|
85
92
|
export declare function verifyJwt<C extends JwtClaims = JwtClaims>(token: string, options: VerifyJwtOptions): Promise<VerifiedJwt<C>>;
|
|
86
93
|
export declare function tryVerifyJwt<C extends JwtClaims = JwtClaims>(token: string, options: VerifyJwtOptions): Promise<VerifyJwtResult<C>>;
|
package/dist/jwt.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../src/jwt.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../src/jwt.ts"],"names":[],"mappings":"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"}
|
package/dist/jwt.js
CHANGED
|
@@ -304,8 +304,11 @@ export function jwks(options) {
|
|
|
304
304
|
const timeoutMs = options.timeoutMs ?? 5_000;
|
|
305
305
|
const maxBytes = options.maxBytes ?? 65_536;
|
|
306
306
|
const cooldownMs = options.cooldownMs ?? 30_000;
|
|
307
|
+
const failureCooldownMs = options.failureCooldownMs ?? 5_000;
|
|
307
308
|
if (!Number.isFinite(cooldownMs) || cooldownMs < 0)
|
|
308
309
|
throw new Error("jwks: cooldownMs must be non-negative");
|
|
310
|
+
if (!Number.isFinite(failureCooldownMs) || failureCooldownMs < 0)
|
|
311
|
+
throw new Error("jwks: failureCooldownMs must be non-negative");
|
|
309
312
|
if (!Number.isFinite(cacheMs) || cacheMs < 0)
|
|
310
313
|
throw new Error("jwks: cacheMs must be non-negative");
|
|
311
314
|
if (!Number.isFinite(staleMs) || staleMs < 0)
|
|
@@ -319,6 +322,9 @@ export function jwks(options) {
|
|
|
319
322
|
let cachedAt = 0;
|
|
320
323
|
let refreshedAt = Number.NEGATIVE_INFINITY;
|
|
321
324
|
let pending;
|
|
325
|
+
// When the last fetch failed or returned no keys, and its error (none for an empty set).
|
|
326
|
+
let failedAt = Number.NEGATIVE_INFINITY;
|
|
327
|
+
let failure;
|
|
322
328
|
const refresh = () => {
|
|
323
329
|
if (pending === undefined) {
|
|
324
330
|
refreshedAt = Date.now();
|
|
@@ -326,7 +332,13 @@ export function jwks(options) {
|
|
|
326
332
|
.then((keys) => {
|
|
327
333
|
cached = keys;
|
|
328
334
|
cachedAt = Date.now();
|
|
335
|
+
failedAt = keys.length === 0 ? cachedAt : Number.NEGATIVE_INFINITY;
|
|
336
|
+
failure = undefined;
|
|
329
337
|
return keys;
|
|
338
|
+
}, (error) => {
|
|
339
|
+
failedAt = Date.now();
|
|
340
|
+
failure = { error };
|
|
341
|
+
throw error;
|
|
330
342
|
})
|
|
331
343
|
.finally(() => {
|
|
332
344
|
pending = undefined;
|
|
@@ -334,14 +346,19 @@ export function jwks(options) {
|
|
|
334
346
|
}
|
|
335
347
|
return pending;
|
|
336
348
|
};
|
|
349
|
+
const coolingDown = () => pending === undefined && Date.now() - failedAt < failureCooldownMs;
|
|
337
350
|
const load = () => {
|
|
338
351
|
const age = Date.now() - cachedAt;
|
|
339
352
|
if (cached.length > 0 && age < cacheMs)
|
|
340
353
|
return Promise.resolve(cached);
|
|
341
354
|
if (cached.length > 0 && age < cacheMs + staleMs) {
|
|
342
|
-
|
|
355
|
+
if (!coolingDown())
|
|
356
|
+
refresh().catch(() => { });
|
|
343
357
|
return Promise.resolve(cached);
|
|
344
358
|
}
|
|
359
|
+
if (coolingDown()) {
|
|
360
|
+
return failure === undefined ? Promise.resolve(cached) : Promise.reject(failure.error);
|
|
361
|
+
}
|
|
345
362
|
return refresh();
|
|
346
363
|
};
|
|
347
364
|
return async (header) => {
|
|
@@ -354,8 +371,9 @@ export function jwks(options) {
|
|
|
354
371
|
if (found !== undefined)
|
|
355
372
|
return found;
|
|
356
373
|
// A kid the set lacks may be a key the provider just rotated in.
|
|
357
|
-
if (pending === undefined && Date.now() - refreshedAt < cooldownMs)
|
|
374
|
+
if (coolingDown() || (pending === undefined && Date.now() - refreshedAt < cooldownMs)) {
|
|
358
375
|
return undefined;
|
|
376
|
+
}
|
|
359
377
|
try {
|
|
360
378
|
return find(await refresh());
|
|
361
379
|
}
|
package/dist/jwt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.js","sourceRoot":"","sources":["../src/jwt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC7E,OAAO,EAAE,oBAAoB,EAAuB,MAAM,sBAAsB,CAAA;AAChF,OAAO,EACL,eAAe,EACf,WAAW,EACX,SAAS,EAET,gBAAgB,EAChB,SAAS,EAET,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,SAAS,GACV,MAAM,aAAa,CAAA;AA8FpB,MAAM,IAAI,GAA4D;IACpE,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;CACjB,CAAA;AAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;AACpE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;AACnE,MAAM,YAAY,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;AAE9D,SAAS,QAAQ,CAAC,CAAU;IAC1B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AACjE,CAAC;AAED,SAAS,QAAQ,CAAC,OAAe;IAC/B,OAAO,IAAI,KAAK,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAA;AACrC,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe;IACxC,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;IACtC,IAAI,KAAK,KAAK,IAAI;QAAE,MAAM,QAAQ,CAAC,2BAA2B,CAAC,CAAA;IAC/D,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,QAAQ,CAAC,sBAAsB,CAAC,CAAA;IACxC,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAmC;IAC7D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;IACjF,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,CAAA;AAC5B,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAyB,EAAE,IAAY;IACjE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,CAAC,CAAA;IACjC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,MAAM,QAAQ,CAAC,GAAG,IAAI,uBAAuB,CAAC,CAAA;IACxF,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW,EAAE,GAAiB,EAAE,GAAuB;IAChF,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG;QAAE,OAAO,KAAK,CAAA;IAC1D,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,KAAK;QAAE,OAAO,KAAK,CAAA;IAC5D,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAA;IAC9E,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG;QAAE,OAAO,KAAK,CAAA;IAC/E,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,GAAG,KAAK,KAAK,CAAA;IAChD,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,GAAG,KAAK,KAAK,CAAA;IAC/C,OAAO,KAAK,CAAA;AACd,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,GAAuB,EACvB,GAAiB,EACjB,GAAuB;IAEvB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;IACtB,IAAI,GAAG,YAAY,SAAS,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,GAAG,CAAC,SAGrB,CAAA;QACD,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAA;QACtE,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;QAC7D,MAAM,UAAU,GACd,MAAM,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;QAC7F,IACE,GAAG,CAAC,IAAI,KAAK,YAAY;YACzB,SAAS,CAAC,IAAI,KAAK,YAAY;YAC/B,UAAU,KAAK,IAAI;YACnB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAC9B,CAAC;YACD,MAAM,QAAQ,CAAC,sDAAsD,CAAC,CAAA;QACxE,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,YAAY,UAAU,EAAE,CAAC;QACzD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,QAAQ,CAAC,0CAA0C,CAAC,CAAA;QACnF,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE;YAC5F,QAAQ;SACT,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QAAE,MAAM,QAAQ,CAAC,kCAAkC,CAAC,CAAA;IACzF,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAMT,CAAA;IACvB,OAAO,SAAS,CAAC,IAAI,CACnB,MAAM,CAAC,MAAM,EACb,KAAK,EACL,GAAG,EACH,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAChF,KAAK,EACL,CAAC,QAAQ,CAAC,CACX,CAAA;AACH,CAAC;AAED,SAAS,eAAe,CAAC,GAAW,EAAE,OAA0B;IAC9D,IAAI,GAAG,KAAK,MAAM;QAAE,MAAM,QAAQ,CAAC,yBAAyB,CAAC,CAAA;IAC7D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAmB,CAAC;QAAE,MAAM,QAAQ,CAAC,0BAA0B,CAAC,CAAA;IACjF,OAAO,GAAmB,CAAA;AAC5B,CAAC;AAED,SAAS,cAAc,CAAC,QAAgD,EAAE,MAAc;IACtF,OAAO,QAAQ,KAAK,SAAS;QAC3B,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,OAAO,QAAQ,KAAK,QAAQ;YAC5B,CAAC,CAAC,QAAQ,KAAK,MAAM;YACrB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AACjC,CAAC;AAED,SAAS,cAAc,CAAC,MAAiB,EAAE,OAAyB;IAClE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;IAC5D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,MAAM,QAAQ,CAAC,oBAAoB,CAAC,CAAA;IAC/D,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAA;IACpF,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,KAAK,KAAK,CAAA;IAE7D,IAAI,iBAAiB,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ;QAAE,MAAM,QAAQ,CAAC,iBAAiB,CAAC,CAAA;IAC1F,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC;QAChG,MAAM,QAAQ,CAAC,eAAe,CAAC,CAAA;IACjC,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC;QAC/F,MAAM,QAAQ,CAAC,yBAAyB,CAAC,CAAA;IAC3C,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC;QAC/F,MAAM,QAAQ,CAAC,sBAAsB,CAAC,CAAA;IACxC,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACpC,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QAClD,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;YAChE,MAAM,QAAQ,CAAC,iBAAiB,CAAC,CAAA;QACnC,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS;YAAE,MAAM,QAAQ,CAAC,kBAAkB,CAAC,CAAA;IAC1F,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAClF,MAAM,QAAQ,CAAC,iBAAiB,CAAC,CAAA;QACnC,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAA;QACtB,MAAM,OAAO,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QAC/E,MAAM,QAAQ,GAAG,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAA;QAC7F,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAAE,MAAM,QAAQ,CAAC,mBAAmB,CAAC,CAAA;IACzF,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,cAAc,IAAI,EAAE,EAAE,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;YAAE,MAAM,QAAQ,CAAC,SAAS,KAAK,cAAc,CAAC,CAAA;IACjF,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,KAAa,EACb,OAAyB;IAEzB,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACtD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAAE,MAAM,QAAQ,CAAC,yBAAyB,CAAC,CAAA;IAEhG,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAA;IAC9C,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAA;IAC9C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,OAAO,SAAS,CAAC,GAAG,KAAK,QAAQ;QAAE,MAAM,QAAQ,CAAC,gBAAgB,CAAC,CAAA;IAC/F,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS;QAAE,MAAM,QAAQ,CAAC,gCAAgC,CAAC,CAAA;IAClF,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,MAAM,QAAQ,CAAC,gBAAgB,CAAC,CAAA;IAE1D,MAAM,MAAM,GAAG,SAAiC,CAAA;IAChD,MAAM,MAAM,GAAG,SAAyB,CAAA;IACxC,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IAEhD,MAAM,QAAQ,GACZ,OAAO,OAAO,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAA;IACrF,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS;QAAE,MAAM,QAAQ,CAAC,eAAe,CAAC,CAAA;IAEhF,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAA;IAC5C,IAAI,SAAS,KAAK,IAAI;QAAE,MAAM,QAAQ,CAAC,4BAA4B,CAAC,CAAA;IACpE,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;IACtD,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CACnC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,EACrE,GAAG,EACH,SAAS,EACT,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CACrC,CAAA;IACD,IAAI,CAAC,EAAE;QAAE,MAAM,QAAQ,CAAC,oBAAoB,CAAC,CAAA;IAC7C,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;AAClC,CAAC;AAED,SAAS,OAAO,CAAC,KAAc;IAC7B,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAA;AACzE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAa,EACb,OAAyB;IAEzB,IAAI,CAAC;QACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,SAAS,CAAI,KAAK,EAAE,OAAO,CAAC,EAAE,CAAA;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAA;IAC7C,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,GAAc,EACd,MAAc,EACd,MAA0B;IAE1B,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAAA;IAC/B,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACzB,IAAI,MAAM,KAAK,eAAe,EAAE,CAAC;YAC/B,OAAO,WAAW,CAAC,WAAW,CAAC,CAAA;QACjC,CAAC;QACD,OAAO,WAAW,CAAC,IAAI,EAAE,IAAI,IAAI,CAAA;IACnC,CAAC;IACD,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAA;AACpF,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,iBAAiB,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAA;AACrD,CAAC;AAED,SAAS,MAAM,CAAC,KAAa;IAC3B,OAAO,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,kBAAkB,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;AACjF,CAAC;AAED,MAAM,UAAU,GAAG,CAAkC,OAAmB;IACtE,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAA;IACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAA;IAC1C,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,eAAe,CAAC,CAAC,WAAW,EAAE,CAAA;IAChE,MAAM,KAAK,GAAG,IAAI,OAAO,EAAc,CAAA;IAEvC,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAC5D,gBAAgB,CACd,GAAG,EACH,KAAK,EACL,QAAQ,EACR,KAAK,EACL,KAAK,EAAE,GAAG,EAAE,EAAE;QACZ,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QAC3D,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QAC/B,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,SAAS,CAAI,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAA;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;YACxE,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC,EACD,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CACpB,CACF,CAAA;IACD,MAAM,YAAY,GAAG,QAAQ;QAC3B,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;YACzB,EAAE,EAAE,eAAe,CAAC,aAAa;YACjC,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,YAAY;SACpB,CAAC,CAAA;IACN,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE;QACjC,MAAM,EAAE,CAAC,OAAgB,EAAY,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI;QAClE,aAAa,EAAE,CAAC,OAAgB,EAAK,EAAE;YACrC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACjC,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM,MAAM,CAAC,KAAK,CAAC,CAAA;YAC7C,OAAO,MAAM,CAAA;QACf,CAAC;KACF,CAAiB,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,GAAuB;IACzC,OAAO,CAAC,MAAM,EAAE,EAAE;QAChB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,YAAY,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,YAAY,SAAS,CAAC,EAAE,CAAC;YAC3F,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAA;QAC9F,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC,CAAA;AACH,CAAC;AAED,SAAS,eAAe,CAAC,GAAQ;IAC/B,MAAM,KAAK,GACT,GAAG,CAAC,QAAQ,KAAK,WAAW;QAC5B,GAAG,CAAC,QAAQ,KAAK,WAAW;QAC5B,GAAG,CAAC,QAAQ,KAAK,KAAK;QACtB,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAA;IAC1B,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;IACxE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,GAAa,EAAE,QAAgB;IAC5D,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAClD,IAAI,QAAQ,KAAK,IAAI,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,QAAQ,EAAE,CAAC;QAC1F,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAC7C,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;IACrB,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,CAAA;IAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;IAC/B,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;IACjC,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,IAAI,GAAG,EAAE,CAAA;IACb,IAAI,CAAC;QACH,SAAS,CAAC;YACR,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;YAC3C,IAAI,IAAI;gBAAE,OAAO,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAA;YACxC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAA;YACzB,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;gBACrB,MAAM,MAAM,CAAC,MAAM,EAAE,CAAA;gBACrB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;YAC7C,CAAC;YACD,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QACjD,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,KAAK,0BAA0B;YAAE,MAAM,GAAG,CAAA;QACjF,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;IAC/C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,OAAuF;IAEvF,MAAM,IAAI,GAAG,IAAI,eAAe,EAAE,CAAA;IAClC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;IAC/D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QACrE,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;QACrE,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;QACzD,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;QAC1F,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAa,CAAA;IACjD,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAoB;IACvC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;IACxC,eAAe,CAAC,GAAG,CAAC,CAAA;IACpB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAA;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAA;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAA;IAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAA;IAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAA;IAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,MAAM,CAAA;IAC/C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;IAC1D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACvD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACvD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IACrD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;IACpD,CAAC;IACD,IAAI,MAAM,GAAsB,EAAE,CAAA;IAClC,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAI,WAAW,GAAG,MAAM,CAAC,iBAAiB,CAAA;IAC1C,IAAI,OAA+C,CAAA;IAEnD,MAAM,OAAO,GAAG,GAA+B,EAAE;QAC/C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACxB,OAAO,GAAG,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;iBAC9D,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBACb,MAAM,GAAG,IAAI,CAAA;gBACb,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;gBACrB,OAAO,IAAI,CAAA;YACb,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE;gBACZ,OAAO,GAAG,SAAS,CAAA;YACrB,CAAC,CAAC,CAAA;QACN,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC,CAAA;IAED,MAAM,IAAI,GAAG,GAA+B,EAAE;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAA;QACjC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,GAAG,OAAO;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACtE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,GAAG,OAAO,GAAG,OAAO,EAAE,CAAC;YACjD,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YACzB,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAChC,CAAC;QACD,OAAO,OAAO,EAAE,CAAA;IAClB,CAAC,CAAA;IAED,OAAO,KAAK,EAAE,MAAM,EAAE,EAAE;QACtB,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAA;QACtB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE;YAAE,OAAO,IAAI,CAAA;QACtD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAmB,CAAA;QACtC,MAAM,IAAI,GAAG,CAAC,IAAuB,EAAsB,EAAE,CAC3D,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACzE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;QAChC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAA;QACrC,iEAAiE;QACjE,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,GAAG,UAAU;YAAE,OAAO,SAAS,CAAA;QACpF,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,MAAM,OAAO,EAAE,CAAC,CAAA;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAA;QAClB,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"jwt.js","sourceRoot":"","sources":["../src/jwt.ts"],"names":[],"mappings":"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"}
|
package/dist/openapi.d.ts
CHANGED
|
@@ -32,8 +32,18 @@ export interface OpenApiUiOptions {
|
|
|
32
32
|
readonly path?: string;
|
|
33
33
|
/** Page title. Defaults to `info.title`. */
|
|
34
34
|
readonly title?: string;
|
|
35
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* The Scalar script URL. Default: `@scalar/api-reference` 1.72.1's standalone build on jsDelivr,
|
|
37
|
+
* pinned by {@link integrity}. Point it at a copy you serve yourself (no third-party origin to
|
|
38
|
+
* allow in a `script-src` policy, nothing to trust but your own deploy).
|
|
39
|
+
*/
|
|
36
40
|
readonly cdn?: string;
|
|
41
|
+
/**
|
|
42
|
+
* The script's Subresource Integrity hash (`sha384-...`), which makes the browser refuse a script
|
|
43
|
+
* whose bytes differ. Default: the default build's hash when `cdn` is unset, none when it is set.
|
|
44
|
+
* Pass the hash of your own copy, or `false` to send none.
|
|
45
|
+
*/
|
|
46
|
+
readonly integrity?: string | false;
|
|
37
47
|
}
|
|
38
48
|
export interface OpenApiOptions {
|
|
39
49
|
/** The OpenAPI version to declare. `"3.2.0"` describes each SSE event with the standard `itemSchema`. */
|
|
@@ -75,9 +85,11 @@ export declare function buildOpenApiDocument(routes: readonly RouteLike[], optio
|
|
|
75
85
|
* **lazy + memoized**: it reads `app.routes()` on the first request, by which point every route is
|
|
76
86
|
* registered - so the plugin's own position in the chain doesn't matter.
|
|
77
87
|
*
|
|
78
|
-
* Pass `ui: true` (or `ui: { path, title, cdn }`) to also serve a Scalar API-reference page
|
|
79
|
-
* `/reference`) that renders the spec.
|
|
80
|
-
*
|
|
88
|
+
* Pass `ui: true` (or `ui: { path, title, cdn, integrity }`) to also serve a Scalar API-reference page
|
|
89
|
+
* (default `/reference`) that renders the spec. By default the page loads an exact Scalar version from
|
|
90
|
+
* jsDelivr with a Subresource Integrity hash, so a changed file is refused rather than run on your
|
|
91
|
+
* origin. Self-host it via `ui.cdn` (with your copy's `ui.integrity`), and allow the script's origin if
|
|
92
|
+
* you ship a `script-src` Content-Security-Policy.
|
|
81
93
|
*
|
|
82
94
|
* ```ts
|
|
83
95
|
* app.use(openapi({ info: { title: "My API", version: "1.0.0" }, ui: true }))
|
package/dist/openapi.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAK9E;uEACuE;AACvE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAGrB,QAAQ,CAAC,MAAM,CAAC,EACZ;QACE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;QACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;QACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;QAC3B,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KACvB,GACD,SAAS,CAAA;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,gFAAgF;AAChF,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAA;AAE7E,uCAAuC;AACvC,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAK9E;uEACuE;AACvE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAGrB,QAAQ,CAAC,MAAM,CAAC,EACZ;QACE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;QACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;QACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;QAC3B,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KACvB,GACD,SAAS,CAAA;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,gFAAgF;AAChF,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAA;AAE7E,uCAAuC;AACvC,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,yGAAyG;IACzG,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;IAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAA;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;IAC3C,6FAA6F;IAC7F,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,UAAU,EAAE,CAAA;IACrC,wHAAwH;IACxH,QAAQ,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IAC5E,mFAAmF;IACnF,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAA;IAClD,uEAAuE;IACvE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,iFAAiF;IACjF,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAA;IACzF;;iCAE6B;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IACvE,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAAA;CACzC;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,OAAO,GAAE,cAAmB,GAC3B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyBzB;AA4CD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,cAAc,CAqCpE"}
|
package/dist/openapi.js
CHANGED
|
@@ -33,7 +33,12 @@ export function buildOpenApiDocument(routes, options = {}) {
|
|
|
33
33
|
...(options.operations !== undefined ? { operations: options.operations } : {}),
|
|
34
34
|
});
|
|
35
35
|
}
|
|
36
|
-
|
|
36
|
+
// An exact version, so the page always loads the bytes SCALAR_INTEGRITY names: a bare package URL
|
|
37
|
+
// follows `latest`, and anyone who can publish to it could run script on the API's own origin.
|
|
38
|
+
const SCALAR_CDN = "https://cdn.jsdelivr.net/npm/@scalar/api-reference@1.72.1/dist/browser/standalone.js";
|
|
39
|
+
// SHA-384 of that file, the same from the npm tarball (checked against its registry integrity) and
|
|
40
|
+
// from jsDelivr. Bump both together.
|
|
41
|
+
const SCALAR_INTEGRITY = "sha384-U11tb2XnKvmwt8RlTvnwUnYgrN+ur4Xyh9htLhjajWNR/Oyl5AX5DEz00qRmlrmK";
|
|
37
42
|
// Named per call, so a second, differently configured instance applies instead of being deduped.
|
|
38
43
|
let instances = 0;
|
|
39
44
|
/**
|
|
@@ -41,9 +46,12 @@ let instances = 0;
|
|
|
41
46
|
* dev-provided config (not request input), but they're still escaped so a stray quote or `<` can't
|
|
42
47
|
* break the markup.
|
|
43
48
|
*/
|
|
44
|
-
function scalarPage(specUrl, title, cdn) {
|
|
49
|
+
function scalarPage(specUrl, title, cdn, integrity) {
|
|
45
50
|
const attr = (s) => s.replace(/&/g, "&").replace(/"/g, """);
|
|
46
51
|
const text = (s) => s.replace(/&/g, "&").replace(/</g, "<");
|
|
52
|
+
// SRI on a cross-origin script needs a CORS fetch; without a hash, a plain fetch keeps a copy
|
|
53
|
+
// served without CORS headers loading.
|
|
54
|
+
const pinned = integrity === undefined ? "" : ` integrity="${attr(integrity)}" crossorigin="anonymous"`;
|
|
47
55
|
return `<!doctype html>
|
|
48
56
|
<html>
|
|
49
57
|
<head>
|
|
@@ -53,7 +61,7 @@ function scalarPage(specUrl, title, cdn) {
|
|
|
53
61
|
</head>
|
|
54
62
|
<body>
|
|
55
63
|
<script id="api-reference" data-url="${attr(specUrl)}"></script>
|
|
56
|
-
<script src="${attr(cdn)}"></script>
|
|
64
|
+
<script src="${attr(cdn)}"${pinned}></script>
|
|
57
65
|
</body>
|
|
58
66
|
</html>`;
|
|
59
67
|
}
|
|
@@ -63,9 +71,11 @@ function scalarPage(specUrl, title, cdn) {
|
|
|
63
71
|
* **lazy + memoized**: it reads `app.routes()` on the first request, by which point every route is
|
|
64
72
|
* registered - so the plugin's own position in the chain doesn't matter.
|
|
65
73
|
*
|
|
66
|
-
* Pass `ui: true` (or `ui: { path, title, cdn }`) to also serve a Scalar API-reference page
|
|
67
|
-
* `/reference`) that renders the spec.
|
|
68
|
-
*
|
|
74
|
+
* Pass `ui: true` (or `ui: { path, title, cdn, integrity }`) to also serve a Scalar API-reference page
|
|
75
|
+
* (default `/reference`) that renders the spec. By default the page loads an exact Scalar version from
|
|
76
|
+
* jsDelivr with a Subresource Integrity hash, so a changed file is refused rather than run on your
|
|
77
|
+
* origin. Self-host it via `ui.cdn` (with your copy's `ui.integrity`), and allow the script's origin if
|
|
78
|
+
* you ship a `script-src` Content-Security-Policy.
|
|
69
79
|
*
|
|
70
80
|
* ```ts
|
|
71
81
|
* app.use(openapi({ info: { title: "My API", version: "1.0.0" }, ui: true }))
|
|
@@ -94,8 +104,11 @@ export function openapi(options = {}) {
|
|
|
94
104
|
if (ui !== undefined && uiPath !== undefined) {
|
|
95
105
|
const title = ui.title ?? options.info?.title ?? "nifra API";
|
|
96
106
|
const cdn = ui.cdn ?? SCALAR_CDN;
|
|
107
|
+
const integrity = ui.integrity === false
|
|
108
|
+
? undefined
|
|
109
|
+
: (ui.integrity ?? (ui.cdn === undefined ? SCALAR_INTEGRITY : undefined));
|
|
97
110
|
app.register("GET", uiPath, undefined, () => {
|
|
98
|
-
uiCached ??= scalarPage(docPath, title, cdn);
|
|
111
|
+
uiCached ??= scalarPage(docPath, title, cdn, integrity);
|
|
99
112
|
return new Response(uiCached, { headers: { "content-type": "text/html; charset=utf-8" } });
|
|
100
113
|
});
|
|
101
114
|
}
|
package/dist/openapi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAuB,MAAM,sBAAsB,CAAA;AAC9E,wGAAwG;AACxG,iGAAiG;AACjG,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nifrajs/middleware",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.1.0",
|
|
4
4
|
"description": "Composable middleware for nifra - auth, CSRF, JWT/JWKS, IP restriction, CORS, body limits, response cache, timing, and operational helpers.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bun",
|
|
@@ -49,10 +49,10 @@
|
|
|
49
49
|
"access": "public"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@nifrajs/schema": "5.
|
|
52
|
+
"@nifrajs/schema": "5.1.0"
|
|
53
53
|
},
|
|
54
54
|
"peerDependencies": {
|
|
55
|
-
"@nifrajs/core": "^5.
|
|
55
|
+
"@nifrajs/core": "^5.1.0"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@nifrajs/core": "workspace:*",
|
package/src/admission.ts
CHANGED
|
@@ -103,8 +103,10 @@ const NO_LAG: () => number = () => 0
|
|
|
103
103
|
/**
|
|
104
104
|
* Event-loop-lag sampler. By default it measures timer drift using only Web/JS runtime primitives, so
|
|
105
105
|
* it works under Node ESM, Bun, Deno, and workers without a hidden CommonJS `require` fallback. An
|
|
106
|
-
* injected histogram remains available for deterministic tests or a runtime-native monitor.
|
|
107
|
-
* returns
|
|
106
|
+
* injected histogram remains available for deterministic tests or a runtime-native monitor. A read
|
|
107
|
+
* returns the mean lag of the samples taken since the previous read and starts a new window; a read
|
|
108
|
+
* with no new sample since then returns the same value again, so every request that arrives between
|
|
109
|
+
* two samples of a lagging loop sees the lag.
|
|
108
110
|
*/
|
|
109
111
|
export function createEventLoopLagSampler(
|
|
110
112
|
resolutionMs = 20,
|
|
@@ -127,11 +129,15 @@ export function createEventLoopLagSampler(
|
|
|
127
129
|
// A metrics sampler must never keep a Node/Bun process alive by itself. Browser/Deno numeric timer
|
|
128
130
|
// handles simply do not expose `unref`.
|
|
129
131
|
;(timer as ReturnType<typeof setInterval> & { unref?: () => void }).unref?.()
|
|
132
|
+
let latest = 0
|
|
130
133
|
return () => {
|
|
131
|
-
|
|
134
|
+
// An empty window is not a healthy loop: a burst of requests reads between two ticks.
|
|
135
|
+
if (samples === 0) return latest
|
|
136
|
+
const mean = totalLagMs / samples
|
|
132
137
|
totalLagMs = 0
|
|
133
138
|
samples = 0
|
|
134
|
-
|
|
139
|
+
latest = Number.isFinite(mean) ? mean : 0
|
|
140
|
+
return latest
|
|
135
141
|
}
|
|
136
142
|
}
|
|
137
143
|
let histogram: LoopDelayHistogram | undefined
|
|
@@ -142,10 +148,14 @@ export function createEventLoopLagSampler(
|
|
|
142
148
|
}
|
|
143
149
|
if (histogram === undefined) return NO_LAG
|
|
144
150
|
histogram.enable()
|
|
151
|
+
let latest = 0
|
|
145
152
|
return () => {
|
|
146
153
|
const meanNs = histogram.mean
|
|
154
|
+
// A histogram reads NaN until it records a sample after a reset: the window is still open.
|
|
155
|
+
if (!Number.isFinite(meanNs)) return latest
|
|
147
156
|
histogram.reset()
|
|
148
|
-
|
|
157
|
+
latest = Math.max(0, meanNs / 1e6 - resolutionMs)
|
|
158
|
+
return latest
|
|
149
159
|
}
|
|
150
160
|
}
|
|
151
161
|
|
package/src/idempotency.ts
CHANGED
|
@@ -9,8 +9,10 @@ import {
|
|
|
9
9
|
/**
|
|
10
10
|
* Idempotency keys for unsafe requests - a client retrying a `POST` (dropped connection, impatient
|
|
11
11
|
* tap) with the same `Idempotency-Key` gets the **first** response replayed instead of the side effect
|
|
12
|
-
* running twice (double-charge, double-publish).
|
|
13
|
-
*
|
|
12
|
+
* running twice (double-charge, double-publish). The key is claimed in `onRequest`, so an in-flight
|
|
13
|
+
* collision short-circuits before any mutation; a replay waits for `beforeHandle`, so a credential
|
|
14
|
+
* revoked since the first request gets the route's current auth answer, not the stored response.
|
|
15
|
+
* That needs the route declared after `.use(idempotency())` - `beforeHandle` is order-scoped.
|
|
14
16
|
*
|
|
15
17
|
* Pair it with a DB uniqueness constraint - this stops the *retry*, the constraint is the source of
|
|
16
18
|
* truth for genuinely-concurrent distinct requests. Production MUST use a shared {@link IdempotencyStore}
|
|
@@ -24,6 +26,12 @@ export interface IdempotencyRecord {
|
|
|
24
26
|
readonly headers: ReadonlyArray<readonly [string, string]>
|
|
25
27
|
/** Response body, base64-encoded. */
|
|
26
28
|
readonly body: string
|
|
29
|
+
/**
|
|
30
|
+
* The response came from a route this middleware's `beforeHandle` covers, so a retry is replayed
|
|
31
|
+
* from there - after the route's authentication, validation and earlier guards accept it again. A
|
|
32
|
+
* record without it (a route declared before `.use(idempotency())`) is replayed in `onRequest`.
|
|
33
|
+
*/
|
|
34
|
+
readonly recheck?: boolean
|
|
27
35
|
}
|
|
28
36
|
|
|
29
37
|
export type IdempotencyClaim =
|
|
@@ -379,6 +387,20 @@ function replay(record: IdempotencyRecord): Response {
|
|
|
379
387
|
return new Response(body === null ? null : body.slice(), { status: record.status, headers })
|
|
380
388
|
}
|
|
381
389
|
|
|
390
|
+
/** The request `onRequest` recorded in `map`, walking back past a later hook's replacement of it
|
|
391
|
+
* (methodOverride, a transport codec). */
|
|
392
|
+
function recordedRequest<T>(
|
|
393
|
+
map: WeakMap<Request, T>,
|
|
394
|
+
req: Request,
|
|
395
|
+
): readonly [Request, T] | undefined {
|
|
396
|
+
for (let current: Request | undefined = req; current !== undefined; ) {
|
|
397
|
+
const found = map.get(current)
|
|
398
|
+
if (found !== undefined) return [current, found]
|
|
399
|
+
current = replacedRequestOf(current)
|
|
400
|
+
}
|
|
401
|
+
return undefined
|
|
402
|
+
}
|
|
403
|
+
|
|
382
404
|
const DEFAULT_PRINCIPAL_HEADERS = ["authorization", "cookie", "x-api-key"] as const
|
|
383
405
|
|
|
384
406
|
/** SHA-256 of the caller's credential headers, base64url. Only the digest ever becomes part of a store
|
|
@@ -459,6 +481,9 @@ export function idempotency(options: IdempotencyOptions): Middleware {
|
|
|
459
481
|
Request,
|
|
460
482
|
{ readonly key: string; readonly reservation: string; readonly anonymous: boolean }
|
|
461
483
|
>()
|
|
484
|
+
// Replays held for `beforeHandle`, and fresh claims whose route `beforeHandle` reached.
|
|
485
|
+
const deferred = new WeakMap<Request, IdempotencyRecord>()
|
|
486
|
+
const rechecked = new WeakSet<Request>()
|
|
462
487
|
|
|
463
488
|
const middleware: Middleware = {
|
|
464
489
|
name: "idempotency",
|
|
@@ -479,7 +504,11 @@ export function idempotency(options: IdempotencyOptions): Middleware {
|
|
|
479
504
|
headers: { "content-type": "application/json", "retry-after": "1" },
|
|
480
505
|
})
|
|
481
506
|
}
|
|
482
|
-
if (claim.state === "replay")
|
|
507
|
+
if (claim.state === "replay") {
|
|
508
|
+
if (claim.record.recheck !== true) return replay(claim.record)
|
|
509
|
+
deferred.set(req, claim.record)
|
|
510
|
+
return undefined
|
|
511
|
+
}
|
|
483
512
|
if (claim.state === "in_flight") {
|
|
484
513
|
return new Response(JSON.stringify({ ok: false, error: "idempotency_in_progress" }), {
|
|
485
514
|
status: 409,
|
|
@@ -495,16 +524,21 @@ export function idempotency(options: IdempotencyOptions): Middleware {
|
|
|
495
524
|
claimed.set(req, { key, reservation: claim.reservation, anonymous })
|
|
496
525
|
return undefined
|
|
497
526
|
},
|
|
498
|
-
|
|
499
|
-
//
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
claimedReq = replacedRequestOf(claimedReq)
|
|
505
|
-
if (claimedReq !== undefined) claim = claimed.get(claimedReq)
|
|
527
|
+
beforeHandle(context) {
|
|
528
|
+
// Authentication and validation have accepted this retry; only now is the stored answer its own.
|
|
529
|
+
const held = recordedRequest(deferred, context.req)
|
|
530
|
+
if (held !== undefined) {
|
|
531
|
+
deferred.delete(held[0])
|
|
532
|
+
return replay(held[1])
|
|
506
533
|
}
|
|
507
|
-
|
|
534
|
+
const fresh = recordedRequest(claimed, context.req)
|
|
535
|
+
if (fresh !== undefined) rechecked.add(fresh[0])
|
|
536
|
+
return undefined
|
|
537
|
+
},
|
|
538
|
+
async onResponse(res, req) {
|
|
539
|
+
const found = recordedRequest(claimed, req)
|
|
540
|
+
if (found === undefined) return res // not a claimed request
|
|
541
|
+
const [claimedReq, claim] = found
|
|
508
542
|
claimed.delete(claimedReq)
|
|
509
543
|
if (
|
|
510
544
|
!shouldCache(res) ||
|
|
@@ -530,7 +564,7 @@ export function idempotency(options: IdempotencyOptions): Middleware {
|
|
|
530
564
|
await store.complete(
|
|
531
565
|
claim.key,
|
|
532
566
|
claim.reservation,
|
|
533
|
-
{ status: res.status, headers, body: toBase64(bytes) },
|
|
567
|
+
{ status: res.status, headers, body: toBase64(bytes), recheck: rechecked.has(claimedReq) },
|
|
534
568
|
ttlMs,
|
|
535
569
|
)
|
|
536
570
|
return captured.response
|
package/src/jwt.ts
CHANGED
|
@@ -104,6 +104,13 @@ export interface JwksOptions {
|
|
|
104
104
|
* Default 30 s.
|
|
105
105
|
*/
|
|
106
106
|
readonly cooldownMs?: number
|
|
107
|
+
/**
|
|
108
|
+
* Least time (ms) between fetches after one that failed or returned no keys. Inside it a request
|
|
109
|
+
* that needs the set gets that outcome again at once (the same error, or no key) instead of
|
|
110
|
+
* waiting up to `timeoutMs` on a fetch of its own, so an identity provider outage does not hold
|
|
111
|
+
* every request. Default 5 s; `0` fetches again for every such request.
|
|
112
|
+
*/
|
|
113
|
+
readonly failureCooldownMs?: number
|
|
107
114
|
}
|
|
108
115
|
|
|
109
116
|
const HASH: Record<JwtAlgorithm, "SHA-256" | "SHA-384" | "SHA-512"> = {
|
|
@@ -450,8 +457,11 @@ export function jwks(options: JwksOptions): JwtKeyResolver {
|
|
|
450
457
|
const timeoutMs = options.timeoutMs ?? 5_000
|
|
451
458
|
const maxBytes = options.maxBytes ?? 65_536
|
|
452
459
|
const cooldownMs = options.cooldownMs ?? 30_000
|
|
460
|
+
const failureCooldownMs = options.failureCooldownMs ?? 5_000
|
|
453
461
|
if (!Number.isFinite(cooldownMs) || cooldownMs < 0)
|
|
454
462
|
throw new Error("jwks: cooldownMs must be non-negative")
|
|
463
|
+
if (!Number.isFinite(failureCooldownMs) || failureCooldownMs < 0)
|
|
464
|
+
throw new Error("jwks: failureCooldownMs must be non-negative")
|
|
455
465
|
if (!Number.isFinite(cacheMs) || cacheMs < 0)
|
|
456
466
|
throw new Error("jwks: cacheMs must be non-negative")
|
|
457
467
|
if (!Number.isFinite(staleMs) || staleMs < 0)
|
|
@@ -465,16 +475,28 @@ export function jwks(options: JwksOptions): JwtKeyResolver {
|
|
|
465
475
|
let cachedAt = 0
|
|
466
476
|
let refreshedAt = Number.NEGATIVE_INFINITY
|
|
467
477
|
let pending: Promise<readonly JwkKey[]> | undefined
|
|
478
|
+
// When the last fetch failed or returned no keys, and its error (none for an empty set).
|
|
479
|
+
let failedAt = Number.NEGATIVE_INFINITY
|
|
480
|
+
let failure: { readonly error: unknown } | undefined
|
|
468
481
|
|
|
469
482
|
const refresh = (): Promise<readonly JwkKey[]> => {
|
|
470
483
|
if (pending === undefined) {
|
|
471
484
|
refreshedAt = Date.now()
|
|
472
485
|
pending = fetchJwks({ url, fetch: fetcher, timeoutMs, maxBytes })
|
|
473
|
-
.then(
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
486
|
+
.then(
|
|
487
|
+
(keys) => {
|
|
488
|
+
cached = keys
|
|
489
|
+
cachedAt = Date.now()
|
|
490
|
+
failedAt = keys.length === 0 ? cachedAt : Number.NEGATIVE_INFINITY
|
|
491
|
+
failure = undefined
|
|
492
|
+
return keys
|
|
493
|
+
},
|
|
494
|
+
(error: unknown) => {
|
|
495
|
+
failedAt = Date.now()
|
|
496
|
+
failure = { error }
|
|
497
|
+
throw error
|
|
498
|
+
},
|
|
499
|
+
)
|
|
478
500
|
.finally(() => {
|
|
479
501
|
pending = undefined
|
|
480
502
|
})
|
|
@@ -482,13 +504,19 @@ export function jwks(options: JwksOptions): JwtKeyResolver {
|
|
|
482
504
|
return pending
|
|
483
505
|
}
|
|
484
506
|
|
|
507
|
+
const coolingDown = (): boolean =>
|
|
508
|
+
pending === undefined && Date.now() - failedAt < failureCooldownMs
|
|
509
|
+
|
|
485
510
|
const load = (): Promise<readonly JwkKey[]> => {
|
|
486
511
|
const age = Date.now() - cachedAt
|
|
487
512
|
if (cached.length > 0 && age < cacheMs) return Promise.resolve(cached)
|
|
488
513
|
if (cached.length > 0 && age < cacheMs + staleMs) {
|
|
489
|
-
refresh().catch(() => {})
|
|
514
|
+
if (!coolingDown()) refresh().catch(() => {})
|
|
490
515
|
return Promise.resolve(cached)
|
|
491
516
|
}
|
|
517
|
+
if (coolingDown()) {
|
|
518
|
+
return failure === undefined ? Promise.resolve(cached) : Promise.reject(failure.error)
|
|
519
|
+
}
|
|
492
520
|
return refresh()
|
|
493
521
|
}
|
|
494
522
|
|
|
@@ -501,7 +529,9 @@ export function jwks(options: JwksOptions): JwtKeyResolver {
|
|
|
501
529
|
const found = find(await load())
|
|
502
530
|
if (found !== undefined) return found
|
|
503
531
|
// A kid the set lacks may be a key the provider just rotated in.
|
|
504
|
-
if (pending === undefined && Date.now() - refreshedAt < cooldownMs)
|
|
532
|
+
if (coolingDown() || (pending === undefined && Date.now() - refreshedAt < cooldownMs)) {
|
|
533
|
+
return undefined
|
|
534
|
+
}
|
|
505
535
|
try {
|
|
506
536
|
return find(await refresh())
|
|
507
537
|
} catch {
|
package/src/openapi.ts
CHANGED
|
@@ -45,8 +45,18 @@ export interface OpenApiUiOptions {
|
|
|
45
45
|
readonly path?: string
|
|
46
46
|
/** Page title. Defaults to `info.title`. */
|
|
47
47
|
readonly title?: string
|
|
48
|
-
/**
|
|
48
|
+
/**
|
|
49
|
+
* The Scalar script URL. Default: `@scalar/api-reference` 1.72.1's standalone build on jsDelivr,
|
|
50
|
+
* pinned by {@link integrity}. Point it at a copy you serve yourself (no third-party origin to
|
|
51
|
+
* allow in a `script-src` policy, nothing to trust but your own deploy).
|
|
52
|
+
*/
|
|
49
53
|
readonly cdn?: string
|
|
54
|
+
/**
|
|
55
|
+
* The script's Subresource Integrity hash (`sha384-...`), which makes the browser refuse a script
|
|
56
|
+
* whose bytes differ. Default: the default build's hash when `cdn` is unset, none when it is set.
|
|
57
|
+
* Pass the hash of your own copy, or `false` to send none.
|
|
58
|
+
*/
|
|
59
|
+
readonly integrity?: string | false
|
|
50
60
|
}
|
|
51
61
|
|
|
52
62
|
export interface OpenApiOptions {
|
|
@@ -110,7 +120,13 @@ export function buildOpenApiDocument(
|
|
|
110
120
|
}) as unknown as Record<string, unknown>
|
|
111
121
|
}
|
|
112
122
|
|
|
113
|
-
|
|
123
|
+
// An exact version, so the page always loads the bytes SCALAR_INTEGRITY names: a bare package URL
|
|
124
|
+
// follows `latest`, and anyone who can publish to it could run script on the API's own origin.
|
|
125
|
+
const SCALAR_CDN =
|
|
126
|
+
"https://cdn.jsdelivr.net/npm/@scalar/api-reference@1.72.1/dist/browser/standalone.js"
|
|
127
|
+
// SHA-384 of that file, the same from the npm tarball (checked against its registry integrity) and
|
|
128
|
+
// from jsDelivr. Bump both together.
|
|
129
|
+
const SCALAR_INTEGRITY = "sha384-U11tb2XnKvmwt8RlTvnwUnYgrN+ur4Xyh9htLhjajWNR/Oyl5AX5DEz00qRmlrmK"
|
|
114
130
|
|
|
115
131
|
// Named per call, so a second, differently configured instance applies instead of being deduped.
|
|
116
132
|
let instances = 0
|
|
@@ -120,9 +136,18 @@ let instances = 0
|
|
|
120
136
|
* dev-provided config (not request input), but they're still escaped so a stray quote or `<` can't
|
|
121
137
|
* break the markup.
|
|
122
138
|
*/
|
|
123
|
-
function scalarPage(
|
|
139
|
+
function scalarPage(
|
|
140
|
+
specUrl: string,
|
|
141
|
+
title: string,
|
|
142
|
+
cdn: string,
|
|
143
|
+
integrity: string | undefined,
|
|
144
|
+
): string {
|
|
124
145
|
const attr = (s: string): string => s.replace(/&/g, "&").replace(/"/g, """)
|
|
125
146
|
const text = (s: string): string => s.replace(/&/g, "&").replace(/</g, "<")
|
|
147
|
+
// SRI on a cross-origin script needs a CORS fetch; without a hash, a plain fetch keeps a copy
|
|
148
|
+
// served without CORS headers loading.
|
|
149
|
+
const pinned =
|
|
150
|
+
integrity === undefined ? "" : ` integrity="${attr(integrity)}" crossorigin="anonymous"`
|
|
126
151
|
return `<!doctype html>
|
|
127
152
|
<html>
|
|
128
153
|
<head>
|
|
@@ -132,7 +157,7 @@ function scalarPage(specUrl: string, title: string, cdn: string): string {
|
|
|
132
157
|
</head>
|
|
133
158
|
<body>
|
|
134
159
|
<script id="api-reference" data-url="${attr(specUrl)}"></script>
|
|
135
|
-
<script src="${attr(cdn)}"></script>
|
|
160
|
+
<script src="${attr(cdn)}"${pinned}></script>
|
|
136
161
|
</body>
|
|
137
162
|
</html>`
|
|
138
163
|
}
|
|
@@ -143,9 +168,11 @@ function scalarPage(specUrl: string, title: string, cdn: string): string {
|
|
|
143
168
|
* **lazy + memoized**: it reads `app.routes()` on the first request, by which point every route is
|
|
144
169
|
* registered - so the plugin's own position in the chain doesn't matter.
|
|
145
170
|
*
|
|
146
|
-
* Pass `ui: true` (or `ui: { path, title, cdn }`) to also serve a Scalar API-reference page
|
|
147
|
-
* `/reference`) that renders the spec.
|
|
148
|
-
*
|
|
171
|
+
* Pass `ui: true` (or `ui: { path, title, cdn, integrity }`) to also serve a Scalar API-reference page
|
|
172
|
+
* (default `/reference`) that renders the spec. By default the page loads an exact Scalar version from
|
|
173
|
+
* jsDelivr with a Subresource Integrity hash, so a changed file is refused rather than run on your
|
|
174
|
+
* origin. Self-host it via `ui.cdn` (with your copy's `ui.integrity`), and allow the script's origin if
|
|
175
|
+
* you ship a `script-src` Content-Security-Policy.
|
|
149
176
|
*
|
|
150
177
|
* ```ts
|
|
151
178
|
* app.use(openapi({ info: { title: "My API", version: "1.0.0" }, ui: true }))
|
|
@@ -177,8 +204,12 @@ export function openapi(options: OpenApiOptions = {}): IdentityPlugin {
|
|
|
177
204
|
if (ui !== undefined && uiPath !== undefined) {
|
|
178
205
|
const title = ui.title ?? options.info?.title ?? "nifra API"
|
|
179
206
|
const cdn = ui.cdn ?? SCALAR_CDN
|
|
207
|
+
const integrity =
|
|
208
|
+
ui.integrity === false
|
|
209
|
+
? undefined
|
|
210
|
+
: (ui.integrity ?? (ui.cdn === undefined ? SCALAR_INTEGRITY : undefined))
|
|
180
211
|
app.register("GET", uiPath, undefined, () => {
|
|
181
|
-
uiCached ??= scalarPage(docPath, title, cdn)
|
|
212
|
+
uiCached ??= scalarPage(docPath, title, cdn, integrity)
|
|
182
213
|
return new Response(uiCached, { headers: { "content-type": "text/html; charset=utf-8" } })
|
|
183
214
|
})
|
|
184
215
|
}
|