Commit Graph

3337 Commits (fd056e1b4cc1f08168ce7e831e4b635dd621f73e)
 

Author SHA1 Message Date
Scott Nonnenberg fd056e1b4c
Add nsp to dev dependencies and to travis and CI scripts 7 years ago
Scott Nonnenberg c8555974e4
Delete data on windows uninstall 7 years ago
Scott Nonnenberg 6e86bf238e Disable all webviews, since we never intend to create them (#2114) 7 years ago
Daniel Gasienica 8bd37b7f8d Merge #2110 from gasi: Log Uncaught Errors & Unhandled Promise Rejections In Main Process
- [x] Add `electron-unhandled` dependency:
  - ~~Ensures errors are normalized~~ (disabled to prevent serializing non-errors that are thrown and leaking information)
  - Distinguishes between main and renderer processes
  - Allows suppression of error dialog
- [x] Log uncaught errors and unhandled promise rejections in main process
- [x] Tested using unguarded `throw new TyperError(…)` and `Promise.reject(…)` in `setTimeout` after `app` `ready` event.
- [x] Extract `Privacy` module that centralizes how we redact sensitive information such as phone numbers, group IDs, and user file paths.
- [x] Add `eslint-plugin-mocha` to disallow exclusive tests using `*.only`.

Fixes #2019.
7 years ago
Daniel Gasienica 8a1bff0fad Remove unused `require` 7 years ago
Daniel Gasienica c317f34f67 Remove `ensure-error` and `clean-error` dependency
It potentially could leak information from serialized non-errors that are thrown
due to `util.inspect`.
7 years ago
Daniel Gasienica c7305db8c8 Disallow exclusive tests, i.e. `.only` 7 years ago
Daniel Gasienica 96442967cc Add `eslint-plugin-mocha`
Allows us to set various lint rules for our tests.
7 years ago
Daniel Gasienica ef40dfa841 Use forked `electron-unhandled`
Omits use of `ensure-error` for privacy.

Before:
`Uncaught error or unhandled promise rejection: NonError: { private: true }`

After:
`Uncaught error or unhandled promise rejection: [object Object]`

Tested using:

```
setTimeout(() => {
  throw new Error('sync: booooom!');
}, 5000);

setTimeout(() => {
  Promise.reject(new Error('async: promise'))
}, 10000);

setTimeout(() => {
  Promise.reject({private: true});
}, 15000);
```
7 years ago
Daniel Gasienica 43b47fd349 Avoid `ensure-error` for privacy reasons
Example:

```
> node
> const nonError = {foo: 'i-am-private'};
undefined

// before
> util.inspect(nonError);
'{ foo: \'i-am-private\' }'

// after
> nonError.toString()
'[object Object]'
>
```
7 years ago
Daniel Gasienica ea07915e6b Escape special characters in file path 7 years ago
Daniel Gasienica 44b81f68dd Remove privacy redaction from `Errors.toLogFormat` 7 years ago
Daniel Gasienica e71246a9e3 Add tests for `Privacy` module 7 years ago
Daniel Gasienica 49e0850fb2 Extract `Privacy` module
Centralizes how we redact sensitive information.
7 years ago
Daniel Gasienica 0c317c5498 Redact all private information from logs 7 years ago
Daniel Gasienica 0e2f8a8a06 Extract `Errors.redactSensitivePaths` 7 years ago
Daniel Gasienica 33bbb12626 Use `Errors.toLogFormat` in `backgrounds.js` 7 years ago
Daniel Gasienica 289063b24b Expose `Signal.Types.Errors` 7 years ago
Daniel Gasienica 3dffdc3f0b Rename `Errors` to `GlobalErrors` for clarity 7 years ago
Daniel Gasienica 2575196617 Extract `Errors.addGlobalHandler` procedure 7 years ago
Daniel Gasienica be3e4d86c2 Add `Errors.toLogFormat`
Allows errors to be formatted and sanitized for logging. Removes sensitive paths
such as the app root directory.

Ideally, this module would be called singular `Error` but that is already a
global name. Using `Errors` plural is  similar to Java convention for utilities
such as `Arrays`, `Collections`, `Files`, etc. See:
https://stackoverflow.com/a/11673838
7 years ago
Daniel Gasienica 77e7e9ad4d Add `ensure-error` dependency 7 years ago
Daniel Gasienica 522b88d0d9 Reduce scope of disabled `more/no-then` rule 7 years ago
Daniel Gasienica 18785be639 Log uncaught errors / promise rejections in main process
See #2019.
7 years ago
Daniel Gasienica 9e5fec1d81 Add `electron-unhandled` dependency 7 years ago
Daniel Gasienica b2a252aa13 Merge #2112 from gasi: Move Debug Logs From GitHub Gists to debuglogs.org
In anticipation of GitHub’s deprecation of anonymous gists, we are moving our debug logs to https://debuglogs.org.

- [x] Publish debug logs to debuglogs.org.
- [x] Rename **Help > File a Bug** to **Report an Issue** for consistency with our debug log view as well as other apps such as Google Chrome.
- [x] Quickfix: Ensure `window.isFocused` always returns a boolean.

**Sample log:** https://debuglogs.org/0272bdd35288ed839ede88938a5290011150d42b56599efb5dd93ac80a2ac915
7 years ago
Daniel Gasienica b049412bfd Document workaround for `got` `FormData` bug
See: https://github.com/sindresorhus/got/pull/466
7 years ago
Daniel Gasienica 710701d0fc Document why `key` comes first 7 years ago
Daniel Gasienica 0810ea6909 Remove `superagent` dependency
We’ve replaced it with more modern and Node.js based `got`:
https://www.npmjs.com/package/got
7 years ago
Daniel Gasienica 8b71155e7c Replace `superagent` with `got` for debug logs 7 years ago
Daniel Gasienica 52f7de6a10 Add `debuglogs` module 7 years ago
Daniel Gasienica 04afb6a318 Add `form-data` dependency
Used for upload debug logs to S3.
7 years ago
Daniel Gasienica b4c6f6733b Add `got` dependency
The plan is to use this for our future HTTP needs as it is:
- modern
- promise based
- popular
- likely to support custom certificate authorities (CAs)

Chosen over the following alternatives:
- superagent (older, promises added later, potential lack of custom CA support)
- axios (no team experience with it; less popular than `got`)
- request (older, heavy-weight, promises not native)
- jQuery (old, trying to move away from jQuery altogether and move towards
  declarative UIs)
- `fetch` (too low-level, no native timeout support)
7 years ago
Daniel Gasienica 1e2cd3ae1f Rename ‘File a Bug’ to ‘Report an Issue’
This makes it more consistent with ‘Report an issue’ under View > Debug Log.

Not using ellipsis as menu item doesn’t require user confirmation:
https://stackoverflow.com/a/637708
7 years ago
Daniel Gasienica 1755e24854 Add ES2015 modules to JSHint ignore list 7 years ago
Daniel Gasienica e4b34a6287 Make `DebugLogView::submit` async 7 years ago
Daniel Gasienica acf48595f3 Show log in a monospaced font
Makes it easier for users to edit it as timestamps, etc., better align.
7 years ago
Daniel Gasienica 3ab3e93a28 Upload debug logs to debuglogs.org 7 years ago
Daniel Gasienica bd5f3bd73a Make dialog title consistent with menu bar item 7 years ago
Daniel Gasienica cb464c6301 Ensure `isFocused` always returns boolean 7 years ago
Daniel Gasienica e289479c6b Add `superagent` dependency
HTTP client with higher-level API than `fetch` and support for timeouts, etc.
7 years ago
Daniel Gasienica 770e4ac96b Merge #2111 from gasi: Autofix: Move Debug Logs From GitHub Gists to debuglogs.org
- [x] Apply ESLint autofixes in preparation of changes to debug log publish change.
- [x] Remove now unnecessary `/* eslint-env browser */` directives from some files. This is now part of our per-folder ESLint configuration.

Manual changes: 77cc9b61c9..0cf64f5083
7 years ago
Daniel Gasienica 969127a72a Remove triple parens 7 years ago
Daniel Gasienica f6fd979ccb Remove explicit ESLint `browser` directives 7 years ago
Daniel Gasienica 168788600a Fix lint errors 7 years ago
Daniel Gasienica 325c0628cd Remove Vim modeline 7 years ago
Daniel Gasienica b3a3729261 Fix lint errors 7 years ago
Daniel Gasienica 6f7f55f783 Whitelist globals 7 years ago
Daniel Gasienica 090345523f Disable ESLint `strict` rule for module
`js/logging.js` acts as a module even though it lives in `js/*`.
7 years ago
Daniel Gasienica 7db44e35bd Allow `node` environment for `js/logging.js` 7 years ago