SYMBOL INDEX (93 symbols across 30 files) FILE: app/api/graphql/moke.ts function search (line 3) | function search() { function torrentByHash (line 7) | function torrentByHash() { function statsInfo (line 11) | function statsInfo() { FILE: app/api/graphql/service.ts type Torrent (line 5) | type Torrent = { type TorrentFile (line 15) | type TorrentFile = { constant REGEX_PADDING_FILE (line 22) | const REGEX_PADDING_FILE = /^(_____padding_file_|\.pad\/\d+&)/; function formatTorrent (line 24) | function formatTorrent(row: Torrent) { constant QUOTED_KEYWORD_REGEX (line 112) | const QUOTED_KEYWORD_REGEX = /"([^"]+)"/g; function search (line 162) | async function search(_: any, { queryInput }: any) { function torrentByHash (line 328) | async function torrentByHash(_: any, { hash }: { hash: string }) { function statsInfo (line 367) | async function statsInfo() { FILE: app/api/preview/service.ts function getPreviewInfo (line 36) | async function getPreviewInfo(hash64: string) { FILE: app/api/search/route.ts constant SEARCH (line 17) | const SEARCH = gql` FILE: app/detail/[hash64]/layout.tsx function DetailLayout (line 8) | function DetailLayout({ FILE: app/detail/[hash64]/page.tsx function fetchData (line 9) | async function fetchData(hash64: string) { function generateMetadata (line 25) | async function generateMetadata({ function Detail (line 38) | async function Detail({ FILE: app/detail/page.tsx function DetailPage (line 3) | function DetailPage() { FILE: app/error.tsx function Error (line 6) | function Error({ FILE: app/layout.tsx function RootLayout (line 38) | async function RootLayout({ FILE: app/not-found.tsx function NotFound (line 3) | async function NotFound() { FILE: app/page.tsx function Home (line 6) | function Home() { FILE: app/providers.tsx type ProvidersProps (line 12) | interface ProvidersProps { function Providers (line 17) | function Providers({ children, themeProps }: ProvidersProps) { FILE: app/search/layout.tsx function SearchLayout (line 3) | function SearchLayout({ FILE: app/search/page.tsx type SearchParams (line 18) | type SearchParams = { type SearchRequestType (line 27) | type SearchRequestType = { function fetchData (line 40) | async function fetchData({ function generateMetadata (line 96) | async function generateMetadata({ function getSearchOption (line 109) | function getSearchOption(searchParams: SearchParams) { function SearchPage (line 124) | async function SearchPage({ FILE: components/EmblaCarousel.tsx type UsePrevNextButtonsType (line 11) | type UsePrevNextButtonsType = { type ButtonPropType (line 54) | type ButtonPropType = ComponentPropsWithRef<"button">; type UseDotButtonType (line 96) | type UseDotButtonType = { type PropType (line 149) | type PropType = { FILE: components/FileList.tsx type FileItem (line 17) | type FileItem = TorrentItemProps["files"][0] & { type Directory (line 26) | type Directory = { function fileTree (line 41) | function fileTree(data: FileItem[], maxDepth: number = 3): Directory[] { function FileItem (line 118) | function FileItem({ function FileList (line 185) | function FileList({ FILE: components/FileTypeIcon.tsx function FileTypeIcon (line 34) | function FileTypeIcon({ FILE: components/FloatTool.tsx function handleBackTop (line 23) | function handleBackTop() { FILE: components/SearchInput.tsx function handleSearch (line 40) | function handleSearch() { function handleKeyup (line 81) | function handleKeyup(e: any) { function handleBlur (line 94) | function handleBlur() { function handleFocus (line 103) | function handleFocus() { FILE: components/SearchResultsItem.tsx function SearchResultsItem (line 28) | function SearchResultsItem({ FILE: components/SearchResultsList.tsx function SearchResultsList (line 13) | function SearchResultsList({ FILE: components/Stats.tsx function StatsCard (line 9) | async function StatsCard() { function Stats (line 39) | function Stats() { FILE: config/constant.ts constant SEARCH_PARAMS (line 2) | const SEARCH_PARAMS = { constant SEARCH_KEYWORD_SPLIT_REGEX (line 16) | const SEARCH_KEYWORD_SPLIT_REGEX = constant SEARCH_DISPLAY_FILES_MAX (line 20) | const SEARCH_DISPLAY_FILES_MAX = 10; constant SEARCH_KEYWORD_LENGTH_MIN (line 21) | const SEARCH_KEYWORD_LENGTH_MIN = 2; constant SEARCH_KEYWORD_LENGTH_MAX (line 22) | const SEARCH_KEYWORD_LENGTH_MAX = 100; constant SEARCH_PAGE_SIZE (line 23) | const SEARCH_PAGE_SIZE = 10; constant SEARCH_PAGE_MAX (line 24) | const SEARCH_PAGE_MAX = 100; constant DEFAULT_SORT_TYPE (line 26) | const DEFAULT_SORT_TYPE = "default"; constant DEFAULT_FILTER_TIME (line 27) | const DEFAULT_FILTER_TIME = "all"; constant DEFAULT_FILTER_SIZE (line 28) | const DEFAULT_FILTER_SIZE = "all"; constant UI_HIDE_PADDING_FILE (line 31) | const UI_HIDE_PADDING_FILE = true; constant UI_BACKGROUND_ANIMATION (line 33) | const UI_BACKGROUND_ANIMATION = true; constant UI_BREAKPOINTS (line 35) | const UI_BREAKPOINTS = { FILE: config/site.ts type SiteConfig (line 1) | type SiteConfig = typeof siteConfig; FILE: hooks/useHydration.ts function useHydration (line 3) | function useHydration() { FILE: lib/jieba.ts function jiebaCut (line 9) | function jiebaCut(text: string) { FILE: types/index.ts type IconSvgProps (line 3) | type IconSvgProps = SVGProps & { type SearchResultsListProps (line 7) | type SearchResultsListProps = { type TorrentItemProps (line 13) | type TorrentItemProps = { FILE: utils/Toast.tsx type ToastType (line 9) | type ToastType = "info" | "success" | "warn" | "error"; type ToastMessage (line 11) | interface ToastMessage { type ToastProps (line 18) | interface ToastProps { method setMessages (line 135) | setMessages(messages: ToastMessage[]) { method show (line 144) | show(type: ToastType, content: string, duration = 2000) { method removeMessage (line 152) | removeMessage(id: number) { method info (line 155) | info(content: string, duration?: number) { method success (line 158) | success(content: string, duration?: number) { method warn (line 161) | warn(content: string, duration?: number) { method error (line 164) | error(content: string, duration?: number) { FILE: utils/api.ts function getBaseUrl (line 1) | function getBaseUrl() { function apiFetch (line 14) | async function apiFetch(endpoint: string, options?: RequestInit): Promis... FILE: utils/index.ts function hexToBase64 (line 6) | function hexToBase64(hexString: string) { function base64ToHex (line 15) | function base64ToHex(base64String: string) { function formatByteSize (line 25) | function formatByteSize(bytes: number | string) { function formatDate (line 38) | function formatDate( function getSizeColor (line 50) | function getSizeColor(size: number | string) { function parseHighlight (line 71) | function parseHighlight(text: string, highlight: string | string[]) { function setClipboard (line 119) | function setClipboard(text: string) { type GetLinkInfoFromWhatsLinkResponse (line 139) | interface GetLinkInfoFromWhatsLinkResponse { function getLinkInfoFromWhatsLink (line 163) | async function getLinkInfoFromWhatsLink( method isServer (line 177) | get isServer() { method isMobile (line 180) | get isMobile() { method isDesktop (line 189) | get isDesktop() {