SYMBOL INDEX (67 symbols across 28 files) FILE: .github/workflows/scripts/verify-search-engine-configs.mjs function verify (line 136) | async function verify(errorTag, urls, headers, queryNames) { function main (line 177) | async function main() { FILE: build.mjs function deleteOldDir (line 17) | async function deleteOldDir() { function runWebpack (line 21) | async function runWebpack(isWithoutKatex, callback) { function zipFolder (line 182) | async function zipFolder(dir) { function copyFiles (line 192) | async function copyFiles(entryPoints, targetDir) { function finishOutput (line 201) | async function finishOutput(outputDirSuffix) { function generateWebpackCallback (line 230) | function generateWebpackCallback(finishOutputFunc) { function build (line 242) | async function build() { FILE: src/background/apis/chatgpt-web.mjs function request (line 7) | async function request(token, method, path, data) { function sendMessageFeedback (line 22) | async function sendMessageFeedback(token, data) { function setConversationProperty (line 26) | async function setConversationProperty(token, conversationId, propertyOb... function sendModerations (line 30) | async function sendModerations(token, question, conversationId, messageI... function getModels (line 39) | async function getModels(token) { function generateAnswersWithChatgptWebApi (line 50) | async function generateAnswersWithChatgptWebApi(port, question, session,... FILE: src/background/apis/openai-api.mjs function generateAnswersWithGptCompletionApi (line 30) | async function generateAnswersWithGptCompletionApi( function generateAnswersWithChatgptApi (line 100) | async function generateAnswersWithChatgptApi(port, question, session, ap... FILE: src/background/index.mjs constant KEY_ACCESS_TOKEN (line 19) | const KEY_ACCESS_TOKEN = 'accessToken' function getAccessToken (line 25) | async function getAccessToken() { FILE: src/components/ConversationCard/index.jsx class ConversationItemData (line 15) | class ConversationItemData extends Object { method constructor (line 22) | constructor(type, content, session = null, done = false) { function ConversationCard (line 31) | function ConversationCard(props) { FILE: src/components/ConversationItem/index.jsx function ConversationItem (line 8) | function ConversationItem({ type, content, session, done }) { FILE: src/components/CopyButton/index.jsx function CopyButton (line 11) | function CopyButton({ className, contentFn, size }) { FILE: src/components/DecisionCard/index.jsx function DecisionCard (line 9) | function DecisionCard(props) { FILE: src/components/FloatingToolbar/index.jsx function FloatingToolbar (line 12) | function FloatingToolbar(props) { FILE: src/components/InputBox/index.jsx function InputBox (line 5) | function InputBox({ onSubmit, enabled }) { FILE: src/components/MarkdownRender/markdown-without-katex.jsx function Pre (line 9) | function Pre({ className, children }) { function MarkdownRender (line 28) | function MarkdownRender(props) { FILE: src/components/MarkdownRender/markdown.jsx function Pre (line 12) | function Pre({ className, children }) { function MarkdownRender (line 31) | function MarkdownRender(props) { FILE: src/config.mjs function getUserLanguage (line 72) | async function getUserLanguage() { function getUserLanguageNative (line 76) | async function getUserLanguageNative() { function getPreferredLanguage (line 80) | async function getPreferredLanguage() { function getPreferredLanguageNative (line 86) | async function getPreferredLanguageNative() { function isUsingApiKey (line 92) | function isUsingApiKey(config) { function getUserConfig (line 102) | async function getUserConfig() { function setUserConfig (line 111) | async function setUserConfig(value) { function setAccessToken (line 115) | async function setAccessToken(accessToken) { constant TOKEN_DURATION (line 119) | const TOKEN_DURATION = 30 * 24 * 3600 * 1000 function clearOldAccessToken (line 121) | async function clearOldAccessToken() { FILE: src/content-script/index.jsx function mountComponent (line 20) | async function mountComponent(siteConfig, userConfig) { function getInput (line 54) | async function getInput(inputQuery) { function prepareForSafari (line 66) | async function prepareForSafari() { function prepareForSelectionTools (line 87) | async function prepareForSelectionTools() { function prepareForRightClickMenu (line 136) | async function prepareForRightClickMenu() { function prepareForStaticCard (line 183) | async function prepareForStaticCard() { function run (line 212) | async function run() { FILE: src/popup/Popup.jsx function GeneralPart (line 22) | function GeneralPart({ config, updateConfig }) { function AdvancedPart (line 164) | function AdvancedPart({ config, updateConfig }) { function SelectionTools (line 265) | function SelectionTools({ config, updateConfig }) { function SiteAdapters (line 292) | function SiteAdapters({ config, updateConfig }) { function Donation (line 319) | function Donation() { function Footer (line 343) | function Footer({ currentVersion, latestVersion }) { function Popup (line 378) | function Popup() { FILE: src/utils/create-element-at-position.mjs function createElementAtPosition (line 1) | function createElementAtPosition(x = 0, y = 0, zIndex = 2147483647) { FILE: src/utils/crop-text.mjs function cropText (line 27) | function cropText( FILE: src/utils/ends-with-question-mark.mjs function endsWithQuestionMark (line 1) | function endsWithQuestionMark(question) { FILE: src/utils/fetch-sse.mjs function fetchSSE (line 4) | async function fetchSSE(resource, options) { FILE: src/utils/get-conversation-pairs.mjs function getConversationPairs (line 1) | function getConversationPairs(records, isChatgpt) { FILE: src/utils/get-possible-element-by-query-selector.mjs function getPossibleElementByQuerySelector (line 1) | function getPossibleElementByQuerySelector(queryArray) { FILE: src/utils/init-session.mjs function initSession (line 14) | function initSession({ FILE: src/utils/is-mobile.mjs function isMobile (line 3) | async function isMobile() { FILE: src/utils/is-safari.mjs function isSafari (line 1) | function isSafari() { FILE: src/utils/limited-fetch.mjs function limitedFetch (line 3) | async function limitedFetch(url, maxBytes) { FILE: src/utils/set-element-position-in-viewport.mjs function setElementPositionInViewport (line 1) | function setElementPositionInViewport(element, x = 0, y = 0) { FILE: src/utils/update-ref-height.mjs function updateRefHeight (line 1) | function updateRefHeight(ref) {