{
  "name": "@jeremyckahn/farmhand",
  "version": "1.19.23",
  "publishConfig": {
    "access": "public"
  },
  "description": "A farming game",
  "main": "public/electron.js",
  "unpkg": "dist/index.html",
  "homepage": "https://www.farmhand.life/",
  "type": "module",
  "scripts": {
    "build": "npm run build:api && vite build",
    "build:native": "npm run build -- --base='./' && electron-builder --publish=always",
    "check:types": "tsc",
    "dev": "mprocs \"cross-env VITE_TRACKER_URL='ws://localhost:8000' npm run start\" \"npm run start:api\" \"npm run start:backend\" \"npm run start:tracker\"",
    "dev:native": "mprocs \"BROWSER=none npm run start\" \"npm run start:api\" \"npm run start:backend\" \"npm run electron\"",
    "e2e": "gh act --secret GITHUB_TOKEN=\"$(gh auth token)\" --secret VERCEL_TOKEN=\"$(jq .token ~/.local/share/com.vercel.cli/auth.json)\" -j e2e",
    "e2e:stop": "docker compose -f e2e/docker-compose.yml down",
    "e2e:cleanup": "docker rmi $(docker images --filter \"reference=ghcr.io/jeremyckahn/farmhand/*\" -q)",
    "e2e:serve-app": "npx vite preview --port 3000 --host",
    "e2e:create": "npx playwright codegen localhost:3000?seed=0.5",
    "electron": "wait-on tcp:3000 && electron .",
    "print:crops": "vite-node src/scripts/generate-crop-table.ts",
    "lint": "eslint src --max-warnings=0",
    "prettier": "prettier 'src/**/*.{js,ts,tsx}' --write",
    "preversion": "npm test",
    "postversion": "git push && git push --tags",
    "postinstall": "npm run build:api",
    "start": "vite --port=3000",
    "start:api": "NODE_OPTIONS=--openssl-legacy-provider vercel dev --token=$VERCEL_TOKEN --listen=0.0.0.0:3001 --yes",
    "start:backend": "docker compose up",
    "start:tracker": "bittorrent-tracker",
    "test": "vitest",
    "test:debug": "vitest --inspect-brk --no-file-parallelism --run",
    "update-images": "bash update-images.sh",
    "build:api": "esbuild api-src/get-market-data.ts api-src/post-day-results.ts --bundle --packages=external --platform=node --format=esm --out-extension:.js=.mjs --outdir=api",
    "build:vercel-functions": "node scripts/build-vercel-functions.mjs"
  },
  "author": "Jeremy Kahn <jeremyckahn@gmail.com>",
  "license": "GPL-2.0-or-later",
  "repository": {
    "type": "git",
    "url": "https://github.com/jeremyckahn/farmhand.git"
  },
  "engines": {
    "node": "22.x"
  },
  "devDependencies": {
    "@testing-library/dom": "^8.3.0",
    "@testing-library/jest-dom": "^5.14.1",
    "@testing-library/react": "^12.0.0",
    "@testing-library/user-event": "^14.6.1",
    "@types/lodash.sortby": "^4.7.7",
    "@types/markdown-table": "^2.0.0",
    "@types/node": "^22.19.9",
    "@types/react": "^17.0.2",
    "@types/uuid": "^9.0.2",
    "@typescript-eslint/eslint-plugin": "^8.58.1",
    "@typescript-eslint/parser": "^8.58.1",
    "@vitejs/plugin-react": "^4.2.1",
    "@vitest/coverage-v8": "^4.0.18",
    "bittorrent-tracker": "^9.19.0",
    "browserslist": "^4.21.9",
    "cheerio": "^1.0.0-rc.3",
    "cross-env": "^7.0.2",
    "electron": "^39.8.4",
    "electron-builder": "^26.0.12",
    "esbuild": "^0.27.4",
    "eslint": "^8.57.1",
    "eslint-config-react-app": "^7.0.1",
    "eslint-plugin-flowtype": "^8.0.3",
    "eslint-plugin-import": "^2.29.1",
    "eslint-plugin-jsx-a11y": "^6.2.3",
    "eslint-plugin-react": "^7.19.0",
    "eslint-plugin-react-hooks": "^4.6.2",
    "git-branch-is": "^4.0.0",
    "husky": "^4.2.3",
    "jest-extended": "^0.11.5",
    "jimp": "^0.22.8",
    "jsdom": "^16.2.1",
    "markdown-table": "^2.0.0",
    "mprocs": "^0.6.4",
    "nodemon": "^2.0.2",
    "npm-run-all": "^4.1.3",
    "prettier": "^1.13.7",
    "pretty-quick": "^2.0.1",
    "sass": "^1.69.5",
    "scss-reset": "^1.4.2",
    "serve": "^14.2.0",
    "typescript": "^6.0.2",
    "vercel": "^50.10.1",
    "vite": "^7.3.1",
    "vite-node": "^6.0.0",
    "vite-plugin-pwa": "^1.2.0",
    "vitest": "^4.0.18",
    "wait-on": "^8.0.3"
  },
  "dependencies": {
    "@emotion/react": "^11.11.1",
    "@emotion/styled": "^11.11.0",
    "@fontsource/francois-one": "^5.2.6",
    "@fontsource/public-sans": "^5.1.1",
    "@fortawesome/fontawesome-svg-core": "^1.2.27",
    "@fortawesome/free-regular-svg-icons": "^5.12.1",
    "@fortawesome/free-solid-svg-icons": "^5.12.1",
    "@fortawesome/react-fontawesome": "^0.1.9",
    "@mui/icons-material": "^5.15.0",
    "@mui/lab": "^5.0.0-alpha.156",
    "@mui/material": "^5.15.0",
    "@mui/styles": "^5.15.0",
    "animate.css": "^4.1.0",
    "assert": "npm:assert-browserify@^2.0.0",
    "axios": "^1.6.0",
    "buffer": "^6.0.3",
    "classnames": "^2.2.6",
    "dinero.js": "^2.0.0",
    "electron-is-dev": "^2.0.0",
    "electron-updater": "^6.3.0",
    "fast-memoize": "^2.5.2",
    "file-saver": "^2.0.2",
    "fs": "npm:browserify-fs@^1.0.0",
    "fun-animal-names": "^0.1.1",
    "global": "^4.4.0",
    "http": "npm:http-browserify@^1.7.0",
    "https": "npm:https-browserify@^1.0.0",
    "localforage": "^1.7.3",
    "lodash.debounce": "^4.0.8",
    "lodash.sortby": "^4.7.0",
    "lodash.throttle": "^4.1.1",
    "notistack": "^2.0.8",
    "path": "npm:path-browserify@^1.0.1",
    "process": "^0.11.10",
    "prop-types": "^15.6.2",
    "react": "^17.0.2",
    "react-confetti": "6.1.0",
    "react-dom": "^17.0.2",
    "react-file-reader-input": "^2.0.0",
    "react-helmet": "^6.1.0",
    "react-hotkeys": "^2.0.0",
    "react-markdown": "^4.3.1",
    "react-number-format": "^4.4.1",
    "react-router-dom": "^5.2.0",
    "react-use": "^17.4.0",
    "react-zoom-pan-pinch": "^1.6.1",
    "redis": "^3.0.2",
    "seedrandom": "^3.0.5",
    "shifty": "^3.0.1",
    "stream": "npm:stream-browserify@^3.0.0",
    "trystero": "^0.22.0",
    "url": "^0.11.0",
    "usehooks-ts": "^3.1.0",
    "uuid": "^3.4.0",
    "zlib": "npm:browserify-zlib@^0.2.0"
  },
  "build": {
    "appId": "life.farmhand.game",
    "productName": "Farmhand",
    "extraMetadata": {
      "name": "Farmhand",
      "main": "dist/electron.js"
    },
    "files": [
      "dist/**/*",
      "node_modules/**/*"
    ],
    "directories": {
      "buildResources": "public",
      "output": "dist/native"
    },
    "linux": {
      "target": [
        {
          "target": "AppImage"
        }
      ],
      "category": "Game",
      "icon": "./public/app-icons/Icon-512x512.png"
    },
    "publish": {
      "provider": "github",
      "owner": "jeremyckahn",
      "repo": "farmhand",
      "releaseType": "release"
    }
  },
  "husky": {
    "hooks": {
      "pre-commit": "pretty-quick --staged && npm run lint && npm run check:types && if git-branch-is develop; then npm test -- --run; fi"
    }
  },
  "files": [
    "src",
    "dist",
    "public"
  ],
  "craGenerate": {
    "cssExtension": "sass",
    "type": "functional"
  },
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ]
}
