From e0d74fd68af3575f267f8abc87c51a6fbab28d12 Mon Sep 17 00:00:00 2001 From: Joachim Van Herwegen Date: Wed, 10 Jun 2020 11:37:04 +0200 Subject: [PATCH] feat: add typed readable --- .../representation/BinaryRepresentation.ts | 2 ++ src/ldp/representation/QuadRepresentation.ts | 3 ++ src/util/TypedReadable.ts | 33 +++++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 src/util/TypedReadable.ts diff --git a/src/ldp/representation/BinaryRepresentation.ts b/src/ldp/representation/BinaryRepresentation.ts index 3caf5ea9a..cf81078e3 100644 --- a/src/ldp/representation/BinaryRepresentation.ts +++ b/src/ldp/representation/BinaryRepresentation.ts @@ -1,8 +1,10 @@ import { Representation } from './Representation'; +import { TypedReadable } from '../../util/TypedReadable'; /** * A representation containing binary data. */ export interface BinaryRepresentation extends Representation { dataType: 'binary'; + data: TypedReadable; } diff --git a/src/ldp/representation/QuadRepresentation.ts b/src/ldp/representation/QuadRepresentation.ts index 86b47559d..226e9d6b7 100644 --- a/src/ldp/representation/QuadRepresentation.ts +++ b/src/ldp/representation/QuadRepresentation.ts @@ -1,8 +1,11 @@ +import { Quad } from 'rdf-js'; import { Representation } from './Representation'; +import { TypedReadable } from '../../util/TypedReadable'; /** * A representation containing quads as data. */ export interface QuadRepresentation extends Representation { dataType: 'quad'; + data: TypedReadable; } diff --git a/src/util/TypedReadable.ts b/src/util/TypedReadable.ts new file mode 100644 index 000000000..dd14bfd32 --- /dev/null +++ b/src/util/TypedReadable.ts @@ -0,0 +1,33 @@ +import { Readable } from 'stream'; + +/** + * Interface providing typed functions for Readable streams. + */ +export interface TypedReadable extends Readable { + read(size?: number): any; + unshift(chunk: any, encoding?: BufferEncoding): void; + push(chunk: any, encoding?: BufferEncoding): boolean; + + addListener(event: 'data', listener: (chunk: T) => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + + emit(event: 'data', chunk: T): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + + on(event: 'data', listener: (chunk: T) => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + + once(event: 'data', listener: (chunk: T) => void): TypedReadable; + once(event: string | symbol, listener: (...args: any[]) => void): this; + + prependListener(event: 'data', listener: (chunk: T) => void): TypedReadable; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + + prependOnceListener(event: 'data', listener: (chunk: T) => void): TypedReadable; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + + removeListener(event: 'data', listener: (chunk: T) => void): TypedReadable; + removeListener(event: string | symbol, listener: (...args: any[]) => void): this; + + [Symbol.asyncIterator](): AsyncIterableIterator; +}