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 {
|
export class UnparseablePacket {
|
||||||
constructor(tag, rawContent) {
|
constructor(tag, rawContent) {
|
||||||
this.tag = tag;
|
this.tag = tag;
|
||||||
|
|||||||
@ -5,7 +5,8 @@ import {
|
|||||||
writePartialLength, writeSimpleLength,
|
writePartialLength, writeSimpleLength,
|
||||||
UnparseablePacket,
|
UnparseablePacket,
|
||||||
UnsupportedError,
|
UnsupportedError,
|
||||||
UnknownPacketError
|
UnknownPacketError,
|
||||||
|
MalformedPacketError
|
||||||
} from './packet';
|
} from './packet';
|
||||||
import util from '../util';
|
import util from '../util';
|
||||||
import enums from '../enums';
|
import enums from '../enums';
|
||||||
@ -102,7 +103,7 @@ class PacketList extends Array {
|
|||||||
await packet.read(parsed.packet, config);
|
await packet.read(parsed.packet, config);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (!(e instanceof UnsupportedError)) {
|
if (!(e instanceof UnsupportedError)) {
|
||||||
e.name = 'MalformedPacketError';
|
throw util.wrapError(new MalformedPacketError(`Parsing ${packet.constructor.name} failed`), e);
|
||||||
}
|
}
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
@ -123,7 +124,7 @@ class PacketList extends Array {
|
|||||||
// In case of packet parsing errors, e.name was set to 'MalformedPacketError' above.
|
// In case of packet parsing errors, e.name was set to 'MalformedPacketError' above.
|
||||||
// By default, we throw for these errors.
|
// By default, we throw for these errors.
|
||||||
const throwMalformedPacketError =
|
const throwMalformedPacketError =
|
||||||
e.name === 'MalformedPacketError' &&
|
e instanceof MalformedPacketError &&
|
||||||
!config.ignoreMalformedPackets;
|
!config.ignoreMalformedPackets;
|
||||||
// The packets that support streaming are the ones that contain message data.
|
// 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
|
// 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 = !(
|
const throwOtherError = !(
|
||||||
e instanceof UnknownPacketError ||
|
e instanceof UnknownPacketError ||
|
||||||
e instanceof UnsupportedError ||
|
e instanceof UnsupportedError ||
|
||||||
e.name === 'MalformedPacketError'
|
e instanceof MalformedPacketError
|
||||||
);
|
);
|
||||||
if (
|
if (
|
||||||
throwUnknownPacketError ||
|
throwUnknownPacketError ||
|
||||||
|
|||||||
16
src/util.js
16
src/util.js
@ -593,17 +593,23 @@ const util = {
|
|||||||
}).join('\n');
|
}).join('\n');
|
||||||
},
|
},
|
||||||
|
|
||||||
wrapError: function(message, error) {
|
wrapError: function(error, cause) {
|
||||||
if (!error) {
|
if (!cause) {
|
||||||
return new Error(message);
|
if (error instanceof Error) {
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
return new Error(error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (error instanceof Error) {
|
||||||
// update error message
|
// update error message
|
||||||
try {
|
try {
|
||||||
error.message = message + ': ' + error.message;
|
error.message += ': ' + cause.message;
|
||||||
|
error.cause = cause;
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
|
}
|
||||||
|
return new Error(error + ': ' + cause.message, { cause });
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user