@daloyjs/core 0.17.0 → 0.28.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/README.md +3 -3
- package/dist/adapters/bun.d.ts.map +1 -1
- package/dist/adapters/bun.js +38 -7
- package/dist/adapters/bun.js.map +1 -1
- package/dist/adapters/node.d.ts.map +1 -1
- package/dist/adapters/node.js +29 -7
- package/dist/adapters/node.js.map +1 -1
- package/dist/app.d.ts +322 -3
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +715 -29
- package/dist/app.js.map +1 -1
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +218 -1
- package/dist/cli.js.map +1 -1
- package/dist/combine.d.ts +97 -0
- package/dist/combine.d.ts.map +1 -0
- package/dist/combine.js +247 -0
- package/dist/combine.js.map +1 -0
- package/dist/compression.d.ts +127 -0
- package/dist/compression.d.ts.map +1 -0
- package/dist/compression.js +368 -0
- package/dist/compression.js.map +1 -0
- package/dist/config.d.ts +97 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +132 -0
- package/dist/config.js.map +1 -0
- package/dist/conn-info.d.ts +121 -0
- package/dist/conn-info.d.ts.map +1 -0
- package/dist/conn-info.js +145 -0
- package/dist/conn-info.js.map +1 -0
- package/dist/cookie.d.ts +112 -0
- package/dist/cookie.d.ts.map +1 -0
- package/dist/cookie.js +185 -0
- package/dist/cookie.js.map +1 -0
- package/dist/dependency.d.ts +47 -0
- package/dist/dependency.d.ts.map +1 -0
- package/dist/dependency.js +68 -0
- package/dist/dependency.js.map +1 -0
- package/dist/etag.d.ts +48 -0
- package/dist/etag.d.ts.map +1 -0
- package/dist/etag.js +117 -0
- package/dist/etag.js.map +1 -0
- package/dist/index.d.ts +40 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -4
- package/dist/index.js.map +1 -1
- package/dist/ip-restriction.d.ts +75 -0
- package/dist/ip-restriction.d.ts.map +1 -0
- package/dist/ip-restriction.js +203 -0
- package/dist/ip-restriction.js.map +1 -0
- package/dist/jwk.d.ts +82 -0
- package/dist/jwk.d.ts.map +1 -0
- package/dist/jwk.js +269 -0
- package/dist/jwk.js.map +1 -0
- package/dist/jwt.d.ts +103 -0
- package/dist/jwt.d.ts.map +1 -0
- package/dist/jwt.js +437 -0
- package/dist/jwt.js.map +1 -0
- package/dist/load-shedding.d.ts +73 -0
- package/dist/load-shedding.d.ts.map +1 -0
- package/dist/load-shedding.js +171 -0
- package/dist/load-shedding.js.map +1 -0
- package/dist/middleware.d.ts +181 -2
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +367 -77
- package/dist/middleware.js.map +1 -1
- package/dist/multipart.d.ts +17 -0
- package/dist/multipart.d.ts.map +1 -1
- package/dist/multipart.js +117 -1
- package/dist/multipart.js.map +1 -1
- package/dist/openapi.d.ts +8 -0
- package/dist/openapi.d.ts.map +1 -1
- package/dist/openapi.js +18 -1
- package/dist/openapi.js.map +1 -1
- package/dist/security-schemes.d.ts +21 -5
- package/dist/security-schemes.d.ts.map +1 -1
- package/dist/security-schemes.js +32 -5
- package/dist/security-schemes.js.map +1 -1
- package/dist/session.d.ts +23 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +106 -86
- package/dist/session.js.map +1 -1
- package/dist/subdomains.d.ts +97 -0
- package/dist/subdomains.d.ts.map +1 -0
- package/dist/subdomains.js +157 -0
- package/dist/subdomains.js.map +1 -0
- package/dist/time-claims.d.ts +72 -0
- package/dist/time-claims.d.ts.map +1 -0
- package/dist/time-claims.js +88 -0
- package/dist/time-claims.js.map +1 -0
- package/dist/types.d.ts +50 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/websocket.d.ts +51 -34
- package/dist/websocket.d.ts.map +1 -1
- package/dist/websocket.js +162 -2
- package/dist/websocket.js.map +1 -1
- package/package.json +30 -3
package/dist/security-schemes.js
CHANGED
|
@@ -8,6 +8,33 @@
|
|
|
8
8
|
* Spec reference:
|
|
9
9
|
* https://spec.openapis.org/oas/v3.1.0#security-scheme-object
|
|
10
10
|
*/
|
|
11
|
+
export const REQUIRE_PAYLOAD_AUTH_EXTENSION = "x-daloy-require-payload-auth";
|
|
12
|
+
function markRequirePayloadAuth(scheme, options) {
|
|
13
|
+
if (options.requirePayloadAuth === true) {
|
|
14
|
+
scheme[REQUIRE_PAYLOAD_AUTH_EXTENSION] = true;
|
|
15
|
+
}
|
|
16
|
+
return scheme;
|
|
17
|
+
}
|
|
18
|
+
export function securitySchemeRequiresPayloadAuth(scheme) {
|
|
19
|
+
if (!scheme || typeof scheme !== "object")
|
|
20
|
+
return false;
|
|
21
|
+
const record = scheme;
|
|
22
|
+
return (record[REQUIRE_PAYLOAD_AUTH_EXTENSION] === true ||
|
|
23
|
+
record.requirePayloadAuth === true);
|
|
24
|
+
}
|
|
25
|
+
export function toOpenAPISecurityScheme(scheme) {
|
|
26
|
+
if (!scheme || typeof scheme !== "object")
|
|
27
|
+
return scheme;
|
|
28
|
+
const record = scheme;
|
|
29
|
+
if (!("requirePayloadAuth" in record))
|
|
30
|
+
return scheme;
|
|
31
|
+
const out = { ...record };
|
|
32
|
+
const requiresPayloadAuth = securitySchemeRequiresPayloadAuth(record);
|
|
33
|
+
delete out.requirePayloadAuth;
|
|
34
|
+
if (requiresPayloadAuth)
|
|
35
|
+
out[REQUIRE_PAYLOAD_AUTH_EXTENSION] = true;
|
|
36
|
+
return out;
|
|
37
|
+
}
|
|
11
38
|
/**
|
|
12
39
|
* Build an OpenAPI Security Scheme Object for HTTP Bearer authentication
|
|
13
40
|
* (e.g. `Authorization: Bearer <token>`).
|
|
@@ -34,7 +61,7 @@ export function httpBearerScheme(options = {}) {
|
|
|
34
61
|
scheme.bearerFormat = options.bearerFormat;
|
|
35
62
|
if (options.description !== undefined)
|
|
36
63
|
scheme.description = options.description;
|
|
37
|
-
return scheme;
|
|
64
|
+
return markRequirePayloadAuth(scheme, options);
|
|
38
65
|
}
|
|
39
66
|
/**
|
|
40
67
|
* Build an OpenAPI Security Scheme Object for HTTP Basic authentication
|
|
@@ -48,7 +75,7 @@ export function httpBasicScheme(options = {}) {
|
|
|
48
75
|
const scheme = { type: "http", scheme: "basic" };
|
|
49
76
|
if (options.description !== undefined)
|
|
50
77
|
scheme.description = options.description;
|
|
51
|
-
return scheme;
|
|
78
|
+
return markRequirePayloadAuth(scheme, options);
|
|
52
79
|
}
|
|
53
80
|
/**
|
|
54
81
|
* Build an OpenAPI Security Scheme Object for an API key delivered in a
|
|
@@ -78,7 +105,7 @@ export function apiKeyScheme(options) {
|
|
|
78
105
|
};
|
|
79
106
|
if (options.description !== undefined)
|
|
80
107
|
scheme.description = options.description;
|
|
81
|
-
return scheme;
|
|
108
|
+
return markRequirePayloadAuth(scheme, options);
|
|
82
109
|
}
|
|
83
110
|
/**
|
|
84
111
|
* Build an OpenAPI Security Scheme Object for OAuth 2.0. At least one flow
|
|
@@ -115,7 +142,7 @@ export function oauth2Scheme(options) {
|
|
|
115
142
|
const scheme = { type: "oauth2", flows };
|
|
116
143
|
if (options.description !== undefined)
|
|
117
144
|
scheme.description = options.description;
|
|
118
|
-
return scheme;
|
|
145
|
+
return markRequirePayloadAuth(scheme, options);
|
|
119
146
|
}
|
|
120
147
|
/**
|
|
121
148
|
* Build an OpenAPI Security Scheme Object for OpenID Connect Discovery.
|
|
@@ -137,6 +164,6 @@ export function openIdConnectScheme(options) {
|
|
|
137
164
|
};
|
|
138
165
|
if (options.description !== undefined)
|
|
139
166
|
scheme.description = options.description;
|
|
140
|
-
return scheme;
|
|
167
|
+
return markRequirePayloadAuth(scheme, options);
|
|
141
168
|
}
|
|
142
169
|
//# sourceMappingURL=security-schemes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security-schemes.js","sourceRoot":"","sources":["../src/security-schemes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"security-schemes.js","sourceRoot":"","sources":["../src/security-schemes.ts"],"names":[],"mappings":"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"}
|
package/dist/session.d.ts
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* The module is dependency-free and uses Web Crypto (`crypto.subtle`), so it
|
|
16
16
|
* works on Node, Bun, Deno, Cloudflare Workers, and Vercel Edge.
|
|
17
17
|
*/
|
|
18
|
-
import type { Hooks } from "./types.js";
|
|
18
|
+
import type { BaseContext, Hooks } from "./types.js";
|
|
19
19
|
/**
|
|
20
20
|
* Marker stamped on the `Hooks` object returned by {@link session}. Used
|
|
21
21
|
* by the Wave 3 boot guard so the framework can detect that a session
|
|
@@ -154,6 +154,28 @@ export declare class MemorySessionStore implements SessionStore {
|
|
|
154
154
|
* ```
|
|
155
155
|
*/
|
|
156
156
|
export declare function session(opts: SessionOptions): Hooks;
|
|
157
|
+
export interface RotateSessionOptions {
|
|
158
|
+
/**
|
|
159
|
+
* Session data keys to watch, or a custom selector. When the watched value
|
|
160
|
+
* changes during a handler, the helper calls `ctx.state.session.regenerate()`.
|
|
161
|
+
* Default keys cover common privilege-bearing fields.
|
|
162
|
+
*/
|
|
163
|
+
watch?: string | readonly string[] | ((ctx: BaseContext<any, any>) => unknown | Promise<unknown>);
|
|
164
|
+
/** Carry existing data across the regenerated session id. Default: true. */
|
|
165
|
+
keepData?: boolean;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Automatically rotate the signed session id when privilege-bearing session
|
|
169
|
+
* data changes during a handler. Mount after `session()` and before routes
|
|
170
|
+
* that mutate login / role / scope / tenant state.
|
|
171
|
+
*
|
|
172
|
+
* This is a thin guard over `ctx.state.session.regenerate()`, so it inherits
|
|
173
|
+
* session key-rotation arrays: old cookies verify with any configured secret
|
|
174
|
+
* and rotated cookies are re-signed with the first/current secret.
|
|
175
|
+
*
|
|
176
|
+
* @since 0.23.0
|
|
177
|
+
*/
|
|
178
|
+
export declare function rotateSession(opts?: RotateSessionOptions): Hooks;
|
|
157
179
|
/**
|
|
158
180
|
* Sign an arbitrary string with HMAC-SHA256. Returns `${value}.${sig}` where
|
|
159
181
|
* `sig` is URL-safe base64. Useful for building custom signed cookies or
|
package/dist/session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
package/dist/session.js
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* The module is dependency-free and uses Web Crypto (`crypto.subtle`), so it
|
|
16
16
|
* works on Node, Bun, Deno, Cloudflare Workers, and Vercel Edge.
|
|
17
17
|
*/
|
|
18
|
+
import { assertCookieAttributes, readRequestCookie, serializeClearCookie, serializeCookie, } from "./cookie.js";
|
|
18
19
|
import { timingSafeEqual } from "./security.js";
|
|
19
20
|
const DEFAULT_COOKIE_NAME = "__Host-daloy.sid";
|
|
20
21
|
/**
|
|
@@ -39,8 +40,6 @@ export const SESSION_HOOK_MARKER = Symbol.for("daloyjs.session.hook");
|
|
|
39
40
|
export const SESSION_SECRETS_MARKER = Symbol.for("daloyjs.session.secrets");
|
|
40
41
|
const STATE_KEY = "session";
|
|
41
42
|
const STATE_INTERNAL = "__sessionInternal";
|
|
42
|
-
// ---------- Implementation ----------
|
|
43
|
-
const COOKIE_NAME_RE = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;
|
|
44
43
|
const enc = new TextEncoder();
|
|
45
44
|
function getSubtle() {
|
|
46
45
|
const c = globalThis.crypto;
|
|
@@ -88,86 +87,16 @@ function generateSessionId() {
|
|
|
88
87
|
c.getRandomValues(buf);
|
|
89
88
|
return bytesToBase64Url(buf);
|
|
90
89
|
}
|
|
91
|
-
function
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
101
|
-
if (!opts.path.startsWith("/"))
|
|
102
|
-
throw new Error('session(): cookieOptions.path must start with "/".');
|
|
103
|
-
validateCookieSegment("path", opts.path);
|
|
104
|
-
if (opts.domain)
|
|
105
|
-
validateCookieSegment("domain", opts.domain);
|
|
106
|
-
if (!Number.isInteger(opts.maxAgeSeconds) || opts.maxAgeSeconds < 0) {
|
|
107
|
-
throw new Error("session(): cookieOptions.maxAgeSeconds must be a non-negative integer.");
|
|
108
|
-
}
|
|
109
|
-
if (cookieName.startsWith("__Host-")) {
|
|
110
|
-
if (!opts.secure || opts.path !== "/" || opts.domain) {
|
|
111
|
-
throw new Error('session(): "__Host-" cookie names require secure: true, path: "/", and no domain. ' +
|
|
112
|
-
"Pass an explicit cookieName or relax cookieOptions to use a non-prefixed cookie.");
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
if (opts.sameSite === "None" && !opts.secure) {
|
|
116
|
-
throw new Error('session(): cookieOptions.sameSite: "None" requires secure: true.');
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
function readCookie(header, name) {
|
|
120
|
-
if (!header)
|
|
121
|
-
return null;
|
|
122
|
-
const parts = header.split(";");
|
|
123
|
-
for (let i = 0; i < parts.length; i++) {
|
|
124
|
-
const part = parts[i];
|
|
125
|
-
const eq = part.indexOf("=");
|
|
126
|
-
if (eq < 0)
|
|
127
|
-
continue;
|
|
128
|
-
const k = part.slice(0, eq).trim();
|
|
129
|
-
if (k === name) {
|
|
130
|
-
const v = part.slice(eq + 1).trim();
|
|
131
|
-
try {
|
|
132
|
-
return decodeURIComponent(v);
|
|
133
|
-
}
|
|
134
|
-
catch {
|
|
135
|
-
return v;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
return null;
|
|
140
|
-
}
|
|
141
|
-
function buildSetCookie(name, value, opts) {
|
|
142
|
-
let s = `${name}=${encodeURIComponent(value)}`;
|
|
143
|
-
s += `; Path=${opts.path}`;
|
|
144
|
-
s += `; SameSite=${opts.sameSite}`;
|
|
145
|
-
if (opts.secure)
|
|
146
|
-
s += "; Secure";
|
|
147
|
-
if (opts.httpOnly)
|
|
148
|
-
s += "; HttpOnly";
|
|
149
|
-
if (opts.domain)
|
|
150
|
-
s += `; Domain=${opts.domain}`;
|
|
151
|
-
if (opts.maxAgeSeconds > 0)
|
|
152
|
-
s += `; Max-Age=${opts.maxAgeSeconds}`;
|
|
153
|
-
if (opts.partitioned)
|
|
154
|
-
s += "; Partitioned";
|
|
155
|
-
return s;
|
|
156
|
-
}
|
|
157
|
-
function buildClearCookie(name, opts) {
|
|
158
|
-
let s = `${name}=`;
|
|
159
|
-
s += `; Path=${opts.path}`;
|
|
160
|
-
s += `; SameSite=${opts.sameSite}`;
|
|
161
|
-
if (opts.secure)
|
|
162
|
-
s += "; Secure";
|
|
163
|
-
if (opts.httpOnly)
|
|
164
|
-
s += "; HttpOnly";
|
|
165
|
-
if (opts.domain)
|
|
166
|
-
s += `; Domain=${opts.domain}`;
|
|
167
|
-
s += "; Max-Age=0";
|
|
168
|
-
if (opts.partitioned)
|
|
169
|
-
s += "; Partitioned";
|
|
170
|
-
return s;
|
|
90
|
+
function sessionCookieAttributes(opts) {
|
|
91
|
+
return {
|
|
92
|
+
sameSite: opts.sameSite,
|
|
93
|
+
secure: opts.secure,
|
|
94
|
+
path: opts.path,
|
|
95
|
+
domain: opts.domain || undefined,
|
|
96
|
+
maxAgeSeconds: opts.maxAgeSeconds,
|
|
97
|
+
partitioned: opts.partitioned,
|
|
98
|
+
httpOnly: opts.httpOnly,
|
|
99
|
+
};
|
|
171
100
|
}
|
|
172
101
|
function markDirty(internal) {
|
|
173
102
|
internal.dirty = true;
|
|
@@ -295,7 +224,11 @@ export function session(opts) {
|
|
|
295
224
|
partitioned: cookieOverrides.partitioned ?? false,
|
|
296
225
|
httpOnly: cookieOverrides.httpOnly ?? true,
|
|
297
226
|
};
|
|
298
|
-
|
|
227
|
+
assertCookieAttributes({
|
|
228
|
+
scope: "session()",
|
|
229
|
+
name: cookieName,
|
|
230
|
+
attributes: sessionCookieAttributes(cookieOpts),
|
|
231
|
+
});
|
|
299
232
|
const ttlSeconds = opts.ttlSeconds ?? 86_400;
|
|
300
233
|
if (!Number.isInteger(ttlSeconds) || ttlSeconds <= 0) {
|
|
301
234
|
throw new Error("session(): ttlSeconds must be a positive integer.");
|
|
@@ -324,7 +257,7 @@ export function session(opts) {
|
|
|
324
257
|
regenerated: false,
|
|
325
258
|
created: false,
|
|
326
259
|
};
|
|
327
|
-
const raw =
|
|
260
|
+
const raw = readRequestCookie(ctx.request.headers.get("cookie"), cookieName);
|
|
328
261
|
internal.hadCookie = raw !== null;
|
|
329
262
|
let data = {};
|
|
330
263
|
let id = null;
|
|
@@ -395,7 +328,7 @@ export function session(opts) {
|
|
|
395
328
|
await store.destroy(internal.originalId);
|
|
396
329
|
// Clear stale or malformed client cookies too, not only verified sessions.
|
|
397
330
|
if (internal.hadCookie) {
|
|
398
|
-
res.headers.append("set-cookie",
|
|
331
|
+
res.headers.append("set-cookie", serializeClearCookie(internal.cookieName, sessionCookieAttributes(internal.cookieOpts)));
|
|
399
332
|
}
|
|
400
333
|
return undefined;
|
|
401
334
|
}
|
|
@@ -427,7 +360,7 @@ export function session(opts) {
|
|
|
427
360
|
return undefined;
|
|
428
361
|
const signer = internal.signers[0];
|
|
429
362
|
const sig = await signer.sign(sid);
|
|
430
|
-
res.headers.append("set-cookie",
|
|
363
|
+
res.headers.append("set-cookie", serializeCookie(internal.cookieName, `${sid}.${sig}`, sessionCookieAttributes(internal.cookieOpts)));
|
|
431
364
|
return undefined;
|
|
432
365
|
},
|
|
433
366
|
};
|
|
@@ -435,6 +368,93 @@ export function session(opts) {
|
|
|
435
368
|
hooks[SESSION_SECRETS_MARKER] = secrets.slice();
|
|
436
369
|
return hooks;
|
|
437
370
|
}
|
|
371
|
+
const ROTATE_SESSION_SNAPSHOT_KEY = "__daloyRotateSessionSnapshot";
|
|
372
|
+
const DEFAULT_ROTATE_SESSION_KEYS = [
|
|
373
|
+
"userId",
|
|
374
|
+
"accountId",
|
|
375
|
+
"tenantId",
|
|
376
|
+
"role",
|
|
377
|
+
"roles",
|
|
378
|
+
"scopes",
|
|
379
|
+
"permissions",
|
|
380
|
+
"privileges",
|
|
381
|
+
"isAdmin",
|
|
382
|
+
];
|
|
383
|
+
function sessionFromContext(ctx) {
|
|
384
|
+
const value = ctx.state[STATE_KEY];
|
|
385
|
+
if (!value || typeof value !== "object" || typeof value.regenerate !== "function") {
|
|
386
|
+
throw new Error("rotateSession(): session() must run before rotateSession().");
|
|
387
|
+
}
|
|
388
|
+
return value;
|
|
389
|
+
}
|
|
390
|
+
async function readRotationWatchValue(ctx, watch) {
|
|
391
|
+
if (typeof watch === "function")
|
|
392
|
+
return watch(ctx);
|
|
393
|
+
const sessionCtx = sessionFromContext(ctx);
|
|
394
|
+
const keys = typeof watch === "string"
|
|
395
|
+
? [watch]
|
|
396
|
+
: Array.isArray(watch)
|
|
397
|
+
? watch
|
|
398
|
+
: DEFAULT_ROTATE_SESSION_KEYS;
|
|
399
|
+
const out = {};
|
|
400
|
+
for (const key of keys)
|
|
401
|
+
out[key] = sessionCtx.data[key];
|
|
402
|
+
return out;
|
|
403
|
+
}
|
|
404
|
+
function stableSnapshot(value) {
|
|
405
|
+
if (value === undefined)
|
|
406
|
+
return "undefined";
|
|
407
|
+
if (typeof value === "function")
|
|
408
|
+
return `function:${value.name}`;
|
|
409
|
+
if (typeof value === "symbol")
|
|
410
|
+
return String(value);
|
|
411
|
+
if (value === null || typeof value !== "object")
|
|
412
|
+
return JSON.stringify(value);
|
|
413
|
+
if (Array.isArray(value))
|
|
414
|
+
return `[${value.map(stableSnapshot).join(",")}]`;
|
|
415
|
+
const record = value;
|
|
416
|
+
return `{${Object.keys(record)
|
|
417
|
+
.sort()
|
|
418
|
+
.map((key) => `${JSON.stringify(key)}:${stableSnapshot(record[key])}`)
|
|
419
|
+
.join(",")}}`;
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* Automatically rotate the signed session id when privilege-bearing session
|
|
423
|
+
* data changes during a handler. Mount after `session()` and before routes
|
|
424
|
+
* that mutate login / role / scope / tenant state.
|
|
425
|
+
*
|
|
426
|
+
* This is a thin guard over `ctx.state.session.regenerate()`, so it inherits
|
|
427
|
+
* session key-rotation arrays: old cookies verify with any configured secret
|
|
428
|
+
* and rotated cookies are re-signed with the first/current secret.
|
|
429
|
+
*
|
|
430
|
+
* @since 0.23.0
|
|
431
|
+
*/
|
|
432
|
+
export function rotateSession(opts = {}) {
|
|
433
|
+
const keepData = opts.keepData !== false;
|
|
434
|
+
return {
|
|
435
|
+
async beforeHandle(ctx) {
|
|
436
|
+
const sessionCtx = sessionFromContext(ctx);
|
|
437
|
+
const value = await readRotationWatchValue(ctx, opts.watch);
|
|
438
|
+
ctx.state[ROTATE_SESSION_SNAPSHOT_KEY] = {
|
|
439
|
+
id: sessionCtx.id,
|
|
440
|
+
value: stableSnapshot(value),
|
|
441
|
+
};
|
|
442
|
+
},
|
|
443
|
+
async afterHandle(ctx, result) {
|
|
444
|
+
const snapshot = ctx.state[ROTATE_SESSION_SNAPSHOT_KEY];
|
|
445
|
+
if (!snapshot)
|
|
446
|
+
return result;
|
|
447
|
+
const sessionCtx = sessionFromContext(ctx);
|
|
448
|
+
if (sessionCtx.id !== snapshot.id)
|
|
449
|
+
return result;
|
|
450
|
+
const value = await readRotationWatchValue(ctx, opts.watch);
|
|
451
|
+
if (stableSnapshot(value) !== snapshot.value) {
|
|
452
|
+
await sessionCtx.regenerate({ keepData });
|
|
453
|
+
}
|
|
454
|
+
return result;
|
|
455
|
+
},
|
|
456
|
+
};
|
|
457
|
+
}
|
|
438
458
|
// ---------- Low-level signing helpers (re-exported for advanced use) ----------
|
|
439
459
|
/**
|
|
440
460
|
* Sign an arbitrary string with HMAC-SHA256. Returns `${value}.${sig}` where
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PSL-aware `subdomains()` helper (Wave 6 item 6).
|
|
3
|
+
*
|
|
4
|
+
* Splits a hostname into its registrable base + the subdomain labels above
|
|
5
|
+
* it, using a bundled Public Suffix List snapshot. The helper refuses to
|
|
6
|
+
* read a stale PSL snapshot (`> 90 days` since `PSL_SNAPSHOT_DATE`) in
|
|
7
|
+
* production so adjacent-tenant infrastructure names like `*.s3.amazonaws.com`,
|
|
8
|
+
* `*.github.io`, `*.vercel.app`, `*.workers.dev`, and every
|
|
9
|
+
* preview-deploy environment are split correctly instead of being treated
|
|
10
|
+
* as siblings under the same registrable domain.
|
|
11
|
+
*
|
|
12
|
+
* @since 0.24.0
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* ISO date the bundled PSL snapshot was generated. Refresh this value when
|
|
16
|
+
* you re-snapshot {@link PSL_PUBLIC_SUFFIXES} from the upstream Public
|
|
17
|
+
* Suffix List at https://publicsuffix.org/list/public_suffix_list.dat
|
|
18
|
+
*
|
|
19
|
+
* @since 0.24.0
|
|
20
|
+
*/
|
|
21
|
+
export declare const PSL_SNAPSHOT_DATE = "2026-05-20";
|
|
22
|
+
/**
|
|
23
|
+
* Bundled subset of the Public Suffix List. Hand-picked entries covering
|
|
24
|
+
* the common cases Daloy users hit (cloud preview deployments, shared
|
|
25
|
+
* hosting platforms, country-code second-level domains). Augment with
|
|
26
|
+
* `subdomains({ extraSuffixes: [...] })` for project-specific TLDs.
|
|
27
|
+
*
|
|
28
|
+
* @since 0.24.0
|
|
29
|
+
*/
|
|
30
|
+
export declare const PSL_PUBLIC_SUFFIXES: readonly string[];
|
|
31
|
+
/**
|
|
32
|
+
* Options for {@link subdomains}.
|
|
33
|
+
*
|
|
34
|
+
* @since 0.24.0
|
|
35
|
+
*/
|
|
36
|
+
export interface SubdomainsOptions {
|
|
37
|
+
/**
|
|
38
|
+
* Explicit registrable base domain. When supplied, the PSL match is
|
|
39
|
+
* skipped and any suffix that is not exactly this base raises a runtime
|
|
40
|
+
* error. Strongly recommended in production.
|
|
41
|
+
*/
|
|
42
|
+
baseDomain?: string;
|
|
43
|
+
/**
|
|
44
|
+
* Additional public-suffix entries beyond {@link PSL_PUBLIC_SUFFIXES}.
|
|
45
|
+
* Use for company-specific shared-hosting registrable suffixes.
|
|
46
|
+
*/
|
|
47
|
+
extraSuffixes?: readonly string[];
|
|
48
|
+
/**
|
|
49
|
+
* Whether the app is running in production. When `true` and the bundled
|
|
50
|
+
* snapshot is older than {@link MAX_SNAPSHOT_AGE_DAYS}, the helper
|
|
51
|
+
* throws on first call so deploys cannot ship with a stale PSL.
|
|
52
|
+
* Defaults to `false`.
|
|
53
|
+
*/
|
|
54
|
+
production?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Override the snapshot date used for the staleness check. Test-only.
|
|
57
|
+
* @internal
|
|
58
|
+
*/
|
|
59
|
+
_snapshotDate?: string;
|
|
60
|
+
/**
|
|
61
|
+
* Override "now" for the staleness check. Test-only.
|
|
62
|
+
* @internal
|
|
63
|
+
*/
|
|
64
|
+
_now?: Date;
|
|
65
|
+
}
|
|
66
|
+
export declare const MAX_SNAPSHOT_AGE_DAYS = 90;
|
|
67
|
+
/**
|
|
68
|
+
* Decomposed hostname. `subdomain` is the dotted-label prefix above the
|
|
69
|
+
* registrable base (`""` when the host equals the base exactly).
|
|
70
|
+
*
|
|
71
|
+
* @since 0.24.0
|
|
72
|
+
*/
|
|
73
|
+
export interface SubdomainsResult {
|
|
74
|
+
/** Registrable base domain (e.g. `example.co.uk`, `tenant.vercel.app`). */
|
|
75
|
+
baseDomain: string;
|
|
76
|
+
/** Labels above the base, joined by `.`. Empty when no labels are above. */
|
|
77
|
+
subdomain: string;
|
|
78
|
+
/** Labels above the base as an array, ordered from leftmost to rightmost. */
|
|
79
|
+
labels: readonly string[];
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Split a hostname into registrable base + subdomain labels using the
|
|
83
|
+
* bundled PSL snapshot. Refuses to read a stale snapshot in production.
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```ts
|
|
87
|
+
* subdomains("api.tenant.example.co.uk")
|
|
88
|
+
* // => { baseDomain: "example.co.uk", subdomain: "api.tenant", labels: ["api", "tenant"] }
|
|
89
|
+
*
|
|
90
|
+
* subdomains("foo.bar.s3.amazonaws.com")
|
|
91
|
+
* // => { baseDomain: "bar.s3.amazonaws.com", subdomain: "foo", labels: ["foo"] }
|
|
92
|
+
* ```
|
|
93
|
+
*
|
|
94
|
+
* @since 0.24.0
|
|
95
|
+
*/
|
|
96
|
+
export declare function subdomains(hostname: string, opts?: SubdomainsOptions): SubdomainsResult;
|
|
97
|
+
//# sourceMappingURL=subdomains.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subdomains.d.ts","sourceRoot":"","sources":["../src/subdomains.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAE9C;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAkDhD,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAED,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,iBAAsB,GAC3B,gBAAgB,CA0DlB"}
|