mirror of
https://github.com/ZSCGR/CloudFlare-ImgBed.git
synced 2026-08-16 13:43:43 +08:00
34 lines
1.0 KiB
JavaScript
34 lines
1.0 KiB
JavaScript
const DEFAULT_SESSION_MAX_AGE_DAYS = 14;
|
|
const MAX_SESSION_MAX_AGE_DAYS = 3650;
|
|
const SECONDS_PER_DAY = 86400;
|
|
const MAX_KV_EXPIRATION_TTL = 2147483647;
|
|
|
|
/**
|
|
* Normalize persisted session max age to an integer day count.
|
|
* Values outside the expected day range are treated as invalid so timestamp
|
|
* values such as Date.now() do not become long-lived sessions.
|
|
*/
|
|
export function normalizeSessionMaxAgeDays(value) {
|
|
const days = typeof value === 'string' && value.trim() !== ''
|
|
? Number(value)
|
|
: value;
|
|
|
|
if (!Number.isFinite(days)) {
|
|
return DEFAULT_SESSION_MAX_AGE_DAYS;
|
|
}
|
|
|
|
const normalizedDays = Math.trunc(days);
|
|
if (normalizedDays < 1 || normalizedDays > MAX_SESSION_MAX_AGE_DAYS) {
|
|
return DEFAULT_SESSION_MAX_AGE_DAYS;
|
|
}
|
|
|
|
return normalizedDays;
|
|
}
|
|
|
|
export function sessionMaxAgeDaysToTtl(days) {
|
|
const normalizedDays = normalizeSessionMaxAgeDays(days);
|
|
const ttl = normalizedDays * SECONDS_PER_DAY;
|
|
return Math.min(ttl, MAX_KV_EXPIRATION_TTL);
|
|
}
|
|
|