refractor server.js
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
import {
|
||||
EMPTY_HIT_STATS,
|
||||
EMPTY_VISITOR_STATS,
|
||||
DEFAULT_PUBLISH_STATE,
|
||||
DEFAULT_REPLY_TEMPLATES,
|
||||
buildDefaultPodcastChecklist,
|
||||
} from './config.js'
|
||||
|
||||
export const state = {
|
||||
cachedSiteContent: null,
|
||||
cachedDraftSiteContent: null,
|
||||
publishState: { ...DEFAULT_PUBLISH_STATE },
|
||||
|
||||
hitStats: { ...EMPTY_HIT_STATS },
|
||||
hitStatsWritePromise: Promise.resolve(),
|
||||
lastHitStatsWrite: { ok: true, at: null, error: null },
|
||||
|
||||
visitorStats: { ...EMPTY_VISITOR_STATS },
|
||||
visitorStatsWritePromise: Promise.resolve(),
|
||||
lastVisitorStatsWrite: { ok: true, at: null, error: null },
|
||||
|
||||
contactSubmissions: [],
|
||||
contactSubmissionsWritePromise: Promise.resolve(),
|
||||
|
||||
questions: [],
|
||||
questionsWritePromise: Promise.resolve(),
|
||||
|
||||
draftQuestions: null,
|
||||
draftQuestionsWritePromise: Promise.resolve(),
|
||||
|
||||
replyTemplates: [...DEFAULT_REPLY_TEMPLATES],
|
||||
replyTemplatesWritePromise: Promise.resolve(),
|
||||
|
||||
replyHistory: [],
|
||||
replyHistoryWritePromise: Promise.resolve(),
|
||||
|
||||
podcastChecklist: buildDefaultPodcastChecklist(),
|
||||
podcastChecklistWritePromise: Promise.resolve(),
|
||||
|
||||
studyUsers: [],
|
||||
studyUsersWritePromise: Promise.resolve(),
|
||||
|
||||
studyCommunityPosts: [],
|
||||
studyCommunityWritePromise: Promise.resolve(),
|
||||
|
||||
studyReminders: { users: {}, updatedAt: new Date().toISOString() },
|
||||
studyRemindersWritePromise: Promise.resolve(),
|
||||
|
||||
downloadCounts: {},
|
||||
downloadCountsWritePromise: Promise.resolve(),
|
||||
|
||||
lastBackupStatus: { ok: true, at: null, error: null, file: null },
|
||||
lastCachePurgeStatus: { ok: true, at: null, error: null },
|
||||
lastDeployHookStatus: { ok: true, at: null, error: null },
|
||||
|
||||
// In-memory caches (not persisted between restarts)
|
||||
studyNotesCache: new Map(), // userId -> { [sectionId]: string }
|
||||
studyNotesWriteQueues: new Map(), // userId -> Promise
|
||||
studyProgressCache: new Map(), // userId -> { byStudy: ... }
|
||||
studyProgressWriteQueues: new Map(), // userId -> Promise
|
||||
|
||||
studySessions: new Map(),
|
||||
studyTotpPendingTokens: new Map(),
|
||||
emailOtpStore: new Map(),
|
||||
|
||||
titusDownloadTokens: new Map(),
|
||||
contactSubmitCooldownByEmail: new Map(),
|
||||
resendEmailSubmissionIndex: new Map(),
|
||||
}
|
||||
Reference in New Issue
Block a user