@absolutejs/auth 0.26.0-beta.6 → 0.27.0-beta.0

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.
package/dist/index.d.ts CHANGED
@@ -8372,6 +8372,7 @@ export { AuthIdentityConflictError } from './errors';
8372
8372
  export { sessionStore } from './session/state';
8373
8373
  export { createInMemoryAuthSessionStore } from './session/inMemoryStore';
8374
8374
  export { createNeonAuthSessionStore } from './session/neonStore';
8375
+ export { createRedisAuthSessionStore, type RedisSessionClient } from './session/redisStore';
8375
8376
  export { createLinkedProviderCredentialResolver } from './linkedProviders/resolver';
8376
8377
  export { createOAuthLinkedProviderCredentialResolver } from './linkedProviders/oauthResolver';
8377
8378
  export { createNeonLinkedProviderStores, createNeonOAuthLinkedProviderCredentialResolver } from './linkedProviders/neonStores';
package/dist/index.js CHANGED
@@ -16744,6 +16744,46 @@ var createNeonAuthSessionStore = (databaseUrl) => {
16744
16744
  }
16745
16745
  };
16746
16746
  };
16747
+ // src/session/redisStore.ts
16748
+ var SESSION_SEGMENT = "sess:";
16749
+ var UNREGISTERED_SEGMENT = "unreg:";
16750
+ var parse = (raw) => {
16751
+ if (raw === null)
16752
+ return;
16753
+ try {
16754
+ return JSON.parse(raw);
16755
+ } catch {
16756
+ return;
16757
+ }
16758
+ };
16759
+ var createRedisAuthSessionStore = (redis, keyPrefix = "auth:session:") => {
16760
+ const sessionKey = (id) => `${keyPrefix}${SESSION_SEGMENT}${id}`;
16761
+ const unregisteredKey = (id) => `${keyPrefix}${UNREGISTERED_SEGMENT}${id}`;
16762
+ const ttlFor = (expiresAt) => Math.max(1, expiresAt - Date.now());
16763
+ const listIds = async (segment) => {
16764
+ const keys = await redis.keys(`${keyPrefix}${segment}*`);
16765
+ const offset = keyPrefix.length + segment.length;
16766
+ return keys.map((key) => key.slice(offset)).filter(isUserSessionId);
16767
+ };
16768
+ return {
16769
+ getSession: async (id) => parse(await redis.get(sessionKey(id))),
16770
+ getUnregisteredSession: async (id) => parse(await redis.get(unregisteredKey(id))),
16771
+ listSessionIds: () => listIds(SESSION_SEGMENT),
16772
+ listUnregisteredSessionIds: () => listIds(UNREGISTERED_SEGMENT),
16773
+ removeSession: async (id) => {
16774
+ await redis.del(sessionKey(id));
16775
+ },
16776
+ removeUnregisteredSession: async (id) => {
16777
+ await redis.del(unregisteredKey(id));
16778
+ },
16779
+ setSession: async (id, value) => {
16780
+ await redis.set(sessionKey(id), JSON.stringify(value), ttlFor(value.expiresAt));
16781
+ },
16782
+ setUnregisteredSession: async (id, value) => {
16783
+ await redis.set(unregisteredKey(id), JSON.stringify(value), ttlFor(value.expiresAt));
16784
+ }
16785
+ };
16786
+ };
16747
16787
  // src/linkedProviders/resolver.ts
16748
16788
  var uniqueStrings = (values) => [...new Set(values)];
16749
16789
  var getEffectiveScopes = (grant, binding) => {
@@ -18795,6 +18835,7 @@ export {
18795
18835
  createSecretCipher,
18796
18836
  createScimToken,
18797
18837
  createRedisLockoutStore,
18838
+ createRedisAuthSessionStore,
18798
18839
  createPostgresWebAuthnCredentialStore,
18799
18840
  createPostgresSsoConnectionStore,
18800
18841
  createPostgresSetupSessionStore,
@@ -18883,5 +18924,5 @@ export {
18883
18924
  AuthIdentityConflictError
18884
18925
  };
18885
18926
 
18886
- //# debugId=7D48DDD62BC5758D64756E2164756E21
18927
+ //# debugId=72DEEA52EDCE8E9A64756E2164756E21
18887
18928
  //# sourceMappingURL=index.js.map