package.json

{
  "name": "birdbrain",
  "version": "1.0.1-beta.21",
  "description": "Open source web investigation & capture tool",
  "main": "./out/main/index.js",
  "private": true,
  "packageManager": "pnpm@10.28.2",
  "author": "Matt Donovan",
  "license": "MIT",
  "homepage": "https://github.com/thebristolsound/birdbrain",
  "engines": {
    "node": ">=20.19.0"
  },
  "scripts": {
    "dev": "electron-vite dev",
    "build": "electron-vite build",
    "preview": "electron-vite preview",
    "postinstall": "node scripts/ensure-electron.mjs && node scripts/rebuild-native.mjs",
    "prepublishOnly": "node scripts/no-registry-publish.mjs",
    "rebuild:electron": "node scripts/rebuild-native.mjs",
    "build:extension": "vite build --config extension/vite.config.ts && cross-env BUILD_TARGET=content vite build --config extension/vite.config.ts",
    "dev:extension": "vite build --config extension/vite.config.ts --watch",
    "build:verifier": "node scripts/build-verifier.mjs",
    "test": "cross-env ELECTRON_RUN_AS_NODE=1 electron ./node_modules/vitest/vitest.mjs run",
    "test:watch": "cross-env ELECTRON_RUN_AS_NODE=1 electron ./node_modules/vitest/vitest.mjs",
    "test:coverage": "cross-env ELECTRON_RUN_AS_NODE=1 electron ./node_modules/vitest/vitest.mjs run --coverage",
    "coverage:report": "node scripts/coverage-report.mjs",
    "coverage:diff": "node scripts/diff-coverage.mjs",
    "coverage:all": "node scripts/coverage-all.mjs",
    "lint": "eslint . --ext .ts,.tsx",
    "audit:check": "node scripts/audit-check.mjs",
    "typecheck": "tsc --noEmit -p tsconfig.node.json && tsc --noEmit -p tsconfig.web.json && tsc --noEmit -p extension/tsconfig.json && tsc --noEmit -p tsconfig.test.node.json && tsc --noEmit -p tsconfig.test.web.json && tsc --noEmit -p e2e/tsconfig.json",
    "format": "prettier --write \"src/**/*.{ts,tsx}\" \"extension/**/*.{ts,tsx}\"",
    "pretest:e2e": "pnpm build",
    "test:e2e": "npx playwright test",
    "test:e2e:debug": "npx playwright test --debug",
    "pretest:e2e:debug": "pnpm build",
    "package": "pnpm build:extension && electron-vite build && electron-builder --publish never",
    "package:win": "pnpm build:extension && electron-vite build && electron-builder --win --publish never",
    "package:mac": "pnpm build:extension && electron-vite build && electron-builder --mac --publish never",
    "package:linux": "pnpm build:extension && electron-vite build && electron-builder --linux --publish never"
  },
  "build": {
    "appId": "com.birdbrain.app",
    "productName": "Birdbrain",
    "icon": "resources/icon.png",
    "protocols": [
      {
        "name": "Birdbrain",
        "schemes": [
          "birdbrain"
        ]
      }
    ],
    "directories": {
      "output": "dist"
    },
    "files": [
      "!website/**/*"
    ],
    "publish": [
      {
        "provider": "github",
        "owner": "thebristolsound",
        "repo": "birdbrain-releases"
      }
    ],
    "asarUnpack": [
      "**/node_modules/sharp/**",
      "**/node_modules/@img/**"
    ],
    "extraResources": [
      {
        "from": "extension/dist",
        "to": "extension",
        "filter": [
          "**/*"
        ]
      }
    ],
    "win": {
      "target": [
        "nsis"
      ]
    },
    "nsis": {
      "artifactName": "${productName}-Setup-${version}.${ext}"
    },
    "mac": {
      "target": [
        {
          "target": "dmg",
          "arch": [
            "x64",
            "arm64"
          ]
        },
        {
          "target": "zip",
          "arch": [
            "x64",
            "arm64"
          ]
        }
      ]
    },
    "linux": {
      "target": [
        "AppImage",
        "deb"
      ],
      "icon": "resources/icons",
      "category": "Utility",
      "maintainer": "Matt Donovan <thebristolsound@users.noreply.github.com>"
    }
  },
  "dependencies": {
    "@fontsource-variable/inter": "^5.2.8",
    "@fontsource-variable/jetbrains-mono": "^5.2.8",
    "@ghostery/adblocker-electron": "^2.18.1",
    "@hono/node-server": "^2.0.12",
    "@hono/zod-validator": "^0.4.3",
    "@peculiar/asn1-cms": "^2.8.0",
    "@peculiar/asn1-schema": "^2.8.0",
    "@peculiar/asn1-tsp": "^2.8.0",
    "@peculiar/asn1-x509": "^2.8.0",
    "@tanstack/react-query": "^5.101.2",
    "@tanstack/react-router": "^1.170.17",
    "@tiptap/core": "3.29.0",
    "@tiptap/pm": "3.29.0",
    "@tiptap/react": "3.29.0",
    "@tiptap/starter-kit": "3.29.0",
    "@tiptap/static-renderer": "3.29.0",
    "@tiptap/suggestion": "3.29.0",
    "better-sqlite3": "^12.11.1",
    "cheerio": "^1.2.0",
    "class-variance-authority": "^0.7.1",
    "clsx": "^2.1.1",
    "electron-updater": "^6.8.9",
    "hono": "^4.12.34",
    "ioc-extractor": "^8.1.7",
    "konva": "^10.3.0",
    "lucide-react": "^0.577.0",
    "motion": "^12.42.2",
    "radix-ui": "^1.6.1",
    "react-konva": "^19.2.5",
    "react-markdown": "^10.1.0",
    "react-resizable-panels": "^4.12.3",
    "sharp": "^0.35.3",
    "sonner": "^2.0.7",
    "tailwind-merge": "^3.6.0",
    "tldts": "^7.4.6",
    "use-image": "^1.1.4",
    "uuid": "^14.0.1",
    "zod": "^3.25.76",
    "zustand": "^5.0.14"
  },
  "devDependencies": {
    "@electron-toolkit/utils": "^4.0.0",
    "@eslint/js": "^9.39.4",
    "@playwright/test": "^1.61.1",
    "@tailwindcss/vite": "^4.3.2",
    "@tanstack/react-query-devtools": "^5.101.2",
    "@tanstack/router-devtools": "^1.167.0",
    "@testing-library/dom": "^10.4.1",
    "@testing-library/react": "^16.3.2",
    "@types/better-sqlite3": "^7.6.13",
    "@types/chrome": "^0.1.43",
    "@types/node": "^25.9.4",
    "@types/react": "^19.2.17",
    "@types/react-dom": "^19.2.3",
    "@types/uuid": "^10.0.0",
    "@vitejs/plugin-react": "^4.7.0",
    "@vitest/coverage-v8": "^3.2.6",
    "cross-env": "^10.1.0",
    "electron": "^42.5.1",
    "electron-builder": "^26.15.3",
    "electron-vite": "^3.1.0",
    "esbuild": "^0.28.1",
    "eslint": "^9.39.4",
    "eslint-config-prettier": "^10.1.8",
    "happy-dom": "^20.10.6",
    "jsdom": "^29.1.1",
    "node-gyp": "^12.4.0",
    "postject": "1.0.0-alpha.6",
    "prettier": "^3.9.4",
    "react": "^19.2.7",
    "react-dom": "^19.2.7",
    "shadcn": "^4.12.0",
    "tailwindcss": "^4.3.2",
    "typescript": "^5.9.3",
    "typescript-eslint": "^8.62.1",
    "vite": "^6.4.3",
    "vitest": "^3.2.6"
  }
}