{ "name": "session-desktop", "productName": "Session", "description": "Private messaging from your desktop", "version": "1.14.3", "license": "GPL-3.0", "author": { "name": "Oxen Labs", "email": "team@oxen.io" }, "repository": { "type": "git", "url": "https://github.com/session-foundation/session-desktop.git" }, "main": "ts/mains/main_node.js", "resolutions": { "minimist": "^1.2.6", "getobject": "^1.0.0", "ansi-regex": "^4.1.1", "async": "^2.6.4", "lodash": "^4.17.20", "ini": "^1.3.6", "ejs": "^3.1.7", "react": "18.3.1", "@types/react": "18.3.3", "glob-parent": "^6.0.1", "got": "^11.8.5", "jpeg-js": "^0.4.4", "json5": "^2.2.2", "loader-utils": "^2.0.4", "http-cache-semantics": "^4.1.1", "terser": "^5.14.2", "minimatch": "^3.0.5" }, "scripts": { "start-prod": "cross-env NODE_ENV=production NODE_APP_INSTANCE=devprod$MULTI electron .", "start-prod:pretty": "cross-env NODE_ENV=production NODE_APP_INSTANCE=devprod$MULTI electron . | npx bunyan", "start-dev": "cross-env NODE_ENV=development NODE_APP_INSTANCE=devprod$MULTI electron .", "build-everything": "yarn clean && yarn protobuf && yarn update-git-info && yarn sass && yarn build:locales-soft && tsc && yarn build:workers", "build-everything:soft": "yarn clean && yarn protobuf && yarn update-git-info && yarn sass && yarn build:locales-soft && tsc && yarn build:workers", "build-everything:watch": "yarn clean && yarn protobuf && yarn update-git-info && yarn sass && yarn build:locales-soft && yarn build:workers && yarn tsc -w", "start-dev:pretty": "cross-env NODE_ENV=production NODE_APP_INSTANCE=devprod$MULTI electron . | npx bunyan", "build:workers": "yarn worker:utils && yarn worker:libsession", "build:locales": "python3 ./tools/localization/generateLocales.py --generate-types --print-problems --error-on-problems --error-old-dynamic-variables", "build:locales-soft": "python3 ./tools/localization/generateLocales.py --generate-types --print-problems --print-problem-strings", "watch": "yarn clean && yarn protobuf && yarn update-git-info && yarn build-everything:watch", "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 --force-long", "sass": "rimraf 'stylesheets/dist/' && webpack --config=./sass.config.js", "clean": "rimraf 'ts/**/*.js' 'ts/*.js' 'ts/*.js.map' 'ts/**/*.js.map' && rimraf tsconfig.tsbuildinfo;", "lint-full": "yarn dedup-yarn-lock && yarn format-full && eslint .", "format-full": "prettier --list-different --write \"*.{css,js,json,scss,ts,tsx}\" \"./**/*.{css,js,json,scss,ts,tsx}\"", "start-prod-test": "cross-env NODE_ENV=production NODE_APP_INSTANCE=$MULTI electron .", "test": "mocha", "build-release-base": "cross-env NODE_ENV=production electron-builder --config.extraMetadata.environment=production", "build-release": "yarn build-release-base --publish=never --config.directories.output=release", "build-release-publish": "yarn build-release-base --publish=always", "ready": "yarn dedup-yarn-lock --fail && yarn build-everything && yarn lint-full && yarn test", "postinstall": "yarn patch-package && yarn electron-builder install-app-deps", "update-git-info": "node ./build/updateLocalConfig.js", "worker:utils": "webpack --config=./utils.worker.config.js", "worker:libsession": "rimraf 'ts/webworker/workers/node/libsession/*.node' && webpack --config=./libsession.worker.config.js", "dedup-yarn-lock": "npx --yes yarn-deduplicate yarn.lock", "prepare": "husky install" }, "dependencies": { "@emoji-mart/data": "^1.1.2", "@emoji-mart/react": "^1.1.1", "@reduxjs/toolkit": "1.9.7", "@signalapp/better-sqlite3": "^8.4.3", "@types/react-mentions": "^4.1.8", "@types/react-test-renderer": "^18.3.0", "abort-controller": "3.0.0", "auto-bind": "^4.0.0", "backbone": "1.3.3", "blob-util": "2.0.2", "blueimp-load-image": "^5.16.0", "buffer-crc32": "0.2.13", "bunyan": "https://github.com/Bilb/node-bunyan", "bytebuffer": "^5.0.1", "classnames": "2.2.5", "config": "1.28.1", "curve25519-js": "https://github.com/oxen-io/curve25519-js", "date-fns": "^3.6.0", "dompurify": "^2.0.7", "electron-localshortcut": "^3.2.1", "electron-updater": "^4.2.2", "emoji-mart": "^5.5.2", "filesize": "3.6.1", "focus-trap-react": "^10.2.3", "framer-motion": "^11.0.3", "fs-extra": "9.0.0", "glob": "7.1.2", "image-type": "^4.1.0", "libsession_util_nodejs": "https://github.com/oxen-io/libsession-util-nodejs/releases/download/v0.3.23/libsession_util_nodejs-v0.3.23.tar.gz", "libsodium-wrappers-sumo": "^0.7.9", "linkify-it": "^4.0.1", "lodash": "^4.17.21", "long": "^4.0.0", "maxmind": "^4.3.18", "mic-recorder-to-mp3": "^2.2.2", "node-fetch": "^2.6.7", "os-locale": "5.0.0", "p-retry": "^4.2.0", "pify": "3.0.0", "protobufjs": "^7.2.4", "rc-slider": "^10.6.2", "react": "18.3.1", "react-contexify": "^6.0.0", "react-dom": "18.3.1", "react-draggable": "^4.4.4", "react-error-boundary": "^4.0.13", "react-h5-audio-player": "^3.2.0", "react-intersection-observer": "^9.7.0", "react-mentions": "^4.4.9", "react-qrcode-logo": "^3.0.0", "react-redux": "8.1.3", "react-test-renderer": "^18.3.1", "react-toastify": "^6.0.9", "react-use": "^17.5.0", "react-virtualized": "^9.22.4", "redux": "4.2.1", "redux-logger": "3.0.6", "redux-persist": "^6.0.0", "redux-promise-middleware": "^6.2.0", "rimraf": "2.6.2", "sanitize.css": "^12.0.1", "semver": "^7.5.4", "styled-components": "^6.1.11", "uuid": "8.3.2", "webrtc-adapter": "^4.1.1" }, "devDependencies": { "@commitlint/cli": "^17.7.1", "@commitlint/config-conventional": "^17.7.0", "@commitlint/types": "^17.4.4", "@electron/notarize": "^2.1.0", "@testing-library/jest-dom": "^6.4.6", "@testing-library/react": "^15.0.7", "@testing-library/user-event": "^14.5.2", "@types/backbone": "1.4.2", "@types/blueimp-load-image": "^5.16.2", "@types/buffer-crc32": "^0.2.0", "@types/bunyan": "^1.8.8", "@types/bytebuffer": "^5.0.41", "@types/chai": "4.2.18", "@types/chai-as-promised": "^7.1.2", "@types/classnames": "2.2.3", "@types/config": "0.0.34", "@types/dompurify": "^2.0.0", "@types/electron-localshortcut": "^3.1.0", "@types/filesize": "3.6.0", "@types/fs-extra": "5.0.5", "@types/jsdom": "^21.1.6", "@types/libsodium-wrappers-sumo": "^0.7.5", "@types/linkify-it": "^3.0.2", "@types/lodash": "^4.14.194", "@types/mocha": "5.0.0", "@types/node-fetch": "^2.5.7", "@types/pify": "3.0.2", "@types/react": "18.3.3", "@types/react-dom": "18.3.0", "@types/react-redux": "^7.1.33", "@types/react-virtualized": "^9.21.30", "@types/redux-logger": "3.0.13", "@types/rimraf": "2.0.2", "@types/semver": "5.5.0", "@types/sinon": "9.0.4", "@types/styled-components": "^5.1.34", "@types/uuid": "8.3.4", "@typescript-eslint/eslint-plugin": "7.1.0", "@typescript-eslint/parser": "7.1.0", "chai": "^4.3.4", "chai-as-promised": "^7.1.1", "chai-bytes": "^0.1.2", "cross-env": "^6.0.3", "css-loader": "^6.7.2", "dmg-builder": "23.6.0", "electron": "25.8.4", "electron-builder": "23.0.8", "eslint": "8.57.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-prettier": "9.1.0", "eslint-import-resolver-typescript": "3.6.1", "eslint-plugin-import": "2.29.1", "eslint-plugin-mocha": "^10.1.0", "eslint-plugin-more": "^1.0.5", "eslint-plugin-react": "7.33.2", "eslint-plugin-react-hooks": "^4.6.0", "events": "^3.3.0", "husky": "^8.0.0", "jsdom": "^22.1.0", "jsdom-global": "^3.0.2", "lint-staged": "^14.0.1", "mini-css-extract-plugin": "^2.7.5", "mocha": "10.0.0", "node-loader": "^2.0.0", "patch-package": "^6.4.7", "postinstall-prepare": "^1.0.1", "prettier": "3.2.5", "protobufjs-cli": "^1.1.1", "sass": "^1.60.0", "sass-loader": "^13.2.2", "sinon": "9.0.2", "ts-loader": "^9.4.2", "typescript": "^5.5.4", "webpack": "^5.76.3", "webpack-cli": "^5.1.4" }, "engines": { "node": "18.15.0" }, "build": { "appId": "com.loki-project.messenger-desktop", "afterSign": "build/notarize.js", "afterPack": "build/afterPackHook.js", "artifactName": "${name}-${os}-${arch}-${version}.${ext}", "extraResources": [ { "from": "./build/launcher-script.sh", "to": "./launcher-script.sh" }, "mmdb/GeoLite2-Country.mmdb" ], "publish": { "provider": "github", "repo": "session-desktop", "owner": "oxen-io", "releaseType": "release" }, "mac": { "category": "public.app-category.social-networking", "icon": "build/icon-mac.icns", "target": [ "dmg", "zip" ], "bundleVersion": "1", "hardenedRuntime": true, "gatekeeperAssess": false, "entitlements": "build/entitlements.mac.plist", "entitlementsInherit": "build/entitlements.mac.plist", "extendInfo": { "NSCameraUsageDescription": "Session requires camera access to record video.", "NSMicrophoneUsageDescription": "Session requires microphone access to record audio." } }, "dmg": { "sign": false }, "win": { "asarUnpack": "node_modules/spellchecker/vendor/hunspell_dictionaries", "publisherName": "Oxen Labs", "verifyUpdateCodeSignature": false, "icon": "build/icon.ico", "target": [ "nsis" ] }, "nsis": { "deleteAppDataOnUninstall": true, "oneClick": false, "allowToChangeInstallationDirectory": true }, "linux": { "category": "Network", "desktop": { "StartupWMClass": "Session" }, "asarUnpack": "node_modules/spellchecker/vendor/hunspell_dictionaries", "target": ["deb"], "icon": "build/icon-linux.icns" }, "asarUnpack": [ "node_modules/@signalapp/better-sqlite3/build/Release/better_sqlite3.node", "node_modules/libsession_util_nodejs/build/Release/libsession_util_nodejs.node", "ts/webworker/workers/node/libsession/*.node", "ts/mains/main_node.js" ], "deb": { "depends": [ "libnotify4", "libxtst6", "libnss3", "libasound2", "libxss1" ], "packageCategory": "net" }, "files": [ "package.json", "config/default.json", "config/production.json", "config/local-production.json", "background.html", "about.html", "password.html", "_locales/**", "mnemonic_languages/**", "protos/*", "js/**", "ts/**/*.js", "ts/*.js", "!dist/**", "stylesheets/fonts.css", "stylesheets/dist/*", "!js/register.js", "preload.js", "about_preload.js", "settings_preload.js", "password_preload.js", "images/**", "fonts/*", "sound/*", "build/assets", "node_modules/**", "!node_modules/spellchecker/vendor/hunspell/**/*", "!node_modules/@iconify/icons-mdi/*", "node_modules/@iconify/icons-mdi/play-circle*", "node_modules/@iconify/icons-mdi/pause-circle*", "node_modules/@iconify/icons-mdi/skip-previous*", "node_modules/@iconify/icons-mdi/skip-next*", "node_modules/@iconify/icons-mdi/fast-forward*", "node_modules/@iconify/icons-mdi/rewind*", "node_modules/@iconify/icons-mdi/volume-high*", "node_modules/@iconify/icons-mdi/volume-mute*", "node_modules/@iconify/icons-mdi/repeat*", "node_modules/@iconify/icons-mdi/repeat-off*", "!node_modules/lamejs/testdata/*", "!node_modules/@reduxjs/**/*", "node_modules/@reduxjs/**/*.js", "node_modules/@reduxjs/toolkit/package.json", "!**/node_modules/*/{CHANGELOG.md,README.md,README,readme.md,readme,test,__tests__,tests,powered-test,example,examples,*.d.ts}", "!**/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,.editorconfig,.flowconfig,.yarn-metadata.json,.idea,appveyor.yml,.travis.yml,circle.yml,npm-debug.log,,yarn.lock,.yarn-integrity,.map}", "!**/*.js.map", "!**/*.ts", "node_modules/spellchecker/build/Release/*.node", "node_modules/websocket/build/Release/*.node", "node_modules/libsession_util_nodejs/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/react-draggable/build/cjs/*.js", "node_modules/react-draggable/build/cjs/utils/*.js", "!build/*.js", "build/afterPackHook.js", "build/launcher-script.sh", "!node_modules/@signalapp/better-sqlite3/deps/*", "!node_modules/@signalapp/better-sqlite3/src/*", "!node_modules/@signalapp/better-sqlite3/build/Release/obj/*", "node_modules/@signalapp/better-sqlite3/build/Release/better_sqlite3.node", "!node_modules/libsession_util_nodejs/libsession-util/*", "!node_modules/libsession_util_nodejs/src/*", "ts/webworker/workers/node/libsession/*.node", "!dev-app-update.yml" ] } }