Files
HiveGrid-Wireframes/hivegrid-cloud/apps/web/app/shared-store.server.ts
T

28 lines
917 B
TypeScript

import { createSharedStore, type SharedStore } from "@toolctrl/shared-store";
/**
* Singleton SharedStore for the web process. Tenant-scoped caches,
* cross-replica rate limits, and MFA challenge state migrated as part
* of task #38 all use this instance so a single Redis connection is
* reused across the web lifetime.
*/
let cachedStore: SharedStore | null = null;
let factory: () => SharedStore = () => createSharedStore({ namespace: "web", redisUrl: process.env.REDIS_URL });
export function getSharedStore(): SharedStore {
if (cachedStore === null) {
cachedStore = factory();
}
return cachedStore;
}
export function __setSharedStoreFactoryForTests(next: () => SharedStore): void {
factory = next;
cachedStore = null;
}
export function __resetSharedStoreForTests(): void {
factory = () => createSharedStore({ namespace: "web", redisUrl: process.env.REDIS_URL });
cachedStore = null;
}