{
  "name": "blockscout-frontend",
  "version": "1.0.0",
  "private": false,
  "homepage": "https://github.com/blockscout/frontend#readme",
  "engines": {
    "node": "20.11.0",
    "npm": "10.2.4"
  },
  "scripts": {
    "dev": "./tools/scripts/dev.sh",
    "dev:preset": "./tools/scripts/dev.preset.sh",
    "build": "next build",
    "build:docker": "docker build --build-arg GIT_COMMIT_SHA=$(git rev-parse --short HEAD) --build-arg GIT_TAG=$(git describe --tags --abbrev=0) -t blockscout-frontend:local ./",
    "start": "next start",
    "start:docker:local": "docker run -p 3000:3000 --env-file .env.local blockscout-frontend:local",
    "start:docker:preset": "./tools/scripts/docker.preset.sh",
    "lint:eslint": "eslint . --ext .js,.jsx,.ts,.tsx",
    "lint:eslint:fix": "eslint . --ext .js,.jsx,.ts,.tsx --fix",
    "lint:tsc": "tsc -p ./tsconfig.json",
    "lint:envs-validator:test": "cd ./deploy/tools/envs-validator && ./test.sh",
    "prepare": "husky install",
    "svg:format": "svgo -r ./icons",
    "svg:build-sprite": "icons build -i ./icons -o ./public/icons --optimize",
    "test:pw": "./tools/scripts/pw.sh",
    "test:pw:local": "export NODE_PATH=$(pwd)/node_modules && yarn test:pw",
    "test:pw:docker": "docker run --rm --network host -v $(pwd):/work/ -w /work/ -it mcr.microsoft.com/playwright:v1.41.1-focal ./tools/scripts/pw.docker.sh",
    "test:pw:ci": "yarn test:pw --project=$PW_PROJECT",
    "test:jest": "jest",
    "test:jest:watch": "jest --watch",
    "favicon:generate:dev": "./tools/scripts/favicon-generator.dev.sh"
  },
  "dependencies": {
    "@chakra-ui/react": "2.7.1",
    "@chakra-ui/theme-tools": "^2.0.18",
    "@emotion/react": "^11.10.4",
    "@emotion/styled": "^11.10.4",
    "@growthbook/growthbook-react": "0.21.0",
    "@metamask/post-message-stream": "^7.0.0",
    "@metamask/providers": "^10.2.1",
    "@monaco-editor/react": "^4.4.6",
    "@next/bundle-analyzer": "^14.0.1",
    "@opentelemetry/auto-instrumentations-node": "^0.39.4",
    "@opentelemetry/exporter-metrics-otlp-proto": "^0.45.1",
    "@opentelemetry/exporter-trace-otlp-http": "^0.45.0",
    "@opentelemetry/resources": "^1.18.0",
    "@opentelemetry/sdk-node": "^0.45.0",
    "@opentelemetry/sdk-trace-node": "^1.18.0",
    "@opentelemetry/semantic-conventions": "^1.18.0",
    "@sentry/cli": "^2.21.2",
    "@sentry/react": "7.24.0",
    "@sentry/tracing": "7.24.0",
    "@slise/embed-react": "^2.2.0",
    "@tanstack/react-query": "^5.4.3",
    "@tanstack/react-query-devtools": "^5.4.3",
    "@types/papaparse": "^5.3.5",
    "@types/react-scroll": "^1.8.4",
    "@web3modal/wagmi": "3.5.0",
    "bignumber.js": "^9.1.0",
    "blo": "^1.1.1",
    "chakra-react-select": "^4.4.3",
    "crypto-js": "^4.2.0",
    "d3": "^7.6.1",
    "dappscout-iframe": "^0.1.0",
    "dayjs": "^1.11.5",
    "dom-to-image": "^2.6.0",
    "focus-visible": "^5.2.0",
    "framer-motion": "^6.5.1",
    "gradient-avatar": "^1.0.2",
    "graphiql": "^2.2.0",
    "graphql": "^16.8.1",
    "graphql-ws": "^5.11.3",
    "js-cookie": "^3.0.1",
    "lodash": "^4.0.0",
    "mixpanel-browser": "^2.47.0",
    "monaco-editor": "^0.34.1",
    "next": "13.5.4",
    "nextjs-routes": "^1.0.8",
    "node-fetch": "^3.2.9",
    "papaparse": "^5.3.2",
    "path-to-regexp": "^6.2.1",
    "phoenix": "^1.6.15",
    "pino-http": "^8.2.1",
    "pino-pretty": "^9.1.1",
    "qrcode": "^1.5.1",
    "react": "18.2.0",
    "react-device-detect": "^2.2.3",
    "react-dom": "18.2.0",
    "react-google-recaptcha": "^2.1.0",
    "react-hook-form": "^7.33.1",
    "react-identicons": "^1.2.5",
    "react-intersection-observer": "^9.5.2",
    "react-jazzicon": "^1.0.4",
    "react-number-format": "^5.3.1",
    "react-scroll": "^1.8.7",
    "swagger-ui-react": "^5.9.0",
    "use-font-face-observer": "^1.2.1",
    "viem": "1.20.1",
    "wagmi": "1.4.12",
    "xss": "^1.0.14"
  },
  "devDependencies": {
    "@playwright/experimental-ct-react": "1.41.1",
    "@playwright/test": "1.41.1",
    "@svgr/webpack": "^6.5.1",
    "@tanstack/eslint-plugin-query": "^5.0.5",
    "@testing-library/react": "^14.0.0",
    "@total-typescript/ts-reset": "^0.4.0",
    "@types/crypto-js": "^4.1.1",
    "@types/csp-dev": "^1.0.0",
    "@types/d3": "^7.4.0",
    "@types/dom-to-image": "^2.6.4",
    "@types/jest": "^29.2.0",
    "@types/js-cookie": "^3.0.2",
    "@types/mixpanel-browser": "^2.38.1",
    "@types/node": "20.11.0",
    "@types/phoenix": "^1.5.4",
    "@types/qrcode": "^1.5.0",
    "@types/react": "18.0.9",
    "@types/react-dom": "18.0.5",
    "@types/react-google-recaptcha": "^2.1.5",
    "@types/swagger-ui-react": "^4.11.0",
    "@types/ws": "^8.5.3",
    "@typescript-eslint/eslint-plugin": "^5.60.0",
    "@vitejs/plugin-react": "^4.0.0",
    "css-loader": "^6.7.3",
    "dotenv-cli": "^6.0.0",
    "eslint": "^8.32.0",
    "eslint-config-next": "13.3.0",
    "eslint-plugin-es5": "^1.5.0",
    "eslint-plugin-import-helpers": "^1.2.1",
    "eslint-plugin-jest": "^27.1.6",
    "eslint-plugin-no-cyrillic-string": "^1.0.5",
    "eslint-plugin-playwright": "^0.11.2",
    "eslint-plugin-regexp": "^1.7.0",
    "husky": "^8.0.0",
    "jest": "^29.2.1",
    "jest-environment-jsdom": "^29.2.1",
    "jest-fetch-mock": "^3.0.3",
    "lint-staged": ">=10",
    "mockdate": "^3.0.5",
    "style-loader": "^3.3.1",
    "svg-icons-cli": "^0.0.5",
    "svgo": "^2.8.0",
    "ts-jest": "^29.0.3",
    "ts-node": "^10.9.1",
    "typescript": "^5.1.0",
    "vite-plugin-svgr": "^2.2.2",
    "vite-tsconfig-paths": "^3.5.2",
    "ws": "^8.11.0"
  },
  "lint-staged": {
    "*.{js,jsx,ts,tsx}": "eslint --cache --fix"
  }
}
