From c2536d3c0f143fcf7c642f2d2b8c69f71c031b7d Mon Sep 17 00:00:00 2001 From: Julian Sigmund Date: Tue, 7 Jan 2025 10:37:42 +0100 Subject: [PATCH] v4.1.0 - cookie 1.0, init should only be called when no session exists --- package-lock.json | 6 +++--- package.json | 4 ++-- src/lib/core.ts | 14 ++++++++------ src/lib/utils.ts | 6 +++--- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 665624c..d1d0667 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,7 @@ "version": "4.0.0", "license": "MIT", "dependencies": { - "@noble/ciphers": "^0.2.0", - "esm-env": "^1.0.0" + "@noble/ciphers": "^0.2.0" }, "devDependencies": { "@playwright/test": "^1.25.1", @@ -918,7 +917,8 @@ "node_modules/esm-env": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz", - "integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==" + "integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==", + "dev": true }, "node_modules/estree-walker": { "version": "3.0.3", diff --git a/package.json b/package.json index adaaf17..81ee58e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "svelte-kit-cookie-session", - "version": "4.0.0", + "version": "4.1.0", "description": "⚒️ Encrypted 'stateless' cookie sessions for SvelteKit", "repository": { "type": "git", @@ -24,7 +24,7 @@ "check:watch": "svelte-check --tsconfig ./tsconfig.json --watch", "lint": "prettier --check --plugin-search-dir=. .", "format": "prettier --write --plugin-search-dir=. .", - "package:publish": "npm run package && cd package && npm publish" + "package:publish": "npm run package && cd dist && npm publish" }, "devDependencies": { "@playwright/test": "^1.25.1", diff --git a/src/lib/core.ts b/src/lib/core.ts index 20bfca0..1cf7932 100644 --- a/src/lib/core.ts +++ b/src/lib/core.ts @@ -47,9 +47,8 @@ export class CookieSession> { async init() { const { data, state } = await this.getSessionData(); - this.#initialData = await this.#config.init(this.#event); - - if (this.#config.saveUninitialized && !data && this.#initialData) { + if (this.#config.saveUninitialized && !data) { + this.#initialData = await this.#config.init(this.#event); await this.set(this.#initialData); } @@ -86,7 +85,7 @@ export class CookieSession> { let maxAge = this.#config.cookie.maxAge; if (this.#sessionData?.expires) { - maxAge = new Date(this.#sessionData.expires).getTime() / 1000 - new Date().getTime() / 1000; + maxAge = Math.round(new Date(this.#sessionData.expires).getTime() / 1000 - new Date().getTime() / 1000); } this.#state.needsSync = true; @@ -143,7 +142,7 @@ export class CookieSession> { let maxAge = this.#config.cookie.maxAge; if (this.#sessionData?.expires) { - maxAge = new Date(this.#sessionData.expires).getTime() / 1000 - new Date().getTime() / 1000; + maxAge = Math.round(new Date(this.#sessionData.expires).getTime() / 1000 - new Date().getTime() / 1000); } await this.setCookie(maxAge); @@ -156,7 +155,10 @@ export class CookieSession> { this.#state.needsSync = true; - const newMaxAge = expiresToMaxage(expires ? expires : this.#config.expires, this.#config.expires_in); + const newMaxAge = expiresToMaxage( + expires ? expires : this.#config.expires, + this.#config.expires_in + ); this.#sessionData = { ...this.#sessionData, diff --git a/src/lib/utils.ts b/src/lib/utils.ts index c7bd0a9..3dd11d9 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -5,11 +5,11 @@ import type { MaybePromise } from '@sveltejs/kit'; export function expiresToMaxage(expires: number, expires_in: 'days' | 'hours' | 'minutes' | 'seconds') { switch (expires_in) { case 'days': - return expires * 24 * 60 * 60; + return Math.round(expires * 24 * 60 * 60); case 'hours': - return expires * 60 * 60; + return Math.round(expires * 60 * 60); case 'minutes': - return expires * 60; + return Math.round(expires * 60); case 'seconds': return expires; default: