{
  "name": "threema-desktop",
  "productName": "Threema",
  "description": "Use Threema on your Desktop",
  "author": "Threema GmbH",
  "version": "2.0-beta50",
  "versionCode": 52,
  "license": "AGPL-3.0+",
  "homepage": "https://threema.ch/",
  "keywords": [
    "threema",
    "messenger",
    "communication"
  ],
  "private": true,
  "type": "module",
  "main": "build/electron/electron-main/electron-main.cjs",
  "sideEffects": false,
  "scripts": {
    "clean": "npm run clean:build && npm run clean:node_modules",
    "clean:build": "rm -rf build packaging/build && npm run clean:build:flatpak",
    "clean:build:flatpak": "rm -rf packaging/flatpak/build packaging/flatpak/repo packaging/flatpak/ch.threema.*-desktop.yml packaging/flatpak/generated-sources.json packaging/flatpak/.flatpak-builder",
    "clean:node_modules": "rm -rf node_modules && for d in \"libs/\"*; do rm -rf $d/node_modules; done",
    "build": "npm run rebuild && node tools/build-electron.cjs",
    "build:cli": "VITE_MAKE=cli,cli,consumer,sandbox vite build -m production -c config/vite.config.ts",
    "dist:consumer-sandbox": "npm run build consumer sandbox && node tools/dist-electron.cjs consumer sandbox",
    "dist:consumer-live": "npm run build consumer live && node tools/dist-electron.cjs consumer live",
    "dist:work-sandbox": "npm run build work sandbox && node tools/dist-electron.cjs work sandbox",
    "dist:work-live": "npm run build work live && node tools/dist-electron.cjs work live",
    "dist:work-onprem": "npm run build work onprem && node tools/dist-electron.cjs work onprem",
    "dist:test:consumer-sandbox": "npm run build -- --testing consumer sandbox && node tools/dist-electron.cjs --testing consumer sandbox",
    "dist:test:consumer-live": "npm run build -- --testing consumer live && node tools/dist-electron.cjs --testing consumer live",
    "dist:test:work-live": "npm run build -- --testing work live && node tools/dist-electron.cjs --testing work live",
    "dev:cli": "npm run build:cli && node ./build/cli/cli/bin.cjs",
    "dev:consumer-sandbox": "npm run rebuild && tools/dev-electron.sh consumer sandbox",
    "dev:consumer-live": "npm run rebuild && tools/dev-electron.sh consumer live",
    "dev:work-sandbox": "npm run rebuild && tools/dev-electron.sh work sandbox",
    "dev:work-live": "npm run rebuild && tools/dev-electron.sh work live",
    "dev:work-onprem": "npm run rebuild && tools/dev-electron.sh work onprem",
    "generate-screenshots": "npm run dist:test:consumer-live && npm run dist:test:work-live && npm run test:playwright:screenshots:consumer-live && npm run test:playwright:screenshots:work-live && python3 tools/macos-style-screenshots.py",
    "rebuild": "electron-rebuild",
    "test:karma": "node tools/run-tests.cjs karma",
    "test:mocha": "node tools/run-tests.cjs mocha",
    "test:playwright:consumer-sandbox": "PW_FLAVOR=consumer-sandbox PW_PROFILE=playwright npx playwright test",
    "test:playwright:screenshots:consumer-live": "PW_SCREENSHOTS=true PW_FLAVOR=consumer-live PW_PROFILE=playwright npx playwright test",
    "test:playwright:screenshots:work-live": "PW_SCREENSHOTS=true PW_FLAVOR=work-live PW_PROFILE=playwright npx playwright test",
    "libthreema:build": "./tools/build-libthreema-wasm.sh",
    "libthreema:include": "./tools/copy-and-build-libthreema.sh",
    "lint": "FAILED=\"\"; for t in tsc:parallel svelte eslint prettier; do npm run lint:${t} || FAILED=\"$FAILED $t\"; done; if [ -n \"$FAILED\" ]; then echo \"Failed: $FAILED\"; false; else echo \"All linters passed.\"; fi",
    "lint:fix": "npm run lint:eslint:fix && npm run lint:prettier:fix",
    "lint:tsc": "find src packaging -name tsconfig.json -exec echo {} \\; -exec npx tsc --noEmit -p {} \\;",
    "lint:tsc:parallel": "find src packaging -name tsconfig.json | xargs -I{} -P $(getconf _NPROCESSORS_ONLN) npx tsc --noEmit -p {}",
    "lint:tsc:parallel:uniq": "npm run lint:tsc:parallel | grep -- '^src/' | sort -u",
    "lint:eslint": "NODE_OPTIONS=\"--max-old-space-size=4096\" eslint .",
    "lint:eslint:fix": "NODE_OPTIONS=\"--max-old-space-size=4096\" eslint . --fix",
    "lint:prettier": "prettier -c \"**/*.{css,html,js,json,md,scss,svelte,ts,xml,yml}\"",
    "lint:prettier:fix": "prettier --write \"**/*.{css,html,js,json,md,scss,svelte,ts,xml,yml}\"",
    "lint:svelte": "svelte-check --workspace src/app/ --no-tsconfig --compiler-warnings \"a11y-click-events-have-key-events:ignore\"",
    "package": "npm run package --prefix ./packaging --",
    "protobuf:generate": "tools/generate-protobuf.sh",
    "safe-enums:generate": "npm run safe-enums:generate:module && npm run safe-enums:generate:prettify",
    "safe-enums:generate:module": "tools/generate-safe-enums.cjs < src/enum/schema.ts > src/common/enum/index.ts",
    "safe-enums:generate:prettify": "prettier --write \"src/common/enum/index.ts\"",
    "structbuf:generate": "tools/generate-structbuf.sh",
    "i18n:parse": "i18next 'src/app/**/*.{ts,svelte}' 'src/common/dom/ui/**/*.ts' -o 'src/translations/$LOCALE/$NAMESPACE.json' -c config/i18next-parser.config.js",
    "assets:generate:icons:macos": "tools/generate-icons-macos.sh",
    "assets:generate:icons:windows": "tools/generate-icons-windows.sh",
    "assets:generate:icons:flatpak": "tools/generate-icons-flatpak.sh",
    "assets:generate:icons:web": "tools/generate-icons-web.sh",
    "assets:generate:icons": "npm run assets:generate:icons:macos && npm run assets:generate:icons:windows && npm run assets:generate:icons:flatpak && npm run assets:generate:icons:web"
  },
  "engines": {
    "node": "20.19.0",
    "npm": "10.8.2"
  },
  "dependencies": {
    "@badrap/valita": "0.3.9",
    "@mattiasbuelens/web-streams-adapter": "0.1.0",
    "@sentry/browser": "8.33.1",
    "@threema/compose-area": "~0.4.6",
    "@threema/threema-markup": "1.1.0",
    "argon2": "threema-ch/node-argon2#threema-20241021",
    "autolinker": "4.0.0",
    "better-sqlcipher": "threema-ch/better-sqlcipher#11.3.0-sqlcipher4.6.1-bearssl0.6",
    "emojibase-data": "15.3.2",
    "fast-sha256": "1.3.0",
    "i18next": "~23.14.0",
    "i18next-icu": "~2.3.0",
    "intl-messageformat": "~10.5.14",
    "libthreema": "file:libs/libthreema/wasm/web",
    "long": "5.2.3",
    "protobufjs": "7.2.6",
    "qrcode": "^1.5.3",
    "scrypt-js": "3.0.1",
    "svelte": "4.2.19",
    "synchronous-promise": "~2.0.17",
    "ts-events": "3.4.1",
    "ts-sql-query": "1.65.0",
    "tweetnacl": "1.0.3",
    "web-streams-polyfill": "~3.3.2"
  },
  "electron": {
    "external": [
      "argon2",
      "better-sqlcipher",
      "electron"
    ],
    "dist": {
      "dependencyTree": {
        "argon2": [
          "@phc/format"
        ]
      },
      "include": {
        "/": "^(LICENSE|package.json|package-lock.json|README.md)$",
        "/build/electron/": "^(app($|\\/)|electron-main($|\\/)|electron-preload($|\\/))",
        "/node_modules/@phc/format/": "^(index.js|package.json)$",
        "/node_modules/argon2/": "^(argon2.cjs|package.json)$",
        "/node_modules/argon2/build/Release/": "^argon2.node$",
        "/node_modules/better-sqlcipher/": "^(lib($|\\/)|package.json$)",
        "/node_modules/better-sqlcipher/build/Release/": "^better_sqlcipher.node$"
      }
    }
  },
  "devDependencies": {
    "@electron/fuses": "1.8.0",
    "@electron/notarize": "2.5.0",
    "@electron/osx-sign": "1.3.2",
    "@electron/packager": "18.3.6",
    "@electron/rebuild": "3.6.2",
    "@eslint/js": "~9.23.0",
    "@playwright/test": "1.46.1",
    "@prettier/plugin-xml": "3.4.1",
    "@sveltejs/vite-plugin-svelte": "3.0.1",
    "@types/chai": "~4.3.0",
    "@types/debug": "~4.1.12",
    "@types/estree": "~1.0.5",
    "@types/fs-extra": "~11.0.4",
    "@types/mocha": "~10.0.0",
    "@types/node": "~20.17.29",
    "@types/qrcode": "^1.5.5",
    "@types/sinon": "~17.0.2",
    "@types/sinon-chai": "~3.2.9",
    "@typescript-eslint/eslint-plugin": "~8.28.0",
    "@typescript-eslint/parser": "~8.28.0",
    "@typescript-eslint/types": "~8.28.0",
    "@typescript-eslint/utils": "~8.28.0",
    "chai": "~4.5.0",
    "debug": "~4.3.5",
    "electron": "34.0.1",
    "electron-installer-dmg": "~5.0.1",
    "es-module-lexer": "~1.5.4",
    "eslint": "~9.23.0",
    "eslint-config-prettier": "~9.1.0",
    "eslint-import-resolver-typescript": "3.9.1",
    "eslint-plugin-import": "2.31.0",
    "eslint-plugin-jsdoc": "~50.6.9",
    "eslint-plugin-svelte": "~3.3.3",
    "eslint-plugin-threema": "file:libs/eslint-plugin-threema",
    "fs-extra": "~11.2.0",
    "globals": "16.0.0",
    "i18next-parser": "~9.0.0",
    "karma": "~6.4.0",
    "karma-chai": "~0.1.0",
    "karma-chrome-launcher": "~3.2.0",
    "karma-firefox-launcher": "~2.1.2",
    "karma-junit-reporter": "~2.0.1",
    "karma-mocha": "~2.0.1",
    "karma-mocha-reporter": "~2.2.5",
    "magic-string": "0.30.11",
    "mocha": "~10.7.3",
    "mocha-junit-reporter": "~2.2.0",
    "prettier": "3.3.3",
    "prettier-plugin-svelte": "3.2.6",
    "protobufjs-cli": "1.1.2",
    "sass": "~1.77.5",
    "sinon": "~18.0.1",
    "sinon-chai": "~3.7.0",
    "svelte-check": "3.8.6",
    "svelte-eslint-parser": "1.1.0",
    "svelte-preprocess": "6.0.3",
    "svelte2tsx": "0.7.16",
    "ts-proto": "~1.167.2",
    "typescript": "~5.8.2",
    "typescript-eslint": "~8.28.0",
    "typescript-eslint-parser-for-extra-files": "~0.7.0",
    "vite": "5.4.14",
    "vite-tsconfig-paths": "5.1.3"
  },
  "overrides": {
    "glob-parent": "^5.1.2",
    "optionator": "0.9.3",
    "node-gyp": "~9.3.1"
  }
}
