Skip to main content
Module

std/node/_stream/destroy.ts

Deno standard library
Go to Latest
File
// 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 implementationtype 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(); }}