next-client-cookies
Version:
SSR and client support for Next.js v13 cookies (app directory)
46 lines • 1.34 kB
JavaScript
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
const storage = typeof global === "object" ? global.__COOKIES_STORAGE__ = global.__COOKIES_STORAGE__ || /* @__PURE__ */ new Map() : null;
const storeSecureCookies = /* @__PURE__ */ __name((secureValue) => {
let value;
do {
value = Math.random();
} while (storage?.has(value));
if (storage) {
storage.set(value, {
value: secureValue,
time: Date.now()
});
setCleanupTimeout();
}
return value;
}, "storeSecureCookies");
const useSecureCookies = /* @__PURE__ */ __name((value) => storage?.get(value)?.value, "useSecureCookies");
let timeout = null;
const CLEANUP_TTL_MS = 5e3;
const setCleanupTimeout = /* @__PURE__ */ __name(() => {
if (timeout) {
return;
}
timeout = setTimeout(cleanup, CLEANUP_TTL_MS * 2);
}, "setCleanupTimeout");
const cleanup = /* @__PURE__ */ __name(() => {
clearTimeout(timeout);
timeout = null;
if (!storage)
return;
const now = Date.now();
for (const [key, { time }] of storage.entries()) {
if (now - time > CLEANUP_TTL_MS) {
storage.delete(key);
}
}
if (storage.size) {
setCleanupTimeout();
}
}, "cleanup");
export {
storeSecureCookies,
useSecureCookies
};
//# sourceMappingURL=secure.mjs.map