diff options
Diffstat (limited to 'std/node/_stream/destroy.ts')
-rw-r--r-- | std/node/_stream/destroy.ts | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/std/node/_stream/destroy.ts b/std/node/_stream/destroy.ts new file mode 100644 index 000000000..d13e12de2 --- /dev/null +++ b/std/node/_stream/destroy.ts @@ -0,0 +1,38 @@ +// Copyright Node.js contributors. All rights reserved. MIT License. +import type Duplex from "./duplex.ts"; +import type Readable from "./readable.ts"; +import type Stream from "./stream.ts"; +import type Writable from "./writable.ts"; + +//This whole module acts as a 'normalizer' +//Idea behind it is you can pass any kind of streams and functions will execute anyways + +//TODO(Soremwar) +//Should be any implementation of stream +//This is a guard to check executed methods exist inside the implementation +type StreamImplementations = Duplex | Readable | Writable; + +// TODO(Soremwar) +// Bring back once requests are implemented +// function isRequest(stream: any) { +// return stream && stream.setHeader && typeof stream.abort === "function"; +// } + +export function destroyer(stream: Stream, err?: Error | null) { + // TODO(Soremwar) + // Bring back once requests are implemented + // if (isRequest(stream)) return stream.abort(); + // if (isRequest(stream.req)) return stream.req.abort(); + if ( + typeof (stream as StreamImplementations).destroy === "function" + ) { + return (stream as StreamImplementations).destroy(err); + } + // A test of async iterator mocks an upcoming implementation of stream + // his is casted to any in the meanwhile + // deno-lint-ignore no-explicit-any + if (typeof (stream as any).close === "function") { + // deno-lint-ignore no-explicit-any + return (stream as any).close(); + } +} |