Skip to content

Commit

Permalink
Typechecks instead of type assertions for caught errors
Browse files Browse the repository at this point in the history
  • Loading branch information
danimoh committed Sep 5, 2024
1 parent dd38145 commit cc0b7ba
Show file tree
Hide file tree
Showing 18 changed files with 76 additions and 84 deletions.
8 changes: 4 additions & 4 deletions src/components/RecoveryWords.js
Original file line number Diff line number Diff line change
Expand Up @@ -140,10 +140,10 @@ class RecoveryWords extends Nimiq.Observable {
const type = Nimiq.MnemonicUtils.getMnemonicType(mnemonic); // throws on invalid mnemonic
this._mnemonic = { words: mnemonic, type };
this.fire(RecoveryWords.Events.COMPLETE, mnemonic, type);
} catch (e) {
const err = /** @type {Error} */ (e);
if (err.message !== 'Invalid checksum') {
console.error(e); // eslint-disable-line no-console
} catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
if (errorMessage !== 'Invalid checksum') {
console.error(error); // eslint-disable-line no-console
} else {
// wrong words
if (this._mnemonic) this._mnemonic = null;
Expand Down
5 changes: 2 additions & 3 deletions src/lib/QrScanner.js
Original file line number Diff line number Diff line change
Expand Up @@ -342,10 +342,9 @@ class QrScanner {
this._qrEnginePromise,
this.$canvas,
);
} catch (err) {
} catch (error) {
if (!this._active) return;
const error = /** @type {Error | string} */ (err);
const errorMessage = typeof error === 'string' ? error : error.message;
const errorMessage = error instanceof Error ? error.message : String(error);
if (errorMessage.includes('service unavailable')) {
// When the native BarcodeDetector crashed, create a new one
this._qrEnginePromise = QrScanner.createQrEngine();
Expand Down
21 changes: 9 additions & 12 deletions src/lib/RequestParser.js
Original file line number Diff line number Diff line change
Expand Up @@ -184,9 +184,8 @@ class RequestParser { // eslint-disable-line no-unused-vars
flags,
data,
);
} catch (err) {
const error = /** @type {Error} */ (err);
throw new Errors.InvalidRequestError(error);
} catch (error) {
throw new Errors.InvalidRequestError(error instanceof Error ? error : String(error));
}
}

Expand All @@ -205,9 +204,9 @@ class RequestParser { // eslint-disable-line no-unused-vars
return Nimiq.Address.fromString(address);
}
return new Nimiq.Address(address);
} catch (err) {
const error = /** @type {Error} */ (err);
throw new Errors.InvalidRequestError(`${name} must be a valid Nimiq address (${error.message})`);
} catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
throw new Errors.InvalidRequestError(`${name} must be a valid Nimiq address (${errorMessage})`);
}
}

Expand Down Expand Up @@ -242,9 +241,8 @@ class RequestParser { // eslint-disable-line no-unused-vars
try {
const parsedUrl = this._parseUrl(url, 'shopOrigin');
return parsedUrl.origin;
} catch (err) {
const error = /** @type {Error} */ (err);
throw new Errors.InvalidRequestError(error);
} catch (error) {
throw new Errors.InvalidRequestError(error instanceof Error ? error : String(error));
}
}

Expand All @@ -259,9 +257,8 @@ class RequestParser { // eslint-disable-line no-unused-vars
}
try {
return this._parseUrl(url, 'shopLogoUrl');
} catch (err) {
const error = /** @type {Error} */ (err);
throw new Errors.InvalidRequestError(error);
} catch (error) {
throw new Errors.InvalidRequestError(error instanceof Error ? error : String(error));
}
}

Expand Down
5 changes: 2 additions & 3 deletions src/lib/RpcServer.es.js
Original file line number Diff line number Diff line change
Expand Up @@ -314,10 +314,9 @@ class RpcServer { // eslint-disable-line no-unused-vars
RpcServer._ok(state, result);
}
return true;
} catch (err) {
const error = /** @type {Error} */ (err);
} catch (error) {
if (_state) {
RpcServer._error(_state, error);
RpcServer._error(_state, error instanceof Error ? error : new Error(String(error)));
}
return false;
}
Expand Down
2 changes: 1 addition & 1 deletion src/request/TopLevelApi.js
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ class TopLevelApi extends RequestParser {
}

