{
  "name": "timesafari",
  "version": "0.4.4",
  "description": "TimeSafari Desktop Application",
  "author": {
    "name": "TimeSafari Team"
  },
  "scripts": {
    "dev": "vite --config vite.config.dev.mts",
    "serve": "vite preview",
    "build": "VITE_GIT_HASH=`git log -1 --pretty=format:%h` vite build --config vite.config.mts",
    "lint": "eslint --ext .js,.ts,.vue --ignore-path .gitignore src",
    "lint-fix": "eslint --ext .js,.ts,.vue --ignore-path .gitignore --fix src",
    "prebuild": "eslint --ext .js,.ts,.vue --ignore-path .gitignore src && node sw_combine.js",
    "test:all": "npm run test:prerequisites && npm run build && npm run test:web && npm run test:mobile",
    "test:prerequisites": "node scripts/check-prerequisites.js",
    "test:web": "npx playwright test -c playwright.config-local.ts --trace on",
    "test:mobile": "npm run build:capacitor && npm run test:android && npm run test:ios",
    "test:android": "node scripts/test-android.js",
    "test:ios": "node scripts/test-ios.js",
    "check:android-device": "adb devices | grep -w 'device' || (echo 'No Android device connected' && exit 1)",
    "check:ios-device": "xcrun xctrace list devices 2>&1 | grep -w 'Booted' || (echo 'No iOS simulator running' && exit 1)",
    "clean:electron": "rimraf dist-electron",
    "build:pywebview": "vite build --config vite.config.pywebview.mts",
    "build:electron": "npm run clean:electron && vite build --config vite.config.electron.mts && node scripts/build-electron.js",
    "build:capacitor": "vite build --config vite.config.capacitor.mts",
    "build:web": "vite build --config vite.config.web.mts",
    "electron:dev": "npm run build && electron dist-electron",
    "electron:start": "electron dist-electron",
    "electron:build-linux": "npm run build:electron && electron-builder --linux AppImage",
    "electron:build-linux-deb": "npm run build:electron && electron-builder --linux deb",
    "electron:build-linux-prod": "NODE_ENV=production npm run build:electron && electron-builder --linux AppImage",
    "build:electron-prod": "NODE_ENV=production npm run build:electron",
    "pywebview:dev": "vite build --config vite.config.pywebview.mts && .venv/bin/python src/pywebview/main.py",
    "pywebview:build": "vite build --config vite.config.pywebview.mts && .venv/bin/python src/pywebview/main.py",
    "pywebview:package-linux": "vite build --mode pywebview --config vite.config.pywebview.mts && .venv/bin/python -m PyInstaller --name TimeSafari --add-data 'dist:www' src/pywebview/main.py",
    "pywebview:package-win": "vite build --mode pywebview --config vite.config.pywebview.mts && .venv/Scripts/python -m PyInstaller --name TimeSafari --add-data 'dist;www' src/pywebview/main.py",
    "pywebview:package-mac": "vite build --mode pywebview --config vite.config.pywebview.mts && .venv/bin/python -m PyInstaller --name TimeSafari --add-data 'dist:www' src/pywebview/main.py",
    "fastlane:ios:beta": "cd ios && fastlane beta",
    "fastlane:ios:release": "cd ios && fastlane release",
    "fastlane:android:beta": "cd android && fastlane beta",
    "fastlane:android:release": "cd android && fastlane release"
  },
  "dependencies": {
    "@capacitor/android": "^6.2.0",
    "@capacitor/app": "^6.0.0",
    "@capacitor/cli": "^6.2.0",
    "@capacitor/core": "^6.2.0",
    "@capacitor/ios": "^6.2.0",
    "@dicebear/collection": "^5.4.1",
    "@dicebear/core": "^5.4.1",
    "@ethersproject/hdnode": "^5.7.0",
    "@ethersproject/wallet": "^5.8.0",
    "@fortawesome/fontawesome-svg-core": "^6.5.1",
    "@fortawesome/free-solid-svg-icons": "^6.5.1",
    "@fortawesome/vue-fontawesome": "^3.0.6",
    "@peculiar/asn1-ecc": "^2.3.8",
    "@peculiar/asn1-schema": "^2.3.8",
    "@pvermeer/dexie-encrypted-addon": "^3.0.0",
    "@simplewebauthn/browser": "^10.0.0",
    "@simplewebauthn/server": "^10.0.0",
    "@tweenjs/tween.js": "^21.1.1",
    "@types/qrcode": "^1.5.5",
    "@veramo/core": "^5.6.0",
    "@veramo/credential-w3c": "^5.6.0",
    "@veramo/data-store": "^5.6.0",
    "@veramo/did-manager": "^5.6.0",
    "@veramo/did-provider-ethr": "^5.6.0",
    "@veramo/did-provider-peer": "^6.0.0",
    "@veramo/did-resolver": "^5.6.0",
    "@veramo/key-manager": "^5.6.0",
    "@vue-leaflet/vue-leaflet": "^0.10.1",
    "@vueuse/core": "^12.3.0",
    "@zxing/text-encoding": "^0.9.0",
    "asn1-ber": "^1.2.2",
    "axios": "^1.6.8",
    "cbor-x": "^1.5.9",
    "class-transformer": "^0.5.1",
    "dexie": "^3.2.7",
    "dexie-export-import": "^4.1.4",
    "did-jwt": "^7.4.7",
    "did-resolver": "^4.1.0",
    "dotenv": "^16.0.3",
    "ethereum-cryptography": "^2.1.3",
    "ethereumjs-util": "^7.1.5",
    "jdenticon": "^3.2.0",
    "js-generate-password": "^0.1.9",
    "js-yaml": "^4.1.0",
    "leaflet": "^1.9.4",
    "localstorage-slim": "^2.7.0",
    "lru-cache": "^10.2.0",
    "luxon": "^3.4.4",
    "merkletreejs": "^0.3.11",
    "nostr-tools": "^2.10.4",
    "notiwind": "^2.0.2",
    "papaparse": "^5.4.1",
    "pina": "^0.20.2204228",
    "pinia-plugin-persistedstate": "^3.2.1",
    "qr-code-generator-vue3": "^1.4.21",
    "qrcode": "^1.5.4",
    "ramda": "^0.29.1",
    "readable-stream": "^4.5.2",
    "reflect-metadata": "^0.1.14",
    "register-service-worker": "^1.7.2",
    "simple-vue-camera": "^1.1.3",
    "sqlite3": "^5.1.7",
    "stream-browserify": "^3.0.0",
    "three": "^0.156.1",
    "ua-parser-js": "^1.0.37",
    "vue": "^3.5.13",
    "vue-axios": "^3.5.2",
    "vue-facing-decorator": "^3.0.4",
    "vue-picture-cropper": "^0.7.0",
    "vue-qrcode-reader": "^5.5.3",
    "vue-router": "^4.5.0",
    "web-did-resolver": "^2.0.27",
    "zod": "^3.24.2"
  },
  "devDependencies": {
    "@capacitor/assets": "^3.0.5",
    "@playwright/test": "^1.45.2",
    "@types/dom-webcodecs": "^0.1.7",
    "@types/js-yaml": "^4.0.9",
    "@types/leaflet": "^1.9.8",
    "@types/luxon": "^3.4.2",
    "@types/node": "^20.14.11",
    "@types/node-fetch": "^2.6.12",
    "@types/ramda": "^0.29.11",
    "@types/sqlite3": "^3.1.11",
    "@types/three": "^0.155.1",
    "@types/ua-parser-js": "^0.7.39",
    "@typescript-eslint/eslint-plugin": "^6.21.0",
    "@typescript-eslint/parser": "^6.21.0",
    "@vitejs/plugin-vue": "^5.2.1",
    "@vue/eslint-config-typescript": "^11.0.3",
    "autoprefixer": "^10.4.19",
    "concurrently": "^8.2.2",
    "electron": "^33.2.1",
    "electron-builder": "^25.1.8",
    "eslint": "^8.57.0",
    "eslint-config-prettier": "^9.1.0",
    "eslint-plugin-prettier": "^5.2.1",
    "eslint-plugin-vue": "^9.32.0",
    "fs-extra": "^11.3.0",
    "markdownlint": "^0.37.4",
    "markdownlint-cli": "^0.44.0",
    "npm-check-updates": "^17.1.13",
    "postcss": "^8.4.38",
    "prettier": "^3.2.5",
    "rimraf": "^6.0.1",
    "tailwindcss": "^3.4.1",
    "typescript": "~5.2.2",
    "vite": "^5.2.0",
    "vite-plugin-pwa": "^0.19.8"
  },
  "main": "./dist-electron/main.js",
  "build": {
    "appId": "app.timesafari",
    "productName": "TimeSafari",
    "directories": {
      "output": "dist-electron-packages"
    },
    "files": [
      "dist-electron/**/*",
      "src/electron/**/*",
      "main.js"
    ],
    "extraResources": [
      {
        "from": "dist-electron",
        "to": "."
      }
    ],
    "linux": {
      "target": [
        "AppImage",
        "deb"
      ],
      "category": "Office",
      "icon": "build/icon.png"
    },
    "asar": true
  }
}
