Initial production setup with dual-token auth

This commit is contained in:
2026-01-01 16:44:11 +00:00
commit 7c3d62d4a9
38 changed files with 6299 additions and 0 deletions
+48
View File
@@ -0,0 +1,48 @@
/**
* Shared Constants
*/
/** Token refresh interval in milliseconds (30 minutes) */
export const TOKEN_REFRESH_INTERVAL_MS = 30 * 60 * 1000;
/** Buffer before token expiry to trigger refresh (15 minutes) */
export const TOKEN_EXPIRY_BUFFER_MS = 15 * 60 * 1000;
/** Token TTL in cache (1 hour) */
export const TOKEN_TTL_SECONDS = 3600;
/** Refresh token TTL in cache (30 days) */
export const REFRESH_TOKEN_TTL_SECONDS = 30 * 24 * 60 * 60;
/** API request timeout in milliseconds */
export const API_TIMEOUT_MS = 30000;
/** Cache key prefixes */
export const CACHE_KEYS = {
TOKEN_PB: (userId: string) => `tokens:${userId}:pb`,
TOKEN_GRAPH: (userId: string) => `tokens:${userId}:graph`,
REFRESH_PB: (userId: string) => `tokens:${userId}:refresh_pb`,
REFRESH_GRAPH: (userId: string) => `tokens:${userId}:refresh_graph`,
JOB_FILES: (jobId: string) => `jobs:${jobId}:files`,
ACTIVE_USERS: 'active_users',
} as const;
/** Local storage keys */
export const STORAGE_KEYS = {
PB_TOKEN: 'job-info:pb_token',
GRAPH_TOKEN: 'job-info:graph_token',
USER: 'job-info:user',
EXPIRES_AT: 'job-info:expires_at',
LAST_SYNC: 'job-info:last_sync',
JOBS_CACHE: 'job-info:jobs',
} as const;
/** API endpoints */
export const API_ENDPOINTS = {
LOGIN_CALLBACK: '/api/auth/login-callback',
LOGOUT: '/api/auth/logout',
REFRESH_TOKEN: '/api/auth/refresh-token',
JOBS: '/api/jobs',
FILES: '/api/files',
HEALTH: '/api/health',
} as const;