@xylex-group/athena 1.9.0 → 2.1.2

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.
Files changed (45) hide show
  1. package/README.md +86 -68
  2. package/bin/athena-js.js +0 -0
  3. package/dist/browser.cjs +3319 -0
  4. package/dist/browser.cjs.map +1 -0
  5. package/dist/browser.d.cts +25 -0
  6. package/dist/browser.d.ts +25 -0
  7. package/dist/browser.js +3276 -0
  8. package/dist/browser.js.map +1 -0
  9. package/dist/cli/index.cjs +1839 -275
  10. package/dist/cli/index.cjs.map +1 -1
  11. package/dist/cli/index.d.cts +3 -2
  12. package/dist/cli/index.d.ts +3 -2
  13. package/dist/cli/index.js +1840 -276
  14. package/dist/cli/index.js.map +1 -1
  15. package/dist/client-BX0NQqOn.d.ts +435 -0
  16. package/dist/client-dpAp-NZK.d.cts +435 -0
  17. package/dist/cookies.cjs +890 -0
  18. package/dist/cookies.cjs.map +1 -0
  19. package/dist/cookies.d.cts +174 -0
  20. package/dist/cookies.d.ts +174 -0
  21. package/dist/cookies.js +869 -0
  22. package/dist/cookies.js.map +1 -0
  23. package/dist/index.cjs +2724 -1777
  24. package/dist/index.cjs.map +1 -1
  25. package/dist/index.d.cts +8 -641
  26. package/dist/index.d.ts +8 -641
  27. package/dist/index.js +2725 -1779
  28. package/dist/index.js.map +1 -1
  29. package/dist/model-form-2hqmoOUX.d.ts +1284 -0
  30. package/dist/model-form-Cy-zaO0u.d.cts +1284 -0
  31. package/dist/pipeline-BOPszLsL.d.ts +8 -0
  32. package/dist/pipeline-E3FDbs4W.d.cts +8 -0
  33. package/dist/react.cjs +93 -0
  34. package/dist/react.cjs.map +1 -1
  35. package/dist/react.d.cts +38 -4
  36. package/dist/react.d.ts +38 -4
  37. package/dist/react.js +93 -1
  38. package/dist/react.js.map +1 -1
  39. package/dist/{types-BnzoaNRC.d.cts → types-BaBzjwXr.d.cts} +1 -1
  40. package/dist/{types-BnzoaNRC.d.ts → types-BaBzjwXr.d.ts} +1 -1
  41. package/dist/{pipeline-CQgV-Yfo.d.ts → types-CeBPrnGj.d.ts} +2 -7
  42. package/dist/{pipeline-C-cN0ACi.d.cts → types-CpqL-pZx.d.cts} +2 -7
  43. package/package.json +36 -17
  44. package/dist/model-form-Bm_kqCn2.d.ts +0 -92
  45. package/dist/model-form-DkS48fsh.d.cts +0 -92
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cookies/base64.ts","../src/cookies/cookie-utils.ts","../src/cookies/crypto.ts","../src/cookies/session-store.ts","../src/cookies/index.ts"],"names":[],"mappings":"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","file":"cookies.js","sourcesContent":["function getAtob(): ((input: string) => string) | undefined {\n const candidate = (globalThis as { atob?: unknown }).atob\n return typeof candidate === 'function' ? (candidate as (input: string) => string) : undefined\n}\n\nfunction getBtoa(): ((input: string) => string) | undefined {\n const candidate = (globalThis as { btoa?: unknown }).btoa\n return typeof candidate === 'function' ? (candidate as (input: string) => string) : undefined\n}\n\nfunction bytesToBinaryString(bytes: Uint8Array): string {\n let result = ''\n for (const byte of bytes) {\n result += String.fromCharCode(byte)\n }\n return result\n}\n\nfunction binaryStringToBytes(binary: string): Uint8Array {\n const bytes = new Uint8Array(binary.length)\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i)\n }\n return bytes\n}\n\nfunction encodeBase64(bytes: Uint8Array): string {\n const btoaFn = getBtoa()\n if (btoaFn) {\n return btoaFn(bytesToBinaryString(bytes))\n }\n return Buffer.from(bytes).toString('base64')\n}\n\nfunction decodeBase64(base64: string): Uint8Array {\n const atobFn = getAtob()\n if (atobFn) {\n return binaryStringToBytes(atobFn(base64))\n }\n return new Uint8Array(Buffer.from(base64, 'base64'))\n}\n\nexport function encodeBytesToBase64Url(bytes: Uint8Array): string {\n return encodeBase64(bytes).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/g, '')\n}\n\nexport function encodeStringToBase64Url(value: string): string {\n const bytes = new TextEncoder().encode(value)\n return encodeBytesToBase64Url(bytes)\n}\n\nexport function decodeBase64UrlToBytes(value: string): Uint8Array {\n const normalized = value.replace(/-/g, '+').replace(/_/g, '/')\n const paddingLength = normalized.length % 4\n const padded = paddingLength === 0 ? normalized : `${normalized}${'='.repeat(4 - paddingLength)}`\n return decodeBase64(padded)\n}\n\nexport function decodeBase64UrlToString(value: string): string {\n return new TextDecoder().decode(decodeBase64UrlToBytes(value))\n}\n","import type { AthenaCookieOptions } from './types.ts'\n\nfunction tryDecode(str: string): string {\n if (str.indexOf('%') === -1) {\n return str\n }\n try {\n return decodeURIComponent(str)\n } catch {\n return str\n }\n}\n\nexport interface CookieAttributes {\n value: string\n 'max-age'?: number\n expires?: Date\n domain?: string\n path?: string\n secure?: boolean\n httponly?: boolean\n partitioned?: boolean\n samesite?: 'strict' | 'lax' | 'none'\n [key: string]: unknown\n}\n\nexport const SECURE_COOKIE_PREFIX = '__Secure-'\nexport const HOST_COOKIE_PREFIX = '__Host-'\n\n/**\n * Remove __Secure- or __Host- prefix from cookie name.\n */\nexport function stripSecureCookiePrefix(cookieName: string): string {\n if (cookieName.startsWith(SECURE_COOKIE_PREFIX)) {\n return cookieName.slice(SECURE_COOKIE_PREFIX.length)\n }\n if (cookieName.startsWith(HOST_COOKIE_PREFIX)) {\n return cookieName.slice(HOST_COOKIE_PREFIX.length)\n }\n return cookieName\n}\n\n/**\n * Split a comma-joined `Set-Cookie` header string into individual cookies.\n */\nexport function splitSetCookieHeader(setCookie: string): string[] {\n if (!setCookie) {\n return []\n }\n\n const result: string[] = []\n let start = 0\n let i = 0\n\n while (i < setCookie.length) {\n if (setCookie[i] === ',') {\n let j = i + 1\n while (j < setCookie.length && setCookie[j] === ' ') {\n j++\n }\n while (j < setCookie.length && setCookie[j] !== '=' && setCookie[j] !== ';' && setCookie[j] !== ',') {\n j++\n }\n\n if (j < setCookie.length && setCookie[j] === '=') {\n const part = setCookie.slice(start, i).trim()\n if (part) {\n result.push(part)\n }\n start = i + 1\n while (start < setCookie.length && setCookie[start] === ' ') {\n start++\n }\n i = start\n continue\n }\n }\n i++\n }\n\n const last = setCookie.slice(start).trim()\n if (last) {\n result.push(last)\n }\n\n return result\n}\n\nexport function parseSetCookieHeader(setCookie: string): Map<string, CookieAttributes> {\n const cookies = new Map<string, CookieAttributes>()\n const cookieArray = splitSetCookieHeader(setCookie)\n\n for (const cookieString of cookieArray) {\n const parts = cookieString.split(';').map((part) => part.trim())\n const [nameValue, ...attributes] = parts\n const [name, ...valueParts] = (nameValue || '').split('=')\n if (!name) {\n continue\n }\n\n const value = unquoteCookieValue(valueParts.join('='))\n const decodedValue = tryDecode(value)\n const attrObj: CookieAttributes = { value: decodedValue }\n\n for (const attribute of attributes) {\n const [attrName, ...attrValueParts] = attribute.split('=')\n const attrValue = attrValueParts.join('=')\n const normalizedAttrName = attrName.trim().toLowerCase()\n switch (normalizedAttrName) {\n case 'max-age':\n attrObj['max-age'] = attrValue ? parseInt(attrValue.trim(), 10) : undefined\n break\n case 'expires':\n attrObj.expires = attrValue ? new Date(attrValue.trim()) : undefined\n break\n case 'domain':\n attrObj.domain = attrValue ? attrValue.trim() : undefined\n break\n case 'path':\n attrObj.path = attrValue ? attrValue.trim() : undefined\n break\n case 'secure':\n attrObj.secure = true\n break\n case 'httponly':\n attrObj.httponly = true\n break\n case 'samesite':\n attrObj.samesite = attrValue ? (attrValue.trim().toLowerCase() as 'strict' | 'lax' | 'none') : undefined\n break\n case 'partitioned':\n attrObj.partitioned = true\n break\n default:\n attrObj[normalizedAttrName] = attrValue ? attrValue.trim() : true\n break\n }\n }\n\n cookies.set(name, attrObj)\n }\n\n return cookies\n}\n\nexport function toCookieOptions(attributes: CookieAttributes): AthenaCookieOptions {\n return {\n maxAge: attributes['max-age'],\n expires: attributes.expires,\n domain: attributes.domain,\n path: attributes.path,\n secure: attributes.secure,\n httpOnly: attributes.httponly,\n sameSite: attributes.samesite,\n partitioned: attributes.partitioned,\n }\n}\n\n/**\n * Cookie-name token char set per RFC 7230 §3.2.6.\n */\nexport const cookieNameRegex = /^[\\w!#$%&'*.^`|~+-]+$/\n\nfunction unquoteCookieValue(value: string): string {\n if (value.length < 2 || !value.startsWith('\"') || !value.endsWith('\"')) {\n return value\n }\n return value.slice(1, -1)\n}\n\n/**\n * Parse a `Cookie` header into a key/value map.\n */\nexport function parseCookies(cookieHeader: string): Map<string, string> {\n const cookies = cookieHeader.split('; ')\n const cookieMap = new Map<string, string>()\n cookies.forEach((cookie) => {\n const [name, value] = cookie.split(/=(.*)/s)\n cookieMap.set(name as string, value as string)\n })\n return cookieMap\n}\n\n/**\n * Add or replace a cookie in the request `Cookie` header.\n */\nexport function setRequestCookie(headers: Headers, name: string, value: string): void {\n const cookieMap = parseCookies(headers.get('cookie') || '')\n if (cookieNameRegex.test(name)) {\n cookieMap.set(name, value)\n }\n headers.set(\n 'cookie',\n Array.from(cookieMap, ([key, currentValue]) => `${key}=${encodeURIComponent(currentValue)}`).join('; '),\n )\n}\n\n/**\n * Merge `Set-Cookie` values into a `Cookie` header.\n */\nexport function applySetCookies(target: Headers, setCookieValues: Iterable<string>): void {\n const cookieMap = parseCookies(target.get('cookie') || '')\n for (const setCookie of setCookieValues) {\n for (const [name, attr] of parseSetCookieHeader(setCookie)) {\n if (cookieNameRegex.test(name)) {\n cookieMap.set(name, attr.value)\n }\n }\n }\n target.set(\n 'cookie',\n Array.from(cookieMap, ([key, currentValue]) => `${key}=${encodeURIComponent(currentValue)}`).join('; '),\n )\n}\n\nexport function setCookieToHeader(headers: Headers) {\n return (context: { response: Response }) => {\n const setCookieHeader = context.response.headers.get('set-cookie')\n if (!setCookieHeader) {\n return\n }\n applySetCookies(headers, [setCookieHeader])\n }\n}\n","import { decodeBase64UrlToString, encodeBytesToBase64Url, encodeStringToBase64Url } from './base64.ts'\n\ntype JwtPayload = Record<string, unknown>\n\nconst HS256_ALG = 'HS256'\n\ninterface SubtleCryptoLike {\n importKey: (\n format: 'raw',\n keyData: Uint8Array,\n algorithm: { name: 'HMAC'; hash: 'SHA-256' },\n extractable: boolean,\n keyUsages: Array<'sign' | 'verify'>,\n ) => Promise<unknown>\n sign: (algorithm: 'HMAC', key: unknown, data: Uint8Array) => Promise<ArrayBuffer>\n}\n\ninterface WebCryptoLike {\n subtle?: SubtleCryptoLike\n}\n\nasync function getSubtleCrypto(): Promise<SubtleCryptoLike> {\n const globalCrypto = (globalThis as { crypto?: WebCryptoLike }).crypto\n if (globalCrypto?.subtle) {\n return globalCrypto.subtle\n }\n const { webcrypto } = await import('node:crypto')\n const subtle = (webcrypto as unknown as WebCryptoLike).subtle\n if (!subtle) {\n throw new Error('Web Crypto subtle API is unavailable.')\n }\n return subtle\n}\n\nasync function importHmacKey(secret: string, usage: 'sign' | 'verify'): Promise<unknown> {\n const subtle = await getSubtleCrypto()\n return subtle.importKey(\n 'raw',\n new TextEncoder().encode(secret),\n {\n name: 'HMAC',\n hash: 'SHA-256',\n },\n false,\n [usage] as Array<'sign' | 'verify'>,\n )\n}\n\nfunction bufferToBytes(buffer: ArrayBuffer): Uint8Array {\n return new Uint8Array(buffer)\n}\n\nfunction parseJwtPayload(payloadSegment: string): JwtPayload | null {\n try {\n const decoded = decodeBase64UrlToString(payloadSegment)\n const payload = JSON.parse(decoded) as unknown\n if (!payload || typeof payload !== 'object') {\n return null\n }\n return payload as JwtPayload\n } catch {\n return null\n }\n}\n\nfunction isJwtExpired(payload: JwtPayload): boolean {\n const exp = payload.exp\n if (typeof exp !== 'number') {\n return false\n }\n return exp < Math.floor(Date.now() / 1000)\n}\n\nexport async function signHmacBase64Url(secret: string, value: string): Promise<string> {\n const subtle = await getSubtleCrypto()\n const key = await importHmacKey(secret, 'sign')\n const signature = await subtle.sign('HMAC', key, new TextEncoder().encode(value))\n return encodeBytesToBase64Url(bufferToBytes(signature))\n}\n\nexport async function signJwtHS256(\n payload: JwtPayload,\n secret: string,\n expiresIn = 60 * 5,\n): Promise<string> {\n const now = Math.floor(Date.now() / 1000)\n const header = { alg: HS256_ALG, typ: 'JWT' }\n const fullPayload = {\n ...payload,\n iat: now,\n exp: now + expiresIn,\n }\n const headerPart = encodeStringToBase64Url(JSON.stringify(header))\n const payloadPart = encodeStringToBase64Url(JSON.stringify(fullPayload))\n const message = `${headerPart}.${payloadPart}`\n const signature = await signHmacBase64Url(secret, message)\n return `${message}.${signature}`\n}\n\nexport async function verifyJwtHS256<TPayload extends JwtPayload = JwtPayload>(\n token: string,\n secret: string,\n): Promise<TPayload | null> {\n const parts = token.split('.')\n if (parts.length !== 3) {\n return null\n }\n\n const [headerPart, payloadPart, signaturePart] = parts\n if (!headerPart || !payloadPart || !signaturePart) {\n return null\n }\n\n let header: { alg?: string } | null = null\n try {\n header = JSON.parse(decodeBase64UrlToString(headerPart)) as { alg?: string }\n } catch {\n return null\n }\n\n if (!header || header.alg !== HS256_ALG) {\n return null\n }\n\n const payload = parseJwtPayload(payloadPart)\n if (!payload) {\n return null\n }\n\n const expectedSignature = await signHmacBase64Url(secret, `${headerPart}.${payloadPart}`)\n if (expectedSignature !== signaturePart) {\n return null\n }\n\n if (isJwtExpired(payload)) {\n return null\n }\n\n return payload as TPayload\n}\n","import { decodeBase64UrlToString } from './base64.ts'\nimport { parseCookies } from './cookie-utils.ts'\nimport type { AthenaCookieContextRuntime, AthenaCookieOptions } from './types.ts'\n\nconst ALLOWED_COOKIE_SIZE = 4096\nconst ESTIMATED_EMPTY_COOKIE_SIZE = 200\nconst CHUNK_SIZE = ALLOWED_COOKIE_SIZE - ESTIMATED_EMPTY_COOKIE_SIZE\n\ninterface StoreCookie {\n name: string\n value: string\n attributes: AthenaCookieOptions\n}\n\ntype Chunks = Record<string, string>\n\nfunction getChunkIndex(cookieName: string): number {\n const parts = cookieName.split('.')\n const lastPart = parts[parts.length - 1]\n const index = parseInt(lastPart || '0', 10)\n return Number.isNaN(index) ? 0 : index\n}\n\nfunction readExistingChunks(cookieName: string, ctx: AthenaCookieContextRuntime): Chunks {\n const chunks: Chunks = {}\n const cookies = parseCookies(ctx.headers?.get('cookie') || '')\n for (const [name, value] of cookies) {\n if (name.startsWith(cookieName)) {\n chunks[name] = value\n }\n }\n return chunks\n}\n\nfunction joinChunks(chunks: Chunks): string {\n const sortedKeys = Object.keys(chunks).sort((left, right) => getChunkIndex(left) - getChunkIndex(right))\n return sortedKeys.map((key) => chunks[key]).join('')\n}\n\nfunction chunkCookie(storeName: string, cookie: StoreCookie, chunks: Chunks, ctx: AthenaCookieContextRuntime): StoreCookie[] {\n const chunkCount = Math.ceil(cookie.value.length / CHUNK_SIZE)\n if (chunkCount === 1) {\n chunks[cookie.name] = cookie.value\n return [cookie]\n }\n\n const cookies: StoreCookie[] = []\n for (let index = 0; index < chunkCount; index++) {\n const name = `${cookie.name}.${index}`\n const start = index * CHUNK_SIZE\n const value = cookie.value.substring(start, start + CHUNK_SIZE)\n cookies.push({\n ...cookie,\n name,\n value,\n })\n chunks[name] = value\n }\n\n ctx.logger?.debug?.(`CHUNKING_${storeName.toUpperCase()}_COOKIE`, {\n message: `${storeName} cookie exceeds allowed ${ALLOWED_COOKIE_SIZE} bytes.`,\n emptyCookieSize: ESTIMATED_EMPTY_COOKIE_SIZE,\n valueSize: cookie.value.length,\n chunkCount,\n chunks: cookies.map((entry) => entry.value.length + ESTIMATED_EMPTY_COOKIE_SIZE),\n })\n\n return cookies\n}\n\nfunction getCleanCookies(chunks: Chunks, cookieOptions: AthenaCookieOptions): Record<string, StoreCookie> {\n const cleanedChunks: Record<string, StoreCookie> = {}\n for (const name in chunks) {\n cleanedChunks[name] = {\n name,\n value: '',\n attributes: {\n ...cookieOptions,\n maxAge: 0,\n },\n }\n }\n return cleanedChunks\n}\n\nconst storeFactory =\n (storeName: string) =>\n (cookieName: string, cookieOptions: AthenaCookieOptions, ctx: AthenaCookieContextRuntime) => {\n const chunks = readExistingChunks(cookieName, ctx)\n\n return {\n getValue(): string {\n return joinChunks(chunks)\n },\n hasChunks(): boolean {\n return Object.keys(chunks).length > 0\n },\n chunk(value: string, options?: Partial<AthenaCookieOptions>): StoreCookie[] {\n const cleanedChunks = getCleanCookies(chunks, cookieOptions)\n for (const name in chunks) {\n delete chunks[name]\n }\n\n const cookies: Record<string, StoreCookie> = cleanedChunks\n const chunked = chunkCookie(\n storeName,\n {\n name: cookieName,\n value,\n attributes: {\n ...cookieOptions,\n ...options,\n },\n },\n chunks,\n ctx,\n )\n for (const chunk of chunked) {\n cookies[chunk.name] = chunk\n }\n return Object.values(cookies)\n },\n clean(): StoreCookie[] {\n const cleanedChunks = getCleanCookies(chunks, cookieOptions)\n for (const name in chunks) {\n delete chunks[name]\n }\n return Object.values(cleanedChunks)\n },\n setCookies(cookies: StoreCookie[]): void {\n for (const cookie of cookies) {\n ctx.setCookie(cookie.name, cookie.value, cookie.attributes)\n }\n },\n }\n }\n\nexport const createSessionStore = storeFactory('Session')\nexport const createAccountStore = storeFactory('Account')\n\nexport function getChunkedCookie(ctx: AthenaCookieContextRuntime, cookieName: string): string | null {\n const value = ctx.getCookie?.(cookieName)\n if (value) {\n return value\n }\n\n const chunks: Array<{ index: number; value: string }> = []\n const cookieHeader = ctx.headers?.get('cookie')\n if (!cookieHeader) {\n return null\n }\n\n for (const [name, parsedValue] of parseCookies(cookieHeader)) {\n if (!name.startsWith(`${cookieName}.`)) {\n continue\n }\n const parts = name.split('.')\n const indexStr = parts.at(-1)\n const index = parseInt(indexStr || '0', 10)\n if (!Number.isNaN(index)) {\n chunks.push({ index, value: parsedValue })\n }\n }\n\n if (chunks.length === 0) {\n return null\n }\n\n chunks.sort((left, right) => left.index - right.index)\n return chunks.map((entry) => entry.value).join('')\n}\n\n/**\n * SDK helper to read an account cookie value.\n * - If plain JSON: returns parsed value.\n * - If base64url-encoded JSON: returns parsed value.\n * - Otherwise: returns the raw cookie string.\n */\nexport async function getAccountCookie(\n ctx: AthenaCookieContextRuntime,\n cookieName = ctx.context.authCookies.accountData.name,\n): Promise<unknown | null> {\n const value = getChunkedCookie(ctx, cookieName)\n if (!value) {\n return null\n }\n\n try {\n return JSON.parse(value) as unknown\n } catch {\n // Fall through and try base64url payload parsing.\n }\n\n try {\n return JSON.parse(decodeBase64UrlToString(value)) as unknown\n } catch {\n return value\n }\n}\n","import { decodeBase64UrlToString, encodeStringToBase64Url } from './base64.ts'\nimport {\n HOST_COOKIE_PREFIX,\n SECURE_COOKIE_PREFIX,\n parseCookies,\n parseSetCookieHeader,\n setCookieToHeader,\n setRequestCookie,\n splitSetCookieHeader,\n stripSecureCookiePrefix,\n toCookieOptions,\n} from './cookie-utils.ts'\nimport { signHmacBase64Url, signJwtHS256, verifyJwtHS256 } from './crypto.ts'\nimport { createAccountStore, createSessionStore, getAccountCookie, getChunkedCookie } from './session-store.ts'\nimport type {\n AthenaAuthCookie,\n AthenaAuthCookies,\n AthenaCookieContextRuntime,\n AthenaCookieOptions,\n AthenaCookiesOptions,\n AthenaCookieVersionResolver,\n AthenaGetCookieCacheConfig,\n AthenaSessionPair,\n} from './types.ts'\n\nconst DEFAULT_COOKIE_PREFIX = 'athena-auth'\nconst LEGACY_COOKIE_PREFIX = 'better-auth'\nconst DEFAULT_SESSION_MAX_AGE = 7 * 24 * 60 * 60\nconst DEFAULT_CACHE_MAX_AGE = 60 * 5\n\nfunction isProductionRuntime(): boolean {\n return typeof process !== 'undefined' && process.env?.NODE_ENV === 'production'\n}\n\nfunction getEnvironmentSecret(): string | undefined {\n if (typeof process === 'undefined') {\n return undefined\n }\n return process.env?.ATHENA_AUTH_SECRET || process.env?.BETTER_AUTH_SECRET || process.env?.AUTH_SECRET\n}\n\nfunction isDynamicBaseURLConfig(baseURL: AthenaCookiesOptions['baseURL']): boolean {\n return (\n typeof baseURL === 'object' &&\n baseURL !== null &&\n 'allowedHosts' in baseURL &&\n Array.isArray((baseURL as { allowedHosts?: unknown }).allowedHosts)\n )\n}\n\nfunction resolveCookiePrefixes(primaryPrefix: string): string[] {\n const prefixes = [primaryPrefix]\n if (!prefixes.includes(DEFAULT_COOKIE_PREFIX)) {\n prefixes.push(DEFAULT_COOKIE_PREFIX)\n }\n if (!prefixes.includes(LEGACY_COOKIE_PREFIX)) {\n prefixes.push(LEGACY_COOKIE_PREFIX)\n }\n return prefixes\n}\n\nfunction createError(message: string): Error {\n return new Error(`@xylex-group/athena/cookies: ${message}`)\n}\n\nfunction getSecretOrThrow(secret?: string): string {\n const resolved = secret || getEnvironmentSecret()\n if (!resolved) {\n throw createError(\n 'getCookieCache requires a secret. Pass `secret` or set ATHENA_AUTH_SECRET/BETTER_AUTH_SECRET/AUTH_SECRET.',\n )\n }\n return resolved\n}\n\nfunction asObject(value: unknown): Record<string, unknown> | null {\n if (!value || typeof value !== 'object') {\n return null\n }\n return value as Record<string, unknown>\n}\n\nfunction getSessionTokenFromPair(session: AthenaSessionPair): string {\n const token = session.session?.token\n if (typeof token !== 'string' || token.length === 0) {\n throw createError('setSessionCookie requires `session.session.token` to be a non-empty string.')\n }\n return token\n}\n\nasync function resolveCookieVersion(\n versionConfig: AthenaCookieVersionResolver | undefined,\n session: Record<string, unknown>,\n user: Record<string, unknown>,\n): Promise<string> {\n if (!versionConfig) {\n return '1'\n }\n if (typeof versionConfig === 'string') {\n return versionConfig\n }\n return versionConfig(session, user)\n}\n\nfunction getSessionCookieCacheName(cookiePrefix: string, cookieName: string, isSecure: boolean): string {\n return isSecure ? `${SECURE_COOKIE_PREFIX}${cookiePrefix}.${cookieName}` : `${cookiePrefix}.${cookieName}`\n}\n\nasync function setCookieValue(\n ctx: AthenaCookieContextRuntime,\n name: string,\n value: string,\n attributes: AthenaCookieOptions,\n): Promise<void> {\n const secret = ctx.context.secret\n if (secret && typeof ctx.setSignedCookie === 'function') {\n await ctx.setSignedCookie(name, value, secret, attributes)\n return\n }\n ctx.setCookie(name, value, attributes)\n}\n\nfunction parseJsonSafely<T>(value: string): T | null {\n try {\n return JSON.parse(value) as T\n } catch {\n return null\n }\n}\n\nfunction getIsSecureCookie(config: { isSecure?: boolean } | undefined): boolean {\n if (config?.isSecure !== undefined) {\n return config.isSecure\n }\n return isProductionRuntime()\n}\n\nexport function createCookieGetter(options: AthenaCookiesOptions) {\n const baseURLString = typeof options.baseURL === 'string' ? options.baseURL : undefined\n const dynamicProtocol =\n typeof options.baseURL === 'object' && options.baseURL !== null ? options.baseURL.protocol : undefined\n\n const secure =\n options.advanced?.useSecureCookies !== undefined\n ? options.advanced.useSecureCookies\n : dynamicProtocol === 'https'\n ? true\n : dynamicProtocol === 'http'\n ? false\n : baseURLString\n ? baseURLString.startsWith('https://')\n : isProductionRuntime()\n\n const secureCookiePrefix = secure ? SECURE_COOKIE_PREFIX : ''\n const crossSubdomainEnabled = !!options.advanced?.crossSubDomainCookies?.enabled\n const domain = crossSubdomainEnabled\n ? options.advanced?.crossSubDomainCookies?.domain || (baseURLString ? new URL(baseURLString).hostname : undefined)\n : undefined\n\n if (crossSubdomainEnabled && !domain && !isDynamicBaseURLConfig(options.baseURL)) {\n throw createError('baseURL is required when `crossSubDomainCookies.enabled` is true.')\n }\n\n function createCookie(cookieName: string, overrideAttributes: Partial<AthenaCookieOptions> = {}): AthenaAuthCookie {\n const prefix = options.advanced?.cookiePrefix || DEFAULT_COOKIE_PREFIX\n const name = options.advanced?.cookies?.[cookieName]?.name || `${prefix}.${cookieName}`\n const attributes = options.advanced?.cookies?.[cookieName]?.attributes || {}\n\n return {\n name: `${secureCookiePrefix}${name}`,\n attributes: {\n secure: !!secureCookiePrefix,\n sameSite: 'lax',\n path: '/',\n httpOnly: true,\n ...(crossSubdomainEnabled ? { domain } : {}),\n ...options.advanced?.defaultCookieAttributes,\n ...overrideAttributes,\n ...attributes,\n },\n }\n }\n\n return createCookie\n}\n\nexport function getCookies(options: AthenaCookiesOptions): AthenaAuthCookies {\n const createCookie = createCookieGetter(options)\n const sessionToken = createCookie('session_token', { maxAge: options.session?.expiresIn || DEFAULT_SESSION_MAX_AGE })\n const sessionData = createCookie('session_data', { maxAge: options.session?.cookieCache?.maxAge || DEFAULT_CACHE_MAX_AGE })\n const accountData = createCookie('account_data', { maxAge: options.session?.cookieCache?.maxAge || DEFAULT_CACHE_MAX_AGE })\n const dontRememberToken = createCookie('dont_remember')\n\n return {\n sessionToken: {\n name: sessionToken.name,\n attributes: sessionToken.attributes,\n },\n sessionData: {\n name: sessionData.name,\n attributes: sessionData.attributes,\n },\n dontRememberToken: {\n name: dontRememberToken.name,\n attributes: dontRememberToken.attributes,\n },\n accountData: {\n name: accountData.name,\n attributes: accountData.attributes,\n },\n }\n}\n\nexport async function setCookieCache(\n ctx: AthenaCookieContextRuntime,\n session: AthenaSessionPair,\n dontRememberMe: boolean,\n): Promise<void> {\n const cookieCacheConfig = ctx.context.options?.session?.cookieCache\n if (!cookieCacheConfig?.enabled) {\n return\n }\n\n const version = await resolveCookieVersion(\n cookieCacheConfig.version,\n session.session as Record<string, unknown>,\n session.user as Record<string, unknown>,\n )\n\n const sessionData = {\n session: session.session,\n user: session.user,\n updatedAt: Date.now(),\n version,\n }\n\n const baseAttributes = ctx.context.authCookies.sessionData.attributes\n const maxAge = dontRememberMe ? undefined : baseAttributes.maxAge\n const options: AthenaCookieOptions = {\n ...baseAttributes,\n maxAge,\n }\n const expiresAt = Date.now() + ((options.maxAge || 60) * 1000)\n const strategy = cookieCacheConfig.strategy || 'compact'\n const secret = getSecretOrThrow(ctx.context.secret)\n\n let encoded: string\n if (strategy === 'jwt') {\n encoded = await signJwtHS256(sessionData, secret, options.maxAge || DEFAULT_CACHE_MAX_AGE)\n } else if (strategy === 'jwe') {\n throw createError('`jwe` strategy is not supported by the SDK cookie helper.')\n } else {\n const signature = await signHmacBase64Url(\n secret,\n JSON.stringify({\n ...sessionData,\n expiresAt,\n }),\n )\n encoded = encodeStringToBase64Url(\n JSON.stringify({\n session: sessionData,\n expiresAt,\n signature,\n }),\n )\n }\n\n if (encoded.length > 4093) {\n const store = createSessionStore(ctx.context.authCookies.sessionData.name, options, ctx)\n const cookies = store.chunk(encoded, options)\n store.setCookies(cookies)\n } else {\n const store = createSessionStore(ctx.context.authCookies.sessionData.name, options, ctx)\n if (store.hasChunks()) {\n store.setCookies(store.clean())\n }\n ctx.setCookie(ctx.context.authCookies.sessionData.name, encoded, options)\n }\n}\n\nexport async function setSessionCookie(\n ctx: AthenaCookieContextRuntime,\n session: AthenaSessionPair,\n dontRememberMe?: boolean,\n overrides?: Partial<AthenaCookieOptions>,\n): Promise<void> {\n if (dontRememberMe === undefined && typeof ctx.getSignedCookie === 'function' && ctx.context.secret) {\n const existingFlag = await ctx.getSignedCookie(ctx.context.authCookies.dontRememberToken.name, ctx.context.secret)\n dontRememberMe = !!existingFlag\n }\n\n const resolvedDontRememberMe = dontRememberMe ?? false\n const token = getSessionTokenFromPair(session)\n const options = ctx.context.authCookies.sessionToken.attributes\n const maxAge = resolvedDontRememberMe ? undefined : ctx.context.sessionConfig?.expiresIn\n await setCookieValue(ctx, ctx.context.authCookies.sessionToken.name, token, {\n ...options,\n maxAge,\n ...overrides,\n })\n\n if (resolvedDontRememberMe) {\n await setCookieValue(\n ctx,\n ctx.context.authCookies.dontRememberToken.name,\n 'true',\n ctx.context.authCookies.dontRememberToken.attributes,\n )\n }\n\n await setCookieCache(ctx, session, resolvedDontRememberMe)\n ctx.context.setNewSession?.(session)\n}\n\n/**\n * Expires a cookie by setting `maxAge: 0` while preserving attributes.\n */\nexport function expireCookie(ctx: AthenaCookieContextRuntime, cookie: AthenaAuthCookie): void {\n ctx.setCookie(cookie.name, '', {\n ...cookie.attributes,\n maxAge: 0,\n })\n}\n\nexport function deleteSessionCookie(ctx: AthenaCookieContextRuntime, skipDontRememberMe?: boolean): void {\n expireCookie(ctx, ctx.context.authCookies.sessionToken)\n expireCookie(ctx, ctx.context.authCookies.sessionData)\n\n if (ctx.context.options?.account?.storeAccountCookie) {\n expireCookie(ctx, ctx.context.authCookies.accountData)\n const accountStore = createAccountStore(\n ctx.context.authCookies.accountData.name,\n ctx.context.authCookies.accountData.attributes,\n ctx,\n )\n accountStore.setCookies(accountStore.clean())\n }\n\n const sessionStore = createSessionStore(\n ctx.context.authCookies.sessionData.name,\n ctx.context.authCookies.sessionData.attributes,\n ctx,\n )\n sessionStore.setCookies(sessionStore.clean())\n\n if (!skipDontRememberMe) {\n expireCookie(ctx, ctx.context.authCookies.dontRememberToken)\n }\n}\n\nexport const getSessionCookie = (\n request: Request | Headers,\n config?:\n | {\n cookiePrefix?: string\n cookieName?: string\n path?: string\n }\n | undefined,\n): string | null => {\n const cookies = (request instanceof Headers || !('headers' in request) ? request : request.headers).get('cookie')\n if (!cookies) {\n return null\n }\n\n const { cookieName = 'session_token', cookiePrefix = 'athena-auth' } = config || {}\n const parsedCookie = parseCookies(cookies)\n const getCookie = (name: string): string | undefined =>\n parsedCookie.get(name) || parsedCookie.get(`${SECURE_COOKIE_PREFIX}${name}`)\n const sessionToken = getCookie(`${cookiePrefix}.${cookieName}`) || getCookie(`${cookiePrefix}-${cookieName}`)\n if (sessionToken) {\n return sessionToken\n }\n return null\n}\n\nexport const getCookieCache = async <\n SessionShape extends Record<string, unknown> = Record<string, unknown>,\n UserShape extends Record<string, unknown> = Record<string, unknown>,\n>(\n request: Request | Headers,\n config?: AthenaGetCookieCacheConfig<SessionShape, UserShape>,\n): Promise<{\n session: SessionShape\n user: UserShape\n updatedAt: number\n version?: string\n} | null> => {\n const headers = request instanceof Headers || !('headers' in request) ? request : request.headers\n const cookieHeader = headers.get('cookie')\n if (!cookieHeader) {\n return null\n }\n\n const parsedCookie = parseCookies(cookieHeader)\n const cookieName = config?.cookieName || 'session_data'\n const requestedPrefix = config?.cookiePrefix || DEFAULT_COOKIE_PREFIX\n const strategy = config?.strategy || 'compact'\n const cookiePrefixes = resolveCookiePrefixes(requestedPrefix)\n const isSecure = getIsSecureCookie(config)\n const secret = getSecretOrThrow(config?.secret)\n\n let sessionData: string | undefined\n\n for (const prefix of cookiePrefixes) {\n const candidate = getSessionCookieCacheName(prefix, cookieName, isSecure)\n const cookieValue = parsedCookie.get(candidate)\n if (cookieValue) {\n sessionData = cookieValue\n break\n }\n }\n\n if (!sessionData) {\n const reconstructedChunks: Array<{ index: number; value: string }> = []\n for (const prefix of cookiePrefixes) {\n const candidate = getSessionCookieCacheName(prefix, cookieName, isSecure)\n for (const [name, value] of parsedCookie.entries()) {\n if (!name.startsWith(`${candidate}.`)) {\n continue\n }\n const parts = name.split('.')\n const indexStr = parts[parts.length - 1]\n const index = parseInt(indexStr || '0', 10)\n if (!Number.isNaN(index)) {\n reconstructedChunks.push({ index, value })\n }\n }\n if (reconstructedChunks.length > 0) {\n break\n }\n }\n\n if (reconstructedChunks.length > 0) {\n reconstructedChunks.sort((left, right) => left.index - right.index)\n sessionData = reconstructedChunks.map((chunk) => chunk.value).join('')\n }\n }\n\n if (!sessionData) {\n return null\n }\n\n if (strategy === 'jwe') {\n throw createError(\n '`jwe` strategy is not supported by the SDK cookie helper. Use compact/jwt or pass cookie data through the auth server.',\n )\n }\n\n if (strategy === 'jwt') {\n const payload = await verifyJwtHS256<Record<string, unknown>>(sessionData, secret)\n if (!payload) {\n return null\n }\n const sessionRecord = asObject(payload.session)\n const userRecord = asObject(payload.user)\n const updatedAt = payload.updatedAt\n if (!sessionRecord || !userRecord || typeof updatedAt !== 'number') {\n return null\n }\n\n if (config?.version) {\n const cookieVersion = typeof payload.version === 'string' ? payload.version : '1'\n const expectedVersion =\n typeof config.version === 'string'\n ? config.version\n : await config.version(sessionRecord as SessionShape, userRecord as UserShape)\n if (cookieVersion !== expectedVersion) {\n return null\n }\n }\n\n return {\n session: sessionRecord as SessionShape,\n user: userRecord as UserShape,\n updatedAt,\n version: typeof payload.version === 'string' ? payload.version : undefined,\n }\n }\n\n const compactPayload = parseJsonSafely<{\n session: {\n session: SessionShape\n user: UserShape\n updatedAt: number\n version?: string\n }\n expiresAt: number\n signature: string\n }>(decodeBase64UrlToString(sessionData))\n\n if (!compactPayload) {\n return null\n }\n\n const expectedSignature = await signHmacBase64Url(\n secret,\n JSON.stringify({\n ...compactPayload.session,\n expiresAt: compactPayload.expiresAt,\n }),\n )\n\n if (expectedSignature !== compactPayload.signature) {\n return null\n }\n\n if (compactPayload.expiresAt <= Date.now()) {\n return null\n }\n\n const resolvedSession = compactPayload.session\n if (config?.version) {\n const cookieVersion = resolvedSession.version || '1'\n const expectedVersion =\n typeof config.version === 'string'\n ? config.version\n : await config.version(resolvedSession.session, resolvedSession.user)\n if (cookieVersion !== expectedVersion) {\n return null\n }\n }\n\n const sessionObject = asObject(resolvedSession.session)\n const userObject = asObject(resolvedSession.user)\n if (!sessionObject || !userObject) {\n return null\n }\n\n return {\n session: sessionObject as SessionShape,\n user: userObject as UserShape,\n updatedAt: resolvedSession.updatedAt,\n version: resolvedSession.version,\n }\n}\n\nexport {\n HOST_COOKIE_PREFIX,\n SECURE_COOKIE_PREFIX,\n createSessionStore,\n getAccountCookie,\n getChunkedCookie,\n parseCookies,\n parseSetCookieHeader,\n setCookieToHeader,\n setRequestCookie,\n splitSetCookieHeader,\n stripSecureCookiePrefix,\n toCookieOptions,\n}\n\nexport type {\n AthenaAuthCookie,\n AthenaAuthCookies,\n AthenaCookieContextRuntime,\n AthenaCookieOptions,\n AthenaCookiesOptions,\n AthenaGetCookieCacheConfig,\n}\n"]}