![Scott Nonnenberg](/assets/img/avatar_default.png)
Quite a bit of change here. First, the basics: - New dependencies were added: react, typescript, tslint, and react-styleguidist - A new npm script: transpile. It uses typescript to process .tsx files in js/react, putting .js files next to the original file. It's part of the watch functionality of grunt dev as well as the default task run with just grunt (used to build the app prior to release). A lighter-weight to get watch behavior when just working on React components is to run yarn transpile --watch. - yarn run clean-transpile will remove generated .js files Style guide via react-styleguidist. Example site: https://react-styleguidist.js.org/examples/basic/ - Start with yarn styleguide - Component.md files right next to the .tsx file - jsdoc-style comments are picked up and added to the generated part of the styleguide - the overall summary and a table listing methods and properties of the component - It has hot-reloading! - It uses webpack, which means that our app now pulls in webpack though we don't use it to generate anything for the production app. - I did a bunch of work to enable the use of Backbone views in this context, which will allow us to move smoothly from the old world to the new. First, add all the permutations in the old way, and then slowly start to re-render those same views with React. A bit of dependency cleanup to enable use in React components: - moment was moved from our Bower dependencies to our npm dependencies, so it can be used in React components not running in a browser window. - i18n was moved into the new commonjs format, so it can be used in React components even if window is not available. Lastly, a bit of Gruntfile cleanup: - Removal of Chrome App-era modifications of background.js - Make jshint/jscs watch more targeted, since more and more we'll be using other tools
257 lines
9 KiB
JSON
257 lines
9 KiB
JSON
{
|
|
"name": "signal-desktop",
|
|
"productName": "Signal",
|
|
"description": "Private messaging from your desktop",
|
|
"repository": "https://github.com/signalapp/Signal-Desktop.git",
|
|
"version": "1.7.0-beta.3",
|
|
"license": "GPL-3.0",
|
|
"author": {
|
|
"name": "Open Whisper Systems",
|
|
"email": "support@signal.org"
|
|
},
|
|
"main": "main.js",
|
|
"scripts": {
|
|
"postinstall": "electron-builder install-app-deps && rimraf node_modules/dtrace-provider",
|
|
"test": "yarn eslint && yarn tslint && yarn test-server && grunt test && yarn test-app && yarn test-modules",
|
|
"lint": "grunt jshint",
|
|
"start": "electron .",
|
|
"asarl": "asar l release/mac/Signal.app/Contents/Resources/app.asar",
|
|
"icon-gen": "electron-icon-maker --input=images/icon_1024.png --output=./build",
|
|
"generate": "npm run icon-gen && grunt",
|
|
"build": "build --config.extraMetadata.environment=$SIGNAL_ENV",
|
|
"dist": "npm run generate && npm run build",
|
|
"pack": "npm run generate && npm run build -- --dir",
|
|
"prepare-beta-build": "node prepare_beta_build.js",
|
|
"prepare-import-build": "node prepare_import_build.js",
|
|
"pack-prod": "SIGNAL_ENV=production npm run pack",
|
|
"dist-prod": "SIGNAL_ENV=production npm run dist",
|
|
"dist-prod-all": "SIGNAL_ENV=production npm run dist -- -mwl",
|
|
"build-release": "SIGNAL_ENV=production npm run build -- --config.directories.output=release",
|
|
"build-mas-release": "npm run build-release -- -m --config.mac.target=mas",
|
|
"build-mas-dev": "npm run build-release -- -m --config.mac.target=mas --config.type=development",
|
|
"grunt": "grunt",
|
|
"prep-mac-release": "npm run build-release -- -m --dir",
|
|
"prep-release": "npm run generate && grunt prep-release && npm run build-release && npm run build-mas-release && grunt test-release",
|
|
"release-mac": "npm run build-release -- -m --prepackaged release/mac/Signal*.app --publish=always",
|
|
"release-win": "npm run build-release -- -w --prepackaged release/windows --publish=always",
|
|
"release-lin": "npm run build-release -- -l --prepackaged release/linux && NAME=$npm_package_name VERSION=$npm_package_version ./aptly.sh",
|
|
"release": "npm run release-mac && npm run release-win && npm run release-lin",
|
|
"test-app": "mocha --recursive test/app",
|
|
"test-modules": "mocha --recursive test/modules",
|
|
"test-server": "mocha --recursive test/server",
|
|
"test-server-coverage": "nyc --reporter=lcov --reporter=text mocha --recursive test/server",
|
|
"eslint": "eslint .",
|
|
"tslint": "tslint ts/**/*.{ts,tsx}",
|
|
"transpile": "tsc",
|
|
"clean-transpile": "rimraf ts/**/*.js ts/*.js",
|
|
"open-coverage": "open coverage/lcov-report/index.html",
|
|
"styleguide": "styleguidist server"
|
|
},
|
|
"dependencies": {
|
|
"@sindresorhus/is": "^0.8.0",
|
|
"archiver": "^2.1.1",
|
|
"blob-util": "^1.3.0",
|
|
"blueimp-canvas-to-blob": "^3.14.0",
|
|
"blueimp-load-image": "^2.18.0",
|
|
"bunyan": "^1.8.12",
|
|
"classnames": "^2.2.5",
|
|
"config": "^1.28.1",
|
|
"decompress": "^4.2.0",
|
|
"electron-config": "^1.0.0",
|
|
"electron-editor-context-menu": "^1.1.1",
|
|
"electron-is-dev": "^0.3.0",
|
|
"electron-unhandled": "https://github.com/gasi/electron-unhandled.git#1edf81fe542e505368fafaeef27609dc21678f8c",
|
|
"electron-updater": "^2.21.0",
|
|
"emoji-datasource": "4.0.0",
|
|
"emoji-datasource-apple": "4.0.0",
|
|
"emoji-js": "^3.4.0",
|
|
"emoji-panel": "https://github.com/scottnonnenberg/emoji-panel.git#v0.5.5",
|
|
"firstline": "^1.2.1",
|
|
"form-data": "^2.3.2",
|
|
"fs-extra": "^5.0.0",
|
|
"google-libphonenumber": "^3.0.7",
|
|
"got": "^8.2.0",
|
|
"lodash": "^4.17.4",
|
|
"mkdirp": "^0.5.1",
|
|
"moment": "^2.21.0",
|
|
"node-fetch": "https://github.com/scottnonnenberg/node-fetch.git#3e5f51e08c647ee5f20c43b15cf2d352d61c36b4",
|
|
"node-notifier": "^5.1.2",
|
|
"os-locale": "^2.1.0",
|
|
"pify": "^3.0.0",
|
|
"proxy-agent": "^2.1.0",
|
|
"react": "^16.2.0",
|
|
"react-dom": "^16.2.0",
|
|
"read-last-lines": "^1.3.0",
|
|
"rimraf": "^2.6.2",
|
|
"semver": "^5.4.1",
|
|
"spellchecker": "^3.4.4",
|
|
"testcheck": "^1.0.0-rc.2",
|
|
"tmp": "^0.0.33",
|
|
"to-arraybuffer": "^1.0.1",
|
|
"websocket": "^1.0.25"
|
|
},
|
|
"devDependencies": {
|
|
"@types/qs": "^6.5.1",
|
|
"@types/react": "^16.3.1",
|
|
"@types/react-dom": "^16.0.4",
|
|
"arraybuffer-loader": "^1.0.3",
|
|
"asar": "^0.14.0",
|
|
"bower": "^1.8.2",
|
|
"chai": "^4.1.2",
|
|
"electron": "1.8.4",
|
|
"electron-builder": "^20.2.0",
|
|
"electron-icon-maker": "0.0.3",
|
|
"electron-publisher-s3": "^20.2.0",
|
|
"eslint": "^4.14.0",
|
|
"eslint-config-airbnb-base": "^12.1.0",
|
|
"eslint-plugin-import": "^2.8.0",
|
|
"eslint-plugin-mocha": "^4.12.1",
|
|
"eslint-plugin-more": "^0.3.1",
|
|
"extract-zip": "^1.6.6",
|
|
"grunt": "^1.0.1",
|
|
"grunt-cli": "^1.2.0",
|
|
"grunt-contrib-concat": "^1.0.1",
|
|
"grunt-contrib-copy": "^1.0.0",
|
|
"grunt-contrib-jshint": "^1.1.0",
|
|
"grunt-contrib-watch": "^1.0.0",
|
|
"grunt-exec": "^3.0.0",
|
|
"grunt-gitinfo": "^0.1.7",
|
|
"grunt-jscs": "^3.0.1",
|
|
"grunt-sass": "^2.0.0",
|
|
"mocha": "^4.1.0",
|
|
"mocha-testcheck": "^1.0.0-rc.0",
|
|
"node-sass-import-once": "^1.2.0",
|
|
"nsp": "^3.2.1",
|
|
"nyc": "^11.4.1",
|
|
"qs": "^6.5.1",
|
|
"react-docgen-typescript": "^1.2.6",
|
|
"react-styleguidist": "^7.0.1",
|
|
"sinon": "^4.4.2",
|
|
"spectron": "^3.8.0",
|
|
"ts-loader": "^4.1.0",
|
|
"tslint": "^5.9.1",
|
|
"tslint-react": "^3.5.1",
|
|
"typescript": "^2.8.1",
|
|
"webpack": "^4.4.1"
|
|
},
|
|
"engines": {
|
|
"node": "^8.2.1"
|
|
},
|
|
"build": {
|
|
"appId": "org.whispersystems.signal-desktop",
|
|
"mac": {
|
|
"artifactName": "${name}-mac-${version}.${ext}",
|
|
"category": "public.app-category.social-networking",
|
|
"icon": "build/icons/mac/icon.icns",
|
|
"publish": [
|
|
{
|
|
"provider": "generic",
|
|
"url": "https://updates.signal.org/desktop"
|
|
},
|
|
{
|
|
"provider": "s3",
|
|
"region": "us-east-1",
|
|
"bucket": "updates.signal.org",
|
|
"path": "desktop",
|
|
"acl": "public-read"
|
|
}
|
|
],
|
|
"target": [
|
|
"dmg",
|
|
"zip"
|
|
],
|
|
"bundleVersion": "1"
|
|
},
|
|
"win": {
|
|
"asarUnpack": "node_modules/spellchecker/vendor/hunspell_dictionaries",
|
|
"artifactName": "${name}-win-${version}.${ext}",
|
|
"certificateSubjectName": "Signal",
|
|
"publisherName": "Signal (Quiet Riddle Ventures, LLC)",
|
|
"icon": "build/icons/win/icon.ico",
|
|
"publish": [
|
|
{
|
|
"provider": "generic",
|
|
"url": "https://updates.signal.org/desktop"
|
|
},
|
|
{
|
|
"provider": "s3",
|
|
"region": "us-east-1",
|
|
"bucket": "updates.signal.org",
|
|
"path": "desktop",
|
|
"acl": "public-read"
|
|
}
|
|
],
|
|
"target": [
|
|
"nsis",
|
|
"zip"
|
|
]
|
|
},
|
|
"nsis": {
|
|
"deleteAppDataOnUninstall": true
|
|
},
|
|
"linux": {
|
|
"category": "Network",
|
|
"desktop": {
|
|
"StartupWMClass": "Signal"
|
|
},
|
|
"asarUnpack": "node_modules/spellchecker/vendor/hunspell_dictionaries",
|
|
"target": [
|
|
"deb",
|
|
"zip"
|
|
],
|
|
"icon": "build/icons/png"
|
|
},
|
|
"deb": {
|
|
"depends": [
|
|
"gconf2",
|
|
"gconf-service",
|
|
"libnotify4",
|
|
"libappindicator1",
|
|
"libxtst6",
|
|
"libnss3",
|
|
"libasound2",
|
|
"libxss1"
|
|
]
|
|
},
|
|
"files": [
|
|
"package.json",
|
|
"config/default.json",
|
|
"config/${env.SIGNAL_ENV}.json",
|
|
"config/local-${env.SIGNAL_ENV}.json",
|
|
"background.html",
|
|
"about.html",
|
|
"_locales/**",
|
|
"protos/*",
|
|
"js/**",
|
|
"stylesheets/*.css",
|
|
"!js/register.js",
|
|
"!js/views/standalone_registration_view.js",
|
|
"app/*",
|
|
"preload.js",
|
|
"main.js",
|
|
"images/**",
|
|
"fonts/*",
|
|
"build/assets",
|
|
"node_modules/**",
|
|
"!node_modules/emoji-panel/dist/*",
|
|
"!node_modules/emoji-panel/lib/emoji-panel-emojione-*.css",
|
|
"!node_modules/emoji-panel/lib/emoji-panel-google-*.css",
|
|
"!node_modules/emoji-panel/lib/emoji-panel-twitter-*.css",
|
|
"!node_modules/emoji-panel/lib/emoji-panel-apple-{16,20,64}.css",
|
|
"!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-128,sheets-256}/*.png",
|
|
"!node_modules/emoji-datasource-apple/img/apple/sheets/{16,20,32}.png",
|
|
"!node_modules/spellchecker/vendor/hunspell/**/*",
|
|
"!**/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,.nyc_output,yarn.lock,.yarn-integrity}",
|
|
"node_modules/spellchecker/build/Release/*.node",
|
|
"node_modules/websocket/build/Release/*.node"
|
|
]
|
|
}
|
|
}
|