window.addEventListener('unhandledrejection', event => {
const error = new Errors.UnclassifiedError(/** @type {PromiseRejectionEvent} */(event).reason);
const error = new Errors.UnclassifiedError(/** @type {PromiseRejectionEvent} */ (event).reason);
this.reject(error);
return false;
});
Expand Down
8 changes: 4 additions & 4 deletions src/request/change-password/ChangePassword.js
Original file line number Diff line number Diff line change
Expand Up @@ -136,14 +136,14 @@ class ChangePassword {
let key = null;
try {
key = await KeyStore.instance.get(this._request.keyInfo.id, oldPasswordBytes);
} catch (err) {
const e = /** @type {Error} */ (err);
if (e.message === 'Invalid key') {
} catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
if (errorMessage === 'Invalid key') {
TopLevelApi.setLoading(false);
this._passwordGetter.onPasswordIncorrect();
return;
}
this._reject(new Errors.CoreError(e));
this._reject(new Errors.CoreError(error instanceof Error ? error : errorMessage));
return;
}
if (!key) {
Expand Down
8 changes: 4 additions & 4 deletions src/request/derive-address/DeriveAddress.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,14 +50,14 @@ class DeriveAddress {
let key = null;
try {
key = await KeyStore.instance.get(this._request.keyInfo.id, passwordBuffer);
} catch (err) {
const e = /** @type {Error} */ (err);
if (e.message === 'Invalid key') {
} catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
if (errorMessage === 'Invalid key') {
TopLevelApi.setLoading(false);
this._passwordBox.onPasswordIncorrect();
return;
}
this._reject(new Errors.CoreError(e));
this._reject(new Errors.CoreError(error instanceof Error ? error : errorMessage));
return;
}

Expand Down
8 changes: 4 additions & 4 deletions src/request/derive-btc-xpub/DeriveBtcXPub.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,14 +51,14 @@ class DeriveBtcXPub {
let key = null;
try {
key = await KeyStore.instance.get(this._request.keyInfo.id, passwordBuffer);
} catch (err) {
const e = /** @type {Error} */ (err);
if (e.message === 'Invalid key') {
} catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
if (errorMessage === 'Invalid key') {
TopLevelApi.setLoading(false);
this._passwordBox.onPasswordIncorrect();
return;
}
this._reject(new Errors.CoreError(e));
this._reject(new Errors.CoreError(error instanceof Error ? error : errorMessage));
return;
}

Expand Down
8 changes: 4 additions & 4 deletions src/request/derive-polygon-address/DerivePolygonAddress.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,14 @@ class DerivePolygonAddress {
let key = null;
try {
key = await KeyStore.instance.get(this._request.keyInfo.id, passwordBuffer);
} catch (err) {
const e = /** @type {Error} */ (err);
if (e.message === 'Invalid key') {
} catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
if (errorMessage === 'Invalid key') {
TopLevelApi.setLoading(false);
this._passwordBox.onPasswordIncorrect();
return;
}
this._reject(new Errors.CoreError(e));
this._reject(new Errors.CoreError(error instanceof Error ? error : errorMessage));
return;
}

Expand Down
16 changes: 8 additions & 8 deletions src/request/export/ExportFile.js
Original file line number Diff line number Diff line change
Expand Up @@ -161,14 +161,14 @@ class ExportFile extends Nimiq.Observable {
let key = this._key;
try {
key = await KeyStore.instance.get(this._request.keyInfo.id, passwordBuffer);
} catch (err) {
const e = /** @type {Error} */ (err);
if (e.message === 'Invalid key') {
} catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
if (errorMessage === 'Invalid key') {
TopLevelApi.setLoading(false);
this._passwordBox.onPasswordIncorrect();
return;
}
this._reject(new Errors.CoreError(e));
this._reject(new Errors.CoreError(error instanceof Error ? error : errorMessage));
return;
}
if (!key) {
Expand All @@ -194,14 +194,14 @@ class ExportFile extends Nimiq.Observable {
if (!key || !key.id) {
try {
key = await KeyStore.instance.get(this._request.keyInfo.id);
} catch (err) {
const e = /** @type {Error} */ (err);
if (e.message === 'Invalid key') {
} catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
if (errorMessage === 'Invalid key') {
TopLevelApi.setLoading(false);
this._passwordBox.onPasswordIncorrect();
return;
}
this._reject(new Errors.CoreError(e));
this._reject(new Errors.CoreError(error instanceof Error ? error : errorMessage));
return;
}
}
Expand Down
8 changes: 4 additions & 4 deletions src/request/export/ExportWords.js
Original file line number Diff line number Diff line change
Expand Up @@ -112,14 +112,14 @@ class ExportWords extends Nimiq.Observable {
/** @type {Uint8Array} */ (passwordBuffer),
)
: await KeyStore.instance.get(this._request.keyInfo.id, passwordBuffer);
} catch (err) {
const e = /** @type {Error} */ (err);
if (e.message === 'Invalid key') {
} catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
if (errorMessage === 'Invalid key') {
this._wordsPasswordBox.onPasswordIncorrect();
TopLevelApi.setLoading(false);
return;
}
this._reject(new Errors.CoreError(e));
this._reject(new Errors.CoreError(error instanceof Error ? error : errorMessage));
return;
}

Expand Down
5 changes: 2 additions & 3 deletions src/request/import/ImportFile.js
Original file line number Diff line number Diff line change
Expand Up @@ -209,9 +209,8 @@ class ImportFile {
} else {
throw new Error(`Unknown key type ${key.type}`);
}
} catch (e) {
const err = /** @type {Error | string} */ (e);
this._reject(new Errors.KeyguardError(typeof err === 'string' ? err : err.message));
} catch (error) {
this._reject(new Errors.KeyguardError(error instanceof Error ? error : String(error)));
return;
}

Expand Down
7 changes: 3 additions & 4 deletions src/request/import/ImportWords.js
Original file line number Diff line number Diff line change
Expand Up @@ -244,11 +244,10 @@ class ImportWords {
} else {
TopLevelApi.setLoading(false);
}
} catch (err) { // Keystore.instance.put throws Errors.KeyguardError
const e = /** @type {Error} */ (err);
console.log(e);
} catch (error) { // Keystore.instance.put throws Errors.KeyguardError
console.log(error);
TopLevelApi.setLoading(false);
this._reject(e);
this._reject(error instanceof Error ? error : new Error(String(error)));
}
}

Expand Down
14 changes: 7 additions & 7 deletions src/request/sign-btc-transaction/SignBtcTransaction.js
Original file line number Diff line number Diff line change
Expand Up @@ -133,14 +133,14 @@ class SignBtcTransaction {
let key = null;
try {
key = await KeyStore.instance.get(request.keyInfo.id, passwordBuf);
} catch (err) {
const e = /** @type {Error} */ (err);
if (e.message === 'Invalid key') {
} catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
if (errorMessage === 'Invalid key') {
TopLevelApi.setLoading(false);
this._passwordBox.onPasswordIncorrect();
return;
}
reject(new Errors.CoreError(e));
reject(new Errors.CoreError(error instanceof Error ? error : errorMessage));
return;
}
if (!key) {
Expand Down Expand Up @@ -313,11 +313,11 @@ class SignBtcTransaction {
raw: tx.toHex(),
};
resolve(result);
} catch (err) {
const error = /** @type {Error} */ (err);
} catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
TopLevelApi.setLoading(false);
console.error(error);
alert(`ERROR: ${error.message}`);
alert(`ERROR: ${errorMessage}`); // eslint-disable-line no-alert
}
}

Expand Down
8 changes: 4 additions & 4 deletions src/request/sign-message/SignMessage.js
Original file line number Diff line number Diff line change
Expand Up @@ -90,14 +90,14 @@ class SignMessage {
let key = null;
try {
key = await KeyStore.instance.get(request.keyInfo.id, passwordBuf);
} catch (err) {
const e = /** @type {Error} */ (err);
if (e.message === 'Invalid key') {
} catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
if (errorMessage === 'Invalid key') {
TopLevelApi.setLoading(false);
this._passwordBox.onPasswordIncorrect();
return;
}
reject(new Errors.CoreError(e));
reject(new Errors.CoreError(error instanceof Error ? error : errorMessage));
return;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,14 +100,14 @@ class SignPolygonTransaction {
let key = null;
try {
key = await KeyStore.instance.get(request.keyInfo.id, passwordBuf);
} catch (err) {
const e = /** @type {Error} */ (err);
if (e.message === 'Invalid key') {
} catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
if (errorMessage === 'Invalid key') {
TopLevelApi.setLoading(false);
this._passwordBox.onPasswordIncorrect();
return;
}
reject(new Errors.CoreError(e));
reject(new Errors.CoreError(error instanceof Error ? error : errorMessage));
return;
}
if (!key) {
Expand Down
13 changes: 6 additions & 7 deletions src/request/sign-swap/SignSwap.js
Original file line number Diff line number Diff line change
Expand Up @@ -472,14 +472,14 @@ class SignSwap {
let key = null;
try {
key = await KeyStore.instance.get(request.keyInfo.id, passwordBuf);
} catch (e) {
const err = /** @type {Error} */ (e);
if (err.message === 'Invalid key') {
} catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
if (errorMessage === 'Invalid key') {
TopLevelApi.setLoading(false);
this._passwordBox.onPasswordIncorrect();
return;
}
reject(new Errors.CoreError(err));
reject(new Errors.CoreError(error instanceof Error ? error : errorMessage));
return;
}
if (!key) {
Expand Down Expand Up @@ -641,9 +641,8 @@ class SignSwap {
// the Hub is not compromised. An attacker would need to get access to the Keyguard and Hub servers.
tmpCookieEncryptionKey,
});
} catch (e) {
const err = /** @type {Error} */ (e);
reject(err);
} catch (error) {
reject(error instanceof Error ? error : new Error(String(error)));
}
}

Expand Down
8 changes: 4 additions & 4 deletions src/request/sign-transaction/SignTransaction.js
Original file line number Diff line number Diff line change
Expand Up @@ -166,14 +166,14 @@ class SignTransaction {
let key = null;
try {
key = await KeyStore.instance.get(request.keyInfo.id, passwordBuf);
} catch (e) {
const err = /** @type {Error} */ (e);
if (err.message === 'Invalid key') {
} catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
if (errorMessage === 'Invalid key') {
TopLevelApi.setLoading(false);
this._passwordBox.onPasswordIncorrect();
return;
}
reject(new Errors.CoreError(err));
reject(new Errors.CoreError(error instanceof Error ? error : errorMessage));
return;
}
if (!key) {
Expand Down

0 comments on commit cc0b7ba

Please sign in to comment.