{ "name": "@read-frog/extension", "type": "module", "version": "1.33.1", "private": true, "packageManager": "pnpm@10.32.1", "description": "Read Frog browser extension for language learning", "scripts": { "build": "wxt build", "build:edge": "wxt build -b edge", "build:firefox": "wxt build -b firefox --mv3", "build:analyze": "wxt build --analyze", "dev:local": "WXT_USE_LOCAL_PACKAGES=true wxt", "dev": "wxt", "dev:edge": "wxt -b edge", "dev:firefox": "wxt -b firefox --mv3", "lint": "eslint", "lint:fix": "eslint --fix", "postinstall": "WXT_SKIP_ENV_VALIDATION=true wxt prepare", "test": "vitest run", "test:cov": "vitest run --coverage", "test:watch": "vitest", "type-check": "tsc --noEmit", "scrape:ai-sdk-models": "npx tsx scripts/scrape-ai-sdk-provider-models.ts --out scripts/output/ai-sdk-provider-models.json", "zip": "wxt zip", "zip:edge": "wxt zip -b edge", "zip:firefox": "wxt zip -b firefox --mv3", "zip:all": "pnpm zip && pnpm zip:edge && pnpm zip:firefox", "release": "changeset tag && git push origin --tags", "prepare": "husky" }, "dependencies": { "@ai-sdk/alibaba": "^1.0.17", "@ai-sdk/amazon-bedrock": "^4.0.96", "@ai-sdk/anthropic": "^3.0.71", "@ai-sdk/cerebras": "^2.0.45", "@ai-sdk/cohere": "^3.0.30", "@ai-sdk/deepinfra": "^2.0.45", "@ai-sdk/deepseek": "^2.0.29", "@ai-sdk/fireworks": "^2.0.46", "@ai-sdk/google": "^3.0.64", "@ai-sdk/groq": "^3.0.35", "@ai-sdk/huggingface": "^1.0.43", "@ai-sdk/mistral": "^3.0.30", "@ai-sdk/moonshotai": "^2.0.16", "@ai-sdk/openai": "^3.0.53", "@ai-sdk/openai-compatible": "^2.0.41", "@ai-sdk/perplexity": "^3.0.29", "@ai-sdk/react": "^3.0.170", "@ai-sdk/replicate": "^2.0.29", "@ai-sdk/togetherai": "^2.0.45", "@ai-sdk/vercel": "^2.0.43", "@ai-sdk/xai": "^3.0.83", "@babel/runtime": "^7.29.2", "@base-ui/react": "^1.4.1", "@codemirror/lang-css": "^6.3.1", "@codemirror/lang-json": "^6.0.2", "@codemirror/lint": "^6.9.5", "@codemirror/state": "^6.6.0", "@codemirror/view": "^6.41.1", "@dnd-kit/core": "^6.3.1", "@dnd-kit/modifiers": "^9.0.0", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", "@headless-tree/core": "^1.6.3", "@headless-tree/react": "^1.6.3", "@json-render/core": "^0.18.0", "@json-render/react": "^0.18.0", "@openrouter/ai-sdk-provider": "^2.8.0", "@orpc/client": "^1.14.0", "@orpc/tanstack-query": "^1.14.0", "@radix-ui/react-slot": "^1.2.4", "@read-frog/api-contract": "0.4.1", "@read-frog/definitions": "0.1.4", "@remixicon/react": "^4.9.0", "@t3-oss/env-core": "^0.13.11", "@tabler/icons-react": "^3.41.1", "@tanstack/hotkeys": "^0.7.1", "@tanstack/react-form": "^1.29.1", "@tanstack/react-hotkeys": "^0.9.1", "@tanstack/react-query": "^5.100.1", "@uiw/codemirror-extensions-color": "^4.25.9", "@uiw/react-codemirror": "^4.25.9", "@webext-core/messaging": "^2.3.0", "@wxt-dev/i18n": "^0.2.5", "ai": "^6.0.168", "better-auth": "^1.6.8", "case-anything": "^3.1.2", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", "css-tree": "^3.2.1", "debounce": "^3.0.0", "deepmerge-ts": "^7.1.5", "defuddle": "^0.18.1", "dequal": "^2.0.3", "dexie": "^4.4.2", "file-saver": "^2.0.5", "franc": "^6.2.0", "jotai": "^2.19.1", "jotai-family": "^1.0.1", "js-sha256": "^0.11.1", "ollama-ai-provider-v2": "^3.5.0", "posthog-js": "^1.371.2", "react": "^19.2.5", "react-dom": "^19.2.5", "react-error-boundary": "^6.1.1", "react-markdown": "^10.1.0", "react-rnd": "^10.5.3", "react-router": "^7.14.2", "recharts": "^3.8.1", "shadcn": "^4.4.0", "sonner": "^2.0.7", "tailwind-merge": "^3.5.0", "tw-animate-css": "^1.4.0", "vercel-minimax-ai-provider": "^0.0.2", "zod": "^4.3.6" }, "devDependencies": { "@antfu/eslint-config": "^8.2.0", "@changesets/changelog-github": "^0.6.0", "@changesets/cli": "^2.31.0", "@commitlint/cli": "^20.5.0", "@commitlint/config-conventional": "^20.5.0", "@eslint-react/eslint-plugin": "^3.0.0", "@faker-js/faker": "^10.4.0", "@iconify/react": "^6.0.2", "@tailwindcss/postcss": "^4.2.4", "@tanstack/eslint-plugin-query": "^5.99.2", "@tanstack/react-query-devtools": "^5.99.2", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.2", "@total-typescript/ts-reset": "^0.6.1", "@types/css-tree": "^2.3.11", "@types/file-saver": "^2.0.7", "@types/jsdom": "^28.0.1", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", "@vitest/coverage-istanbul": "^4.1.5", "@wxt-dev/module-react": "^1.2.2", "autoprefixer": "^10.5.0", "eruda": "^3.4.3", "eslint": "^10.2.1", "eslint-plugin-format": "^2.0.1", "eslint-plugin-react-refresh": "^0.5.2", "husky": "^9.1.7", "jsdom": "^29.0.2", "lint-staged": "^16.4.0", "nx": "^22.6.5", "postcss": "^8.5.10", "postcss-rem-to-responsive-pixel": "^7.0.4", "postcss-value-parser": "^4.2.0", "tailwindcss": "^4.2.4", "type-fest": "^5.6.0", "typescript": "^6.0.3", "vite": "^8.0.10", "vitest": "^4.1.5", "wxt": "0.20.25" }, "devEngines": { "runtime": { "name": "node", "version": ">=22.0.0", "onFail": "download" } }, "nx": { "targets": { "build": { "executor": "nx:run-commands", "options": { "command": "wxt build" } }, "build:firefox": { "executor": "nx:run-commands", "options": { "command": "wxt build -b firefox" } }, "test": { "executor": "nx:run-commands", "options": { "command": "vitest run" } }, "test:cov": { "executor": "nx:run-commands", "options": { "command": "vitest run --coverage" } }, "lint": { "executor": "nx:run-commands", "options": { "command": "eslint" } }, "type-check": { "executor": "nx:run-commands", "options": { "command": "tsc --noEmit" } } } } }