{ "name": "@read-frog/extension", "version": "1.46.6", "private": true, "description": "Read Frog browser extension for language learning", "type": "module", "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", "fmt": "oxfmt --write .", "fmt:check": "oxfmt --check .", "lint": "oxlint --type-aware --type-check", "lint:fix": "oxlint --type-aware --fix", "postinstall": "WXT_SKIP_ENV_VALIDATION=true wxt prepare", "test": "vitest run", "test:cov": "vitest run --coverage", "test:watch": "vitest", "type-check": "oxlint --type-aware --type-check", "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 git-tag", "prepare": "husky" }, "dependencies": { "@ai-sdk/alibaba": "^2.0.32", "@ai-sdk/amazon-bedrock": "^5.0.57", "@ai-sdk/anthropic": "^4.0.39", "@ai-sdk/azure": "^4.0.43", "@ai-sdk/cerebras": "^3.0.31", "@ai-sdk/cohere": "^4.0.27", "@ai-sdk/deepinfra": "^3.0.31", "@ai-sdk/deepseek": "^3.0.28", "@ai-sdk/fireworks": "^3.0.33", "@ai-sdk/google": "^4.0.44", "@ai-sdk/groq": "^4.0.28", "@ai-sdk/huggingface": "^2.0.31", "@ai-sdk/mistral": "^4.0.29", "@ai-sdk/moonshotai": "^3.0.35", "@ai-sdk/open-responses": "^2.0.28", "@ai-sdk/openai": "^4.0.42", "@ai-sdk/openai-compatible": "^3.0.31", "@ai-sdk/perplexity": "^4.0.29", "@ai-sdk/react": "^4.0.69", "@ai-sdk/replicate": "^3.0.28", "@ai-sdk/togetherai": "^3.0.32", "@ai-sdk/vercel": "^3.0.30", "@ai-sdk/xai": "^4.0.40", "@babel/runtime": "^8.0.0", "@base-ui/react": "^1.7.0", "@codemirror/lang-css": "^6.3.1", "@codemirror/lang-json": "^6.0.2", "@codemirror/lint": "^6.9.7", "@codemirror/state": "^6.7.1", "@codemirror/view": "^6.43.9", "@dnd-kit/core": "^6.3.1", "@dnd-kit/modifiers": "^9.0.0", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", "@fontsource-variable/inter": "^5.3.0", "@headless-tree/core": "^1.7.0", "@headless-tree/react": "^1.7.0", "@json-render/core": "^0.20.0", "@json-render/react": "^0.20.0", "@orpc/client": "^1.15.0", "@orpc/tanstack-query": "^1.15.0", "@radix-ui/react-slot": "^1.3.3", "@read-frog/api-contract": "0.14.0", "@read-frog/definitions": "0.4.4", "@remixicon/react": "^4.9.0", "@t3-oss/env-core": "^0.13.11", "@tabler/icons-react": "^3.46.0", "@tanstack/hotkeys": "^0.8.0", "@tanstack/react-form": "^1.33.5", "@tanstack/react-hotkeys": "^0.10.0", "@tanstack/react-query": "^5.101.4", "@tanstack/react-store": "^0.11.1", "@uiw/codemirror-extensions-color": "^4.25.11", "@uiw/react-codemirror": "^4.25.11", "@webext-core/isolated-element": "^3.0.0", "@webext-core/match-patterns": "2.0.0", "@webext-core/messaging": "^4.0.0", "@wxt-dev/i18n": "^0.2.7", "ai": "^7.0.66", "ai-sdk-ollama": "^4.1.0", "better-auth": "^1.6.30", "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": "^8.0.1", "defuddle": "^0.19.2", "dequal": "^2.0.3", "dexie": "^4.4.5", "entities": "^8.0.0", "file-saver": "^2.0.5", "franc": "^6.2.0", "i18next": "^26.3.6", "jotai": "^2.20.2", "jotai-family": "^1.1.0", "js-sha256": "^1.0.0", "lucide-react": "^1.31.0", "motion": "^13.1.0", "posthog-js": "^1.417.4", "react": "^19.2.8", "react-dom": "^19.2.8", "react-error-boundary": "^6.1.3", "react-markdown": "^10.1.0", "react-rnd": "^10.5.3", "react-router": "^8.3.0", "shadcn": "^4.18.0", "tailwind-merge": "^3.6.0", "ts-pattern": "^5.9.0", "tw-animate-css": "^1.4.0", "zod": "^4.4.3" }, "devDependencies": { "@changesets/changelog-github": "^1.0.0", "@changesets/cli": "^3.0.0", "@commitlint/cli": "^21.2.2", "@commitlint/config-conventional": "^21.2.2", "@faker-js/faker": "^10.6.0", "@iconify/react": "^6.0.2", "@modyfi/vite-plugin-yaml": "^1.1.1", "@tailwindcss/postcss": "^4.3.3", "@tanstack/react-query-devtools": "^5.101.4", "@testing-library/jest-dom": "^7.0.1", "@testing-library/react": "^16.3.2", "@total-typescript/ts-reset": "^0.6.1", "@types/css-tree": "^3.2.0", "@types/file-saver": "^2.0.7", "@types/jsdom": "^30.0.0", "@types/react": "^19.2.18", "@types/react-dom": "^19.2.4", "@vitejs/plugin-react": "^6.0.5", "@vitest/coverage-istanbul": "^4.1.10", "@wxt-dev/module-react": "^1.2.2", "autoprefixer": "^10.5.4", "eruda": "^3.4.3", "husky": "^9.1.7", "jsdom": "^30.0.1", "lint-staged": "^17.3.0", "nx": "^23.1.1", "oxfmt": "^0.63.0", "oxlint": "^1.78.0", "oxlint-plugin-query": "^0.1.1", "oxlint-tsgolint": "^7.0.2001", "postcss": "^8.5.26", "postcss-rem-to-responsive-pixel": "^7.0.5", "postcss-value-parser": "^4.2.0", "tailwindcss": "^4.3.3", "type-fest": "^5.8.0", "typescript": "^7.0.2", "vite": "^8.2.1", "vitest": "^4.1.10", "web-ext": "^10.6.0", "wxt": "0.21.4" }, "devEngines": { "runtime": { "name": "node", "version": "^26.7.0", "onFail": "download" } }, "packageManager": "pnpm@11.22.0+sha512.1ff870c4c6133dfd88fb2afc46dd13d47f09c9794b438c6fdb47ca98caf3bc16381ee0be93a091b8e3824cf01f889f46d7d9e20910fb0be1ab0fb5baa80dd621", "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" } }, "fmt": { "executor": "nx:run-commands", "options": { "command": "oxfmt --write ." } }, "fmt:check": { "executor": "nx:run-commands", "options": { "command": "oxfmt --check ." } }, "lint": { "executor": "nx:run-commands", "options": { "command": "oxlint --type-aware --type-check" } }, "type-check": { "executor": "nx:run-commands", "options": { "command": "oxlint --type-aware --type-check" } } } } }