{
  "name": "farmbot-web-frontend",
  "version": "1.1.0",
  "description": "Farmbot web frontend.",
  "engines": {
    "browsers": "defaults",
    "bun": "1.x"
  },
  "packageManager": "bun@1.x",
  "repository": {
    "type": "git",
    "url": "https://github.com/farmbot/farmbot-web-app"
  },
  "scripts": {
    "test-slow": "bash scripts/test_slow.sh && bun run coverage-html",
    "test-timings": "bash scripts/test_timings.sh",
    "test-iso": "bash scripts/test_isolated.sh",
    "test": "bun test",
    "coverage-html": "genhtml -q coverage_fe/lcov.info --output-directory coverage_fe",
    "ruby-check": "bundle exec rubocop -c .rubocop.yml && bundle exec brakeman . --skip-files /docker_volumes/",
    "ruby-autocorrect": "bundle exec rubocop -c .rubocop.yml -A",
    "typecheck": "bun scripts/run.js bun node_modules/@typescript/native/bin/tsc --project tsconfig.tests.json --noEmit --pretty",
    "dev-typecheck": "bun scripts/run.js bun node_modules/@typescript/native/bin/tsc --project tsconfig.dev.json --noEmit --pretty",
    "eslint": "TSESTREE_SINGLE_RUN=true bun scripts/run.js bunx eslint --no-cache frontend public/app-resources/languages",
    "sass-lint": "bun scripts/run.js bunx sass-lint -c .sass-lint.yml -v -q && bun scripts/run.js bunx stylelint \"frontend/css/**/*.scss\"",
    "sass-fix": "bunx stylelint --fix \"frontend/css/**/*.scss\"",
    "sass-check": "bun scripts/run.js bunx sass --no-source-map --load-path=node_modules frontend/css/_index.scss:sass_index.log",
    "render-scene-object-thumbnails": "bun scripts/render_scene_object_thumbnails.ts",
    "translation-check": "bun scripts/run.js bunx jshint --config public/app-resources/languages/.config public/app-resources/languages/*.json",
    "linters": "X=0;bun run typecheck;X=$(($X+$?));bun run dev-typecheck;X=$(($X+$?));bun run eslint;X=$(($X+$?));bun run sass-lint;X=$(($X+$?));bun run sass-check;X=$(($X+$?));bun run translation-check;X=$(($X+$?));[ $X = 0 ]"
  },
  "keywords": [
    "farmbot"
  ],
  "author": "farmbot.io",
  "license": "MIT",
  "browser": {
    "mqtt": "mqtt/dist/mqtt.esm.js"
  },
  "dependencies": {
    "@blueprintjs/core": "6.18.0",
    "@blueprintjs/select": "6.3.4",
    "@monaco-editor/react": "4.7.0",
    "@react-spring/three": "10.1.2",
    "@react-three/drei": "10.7.8",
    "@react-three/fiber": "9.7.0",
    "@rollbar/react": "1.0.0",
    "@types/bun": "1.3.14",
    "@types/lodash": "4.17.25",
    "@types/markdown-it-emoji": "3.0.1",
    "@types/promise-timeout": "1.3.3",
    "@types/react": "19.2.18",
    "@types/react-color": "3.0.13",
    "@types/react-dom": "19.2.4",
    "@types/react-test-renderer": "19.1.0",
    "@types/redux-immutable-state-invariant": "2.1.4",
    "@types/three": "0.185.4",
    "@types/ws": "8.18.1",
    "@typescript/native": "npm:typescript@7.0.2",
    "@xterm/xterm": "6.0.0",
    "axios": "1.19.0",
    "bowser": "2.14.1",
    "browser-speech": "1.1.1",
    "delaunator": "5.1.0",
    "events": "3.3.0",
    "farmbot": "15.9.8",
    "fengari": "0.1.5",
    "fengari-web": "0.1.4",
    "i18next": "26.4.0",
    "lodash": "4.18.1",
    "markdown-it": "15.0.0",
    "markdown-it-emoji": "3.1.0",
    "moment": "2.30.1",
    "monaco-editor": "0.56.0",
    "mqtt": "5.15.2",
    "process": "0.11.10",
    "promise-timeout": "1.3.0",
    "punycode": "2.3.1",
    "querystring-es3": "0.2.1",
    "react": "19.2.8",
    "react-color": "2.19.3",
    "react-dom": "19.2.8",
    "react-redux": "9.3.0",
    "react-router": "8.3.0",
    "redux": "5.0.1",
    "redux-immutable-state-invariant": "2.1.0",
    "redux-thunk": "3.1.0",
    "rollbar": "3.1.0",
    "suncalc": "2.0.1",
    "takeme": "0.12.0",
    "three": "0.185.1",
    "typescript": "6.0.3",
    "url": "0.11.4"
  },
  "devDependencies": {
    "@eslint/js": "10.0.1",
    "@happy-dom/global-registrator": "20.11.6",
    "@react-three/eslint-plugin": "0.1.2",
    "@testing-library/dom": "10.4.1",
    "@testing-library/jest-dom": "7.0.1",
    "@testing-library/react": "16.3.2",
    "@testing-library/user-event": "14.6.5",
    "@types/delaunator": "5.0.3",
    "@types/jest": "30.0.0",
    "@types/readable-stream": "4.0.24",
    "@types/suncalc": "1.9.2",
    "@typescript-eslint/eslint-plugin": "8.67.0",
    "@typescript-eslint/parser": "8.67.0",
    "@unrs/resolver-binding-linux-x64-gnu": "1.12.2",
    "eslint": "10.8.1",
    "eslint-plugin-eslint-comments": "3.2.0",
    "eslint-plugin-import": "2.32.0",
    "eslint-plugin-jest": "29.16.1",
    "eslint-plugin-no-null": "1.0.2",
    "eslint-plugin-promise": "7.3.0",
    "eslint-plugin-react": "7.37.5",
    "eslint-plugin-react-hooks": "7.1.1",
    "happy-dom": "20.11.6",
    "jest": "30.4.2",
    "jest-canvas-mock": "2.5.8",
    "jest-cli": "30.4.2",
    "jest-environment-jsdom": "30.4.1",
    "jest-junit": "17.0.0",
    "jest-skipped-reporter": "0.0.5",
    "jshint": "2.13.6",
    "madge": "8.0.0",
    "path-browserify": "1.0.1",
    "playwright": "1.62.1",
    "postcss": "8.5.26",
    "postcss-scss": "4.0.9",
    "raf": "3.4.1",
    "react-test-renderer": "19.2.8",
    "sass": "1.103.0",
    "sass-lint": "1.13.1",
    "stylelint": "17.14.1",
    "stylelint-config-standard-scss": "17.0.0",
    "ts-jest": "29.4.12",
    "tslint": "6.1.3"
  }
}
