summaryrefslogtreecommitdiff
path: root/std/node/_stream/promises.ts
diff options
context:
space:
mode:
authorSteven Guerrero <stephenguerrero43@gmail.com>2020-11-26 07:50:08 -0500
committerGitHub <noreply@github.com>2020-11-26 13:50:08 +0100
commit9042fcc12e7774cdd0ca3a5d08918a07dae8102b (patch)
tree8b5ff11412aae9bb714e0bb0b9b0358db64a8657 /std/node/_stream/promises.ts
parent60e980c78180ee3b0a14d692307be275dc181c8d (diff)
feat(std/node/stream): Add Duplex, Transform, Passthrough, pipeline, finished and promises (#7940)
Diffstat (limited to 'std/node/_stream/promises.ts')
-rw-r--r--std/node/_stream/promises.ts42
1 files changed, 42 insertions, 0 deletions
diff --git a/std/node/_stream/promises.ts b/std/node/_stream/promises.ts
new file mode 100644
index 000000000..1adf4ea3f
--- /dev/null
+++ b/std/node/_stream/promises.ts
@@ -0,0 +1,42 @@
+// Copyright Node.js contributors. All rights reserved. MIT License.
+import pl from "./pipeline.ts";
+import type { PipelineArguments } from "./pipeline.ts";
+import eos from "./end_of_stream.ts";
+import type {
+ FinishedOptions,
+ StreamImplementations as FinishedStreams,
+} from "./end_of_stream.ts";
+
+export function pipeline(...streams: PipelineArguments) {
+ return new Promise((resolve, reject) => {
+ pl(
+ ...streams,
+ (err, value) => {
+ if (err) {
+ reject(err);
+ } else {
+ resolve(value);
+ }
+ },
+ );
+ });
+}
+
+export function finished(
+ stream: FinishedStreams,
+ opts?: FinishedOptions,
+) {
+ return new Promise<void>((resolve, reject) => {
+ eos(
+ stream,
+ opts || null,
+ (err) => {
+ if (err) {
+ reject(err);
+ } else {
+ resolve();
+ }
+ },
+ );
+ });
+}