diff options
author | Steven Guerrero <stephenguerrero43@gmail.com> | 2020-11-26 07:50:08 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-26 13:50:08 +0100 |
commit | 9042fcc12e7774cdd0ca3a5d08918a07dae8102b (patch) | |
tree | 8b5ff11412aae9bb714e0bb0b9b0358db64a8657 /std/node/_stream/destroy.ts | |
parent | 60e980c78180ee3b0a14d692307be275dc181c8d (diff) |
feat(std/node/stream): Add Duplex, Transform, Passthrough, pipeline, finished and promises (#7940)
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(); + } +} |