Daniel Gasienica
8a1bff0fad
Remove unused require
2018-03-08 17:50:10 -05:00
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`.
2018-03-08 17:45:55 -05:00
Daniel Gasienica
c7305db8c8
Disallow exclusive tests, i.e. .only
2018-03-08 16:23:51 -05:00
Daniel Gasienica
96442967cc
Add eslint-plugin-mocha
...
Allows us to set various lint rules for our tests.
2018-03-08 16:23:51 -05:00
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);
```
2018-03-08 16:23:51 -05:00
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]'
>
```
2018-03-08 16:23:51 -05:00
Daniel Gasienica
ea07915e6b
Escape special characters in file path
2018-03-08 16:23:51 -05:00
Daniel Gasienica
44b81f68dd
Remove privacy redaction from Errors.toLogFormat
2018-03-08 16:23:51 -05:00
Daniel Gasienica
e71246a9e3
Add tests for Privacy
module
2018-03-08 16:23:51 -05:00
Daniel Gasienica
49e0850fb2
Extract Privacy
module
...
Centralizes how we redact sensitive information.
2018-03-08 16:23:51 -05:00
Daniel Gasienica
0c317c5498
Redact all private information from logs
2018-03-08 16:23:04 -05:00
Daniel Gasienica
0e2f8a8a06
Extract Errors.redactSensitivePaths
2018-03-08 16:22:38 -05:00
Daniel Gasienica
33bbb12626
Use Errors.toLogFormat
in backgrounds.js
2018-03-08 16:22:38 -05:00
Daniel Gasienica
289063b24b
Expose Signal.Types.Errors
2018-03-08 16:22:38 -05:00
Daniel Gasienica
3dffdc3f0b
Rename Errors
to GlobalErrors
for clarity
2018-03-08 16:22:38 -05:00
Daniel Gasienica
2575196617
Extract Errors.addGlobalHandler
procedure
2018-03-08 16:22:38 -05:00
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
2018-03-08 16:22:38 -05:00
Daniel Gasienica
77e7e9ad4d
Add ensure-error
dependency
2018-03-08 16:22:38 -05:00
Daniel Gasienica
522b88d0d9
Reduce scope of disabled more/no-then
rule
2018-03-08 16:22:37 -05:00
Daniel Gasienica
18785be639
Log uncaught errors / promise rejections in main process
...
See #2019 .
2018-03-08 16:22:37 -05:00
Daniel Gasienica
9e5fec1d81
Add electron-unhandled
dependency
2018-03-08 16:22:37 -05:00
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
2018-03-08 16:21:30 -05:00
Daniel Gasienica
b049412bfd
Document workaround for got
FormData
bug
...
See: https://github.com/sindresorhus/got/pull/466
2018-03-08 16:21:27 -05:00
Daniel Gasienica
710701d0fc
Document why key
comes first
2018-03-08 16:21:27 -05:00
Daniel Gasienica
0810ea6909
Remove superagent
dependency
...
We’ve replaced it with more modern and Node.js based `got`:
https://www.npmjs.com/package/got
2018-03-08 16:21:27 -05:00
Daniel Gasienica
8b71155e7c
Replace superagent
with got
for debug logs
2018-03-08 16:21:27 -05:00
Daniel Gasienica
52f7de6a10
Add debuglogs
module
2018-03-08 16:21:27 -05:00
Daniel Gasienica
04afb6a318
Add form-data
dependency
...
Used for upload debug logs to S3.
2018-03-08 16:21:27 -05:00
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)
2018-03-08 16:21:27 -05:00
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
2018-03-08 16:21:27 -05:00
Daniel Gasienica
1755e24854
Add ES2015 modules to JSHint ignore list
2018-03-08 16:21:27 -05:00
Daniel Gasienica
e4b34a6287
Make DebugLogView::submit
async
2018-03-08 16:21:27 -05:00
Daniel Gasienica
acf48595f3
Show log in a monospaced font
...
Makes it easier for users to edit it as timestamps, etc., better align.
2018-03-08 16:21:27 -05:00
Daniel Gasienica
3ab3e93a28
Upload debug logs to debuglogs.org
2018-03-08 16:21:27 -05:00
Daniel Gasienica
bd5f3bd73a
Make dialog title consistent with menu bar item
2018-03-08 16:21:27 -05:00
Daniel Gasienica
cb464c6301
Ensure isFocused
always returns boolean
2018-03-08 16:21:27 -05:00
Daniel Gasienica
e289479c6b
Add superagent
dependency
...
HTTP client with higher-level API than `fetch` and support for timeouts, etc.
2018-03-08 16:21:27 -05:00
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
2018-03-08 16:18:49 -05:00
Daniel Gasienica
969127a72a
Remove triple parens
2018-03-08 13:46:51 -05:00
Daniel Gasienica
f6fd979ccb
Remove explicit ESLint browser
directives
2018-03-08 13:46:51 -05:00
Daniel Gasienica
168788600a
Fix lint errors
2018-03-08 13:46:51 -05:00
Daniel Gasienica
325c0628cd
Remove Vim modeline
2018-03-08 13:46:51 -05:00
Daniel Gasienica
b3a3729261
Fix lint errors
2018-03-08 13:46:51 -05:00
Daniel Gasienica
6f7f55f783
Whitelist globals
2018-03-08 13:46:51 -05:00
Daniel Gasienica
090345523f
Disable ESLint strict
rule for module
...
`js/logging.js` acts as a module even though it lives in `js/*`.
2018-03-08 13:46:51 -05:00
Daniel Gasienica
7db44e35bd
Allow node
environment for js/logging.js
2018-03-08 13:46:51 -05:00
Daniel Gasienica
d4c9422a99
Apply ESLint auto-fixes: debug_log_view.js
2018-03-08 13:46:51 -05:00
Daniel Gasienica
5d6cd0ea39
Apply ESLint auto-fixes: js/logging.js
2018-03-08 13:46:51 -05:00
Daniel Gasienica
9d638797de
Whitelist js/views/debug_log_view.js
for ESLint
2018-03-08 13:46:51 -05:00
Daniel Gasienica
0f512e3925
Whitelist js/logging.js
for ESLint
2018-03-08 13:46:51 -05:00