@rttnd/gau 1.4.4 → 1.4.6

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.
@@ -1 +1 @@
1
- import{createRequestSessionCache as e,resolveAuth as s,resolveServerSession as o}from"../../chunk-MXZ363UZ.js";import{REFRESHED_TOKEN_HEADER as r,createHandler as t}from"../../chunk-NHENQLYI.js";import"../../chunk-VB2ML4Q5.js";import"../../chunk-VXWI4D7H.js";import n from"process";function c(e){const o=s(e);o.development="development"===n.env.NODE_ENV,o.errorRedirect||(o.errorRedirect="/auth/error");const r=t(o),c=e=>r(e.request);return{GET:c,POST:c,OPTIONS:c}}function i(e){return async s=>o(e,s)}function u(o,r){const t=s(r),n=i(t);return async s=>{const r=new URL(s.request.url);if("boolean"==typeof o?o:o.includes(r.pathname)){const o=await n(s.request),r=e(t,s.request,o);return s.locals.getSession=r.getSession,void(s.locals.getServerSession=r.getServerSession)}const c=e(t,s.request);s.locals.getServerSession=c.getServerSession,s.locals.getSession=c.getSession}}function a(e,o={}){const t=s(e);return async e=>{const s=await t.refreshSession(e.request,o);s&&("cookie"===s.source?e.response.headers.set("Set-Cookie",s.cookie):e.response.headers.set(r,s.token))}}export{r as REFRESHED_TOKEN_HEADER,c as SolidAuth,u as authMiddleware,i as createSolidStartGetServerSession,a as refreshMiddleware};//# sourceMappingURL=index.js.map
1
+ import{createRequestSessionCache as e,resolveAuth as s,resolveServerSession as o}from"../../chunk-MXZ363UZ.js";import{REFRESHED_TOKEN_HEADER as r,createHandler as t}from"../../chunk-NHENQLYI.js";import"../../chunk-VB2ML4Q5.js";import"../../chunk-VXWI4D7H.js";import{DEV as n}from"esm-env";function c(e){const o=s(e);o.development=n,o.errorRedirect||(o.errorRedirect="/auth/error");const r=t(o),c=e=>r(e.request);return{GET:c,POST:c,OPTIONS:c}}function i(e){return async s=>o(e,s)}function u(o,r){const t=s(r),n=i(t);return async s=>{const r=new URL(s.request.url);if("boolean"==typeof o?o:o.includes(r.pathname)){const o=await n(s.request),r=e(t,s.request,o);return s.locals.getSession=r.getSession,void(s.locals.getServerSession=r.getServerSession)}const c=e(t,s.request);s.locals.getServerSession=c.getServerSession,s.locals.getSession=c.getSession}}function a(e,o={}){const t=s(e);return async e=>{const s=await t.refreshSession(e.request,o);s&&("cookie"===s.source?e.response.headers.set("Set-Cookie",s.cookie):e.response.headers.set(r,s.token))}}export{r as REFRESHED_TOKEN_HEADER,c as SolidAuth,u as authMiddleware,i as createSolidStartGetServerSession,a as refreshMiddleware};//# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/solidstart/index.ts"],"sourcesContent":["import type { CreateAuthOptions, RefreshSessionOptions } from '../core'\nimport type { AuthInstance } from '../core/serverSession'\nimport type { OAuthProvider } from '../oauth'\nimport process from 'node:process'\nimport { createHandler, REFRESHED_TOKEN_HEADER } from '../core'\nimport { createRequestSessionCache, resolveAuth, resolveServerSession } from '../core/serverSession'\n\nexport { REFRESHED_TOKEN_HEADER }\n\n/**\n * Creates GET and POST handlers for SolidStart.\n *\n * @example\n * ```ts\n * // src/routes/api/auth/[...auth].ts\n * import { SolidAuth } from '@rttnd/gau/solid-start'\n * import { authOptions } from '~/server/auth'\n *\n * export const { GET, POST } = SolidAuth(authOptions)\n * ```\n */\nexport function SolidAuth<const TProviders extends OAuthProvider<any>[]>(optionsOrAuth: CreateAuthOptions<TProviders> | AuthInstance<TProviders>) {\n const auth = resolveAuth(optionsOrAuth)\n\n auth.development = process.env.NODE_ENV === 'development'\n\n if (!auth.errorRedirect)\n auth.errorRedirect = '/auth/error'\n\n const handler = createHandler(auth)\n const solidHandler = (event: any) => handler(event.request)\n return {\n GET: solidHandler,\n POST: solidHandler,\n OPTIONS: solidHandler,\n }\n}\n\n/**\n * Creates a SolidStart-compatible getServerSession resolver to validate a session from a Request.\n * Returns full session data including access tokens - for server-side use only.\n * @internal\n */\nexport function createSolidStartGetServerSession<const TProviders extends OAuthProvider<any>[]>(auth: AuthInstance<TProviders>) {\n return async (request: Request) => resolveServerSession(auth, request)\n}\n\n/**\n * SolidStart middleware factory to attach `locals.getSession` and `locals.getServerSession`.\n *\n * - `getSession()` - Returns client-safe session (no tokens). Safe to serialize to browser.\n * - `getServerSession()` - Returns full session with access/refresh tokens. Server-only.\n *\n * @param pathsToPreLoad - Control eager vs lazy session loading:\n * - `true` - Preload session on all routes\n * - `false` - Lazy load (resolve on first `getSession()` call)\n * - `string[]` - Preload only on specific paths\n *\n * @example\n * ```ts\n * // middleware.ts\n * export default createMiddleware({\n * onRequest: [authMiddleware(true, auth)],\n * })\n */\nexport function authMiddleware<const TProviders extends OAuthProvider<any>[]>(\n pathsToPreLoad: string[] | boolean,\n optionsOrAuth: CreateAuthOptions<TProviders> | AuthInstance<TProviders>,\n) {\n const auth = resolveAuth(optionsOrAuth)\n\n const getServerSession = createSolidStartGetServerSession(auth)\n\n return async (event: any) => {\n const url = new URL(event.request.url)\n const shouldPreload = typeof pathsToPreLoad === 'boolean'\n ? pathsToPreLoad\n : pathsToPreLoad.includes(url.pathname)\n\n if (shouldPreload) {\n const preloaded = await getServerSession(event.request)\n const sessionCache = createRequestSessionCache(auth, event.request, preloaded)\n event.locals.getSession = sessionCache.getSession\n event.locals.getServerSession = sessionCache.getServerSession\n return\n }\n\n const sessionCache = createRequestSessionCache(auth, event.request)\n event.locals.getServerSession = sessionCache.getServerSession\n event.locals.getSession = sessionCache.getSession\n }\n}\n\n/**\n * SolidStart middleware to automatically refresh sessions.\n * Sets the appropriate header based on how the token was provided:\n * - Cookie → Set-Cookie header\n * - Bearer token → X-Refreshed-Token header (for Tauri/mobile clients)\n *\n * @example\n * ```ts\n * // middleware.ts\n * import { authMiddleware, refreshMiddleware } from '@rttnd/gau/solidstart'\n *\n * export default createMiddleware({\n * onRequest: [\n * authMiddleware(true, auth),\n * refreshMiddleware(auth, { threshold: 0.5 }),\n * ],\n * })\n * ```\n */\nexport function refreshMiddleware<const TProviders extends OAuthProvider<any>[]>(\n optionsOrAuth: CreateAuthOptions<TProviders> | AuthInstance<TProviders>,\n options: RefreshSessionOptions = {},\n) {\n const auth = resolveAuth(optionsOrAuth)\n\n return async (event: any) => {\n const refreshed = await auth.refreshSession(event.request, options)\n\n if (refreshed) {\n if (refreshed.source === 'cookie')\n event.response.headers.set('Set-Cookie', refreshed.cookie)\n else\n event.response.headers.set(REFRESHED_TOKEN_HEADER, refreshed.token)\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAGA,OAAO,aAAa;AAkBb,SAAS,UAAyD,eAAyE;AAChJ,QAAM,OAAO,YAAY,aAAa;AAEtC,OAAK,cAAc,QAAQ,IAAI,aAAa;AAE5C,MAAI,CAAC,KAAK;AACR,SAAK,gBAAgB;AAEvB,QAAM,UAAU,cAAc,IAAI;AAClC,QAAM,eAAe,CAAC,UAAe,QAAQ,MAAM,OAAO;AAC1D,SAAO;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AACF;AAOO,SAAS,iCAAgF,MAAgC;AAC9H,SAAO,OAAO,YAAqB,qBAAqB,MAAM,OAAO;AACvE;AAoBO,SAAS,eACd,gBACA,eACA;AACA,QAAM,OAAO,YAAY,aAAa;AAEtC,QAAM,mBAAmB,iCAAiC,IAAI;AAE9D,SAAO,OAAO,UAAe;AAC3B,UAAM,MAAM,IAAI,IAAI,MAAM,QAAQ,GAAG;AACrC,UAAM,gBAAgB,OAAO,mBAAmB,YAC5C,iBACA,eAAe,SAAS,IAAI,QAAQ;AAExC,QAAI,eAAe;AACjB,YAAM,YAAY,MAAM,iBAAiB,MAAM,OAAO;AACtD,YAAMA,gBAAe,0BAA0B,MAAM,MAAM,SAAS,SAAS;AAC7E,YAAM,OAAO,aAAaA,cAAa;AACvC,YAAM,OAAO,mBAAmBA,cAAa;AAC7C;AAAA,IACF;AAEA,UAAM,eAAe,0BAA0B,MAAM,MAAM,OAAO;AAClE,UAAM,OAAO,mBAAmB,aAAa;AAC7C,UAAM,OAAO,aAAa,aAAa;AAAA,EACzC;AACF;AAqBO,SAAS,kBACd,eACA,UAAiC,CAAC,GAClC;AACA,QAAM,OAAO,YAAY,aAAa;AAEtC,SAAO,OAAO,UAAe;AAC3B,UAAM,YAAY,MAAM,KAAK,eAAe,MAAM,SAAS,OAAO;AAElE,QAAI,WAAW;AACb,UAAI,UAAU,WAAW;AACvB,cAAM,SAAS,QAAQ,IAAI,cAAc,UAAU,MAAM;AAAA;AAEzD,cAAM,SAAS,QAAQ,IAAI,wBAAwB,UAAU,KAAK;AAAA,IACtE;AAAA,EACF;AACF;","names":["sessionCache"]}
1
+ {"version":3,"sources":["../../../src/solidstart/index.ts"],"sourcesContent":["import type { CreateAuthOptions, RefreshSessionOptions } from '../core'\nimport type { AuthInstance } from '../core/serverSession'\nimport type { OAuthProvider } from '../oauth'\nimport { DEV } from 'esm-env'\nimport { createHandler, REFRESHED_TOKEN_HEADER } from '../core'\nimport { createRequestSessionCache, resolveAuth, resolveServerSession } from '../core/serverSession'\n\nexport { REFRESHED_TOKEN_HEADER }\n\n/**\n * Creates GET and POST handlers for SolidStart.\n *\n * @example\n * ```ts\n * // src/routes/api/auth/[...auth].ts\n * import { SolidAuth } from '@rttnd/gau/solid-start'\n * import { authOptions } from '~/server/auth'\n *\n * export const { GET, POST } = SolidAuth(authOptions)\n * ```\n */\nexport function SolidAuth<const TProviders extends OAuthProvider<any>[]>(optionsOrAuth: CreateAuthOptions<TProviders> | AuthInstance<TProviders>) {\n const auth = resolveAuth(optionsOrAuth)\n\n auth.development = DEV\n\n if (!auth.errorRedirect)\n auth.errorRedirect = '/auth/error'\n\n const handler = createHandler(auth)\n const solidHandler = (event: any) => handler(event.request)\n return {\n GET: solidHandler,\n POST: solidHandler,\n OPTIONS: solidHandler,\n }\n}\n\n/**\n * Creates a SolidStart-compatible getServerSession resolver to validate a session from a Request.\n * Returns full session data including access tokens - for server-side use only.\n * @internal\n */\nexport function createSolidStartGetServerSession<const TProviders extends OAuthProvider<any>[]>(auth: AuthInstance<TProviders>) {\n return async (request: Request) => resolveServerSession(auth, request)\n}\n\n/**\n * SolidStart middleware factory to attach `locals.getSession` and `locals.getServerSession`.\n *\n * - `getSession()` - Returns client-safe session (no tokens). Safe to serialize to browser.\n * - `getServerSession()` - Returns full session with access/refresh tokens. Server-only.\n *\n * @param pathsToPreLoad - Control eager vs lazy session loading:\n * - `true` - Preload session on all routes\n * - `false` - Lazy load (resolve on first `getSession()` call)\n * - `string[]` - Preload only on specific paths\n *\n * @example\n * ```ts\n * // middleware.ts\n * export default createMiddleware({\n * onRequest: [authMiddleware(true, auth)],\n * })\n */\nexport function authMiddleware<const TProviders extends OAuthProvider<any>[]>(\n pathsToPreLoad: string[] | boolean,\n optionsOrAuth: CreateAuthOptions<TProviders> | AuthInstance<TProviders>,\n) {\n const auth = resolveAuth(optionsOrAuth)\n\n const getServerSession = createSolidStartGetServerSession(auth)\n\n return async (event: any) => {\n const url = new URL(event.request.url)\n const shouldPreload = typeof pathsToPreLoad === 'boolean'\n ? pathsToPreLoad\n : pathsToPreLoad.includes(url.pathname)\n\n if (shouldPreload) {\n const preloaded = await getServerSession(event.request)\n const sessionCache = createRequestSessionCache(auth, event.request, preloaded)\n event.locals.getSession = sessionCache.getSession\n event.locals.getServerSession = sessionCache.getServerSession\n return\n }\n\n const sessionCache = createRequestSessionCache(auth, event.request)\n event.locals.getServerSession = sessionCache.getServerSession\n event.locals.getSession = sessionCache.getSession\n }\n}\n\n/**\n * SolidStart middleware to automatically refresh sessions.\n * Sets the appropriate header based on how the token was provided:\n * - Cookie → Set-Cookie header\n * - Bearer token → X-Refreshed-Token header (for Tauri/mobile clients)\n *\n * @example\n * ```ts\n * // middleware.ts\n * import { authMiddleware, refreshMiddleware } from '@rttnd/gau/solidstart'\n *\n * export default createMiddleware({\n * onRequest: [\n * authMiddleware(true, auth),\n * refreshMiddleware(auth, { threshold: 0.5 }),\n * ],\n * })\n * ```\n */\nexport function refreshMiddleware<const TProviders extends OAuthProvider<any>[]>(\n optionsOrAuth: CreateAuthOptions<TProviders> | AuthInstance<TProviders>,\n options: RefreshSessionOptions = {},\n) {\n const auth = resolveAuth(optionsOrAuth)\n\n return async (event: any) => {\n const refreshed = await auth.refreshSession(event.request, options)\n\n if (refreshed) {\n if (refreshed.source === 'cookie')\n event.response.headers.set('Set-Cookie', refreshed.cookie)\n else\n event.response.headers.set(REFRESHED_TOKEN_HEADER, refreshed.token)\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAGA,SAAS,WAAW;AAkBb,SAAS,UAAyD,eAAyE;AAChJ,QAAM,OAAO,YAAY,aAAa;AAEtC,OAAK,cAAc;AAEnB,MAAI,CAAC,KAAK;AACR,SAAK,gBAAgB;AAEvB,QAAM,UAAU,cAAc,IAAI;AAClC,QAAM,eAAe,CAAC,UAAe,QAAQ,MAAM,OAAO;AAC1D,SAAO;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AACF;AAOO,SAAS,iCAAgF,MAAgC;AAC9H,SAAO,OAAO,YAAqB,qBAAqB,MAAM,OAAO;AACvE;AAoBO,SAAS,eACd,gBACA,eACA;AACA,QAAM,OAAO,YAAY,aAAa;AAEtC,QAAM,mBAAmB,iCAAiC,IAAI;AAE9D,SAAO,OAAO,UAAe;AAC3B,UAAM,MAAM,IAAI,IAAI,MAAM,QAAQ,GAAG;AACrC,UAAM,gBAAgB,OAAO,mBAAmB,YAC5C,iBACA,eAAe,SAAS,IAAI,QAAQ;AAExC,QAAI,eAAe;AACjB,YAAM,YAAY,MAAM,iBAAiB,MAAM,OAAO;AACtD,YAAMA,gBAAe,0BAA0B,MAAM,MAAM,SAAS,SAAS;AAC7E,YAAM,OAAO,aAAaA,cAAa;AACvC,YAAM,OAAO,mBAAmBA,cAAa;AAC7C;AAAA,IACF;AAEA,UAAM,eAAe,0BAA0B,MAAM,MAAM,OAAO;AAClE,UAAM,OAAO,mBAAmB,aAAa;AAC7C,UAAM,OAAO,aAAa,aAAa;AAAA,EACzC;AACF;AAqBO,SAAS,kBACd,eACA,UAAiC,CAAC,GAClC;AACA,QAAM,OAAO,YAAY,aAAa;AAEtC,SAAO,OAAO,UAAe;AAC3B,UAAM,YAAY,MAAM,KAAK,eAAe,MAAM,SAAS,OAAO;AAElE,QAAI,WAAW;AACb,UAAI,UAAU,WAAW;AACvB,cAAM,SAAS,QAAQ,IAAI,cAAc,UAAU,MAAM;AAAA;AAEzD,cAAM,SAAS,QAAQ,IAAI,wBAAwB,UAAU,KAAK;AAAA,IACtE;AAAA,EACF;AACF;","names":["sessionCache"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@rttnd/gau",
3
3
  "type": "module",
4
- "version": "1.4.4",
4
+ "version": "1.4.6",
5
5
  "packageManager": "bun@1.3.5",
6
6
  "description": "gau is a delightful auth library",
7
7
  "license": "MIT",