mirror of
https://github.com/openpgpjs/openpgpjs.git
synced 2025-11-24 14:35:51 +00:00
Allow passing an Error object to wrapError
This commit is contained in:
parent
6df8687c9e
commit
f1c6f9c4e4
@ -286,6 +286,18 @@ export class UnknownPacketError extends UnsupportedError {
|
||||
}
|
||||
}
|
||||
|
||||
export class MalformedPacketError extends UnsupportedError {
|
||||
constructor(...params) {
|
||||
super(...params);
|
||||
|
||||
if (Error.captureStackTrace) {
|
||||
Error.captureStackTrace(this, UnsupportedError);
|
||||
}
|
||||
|
||||
this.name = 'MalformedPacketError';
|
||||
}
|
||||
}
|
||||
|
||||
export class UnparseablePacket {
|
||||
constructor(tag, rawContent) {
|
||||
this.tag = tag;
|
||||
|
||||
@ -5,7 +5,8 @@ import {
|
||||
writePartialLength, writeSimpleLength,
|
||||
UnparseablePacket,
|
||||
UnsupportedError,
|
||||
UnknownPacketError
|
||||
UnknownPacketError,
|
||||
MalformedPacketError
|
||||
} from './packet';
|
||||
import util from '../util';
|
||||
import enums from '../enums';
|
||||
@ -102,7 +103,7 @@ class PacketList extends Array {
|
||||
await packet.read(parsed.packet, config);
|
||||
} catch (e) {
|
||||
if (!(e instanceof UnsupportedError)) {
|
||||
e.name = 'MalformedPacketError';
|
||||
throw util.wrapError(new MalformedPacketError(`Parsing ${packet.constructor.name} failed`), e);
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
@ -123,7 +124,7 @@ class PacketList extends Array {
|
||||
// In case of packet parsing errors, e.name was set to 'MalformedPacketError' above.
|
||||
// By default, we throw for these errors.
|
||||
const throwMalformedPacketError =
|
||||
e.name === 'MalformedPacketError' &&
|
||||
e instanceof MalformedPacketError &&
|
||||
!config.ignoreMalformedPackets;
|
||||
// The packets that support streaming are the ones that contain message data.
|
||||
// Those are also the ones we want to be more strict about and throw on all errors
|
||||
@ -133,7 +134,7 @@ class PacketList extends Array {
|
||||
const throwOtherError = !(
|
||||
e instanceof UnknownPacketError ||
|
||||
e instanceof UnsupportedError ||
|
||||
e.name === 'MalformedPacketError'
|
||||
e instanceof MalformedPacketError
|
||||
);
|
||||
if (
|
||||
throwUnknownPacketError ||
|
||||
|
||||
24
src/util.js
24
src/util.js
@ -593,17 +593,23 @@ const util = {
|
||||
}).join('\n');
|
||||
},
|
||||
|
||||
wrapError: function(message, error) {
|
||||
if (!error) {
|
||||
return new Error(message);
|
||||
wrapError: function(error, cause) {
|
||||
if (!cause) {
|
||||
if (error instanceof Error) {
|
||||
return error;
|
||||
}
|
||||
return new Error(error);
|
||||
}
|
||||
|
||||
// update error message
|
||||
try {
|
||||
error.message = message + ': ' + error.message;
|
||||
} catch (e) {}
|
||||
|
||||
return error;
|
||||
if (error instanceof Error) {
|
||||
// update error message
|
||||
try {
|
||||
error.message += ': ' + cause.message;
|
||||
error.cause = cause;
|
||||
} catch (e) {}
|
||||
return error;
|
||||
}
|
||||
return new Error(error + ': ' + cause.message, { cause });
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user