54 lines
1.4 KiB
TypeScript
54 lines
1.4 KiB
TypeScript
|
|
import { ShadeError } from '@shade/core';
|
||
|
|
|
||
|
|
export class StreamError extends ShadeError {
|
||
|
|
constructor(code: string, message: string) {
|
||
|
|
super(code, message);
|
||
|
|
this.name = 'StreamError';
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export class StreamProtocolError extends StreamError {
|
||
|
|
constructor(message: string) {
|
||
|
|
super('SHADE_STREAM_PROTOCOL', message);
|
||
|
|
this.name = 'StreamProtocolError';
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export class StreamIntegrityError extends StreamError {
|
||
|
|
constructor(message: string) {
|
||
|
|
super('SHADE_STREAM_INTEGRITY', message);
|
||
|
|
this.name = 'StreamIntegrityError';
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export class StreamReplayError extends StreamError {
|
||
|
|
constructor(message = 'Stream chunk replay detected') {
|
||
|
|
super('SHADE_STREAM_REPLAY', message);
|
||
|
|
this.name = 'StreamReplayError';
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export class StreamOutOfOrderError extends StreamError {
|
||
|
|
constructor(expected: number, received: number) {
|
||
|
|
super(
|
||
|
|
'SHADE_STREAM_OUT_OF_ORDER',
|
||
|
|
`Out-of-order chunk: expected seq=${expected}, got ${received}`,
|
||
|
|
);
|
||
|
|
this.name = 'StreamOutOfOrderError';
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export class StreamDecryptionError extends StreamError {
|
||
|
|
constructor(message = 'Stream chunk authenticated decryption failed') {
|
||
|
|
super('SHADE_STREAM_DECRYPTION', message);
|
||
|
|
this.name = 'StreamDecryptionError';
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export class StreamFinishedError extends StreamError {
|
||
|
|
constructor(message = 'Stream is already finished or aborted') {
|
||
|
|
super('SHADE_STREAM_FINISHED', message);
|
||
|
|
this.name = 'StreamFinishedError';
|
||
|
|
}
|
||
|
|
}
|