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; +}