{
  "name": "homarr",
  "version": "0.12.3",
  "description": "Homarr - A homepage for your server.",
  "license": "MIT",
  "repository": {
    "type": "git",
    "url": "https://github.com/ajnart/homarr"
  },
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "analyze": "ANALYZE=true next build",
    "turbo": "turbo run build",
    "start": "next start",
    "typecheck": "tsc --noEmit",
    "export": "next build && next export",
    "lint": "next lint",
    "prettier:check": "prettier --check \"**/*.{ts,tsx}\"",
    "prettier:write": "prettier --write \"**/*.{ts,tsx}\"",
    "test": "vitest",
    "test:ui": "vitest --ui",
    "test:run": "vitest run",
    "test:coverage": "vitest run --coverage"
  },
  "dependencies": {
    "@ctrl/deluge": "^4.1.0",
    "@ctrl/qbittorrent": "^6.0.0",
    "@ctrl/shared-torrent": "^4.1.1",
    "@ctrl/transmission": "^4.1.1",
    "@emotion/react": "^11.10.6",
    "@emotion/server": "^11.10.0",
    "@jellyfin/sdk": "^0.8.0",
    "@mantine/core": "^6.0.0",
    "@mantine/dates": "^6.0.0",
    "@mantine/dropzone": "^6.0.0",
    "@mantine/form": "^6.0.0",
    "@mantine/hooks": "^6.0.0",
    "@mantine/modals": "^6.0.0",
    "@mantine/next": "^6.0.0",
    "@mantine/notifications": "^6.0.0",
    "@nivo/core": "^0.83.0",
    "@nivo/line": "^0.83.0",
    "@react-native-async-storage/async-storage": "^1.18.1",
    "@tabler/icons-react": "^2.18.0",
    "@tanstack/query-async-storage-persister": "^4.27.1",
    "@tanstack/query-sync-storage-persister": "^4.27.1",
    "@tanstack/react-query": "^4.2.1",
    "@tanstack/react-query-devtools": "^4.24.4",
    "@tanstack/react-query-persist-client": "^4.28.0",
    "@trpc/client": "^10.29.1",
    "@trpc/next": "^10.29.1",
    "@trpc/react-query": "^10.29.1",
    "@trpc/server": "^10.29.1",
    "@vitejs/plugin-react": "^4.0.0",
    "axios": "^1.0.0",
    "consola": "^3.0.0",
    "cookies-next": "^2.1.1",
    "dayjs": "^1.11.7",
    "dockerode": "^3.3.2",
    "fily-publish-gridstack": "^0.0.13",
    "framer-motion": "^10.0.0",
    "html-entities": "^2.3.3",
    "i18next": "^22.5.1",
    "js-file-download": "^0.4.12",
    "next": "13.4.10",
    "next-i18next": "^13.0.0",
    "nzbget-api": "^0.0.3",
    "prismjs": "^1.29.0",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-i18next": "^12.3.1",
    "react-simple-code-editor": "^0.13.1",
    "rss-parser": "^3.12.0",
    "sabnzbd-api": "^1.5.0",
    "uuid": "^9.0.0",
    "xml-js": "^1.6.11",
    "xss": "^1.0.14",
    "zod": "^3.21.4",
    "zustand": "^4.3.7"
  },
  "devDependencies": {
    "@next/bundle-analyzer": "^13.0.0",
    "@next/eslint-plugin-next": "^13.4.5",
    "@testing-library/jest-dom": "^5.16.5",
    "@testing-library/react": "^14.0.0",
    "@trivago/prettier-plugin-sort-imports": "^4.1.1",
    "@types/dockerode": "^3.3.9",
    "@types/node": "18.16.19",
    "@types/prismjs": "^1.26.0",
    "@types/react": "^18.2.11",
    "@types/uuid": "^9.0.0",
    "@types/video.js": "^7.3.51",
    "@typescript-eslint/eslint-plugin": "^5.50.0",
    "@typescript-eslint/parser": "^5.30.7",
    "@vitest/coverage-c8": "^0.33.0",
    "@vitest/ui": "^0.33.0",
    "eslint": "^8.0.1",
    "eslint-config-next": "^13.4.5",
    "eslint-plugin-promise": "^6.0.0",
    "eslint-plugin-react": "latest",
    "eslint-plugin-react-hooks": "^4.6.0",
    "eslint-plugin-testing-library": "^5.5.1",
    "eslint-plugin-unused-imports": "^2.0.0",
    "eslint-plugin-vitest": "^0.2.0",
    "happy-dom": "^9.0.0",
    "node-mocks-http": "^1.12.2",
    "prettier": "^2.7.1",
    "sass": "^1.56.1",
    "ts-node": "latest",
    "turbo": "latest",
    "typescript": "^5.1.0",
    "video.js": "^8.0.3",
    "vite-tsconfig-paths": "^4.2.0",
    "vitest": "^0.33.0",
    "vitest-fetch-mock": "^0.2.2"
  },
  "nextBundleAnalysis": {
    "budget": null,
    "budgetPercentIncreaseRed": 20,
    "minimumChangeThreshold": 0,
    "showDetails": true
  },
  "renovate": {
    "$schema": "https://docs.renovatebot.com/renovate-schema.json",
    "extends": [
      "config:base"
    ],
    "commitMessagePrefix": "⬆️",
    "lockFileMaintenance": {
      "automerge": true
    },
    "minor": {
      "automerge": true
    },
    "patch": {
      "automerge": true
    },
    "pin": {
      "automerge": true
    }
  },
  "prettier": {
    "printWidth": 100,
    "tabWidth": 2,
    "parser": "typescript",
    "singleQuote": true,
    "trailingComma": "es5",
    "useTabs": false,
    "endOfLine": "lf",
    "importOrder": [
      "^@core/(.*)$",
      "^@server/(.*)$",
      "^@ui/(.*)$",
      "^[./]"
    ],
    "importOrderSeparation": true,
    "importOrderSortSpecifiers": true
  },
  "eslintConfig": {
    "ignoreDuringBuilds": true,
    "extends": [
      "next",
      "eslint:recommended",
      "plugin:@next/next/recommended",
      "plugin:react-hooks/recommended",
      "plugin:react/recommended",
      "plugin:@typescript-eslint/recommended",
      "plugin:vitest/recommended"
    ],
    "plugins": [
      "testing-library",
      "unused-imports",
      "react",
      "vitest"
    ],
    "overrides": [
      {
        "files": [
          "**/?(*.)+(spec|test).[jt]s?(x)"
        ],
        "extends": [
          "plugin:testing-library/react"
        ]
      }
    ],
    "parser": "@typescript-eslint/parser",
    "parserOptions": {
      "project": "./tsconfig.json"
    },
    "rules": {
      "import/no-cycle": "off",
      "react/react-in-jsx-scope": "off",
      "react/no-children-prop": "off",
      "@typescript-eslint/no-unused-vars": "off",
      "@typescript-eslint/no-unused-imports": "off",
      "@typescript-eslint/no-unused-expressions": "off",
      "@typescript-eslint/no-explicit-any": "off",
      "@typescript-eslint/no-shadow": "off",
      "@typescript-eslint/no-use-before-define": "off",
      "@typescript-eslint/no-non-null-assertion": "off",
      "no-continue": "off",
      "linebreak-style": 0,
      "import/extensions": "off",
      "vitest/max-nested-describe": [
        "error",
        {
          "max": 3
        }
      ],
      "testing-library/no-node-access": [
        "error",
        {
          "allowContainerFirstChild": true
        }
      ]
    }
  }
}
