{
  "name": "signal-desktop",
  "productName": "Signal",
  "description": "Private messaging from your desktop",
  "desktopName": "signal.desktop",
  "repository": "https://github.com/signalapp/Signal-Desktop.git",
  "version": "5.1.0-beta.5",
  "license": "AGPL-3.0-only",
  "author": {
    "name": "Open Whisper Systems",
    "email": "support@signal.org"
  },
  "main": "main.js",
  "scripts": {
    "postinstall": "yarn build:acknowledgments && snyk protect && patch-package && electron-builder install-app-deps && rimraf node_modules/dtrace-provider",
    "postuninstall": "yarn build:acknowledgments",
    "start": "electron .",
    "grunt": "grunt",
    "generate": "yarn grunt",
    "build-release": "yarn run build",
    "sign-release": "node ts/updater/generateSignature.js",
    "notarize": "node ts/build/notarize.js",
    "build-module-protobuf": "pbjs --target static-module --wrap commonjs --out ts/protobuf/compiled.js protos/*.proto && pbts --out ts/protobuf/compiled.d.ts ts/protobuf/compiled.js",
    "clean-module-protobuf": "rm -f ts/protobuf/compiled.d.ts ts/protobuf/compiled.js",
    "build-protobuf": "yarn build-module-protobuf",
    "clean-protobuf": "yarn clean-module-protobuf",
    "prepare-beta-build": "node prepare_beta_build.js",
    "prepare-import-build": "node prepare_import_build.js",
    "publish-to-apt": "NAME=$npm_package_name VERSION=$npm_package_version ./aptly.sh",
    "test": "yarn test-node && yarn test-electron",
    "test-electron": "yarn grunt test",
    "test-node": "electron-mocha --file test/setup-test-node.js --recursive test/app test/modules ts/test-node ts/test-both",
    "test-node-coverage": "nyc --reporter=lcov --reporter=text mocha --recursive test/app test/modules ts/test-node ts/test-both",
    "eslint": "eslint --cache .",
    "lint": "yarn format --list-different && yarn eslint",
    "lint-deps": "node ts/util/lint/linter.js",
    "lint-license-comments": "ts-node ts/util/lint/license_comments.ts",
    "format": "prettier --write \"*.{css,js,json,md,scss,ts,tsx}\" \"./**/*.{css,js,json,md,scss,ts,tsx}\"",
    "transpile": "tsc",
    "clean-transpile": "rimraf ts/**/*.js && rimraf ts/*.js tsconfig.tsbuildinfo",
    "open-coverage": "open coverage/lcov-report/index.html",
    "ready": "npm-run-all --print-label clean-transpile grunt --parallel lint lint-deps test-node test-electron",
    "dev": "run-p --print-label dev:*",
    "dev:grunt": "yarn grunt dev",
    "dev:transpile": "yarn run transpile --watch --preserveWatchOutput",
    "dev:webpack": "cross-env NODE_ENV=development webpack serve --mode development",
    "dev:typed-scss": "yarn build:typed-scss -w",
    "dev:storybook": "cross-env SIGNAL_ENV=storybook start-storybook -p 6006 -s ./",
    "storybook:axe": "build-storybook && axe-storybook",
    "build": "run-s --print-label build:grunt build:typed-scss build:webpack build:release build:zip",
    "build:acknowledgments": "node scripts/generate-acknowledgments.js",
    "build:dev": "run-s --print-label build:grunt build:typed-scss build:webpack",
    "build:grunt": "yarn grunt",
    "build:typed-scss": "tsm sticker-creator",
    "build:webpack": "run-p build:webpack:sticker-creator build:webpack:preload build:webpack:sql-worker",
    "build:webpack:sticker-creator": "cross-env NODE_ENV=production webpack",
    "build:webpack:preload": "cross-env NODE_ENV=production webpack -c webpack-preload.config.ts",
    "build:webpack:sql-worker": "cross-env NODE_ENV=production webpack -c webpack-sql-worker.config.ts",
    "build:electron": "electron-builder --config.extraMetadata.environment=$SIGNAL_ENV",
    "build:release": "cross-env SIGNAL_ENV=production yarn build:electron -- --config.directories.output=release",
    "build:zip": "node scripts/zip-macos-release.js",
    "preverify:ts": "yarn build:typed-scss",
    "verify": "run-p --print-label verify:*",
    "verify:ts": "tsc --noEmit"
  },
  "optionalDependencies": {
    "fs-xattr": "0.3.0"
  },
  "dependencies": {
    "@sindresorhus/is": "0.8.0",
    "@types/pino": "6.3.6",
    "@types/pino-multi-stream": "5.1.0",
    "abort-controller": "3.0.0",
    "array-move": "2.1.0",
    "axe-core": "4.1.4",
    "backbone": "1.3.3",
    "better-sqlite3": "https://github.com/signalapp/better-sqlite3#2fa02d2484e9f9a10df5ac7ea4617fb2dff30006",
    "blob-util": "1.3.0",
    "blueimp-canvas-to-blob": "3.14.0",
    "blueimp-load-image": "5.14.0",
    "blurhash": "1.1.3",
    "classnames": "2.2.5",
    "config": "1.28.1",
    "copy-text-to-clipboard": "2.1.0",
    "dashdash": "1.14.1",
    "emoji-datasource": "6.0.0",
    "emoji-datasource-apple": "6.0.0",
    "emoji-regex": "9.2.0",
    "encoding": "0.1.13",
    "fast-glob": "3.2.1",
    "filesize": "3.6.1",
    "firstline": "1.2.1",
    "form-data": "3.0.0",
    "fs-extra": "5.0.0",
    "fuse.js": "3.4.4",
    "glob": "7.1.6",
    "google-libphonenumber": "3.2.17",
    "got": "8.3.2",
    "history": "4.9.0",
    "intl-tel-input": "12.1.15",
    "jquery": "3.5.0",
    "js-yaml": "3.13.1",
    "libsignal-client": "https://github.com/signalapp/libsignal-client-node.git#afa8f40eaa218b7fff94278d9b2ab2e13a2ee04b",
    "linkify-it": "2.2.0",
    "lodash": "4.17.20",
    "lru-cache": "6.0.0",
    "memoizee": "0.4.14",
    "mkdirp": "0.5.2",
    "moment": "2.21.0",
    "mustache": "2.3.0",
    "node-fetch": "2.6.1",
    "node-forge": "0.10.0",
    "normalize-path": "3.0.0",
    "os-locale": "3.0.1",
    "p-map": "2.1.0",
    "p-props": "4.0.0",
    "p-queue": "6.2.1",
    "parchment": "1.1.4",
    "pify": "3.0.0",
    "pino": "6.11.1",
    "pino-multi-stream": "5.3.0",
    "popper.js": "1.15.0",
    "protobufjs": "6.10.2",
    "proxy-agent": "3.1.1",
    "quill": "1.3.7",
    "quill-delta": "4.0.1",
    "react": "16.8.3",
    "react-blurhash": "0.1.2",
    "react-contextmenu": "2.11.0",
    "react-dom": "16.8.3",
    "react-dropzone": "10.1.7",
    "react-hot-loader": "4.12.11",
    "react-measure": "2.3.0",
    "react-popper": "1.3.7",
    "react-quill": "2.0.0-beta.2",
    "react-redux": "7.1.0",
    "react-router-dom": "5.0.1",
    "react-sortable-hoc": "1.9.1",
    "react-virtualized": "9.21.0",
    "read-last-lines": "1.8.0",
    "redux": "4.0.1",
    "redux-logger": "3.0.6",
    "redux-promise-middleware": "6.1.0",
    "redux-thunk": "2.3.0",
    "redux-ts-utils": "3.2.2",
    "reselect": "4.0.0",
    "rimraf": "2.6.2",
    "ringrtc": "https://github.com/signalapp/signal-ringrtc-node.git#36332761d510d2e7747bfece6504b649ca3ee20b",
    "rotating-file-stream": "2.1.5",
    "sanitize-filename": "1.6.3",
    "sanitize.css": "11.0.0",
    "semver": "5.4.1",
    "sharp": "0.28.1",
    "tar": "4.4.8",
    "testcheck": "1.0.0-rc.2",
    "tmp": "0.0.33",
    "to-arraybuffer": "1.0.1",
    "typeface-inter": "3.10.0",
    "underscore": "1.9.0",
    "uuid": "3.3.2",
    "websocket": "1.0.28",
    "zkgroup": "https://github.com/signalapp/signal-zkgroup-node.git#7ecf70be85e5a485ec870c1723b1c6247b9d549e",
    "zod": "1.11.13"
  },
  "devDependencies": {
    "@babel/core": "7.7.7",
    "@babel/plugin-proposal-class-properties": "7.7.4",
    "@babel/plugin-proposal-optional-chaining": "7.13.8",
    "@babel/plugin-transform-runtime": "7.8.3",
    "@babel/preset-react": "7.7.4",
    "@babel/preset-typescript": "7.7.7",
    "@chanzuckerberg/axe-storybook-testing": "3.0.2",
    "@storybook/addon-actions": "5.1.11",
    "@storybook/addon-knobs": "5.1.11",
    "@storybook/addons": "5.1.11",
    "@storybook/react": "5.1.11",
    "@types/backbone": "1.4.3",
    "@types/better-sqlite3": "5.4.1",
    "@types/blueimp-load-image": "5.14.1",
    "@types/chai": "4.1.2",
    "@types/classnames": "2.2.3",
    "@types/config": "0.0.34",
    "@types/dashdash": "1.14.0",
    "@types/filesize": "3.6.0",
    "@types/fs-extra": "5.0.5",
    "@types/google-libphonenumber": "7.4.14",
    "@types/got": "9.4.1",
    "@types/history": "4.7.2",
    "@types/jquery": "3.5.0",
    "@types/js-yaml": "3.12.0",
    "@types/linkify-it": "2.1.0",
    "@types/lodash": "4.14.106",
    "@types/long": "4.0.1",
    "@types/lru-cache": "5.1.0",
    "@types/memoizee": "0.4.2",
    "@types/mkdirp": "0.5.2",
    "@types/mocha": "5.0.0",
    "@types/node": "14.14.37",
    "@types/node-fetch": "2.5.7",
    "@types/node-forge": "0.9.5",
    "@types/normalize-path": "3.0.0",
    "@types/pify": "3.0.2",
    "@types/quill": "1.3.10",
    "@types/react": "16.8.5",
    "@types/react-dom": "16.8.2",
    "@types/react-measure": "2.0.5",
    "@types/react-redux": "7.1.2",
    "@types/react-router-dom": "4.3.4",
    "@types/react-sortable-hoc": "0.6.5",
    "@types/react-virtualized": "9.18.12",
    "@types/redux-logger": "3.0.7",
    "@types/rimraf": "2.0.2",
    "@types/semver": "5.5.0",
    "@types/sharp": "0.28.0",
    "@types/sinon": "9.0.8",
    "@types/storybook__addon-actions": "3.4.3",
    "@types/storybook__addon-knobs": "5.0.3",
    "@types/storybook__react": "4.0.2",
    "@types/terser-webpack-plugin": "5.0.3",
    "@types/underscore": "1.10.3",
    "@types/uuid": "3.4.4",
    "@types/webpack-dev-server": "3.11.3",
    "@types/websocket": "1.0.0",
    "@typescript-eslint/eslint-plugin": "4.8.1",
    "@typescript-eslint/parser": "4.8.1",
    "arraybuffer-loader": "1.0.3",
    "asar": "0.14.0",
    "babel-core": "7.0.0-bridge.0",
    "babel-loader": "8.0.6",
    "babel-plugin-lodash": "3.3.4",
    "chai": "4.1.2",
    "core-js": "2.6.9",
    "cross-env": "5.2.0",
    "css-loader": "3.2.0",
    "electron": "12.0.3",
    "electron-builder": "22.10.5",
    "electron-mocha": "8.1.1",
    "electron-notarize": "0.1.1",
    "eslint": "7.7.0",
    "eslint-config-airbnb-typescript-prettier": "3.1.0",
    "eslint-config-prettier": "6.11.0",
    "eslint-plugin-import": "2.22.0",
    "eslint-plugin-mocha": "8.0.0",
    "eslint-plugin-more": "1.0.0",
    "eslint-plugin-react": "7.20.6",
    "file-loader": "4.2.0",
    "grunt": "1.0.1",
    "grunt-cli": "1.2.0",
    "grunt-contrib-concat": "1.0.1",
    "grunt-contrib-copy": "1.0.0",
    "grunt-contrib-watch": "1.0.0",
    "grunt-exec": "3.0.0",
    "grunt-gitinfo": "0.1.7",
    "grunt-sass": "3.0.1",
    "html-webpack-plugin": "5.3.1",
    "jsdoc": "3.6.2",
    "mocha": "4.1.0",
    "mocha-testcheck": "1.0.0-rc.0",
    "node-gyp": "^6.1.0",
    "node-sass": "4.14.1",
    "node-sass-import-once": "1.2.0",
    "npm-run-all": "4.1.5",
    "nyc": "11.4.1",
    "patch-package": "6.1.2",
    "prettier": "^2.2.1",
    "react-docgen-typescript": "1.2.6",
    "sass-loader": "7.2.0",
    "sinon": "9.2.4",
    "snyk": "1.316.1",
    "spectron": "5.0.0",
    "style-loader": "1.0.0",
    "terser-webpack-plugin": "5.1.1",
    "ts-loader": "4.1.0",
    "ts-node": "8.3.0",
    "typed-scss-modules": "0.0.11",
    "typescript": "4.1.3",
    "webpack": "5.30.0",
    "webpack-cli": "4.6.0",
    "webpack-dev-server": "3.11.2"
  },
  "resolutions": {
    "@storybook/react/@storybook/core/node-fetch": "2.6.1"
  },
  "engines": {
    "node": "14.16.0"
  },
  "build": {
    "appId": "org.whispersystems.signal-desktop",
    "mac": {
      "asarUnpack": [
        "**/*.node",
        "node_modules/zkgroup/libzkgroup.*",
        "node_modules/libsignal-client/build/*.node"
      ],
      "artifactName": "${name}-mac-${version}.${ext}",
      "category": "public.app-category.social-networking",
      "darkModeSupport": true,
      "hardenedRuntime": true,
      "entitlements": "./build/entitlements.mac.plist",
      "icon": "build/icons/mac/icon.icns",
      "publish": [
        {
          "provider": "generic",
          "url": "https://updates.signal.org/desktop"
        }
      ],
      "target": [
        "zip",
        "dmg"
      ],
      "bundleVersion": "1"
    },
    "win": {
      "asarUnpack": [
        "**/*.node",
        "node_modules/spellchecker/vendor/hunspell_dictionaries",
        "node_modules/sharp",
        "node_modules/zkgroup/libzkgroup.*",
        "node_modules/libsignal-client/build/*.node"
      ],
      "artifactName": "${name}-win-${version}.${ext}",
      "certificateSubjectName": "Signal (Quiet Riddle Ventures, LLC)",
      "certificateSha1": "77B2AA4421E5F377454B8B91E573746592D1543D",
      "publisherName": "Signal (Quiet Riddle Ventures, LLC)",
      "icon": "build/icons/win/icon.ico",
      "publish": [
        {
          "provider": "generic",
          "url": "https://updates.signal.org/desktop"
        }
      ],
      "target": [
        "nsis"
      ]
    },
    "nsis": {
      "deleteAppDataOnUninstall": true
    },
    "linux": {
      "category": "Network;InstantMessaging;Chat",
      "desktop": {
        "StartupWMClass": "Signal"
      },
      "asarUnpack": [
        "**/*.node",
        "node_modules/spellchecker/vendor/hunspell_dictionaries",
        "node_modules/sharp",
        "node_modules/zkgroup/libzkgroup.*",
        "node_modules/libsignal-client/build/*.node"
      ],
      "target": [
        "deb"
      ],
      "icon": "build/icons/png"
    },
    "deb": {
      "depends": [
        "libnotify4",
        "libxtst6",
        "libnss3",
        "libasound2",
        "libxss1"
      ]
    },
    "protocols": {
      "name": "sgnl-url-scheme",
      "schemes": [
        "sgnl"
      ]
    },
    "asarUnpack": [
      "ts/sql/mainWorker.bundle.js",
      "node_modules/better-sqlite3/build/Release/better_sqlite3.node"
    ],
    "files": [
      "package.json",
      "config/default.json",
      "config/${env.SIGNAL_ENV}.json",
      "config/local-${env.SIGNAL_ENV}.json",
      "background.html",
      "about.html",
      "settings.html",
      "permissions_popup.html",
      "debug_log.html",
      "loading.html",
      "_locales/**",
      "protos/*",
      "js/**",
      "libtextsecure/**",
      "ts/**/*.js",
      "ts/*.js",
      "stylesheets/*.css",
      "!js/register.js",
      "app/*",
      "preload.bundle.js",
      "preload_utils.js",
      "about_preload.js",
      "settings_preload.js",
      "permissions_popup_preload.js",
      "debug_log_preload.js",
      "loading_preload.js",
      "main.js",
      "images/**",
      "fonts/**",
      "sounds/*",
      "build/icons",
      "node_modules/**",
      "sticker-creator/preload.js",
      "sticker-creator/dist/**",
      "!node_modules/emoji-datasource/emoji_pretty.json",
      "!node_modules/emoji-datasource/**/*.png",
      "!node_modules/emoji-datasource-apple/emoji_pretty.json",
      "!node_modules/emoji-datasource-apple/img/apple/sheets*",
      "!node_modules/spellchecker/vendor/hunspell/**/*",
      "!**/node_modules/*/{CHANGELOG.md,README.md,README,readme.md,readme,test,__tests__,tests,powered-test,example,examples,*.d.ts,.snyk-*.flag,benchmark}",
      "!**/node_modules/.bin",
      "!**/node_modules/**/build/**",
      "!**/*.{o,hprof,orig,pyc,pyo,rbc}",
      "!**/._*",
      "!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,thumbs.db,.gitignore,.gitattributes,.flowconfig,.yarn-metadata.json,.idea,appveyor.yml,.travis.yml,circle.yml,npm-debug.log,.nyc_output,yarn.lock,.yarn-integrity}",
      "node_modules/spellchecker/build/Release/*.node",
      "node_modules/websocket/build/Release/*.node",
      "!node_modules/websocket/builderror.log",
      "node_modules/ref-napi/build/Release/*.node",
      "node_modules/ref-array-napi/node_modules/ref-napi/build/Release/*.node",
      "node_modules/ffi-napi/build/Release/*.node",
      "node_modules/socks/build/*.js",
      "node_modules/socks/build/common/*.js",
      "node_modules/socks/build/client/*.js",
      "node_modules/smart-buffer/build/*.js",
      "node_modules/sharp/build/**",
      "!node_modules/sharp/{install,src,vendor/include,vendor/*/include}",
      "!node_modules/better-sqlite3/deps/*",
      "!node_modules/better-sqlite3/src/*",
      "node_modules/better-sqlite3/build/Release/better_sqlite3.node",
      "node_modules/libsignal-client/build/*${platform}*.node",
      "node_modules/ringrtc/build/${platform}/**",
      "!**/node_modules/ffi-napi/deps",
      "!**/node_modules/react-dom/*/*.development.js",
      "!node_modules/.cache"
    ]
  }
}
