SYMBOL INDEX (85 symbols across 19 files) FILE: app.js constant RATE_LIMIT_GLOBAL (line 40) | const RATE_LIMIT_GLOBAL = parseInt(process.env.RATE_LIMIT_GLOBAL, 10) ||... constant RATE_LIMIT_STRICT (line 41) | const RATE_LIMIT_STRICT = parseInt(process.env.RATE_LIMIT_STRICT, 10) || 5; constant RATE_LIMIT_LOGIN (line 42) | const RATE_LIMIT_LOGIN = parseInt(process.env.RATE_LIMIT_LOGIN, 10) || 10; FILE: config/passport.js function handleAuthLogin (line 78) | async function handleAuthLogin(req, accessToken, refreshToken, providerN... function authError2Flash (line 162) | function authError2Flash(err, req, done, providerDisplayName) { function saveOAuth2UserTokens (line 198) | async function saveOAuth2UserTokens(req, accessToken, refreshToken, acce... function getTumblrAuthHeader (line 600) | function getTumblrAuthHeader(url, method) { FILE: config/token-revocation.js function generateOAuth1Header (line 4) | function generateOAuth1Header(method, url, consumerKey, consumerSecret, ... constant REQUIRED_FIELDS (line 29) | const REQUIRED_FIELDS = { constant REVOKE_TIMEOUT_MS (line 41) | const REVOKE_TIMEOUT_MS = 8000; function revokeToken (line 43) | async function revokeToken(revokeURL, token, tokenTypeHint, config, toke... function revokeProviderTokens (line 130) | async function revokeProviderTokens(providerName, tokenData) { function revokeAllProviderTokens (line 143) | async function revokeAllProviderTokens(tokens) { FILE: controllers/ai-agent.js constant MAX_MESSAGE_LENGTH (line 10) | const MAX_MESSAGE_LENGTH = 400; constant TEMP_SESSION_PREFIX (line 27) | const TEMP_SESSION_PREFIX = 'temp_'; function getCheckpointer (line 109) | async function getCheckpointer() { function sendSSE (line 177) | function sendSSE(res, eventType, data) { function extractAIMessages (line 185) | function extractAIMessages(data) { function extractStatus (line 202) | function extractStatus(data) { function createAIAgent (line 608) | async function createAIAgent() { FILE: controllers/ai.js constant RAG_CHUNKS (line 31) | const RAG_CHUNKS = 'rag_chunks'; constant LLM_SEMANTIC_CACHE (line 32) | const LLM_SEMANTIC_CACHE = 'llm_sem_cache'; function prepareRagFolder (line 43) | function prepareRagFolder() { function initializeEmbeddingCaches (line 58) | function initializeEmbeddingCaches(mongoUri) { function normalizeTextForCaching (line 77) | function normalizeTextForCaching(text) { function createCacheKey (line 84) | function createCacheKey(text, modelName, prefix) { function createCachedEmbeddings (line 94) | function createCachedEmbeddings(baseEmbeddings, modelName) { function createCollectionForVectorSearch (line 152) | async function createCollectionForVectorSearch(db, collectionName, index... function setupRagCollection (line 182) | async function setupRagCollection(db) { function setVectorIndex (line 199) | async function setVectorIndex(collection, indexDefinition) { function configureVectorIndex (line 217) | async function configureVectorIndex(db) { FILE: controllers/api.js function getTumblrAuthHeader (line 81) | function getTumblrAuthHeader(url, method) { function getPayPalAccessToken (line 918) | async function getPayPalAccessToken() { constant TRAKT_IMAGE_CACHE_LIMIT (line 1261) | const TRAKT_IMAGE_CACHE_LIMIT = 20; function traktUrlToFilename (line 1262) | function traktUrlToFilename(url) { function fetchAndCacheTraktImage (line 1272) | async function fetchAndCacheTraktImage(imageUrl) { function fetchTraktUserProfile (line 1321) | async function fetchTraktUserProfile(traktToken) { function fetchTraktUserHistory (line 1336) | async function fetchTraktUserHistory(traktToken, limit) { function fetchTraktTrendingMovies (line 1350) | async function fetchTraktTrendingMovies(limit) { function fetchMovieDetails (line 1377) | async function fetchMovieDetails(slug, watchers) { FILE: controllers/contact.js function validateReCAPTCHA (line 4) | async function validateReCAPTCHA(token) { FILE: controllers/user.js function sendPasswordlessLoginLinkIfUserExists (line 165) | async function sendPasswordlessLoginLinkIfUserExists(user, req) { function sendPasswordlessSignupLink (line 201) | async function sendPasswordlessSignupLink(user, req) { function sendTwoFactorEmail (line 787) | async function sendTwoFactorEmail(email, code, req, successMsg = 'A veri... FILE: controllers/webauthn.js function generateDefaultPublicKey (line 5) | function generateDefaultPublicKey() { constant DUMMY_COSE_PUBLIC_KEY (line 16) | const DUMMY_COSE_PUBLIC_KEY = generateDefaultPublicKey(); FILE: models/Session.js method removeSessionByUserId (line 14) | removeSessionByUserId(userId) { FILE: test/contact.test.js constant OLD_ENV (line 11) | const OLD_ENV = { ...process.env }; function setupApp (line 13) | function setupApp(controller) { FILE: test/e2e-nokey/github-api.e2e.test.js function gotoGithubWithRateLimitRetry (line 19) | async function gotoGithubWithRateLimitRetry(sharedPage, request) { FILE: test/e2e/llm-classifier.e2e.test.js function extractQpmFromLog (line 17) | function extractQpmFromLog() { FILE: test/e2e/rag.e2e.test.js function writeMinimalPdf (line 25) | function writeMinimalPdf(filePath) { FILE: test/morgan.test.js method getHeader (line 32) | getHeader(name) { method get (line 35) | get(name) { method setHeader (line 38) | setHeader(name, value) { FILE: test/tools/fixture-helpers.js constant MANIFEST_PATH (line 5) | const MANIFEST_PATH = path.resolve(__dirname, '..', 'fixtures', 'fixture... function hashBody (line 7) | function hashBody(body) { function keyFor (line 25) | function keyFor(method, url, body) { function registerTestInManifest (line 40) | function registerTestInManifest(testFile) { function isInManifest (line 55) | function isInManifest(id) { FILE: test/tools/server-axios-fixtures.js constant FIXTURES_DIR (line 31) | const FIXTURES_DIR = path.resolve(__dirname, '..', 'fixtures'); function installServerAxiosFixtures (line 33) | function installServerAxiosFixtures({ mode = process.env.API_MODE } = {}) { FILE: test/tools/server-fetch-fixtures.js constant FIXTURES_DIR (line 28) | const FIXTURES_DIR = path.resolve(__dirname, '..', 'fixtures'); function installServerApiFixtures (line 30) | function installServerApiFixtures({ mode = process.env.API_MODE } = {}) { FILE: test/tools/simple-link-image-check.js constant ROOT (line 15) | const ROOT = process.cwd(); constant VIEWS_DIR (line 16) | const VIEWS_DIR = path.join(ROOT, 'views'); constant TARGET_VIEW_DIRS (line 17) | const TARGET_VIEW_DIRS = ['ai', 'api', '', 'accounts', 'partials']; constant MARKDOWN_FILES (line 18) | const MARKDOWN_FILES = ['README.md', 'PROD_CHECKLIST.md']; constant SKIP_KEYWORDS (line 21) | const SKIP_KEYWORDS = ['localhost', 'example.com', 'ngrok', 'hackathon-s... constant DEFAULT_USER_AGENT (line 24) | const DEFAULT_USER_AGENT = 'curl/7.85.0'; constant TIMEOUT (line 25) | const TIMEOUT = 10000; constant BLOCKED_PHRASES (line 27) | const BLOCKED_PHRASES = ['this website is using a security service to pr... function extractUrlsFromHtmlLike (line 29) | function extractUrlsFromHtmlLike(text) { function extractUrlsFromMarkdown (line 42) | function extractUrlsFromMarkdown(md) { function normalizeUrl (line 54) | function normalizeUrl(u) { constant RETRIES (line 67) | const RETRIES = 2; constant BACKOFF_MS (line 68) | const BACKOFF_MS = 10000; function checkUrl (line 70) | async function checkUrl(initialUrl, timeout = TIMEOUT) { function scanViews (line 114) | function scanViews() { function scanMarkdown (line 161) | function scanMarkdown() { function dedupeList (line 178) | function dedupeList(list) { function checkList (line 188) | async function checkList(deduped) { function run (line 210) | async function run() { function getViewsChecks (line 251) | function getViewsChecks() { function getMarkdownChecks (line 258) | function getMarkdownChecks() {