SYMBOL INDEX (255 symbols across 94 files) FILE: app/api/aliyun/oss/sts/route.ts function GET (line 5) | async function GET() { FILE: app/api/aliyun/oss/upload/route.ts function POST (line 5) | async function POST(request: Request) { FILE: app/api/aliyun/video-ocr/create/route.ts type AsyncJobResult (line 4) | interface AsyncJobResult { function POST (line 9) | async function POST(request: Request) { FILE: app/api/aliyun/video-ocr/query/route.ts type AsyncJobQueryResult (line 4) | interface AsyncJobQueryResult { function POST (line 13) | async function POST(request: Request) { FILE: app/api/aliyun/video-ocr/status/route.ts type VideoOCRResult (line 4) | interface VideoOCRResult { type AsyncJobQueryResult (line 30) | interface AsyncJobQueryResult { function POST (line 39) | async function POST(request: Request) { FILE: app/api/asr/aliyun/recognize/route.ts function POST (line 3) | async function POST(request: Request) { FILE: app/api/asr/create/route.ts function POST (line 10) | async function POST(request: Request) { FILE: app/api/asr/status/route.ts function POST (line 10) | async function POST(request: Request) { FILE: app/api/auth/[...nextauth]/auth.ts method authorize (line 23) | async authorize(credentials) { method profile (line 60) | profile(profile) { method profile (line 75) | profile(profile) { method signIn (line 90) | async signIn({ user, account }) { method jwt (line 163) | async jwt({ token, user }) { method session (line 169) | async session({ session }) { FILE: app/api/auth/register/route.ts function POST (line 5) | async function POST(req: Request) { FILE: app/api/file/extract/route.ts constant KIMI_API_KEY (line 4) | const KIMI_API_KEY = process.env.NEXT_PUBLIC_KIMI_API_KEY constant KIMI_API_URL (line 5) | const KIMI_API_URL = 'https://api.moonshot.cn/v1' constant MISTRAL_API_KEY (line 6) | const MISTRAL_API_KEY = process.env.MISTRAL_API_KEY constant TIMEOUT (line 9) | const TIMEOUT = { function fetchWithTimeout (line 16) | async function fetchWithTimeout(url: string, options: RequestInit, timeo... function uploadFile (line 44) | async function uploadFile(file: string, filename: string) { function getFileContent (line 76) | async function getFileContent(fileId: string) { function processContent (line 100) | async function processContent(content: string) { function processPdfWithMistral (line 152) | async function processPdfWithMistral(file: string, filename: string) { function POST (line 333) | async function POST(request: Request) { FILE: app/api/ocr/kimi/route.ts constant KIMI_API_KEY (line 4) | const KIMI_API_KEY = process.env.NEXT_PUBLIC_KIMI_API_KEY constant KIMI_API_URL (line 5) | const KIMI_API_URL = 'https://api.moonshot.cn/v1' function POST (line 7) | async function POST(request: Request) { FILE: app/api/ocr/route.ts type TextDetection (line 6) | interface TextDetection { type OCRResponse (line 16) | interface OCRResponse { function POST (line 38) | async function POST(request: Request) { FILE: app/api/ocr/step/route.ts function POST (line 7) | async function POST(request: Request) { FILE: app/api/qwen/ocr/route.ts function POST (line 7) | async function POST(request: Request) { FILE: app/api/qwen/translate/route.ts function POST (line 5) | async function POST(request: Request) { FILE: app/api/register/route.ts function POST (line 7) | async function POST(req: Request) { FILE: app/api/subscription/route.ts function POST (line 6) | async function POST(req: Request) { FILE: app/api/tencent/ocr/route.ts function POST (line 7) | async function POST(request: Request) { FILE: app/api/translate/claude/route.ts function POST (line 4) | async function POST(request: Request) { FILE: app/api/translate/kimi/route.ts function POST (line 4) | async function POST(request: Request) { FILE: app/api/translate/route.ts function POST (line 5) | async function POST(request: Request) { function translateWithDeepSeekAPI (line 76) | async function translateWithDeepSeekAPI(text: string, targetLanguage: st... function translateWithQwenAPI (line 106) | async function translateWithQwenAPI(text: string, targetLanguage: string) { function translateWithZhipuAPI (line 136) | async function translateWithZhipuAPI(text: string, targetLanguage: strin... function translateWith4oMiniAPI (line 166) | async function translateWith4oMiniAPI(text: string, targetLanguage: stri... function translateWithHunyuanAPI (line 196) | async function translateWithHunyuanAPI(text: string, targetLanguage: str... function translateWithMinniMaxAPI (line 228) | async function translateWithMinniMaxAPI(text: string, targetLanguage: st... function translateWithSiliconFlowAPI (line 263) | async function translateWithSiliconFlowAPI(text: string, targetLanguage:... function translateWithClaudeAPI (line 298) | async function translateWithClaudeAPI(text: string, targetLanguage: stri... function translateWithStepAPI (line 328) | async function translateWithStepAPI(text: string, targetLanguage: string) { FILE: app/api/translate/siliconflow/route.ts function POST (line 4) | async function POST(request: Request) { FILE: app/api/translate/step/route.ts function POST (line 4) | async function POST(req: Request) { FILE: app/api/upload/route.ts function POST (line 4) | async function POST(request: Request) { FILE: app/api/user/info/route.ts type User (line 6) | interface User { type UsageType (line 26) | type UsageType = 'text' | 'image' | 'pdf' | 'speech' | 'video'; type UsageRecord (line 28) | interface UsageRecord { type UsageInfo (line 33) | interface UsageInfo { function GET (line 42) | async function GET() { FILE: app/api/user/update/route.ts function PUT (line 6) | async function PUT(req: Request) { FILE: app/api/user/usage/route.ts function checkQuota (line 9) | async function checkQuota(userId: number, type: string) { function getUsageCount (line 54) | async function getUsageCount(userId: number, type: string) { function recordUsage (line 66) | async function recordUsage(userId: number, type: string) { function POST (line 141) | async function POST(req: Request) { FILE: app/api/webhook/route.ts function POST (line 8) | async function POST(req: Request) { FILE: app/layout.tsx function RootLayout (line 68) | function RootLayout({ FILE: app/login/error.tsx function ErrorPage (line 8) | function ErrorPage() { FILE: app/login/layout.tsx function LoginLayout (line 8) | function LoginLayout({ FILE: app/login/page.tsx function LoginPage (line 15) | function LoginPage() { FILE: app/page.tsx function Home (line 31) | function Home() { FILE: app/pricing/layout.tsx function PricingLayout (line 24) | function PricingLayout({ FILE: app/pricing/page.tsx function PricingPage (line 14) | function PricingPage() { FILE: app/profile/page.tsx type UserInfo (line 18) | interface UserInfo { constant QUOTA_TYPES (line 48) | const QUOTA_TYPES = ['text', 'image', 'pdf', 'speech', 'video'] as const function ProfilePage (line 50) | function ProfilePage() { FILE: app/providers.tsx function Providers (line 10) | function Providers({ children }: { children: React.ReactNode }) { FILE: app/register/layout.tsx function RegisterLayout (line 8) | function RegisterLayout({ FILE: app/register/page.tsx function RegisterPage (line 15) | function RegisterPage() { FILE: app/translate/layout.tsx function TranslateLayout (line 24) | function TranslateLayout({ FILE: app/translate/page.tsx type QuotaInfo (line 47) | interface QuotaInfo { function TranslatePage (line 62) | function TranslatePage() { FILE: components/client-layout.tsx function ClientLayout (line 7) | function ClientLayout({ FILE: components/footer.tsx function Footer (line 7) | function Footer() { FILE: components/header.tsx function Header (line 23) | function Header() { FILE: components/language-provider.tsx type Translations (line 6) | type Translations = { type LanguageContextType (line 25) | type LanguageContextType = { function LanguageProvider (line 33) | function LanguageProvider({ children }: { children: React.ReactNode }) { function useLanguage (line 67) | function useLanguage() { FILE: components/language-switcher.tsx function LanguageSwitcher (line 13) | function LanguageSwitcher() { FILE: components/language-toggle.tsx function LanguageToggle (line 11) | function LanguageToggle() { FILE: components/layout.tsx function Layout (line 6) | function Layout({ children }: { children: React.ReactNode }) { FILE: components/subscription-dialog.tsx type SubscriptionDialogProps (line 6) | interface SubscriptionDialogProps { function SubscriptionDialog (line 11) | function SubscriptionDialog({ FILE: components/testimonials.tsx function Testimonials (line 16) | function Testimonials() { FILE: components/theme-provider.tsx function ThemeProvider (line 7) | function ThemeProvider({ children, ...props }: ThemeProviderProps) { FILE: components/theme-toggle.tsx function ThemeToggle (line 12) | function ThemeToggle() { FILE: components/ui/badge.tsx type BadgeProps (line 26) | interface BadgeProps function Badge (line 30) | function Badge({ className, variant, ...props }: BadgeProps) { FILE: components/ui/button.tsx type ButtonProps (line 36) | interface ButtonProps FILE: components/ui/calendar.tsx type CalendarProps (line 10) | type CalendarProps = React.ComponentProps; function Calendar (line 12) | function Calendar({ FILE: components/ui/carousel.tsx type CarouselApi (line 12) | type CarouselApi = UseEmblaCarouselType[1]; type UseCarouselParameters (line 13) | type UseCarouselParameters = Parameters; type CarouselOptions (line 14) | type CarouselOptions = UseCarouselParameters[0]; type CarouselPlugin (line 15) | type CarouselPlugin = UseCarouselParameters[1]; type CarouselProps (line 17) | type CarouselProps = { type CarouselContextProps (line 24) | type CarouselContextProps = { function useCarousel (line 35) | function useCarousel() { FILE: components/ui/chart.tsx constant THEMES (line 9) | const THEMES = { light: '', dark: '.dark' } as const; type ChartConfig (line 11) | type ChartConfig = { type ChartContextProps (line 21) | type ChartContextProps = { function useChart (line 27) | function useChart() { function getPayloadConfigFromPayload (line 320) | function getPayloadConfigFromPayload( FILE: components/ui/command.tsx type CommandDialogProps (line 26) | interface CommandDialogProps extends DialogProps {} FILE: components/ui/form.tsx type FormFieldContextValue (line 20) | type FormFieldContextValue< type FormItemContextValue (line 67) | type FormItemContextValue = { FILE: components/ui/input.tsx type InputProps (line 5) | interface InputProps FILE: components/ui/pagination.tsx type PaginationLinkProps (line 37) | type PaginationLinkProps = { FILE: components/ui/sheet.tsx type SheetContentProps (line 52) | interface SheetContentProps FILE: components/ui/skeleton.tsx function Skeleton (line 3) | function Skeleton({ FILE: components/ui/sonner.tsx type ToasterProps (line 6) | type ToasterProps = React.ComponentProps; FILE: components/ui/textarea.tsx type TextareaProps (line 5) | interface TextareaProps FILE: components/ui/toast.tsx type ToastProps (line 115) | type ToastProps = React.ComponentPropsWithoutRef type ToastActionElement (line 117) | type ToastActionElement = React.ReactElement FILE: components/ui/toaster.tsx function Toaster (line 13) | function Toaster() { FILE: components/ui/use-toast.ts constant TOAST_LIMIT (line 10) | const TOAST_LIMIT = 1 constant TOAST_REMOVE_DELAY (line 11) | const TOAST_REMOVE_DELAY = 1000000 type ToasterToast (line 13) | type ToasterToast = ToastProps & { function genId (line 29) | function genId() { type ActionType (line 34) | type ActionType = typeof actionTypes type Action (line 36) | type Action = type State (line 54) | interface State { function dispatch (line 133) | function dispatch(action: Action) { type Toast (line 140) | type Toast = Omit function toast (line 142) | function toast({ ...props }: Toast) { function useToast (line 171) | function useToast() { FILE: hooks/use-toast.ts constant TOAST_LIMIT (line 8) | const TOAST_LIMIT = 1; constant TOAST_REMOVE_DELAY (line 9) | const TOAST_REMOVE_DELAY = 1000000; type ToasterToast (line 11) | type ToasterToast = ToastProps & { function genId (line 27) | function genId() { type ActionType (line 32) | type ActionType = typeof actionTypes; type Action (line 34) | type Action = type State (line 52) | interface State { function dispatch (line 133) | function dispatch(action: Action) { type Toast (line 140) | type Toast = Omit; function toast (line 142) | function toast({ ...props }: Toast) { function useToast (line 171) | function useToast() { FILE: lib/aliyun-oss-client.ts type STSToken (line 3) | interface STSToken { function getSTSToken (line 14) | async function getSTSToken(): Promise { function uploadToOSS (line 26) | async function uploadToOSS(file: File): Promise { FILE: lib/aliyun-oss-upload.ts type STSToken (line 3) | interface STSToken { function getSTSToken (line 14) | async function getSTSToken(): Promise { function uploadToOSS (line 26) | async function uploadToOSS(file: File): Promise { FILE: lib/aliyun-oss.ts function uploadToOSS (line 3) | async function uploadToOSS(file: File): Promise { FILE: lib/aliyun-video-ocr.ts type VideoOCRResponse (line 3) | interface VideoOCRResponse { function extractVideoTextWithAliyun (line 14) | async function extractVideoTextWithAliyun(videoUrl: string): Promise( function translateWithDeepSeek (line 25) | async function translateWithDeepSeek(text: string, targetLang: string) { function extractTextWithDeepseek (line 79) | async function extractTextWithDeepseek(file: File): Promise { FILE: lib/gemini.ts function retryWithDelay (line 8) | async function retryWithDelay( function extractTextFromImage (line 27) | async function extractTextFromImage(imageData: string) { function translateText (line 62) | async function translateText(text: string, targetLang: string) { function improveText (line 103) | async function improveText(text: string, targetLang: string) { FILE: lib/hooks/use-quota.ts type UsageType (line 4) | type UsageType = 'text' | 'image' | 'pdf' | 'speech' | 'video' type UseQuotaOptions (line 6) | interface UseQuotaOptions { function useQuota (line 11) | function useQuota(options: UseQuotaOptions = {}) { FILE: lib/i18n/use-translations.ts type I18nStore (line 7) | type I18nStore = { FILE: lib/kimi.ts function extractTextWithKimi (line 4) | async function extractTextWithKimi(image: string): Promise { function retryWithDelay (line 43) | async function retryWithDelay( function extractPDFContent (line 66) | async function extractPDFContent( function extractPDFWithKimi (line 180) | async function extractPDFWithKimi( FILE: lib/languages.ts type Language (line 1) | interface Language { FILE: lib/qwen.ts function retryWithDelay (line 4) | async function retryWithDelay( function translateWithQwen (line 23) | async function translateWithQwen(text: string, targetLang: string) { function extractTextWithQwen (line 64) | async function extractTextWithQwen(imageBase64: string): Promise { FILE: lib/server/tencent-sign.ts type SignParams (line 3) | interface SignParams { function sha256hex (line 15) | function sha256hex(message: string): string { function getDate (line 21) | function getDate(timestamp: number): string { function sign (line 26) | function sign(params: SignParams): string { FILE: lib/server/translate.ts function translateWithDeepSeek (line 4) | async function translateWithDeepSeek(text: string, targetLanguage: strin... function translateWithQwen (line 37) | async function translateWithQwen(text: string, targetLanguage: string) { function translateWithZhipu (line 69) | async function translateWithZhipu(text: string, targetLanguage: string) { function translateWithHunyuan (line 101) | async function translateWithHunyuan(text: string, targetLang: string) { function translateWith4oMini (line 133) | async function translateWith4oMini(text: string, targetLanguage: string) { function translateWithMinniMax (line 165) | async function translateWithMinniMax(text: string, targetLanguage: strin... function translateWithSiliconFlow (line 197) | async function translateWithSiliconFlow(text: string, targetLanguage: st... function translateWithClaude (line 228) | async function translateWithClaude(text: string, targetLanguage: string) { function translateWithKimiAPI (line 259) | async function translateWithKimiAPI(text: string, targetLanguage: string) { function translateWithStepAPI (line 299) | async function translateWithStepAPI(text: string, targetLanguage: string) { FILE: lib/speech.ts type IWindow (line 3) | interface IWindow extends Window { class SpeechRecognitionService (line 7) | class SpeechRecognitionService { method constructor (line 11) | constructor() { method start (line 23) | public start(onResult: (text: string, isFinal: boolean) => void, onErr... method stop (line 55) | public stop() { FILE: lib/step.ts function extractTextWithStep (line 1) | async function extractTextWithStep(image: string | File) { FILE: lib/stripe.ts constant PLANS (line 18) | const PLANS = { FILE: lib/tencent-asr.ts type Window (line 4) | interface Window { type TaskResponse (line 10) | interface TaskResponse { type StatusResponse (line 19) | interface StatusResponse { class TencentASRService (line 29) | class TencentASRService { method processQueue (line 33) | private async processQueue() { method addToQueue (line 50) | private addToQueue(task: () => Promise) { method fileToBase64 (line 55) | private async fileToBase64(file: File): Promise { method cleanTimestamps (line 69) | private cleanTimestamps(text: string): string { method recognizeAudio (line 74) | async recognizeAudio( method recognizeStream (line 158) | async recognizeStream( FILE: lib/tencent-sign.ts type SignParams (line 3) | interface SignParams { function sha256 (line 15) | async function sha256(message: string): Promise { function hmacSha256 (line 22) | async function hmacSha256(key: ArrayBuffer, message: string): Promise { FILE: lib/tencent.ts constant MAX_RETRIES (line 5) | const MAX_RETRIES = 3 constant RETRY_DELAY (line 6) | const RETRY_DELAY = 1000 function retryWithDelay (line 8) | async function retryWithDelay(fn: () => Promise, retries = MAX_RET... function extractTextWithTencent (line 20) | async function extractTextWithTencent(imageBase64: string): Promise { FILE: lib/zhipu.ts constant ZHIPU_API_KEY (line 1) | const ZHIPU_API_KEY = process.env.NEXT_PUBLIC_ZHIPU_API_KEY constant API_URL (line 2) | const API_URL = 'https://open.bigmodel.cn/api/paas/v4/chat/completions' constant VISION_API_URL (line 3) | const VISION_API_URL = 'https://open.bigmodel.cn/api/paas/v4/chat/comple... type Message (line 5) | interface Message { function base64UrlEncode (line 17) | function base64UrlEncode(str: string): string { function stringToUint8Array (line 25) | function stringToUint8Array(str: string): Uint8Array { function uint8ArrayToBase64Url (line 30) | function uint8ArrayToBase64Url(uint8Array: Uint8Array): string { function getZhipuToken (line 38) | async function getZhipuToken() { function translateWithZhipu (line 96) | async function translateWithZhipu(text: string, targetLanguage: string):... function extractVideoFrames (line 136) | async function extractVideoFrames(videoFile: File): Promise { function analyzeVideoContent (line 150) | async function analyzeVideoContent(frames: string[]): Promise { function extractTextWithZhipu (line 214) | async function extractTextWithZhipu(imageBase64: string): Promise { function extractFileContent (line 273) | async function extractFileContent(file: File): Promise { FILE: types/alicloud.d.ts class Client (line 2) | class Client { class RecognizeVideoContentRequest (line 8) | class RecognizeVideoContentRequest { class GetAsyncJobResultRequest (line 12) | class GetAsyncJobResultRequest { class Config (line 18) | class Config { class RuntimeOptions (line 29) | class RuntimeOptions { type OSSOptions (line 35) | interface OSSOptions { type MultipartUploadOptions (line 52) | interface MultipartUploadOptions { type PutResult (line 58) | interface PutResult { class OSS (line 70) | class OSS { type STSOptions (line 81) | interface STSOptions { type Credentials (line 88) | interface Credentials { type AssumeRoleResponse (line 95) | interface AssumeRoleResponse { class STS (line 99) | class STS { type AssumeRoleRequest (line 114) | interface AssumeRoleRequest { type Credentials (line 121) | interface Credentials { type AssumeRoleResponse (line 128) | interface AssumeRoleResponse { class Client (line 135) | class Client { FILE: types/next-auth.d.ts type User (line 5) | interface User { type Session (line 10) | interface Session { type JWT (line 16) | interface JWT {