Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

from-node-stream

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

from-node-stream - npm Package Compare versions

Comparing version
0.0.10
to
0.0.11
+1
dist/examples/stdio-passthrough.d.ts
export {};
+3
-0

@@ -19,2 +19,5 @@ import { Readable, Writable } from "stream";

}): TransformStream<string | Uint8Array, string | Uint8Array>;
/**
* Make TransformStream from stdio
*/
export declare function fromStdio(

@@ -21,0 +24,0 @@ /** a process, which has stdin, stdout, stderr */

+2
-2

@@ -5,9 +5,9 @@ {

"sourcesContent": [
"import { mergeStream } from \"sflow\"; // TODO: tree shake sflow\nimport { Readable, Writable } from \"stream\";\nimport { fromReadable } from \"./fromReadable\";\nimport { fromWritable } from \"./fromWritable\";\n\nexport function fromStdioDropErr(\n /** a process, which has stdin, stdout, stderr */\n p: {\n stdin?: Writable | null;\n stdout?: Readable | null;\n stderr?: Readable | null;\n }\n): TransformStream<string | Uint8Array, string | Uint8Array> {\n return {\n writable: fromWritable(p.stdin!),\n readable: fromReadable(p.stdout!),\n };\n}\n\n/** Make TransformStream from stdio*/\nexport function fromStdioMergeError(\n /** a process, which has stdin, stdout, stderr */\n p: {\n stdin?: Writable | null;\n stdout?: Readable | null;\n stderr?: Readable | null;\n }\n): TransformStream<string | Uint8Array, string | Uint8Array> {\n const stdin = fromWritable(p.stdin!);\n const stdout = fromReadable(p.stdout!);\n const stderr = fromReadable(p.stderr!);\n return {\n writable: stdin,\n readable: mergeStream(stdout, stderr),\n };\n}\n\nexport function fromStdio(\n /** a process, which has stdin, stdout, stderr */\n p: {\n stdin?: Writable | null;\n stdout?: Readable | null;\n stderr?: Readable | null;\n },\n {\n stderr,\n }: {\n /** specify stderr to forward, or set to null to drop. */\n stderr?: Writable | null;\n } = {}\n): TransformStream<string | Uint8Array, string | Uint8Array> {\n if (p.stderr?.pipe && stderr?.pipe)\n fromReadable(p.stderr).pipeTo(fromWritable(stderr), {\n preventClose: true,\n });\n if (stderr === undefined) {\n return fromStdioMergeError(p);\n } else {\n return fromStdioDropErr(p);\n }\n}\nexport { fromReadable, fromWritable };\n",
"import { mergeStream } from \"sflow\"; // TODO: tree shake sflow\nimport { Readable, Writable } from \"stream\";\nimport { fromReadable } from \"./fromReadable\";\nimport { fromWritable } from \"./fromWritable\";\n\nexport function fromStdioDropErr(\n /** a process, which has stdin, stdout, stderr */\n p: {\n stdin?: Writable | null;\n stdout?: Readable | null;\n stderr?: Readable | null;\n }\n): TransformStream<string | Uint8Array, string | Uint8Array> {\n return {\n writable: fromWritable(p.stdin!),\n readable: fromReadable(p.stdout!),\n };\n}\n\n/** Make TransformStream from stdio*/\nexport function fromStdioMergeError(\n /** a process, which has stdin, stdout, stderr */\n p: {\n stdin?: Writable | null;\n stdout?: Readable | null;\n stderr?: Readable | null;\n }\n): TransformStream<string | Uint8Array, string | Uint8Array> {\n const stdin = fromWritable(p.stdin!);\n const stdout = fromReadable(p.stdout!);\n const stderr = fromReadable(p.stderr!);\n return {\n writable: stdin,\n readable: mergeStream(stdout, stderr),\n };\n}\n/**\n * Make TransformStream from stdio\n */\nexport function fromStdio(\n /** a process, which has stdin, stdout, stderr */\n p: {\n stdin?: Writable | null;\n stdout?: Readable | null;\n stderr?: Readable | null;\n },\n {\n stderr,\n }: {\n /** specify stderr to forward, or set to null to drop. */\n stderr?: Writable | null;\n } = {}\n): TransformStream<string | Uint8Array, string | Uint8Array> {\n if (p.stderr?.pipe && stderr?.pipe)\n fromReadable(p.stderr).pipeTo(fromWritable(stderr), {\n preventClose: true,\n });\n if (stderr === undefined) {\n return fromStdioMergeError(p);\n } else {\n return fromStdioDropErr(p);\n }\n}\nexport { fromReadable, fromWritable };\n",
"import type { Readable } from \"stream\";\n\nexport function fromReadable<T extends string | Uint8Array>(\n i: Readable | NodeJS.ReadableStream\n): ReadableStream<T> {\n return new ReadableStream({\n start: (c) => {\n i.on(\"data\", (data) => c.enqueue(data));\n i.on(\"close\", () => c.close());\n i.on(\"error\", (err) => c.error(err));\n },\n cancel: (reason) => (\n (i as Partial<Readable> & Partial<NodeJS.ReadableStream>).destroy?.(\n reason\n ),\n undefined\n ),\n });\n}\n",
"import type { Writable } from \"stream\";\n\nexport function fromWritable<T extends string | Uint8Array>(\n i: Writable | NodeJS.WritableStream\n): WritableStream<T> {\n return new WritableStream({\n start: (c) => (i.on(\"error\", (err) => c.error(err)), undefined),\n abort: (reason) => (\n (i as Partial<Writable> & Partial<NodeJS.WritableStream>).destroy?.(\n reason\n ),\n undefined\n ),\n write: (data: string | Uint8Array, c) => (i.write(data), undefined),\n close: () => (i.end(), undefined),\n });\n}\n"
],
"mappings": ";AAAA;;;ACEO,SAAS,YAA2C,CACzD,GACmB;AACnB,SAAO,IAAI,eAAe;AAAA,IACxB,OAAO,CAAC,MAAM;AACZ,QAAE,GAAG,QAAQ,CAAC,SAAS,EAAE,QAAQ,IAAI,CAAC;AACtC,QAAE,GAAG,SAAS,MAAM,EAAE,MAAM,CAAC;AAC7B,QAAE,GAAG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC;AAAA;AAAA,IAErC,QAAQ,CAAC,YACN,EAAyD,UACxD,MACF,GACA;AAAA,EAEJ,CAAC;AAAA;;;ACfI,SAAS,YAA2C,CACzD,GACmB;AACnB,SAAO,IAAI,eAAe;AAAA,IACxB,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG;AAAA,IACrD,OAAO,CAAC,YACL,EAAyD,UACxD,MACF,GACA;AAAA,IAEF,OAAO,CAAC,MAA2B,OAAO,EAAE,MAAM,IAAI,GAAG;AAAA,IACzD,OAAO,OAAO,EAAE,IAAI,GAAG;AAAA,EACzB,CAAC;AAAA;;;AFVI,SAAS,gBAAgB,CAE9B,GAK2D;AAC3D,SAAO;AAAA,IACL,UAAU,aAAa,EAAE,KAAM;AAAA,IAC/B,UAAU,aAAa,EAAE,MAAO;AAAA,EAClC;AAAA;AAIK,SAAS,mBAAmB,CAEjC,GAK2D;AAC3D,QAAM,QAAQ,aAAa,EAAE,KAAM;AACnC,QAAM,SAAS,aAAa,EAAE,MAAO;AACrC,QAAM,SAAS,aAAa,EAAE,MAAO;AACrC,SAAO;AAAA,IACL,UAAU;AAAA,IACV,UAAU,YAAY,QAAQ,MAAM;AAAA,EACtC;AAAA;AAGK,SAAS,SAAS,CAEvB;AAAA,EAME;AAAA,IAIE,CAAC,GACsD;AAC3D,MAAI,EAAE,QAAQ,QAAQ,QAAQ;AAC5B,iBAAa,EAAE,MAAM,EAAE,OAAO,aAAa,MAAM,GAAG;AAAA,MAClD,cAAc;AAAA,IAChB,CAAC;AACH,MAAI,WAAW,WAAW;AACxB,WAAO,oBAAoB,CAAC;AAAA,EAC9B,OAAO;AACL,WAAO,iBAAiB,CAAC;AAAA;AAAA;",
"mappings": ";AAAA;;;ACEO,SAAS,YAA2C,CACzD,GACmB;AAAA,EACnB,OAAO,IAAI,eAAe;AAAA,IACxB,OAAO,CAAC,MAAM;AAAA,MACZ,EAAE,GAAG,QAAQ,CAAC,SAAS,EAAE,QAAQ,IAAI,CAAC;AAAA,MACtC,EAAE,GAAG,SAAS,MAAM,EAAE,MAAM,CAAC;AAAA,MAC7B,EAAE,GAAG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC;AAAA;AAAA,IAErC,QAAQ,CAAC,YACN,EAAyD,UACxD,MACF,GACA;AAAA,EAEJ,CAAC;AAAA;;;ACfI,SAAS,YAA2C,CACzD,GACmB;AAAA,EACnB,OAAO,IAAI,eAAe;AAAA,IACxB,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG;AAAA,IACrD,OAAO,CAAC,YACL,EAAyD,UACxD,MACF,GACA;AAAA,IAEF,OAAO,CAAC,MAA2B,OAAO,EAAE,MAAM,IAAI,GAAG;AAAA,IACzD,OAAO,OAAO,EAAE,IAAI,GAAG;AAAA,EACzB,CAAC;AAAA;;;AFVI,SAAS,gBAAgB,CAE9B,GAK2D;AAAA,EAC3D,OAAO;AAAA,IACL,UAAU,aAAa,EAAE,KAAM;AAAA,IAC/B,UAAU,aAAa,EAAE,MAAO;AAAA,EAClC;AAAA;AAIK,SAAS,mBAAmB,CAEjC,GAK2D;AAAA,EAC3D,MAAM,QAAQ,aAAa,EAAE,KAAM;AAAA,EACnC,MAAM,SAAS,aAAa,EAAE,MAAO;AAAA,EACrC,MAAM,SAAS,aAAa,EAAE,MAAO;AAAA,EACrC,OAAO;AAAA,IACL,UAAU;AAAA,IACV,UAAU,YAAY,QAAQ,MAAM;AAAA,EACtC;AAAA;AAKK,SAAS,SAAS,CAEvB;AAAA,EAME;AAAA,IAIE,CAAC,GACsD;AAAA,EAC3D,IAAI,EAAE,QAAQ,QAAQ,QAAQ;AAAA,IAC5B,aAAa,EAAE,MAAM,EAAE,OAAO,aAAa,MAAM,GAAG;AAAA,MAClD,cAAc;AAAA,IAChB,CAAC;AAAA,EACH,IAAI,WAAW,WAAW;AAAA,IACxB,OAAO,oBAAoB,CAAC;AAAA,EAC9B,EAAO;AAAA,IACL,OAAO,iBAAiB,CAAC;AAAA;AAAA;",
"debugId": "14BF211E607D71C964756E2164756E21",
"names": []
}

@@ -37,3 +37,5 @@ import { mergeStream } from "sflow"; // TODO: tree shake sflow

}
/**
* Make TransformStream from stdio
*/
export function fromStdio(

@@ -40,0 +42,0 @@ /** a process, which has stdin, stdout, stderr */

{
"name": "from-node-stream",
"version": "0.0.10",
"version": "0.0.11",
"description": "convert nodejs-stream into webstream",

@@ -54,7 +54,5 @@ "keywords": [

"semantic-release": "^24.2.1",
"sflow": "^1.19.1"
},
"peerDependencies": {
"sflow": "^1.19.1",
"typescript": "^5.6.3"
}
}
+106
-0
# from-node-stream
## Usage Examples
### Basic: Read and Write from Node Streams
```ts
import { exec } from "child_process";
import { fromWritable, fromReadable } from "from-node-stream";
const p = exec("sh");
// Write to stdin
const writer = fromWritable(p.stdin!).getWriter();
await writer.write("echo hello, world\n");
await writer.close();
// Read from stdout
const reader = fromReadable(p.stdout!).getReader();
let output = "";
while (true) {
const { value, done } = await reader.read();
if (done) break;
output += typeof value === "string" ? value : new TextDecoder().decode(value);
}
console.log(output); // "hello, world\n"
```
### Using `fromStdioDropErr`
```ts
import { exec } from "child_process";
import { fromStdioDropErr } from "from-node-stream";
const p = exec("sh");
// Write to stdin
const writer = fromStdioDropErr(p).writable.getWriter();
await writer.write("echo hello, world\n");
await writer.close();
// Read from stdout
const reader = fromStdioDropErr(p).readable.getReader();
let output = "";
while (true) {
const { value, done } = await reader.read();
if (done) break;
output += typeof value === "string" ? value : new TextDecoder().decode(value);
}
console.log(output); // "hello, world\n"
```
### Using `fromStdioMergeError`
```ts
import { exec } from "child_process";
import { fromStdioMergeError } from "from-node-stream";
const p = exec("sh");
// Write to stdin
const writer = fromStdioMergeError(p).writable.getWriter();
await writer.write("echo oops, error>&2 && echo hell, word\n");
await writer.close();
// Read merged stdout and stderr
const reader = fromStdioMergeError(p).readable.getReader();
let output = "";
while (true) {
const { value, done } = await reader.read();
if (done) break;
output += typeof value === "string" ? value : new TextDecoder().decode(value);
}
console.log(output); // "oops, error\nhell, word\n"
```
### Drop stderr with `fromStdioDropErr`
```ts
import { exec } from "child_process";
import { fromStdioDropErr } from "from-node-stream";
const p = exec("sh");
// Write to stdin
const writer = fromStdioDropErr(p).writable.getWriter();
await writer.write("echo oops, error>&2 && echo hell, word\n");
await writer.close();
// Read from stdout only (stderr dropped)
const reader = fromStdioDropErr(p).readable.getReader();
let output = "";
while (true) {
const { value, done } = await reader.read();
if (done) break;
output += typeof value === "string" ? value : new TextDecoder().decode(value);
}
```
### Stdio Passthrough Example
Create a script that pipes process stdin through a bash process and then to stdout:
```ts
import { exec } from "child_process";
import { fromStdio } from "from-node-stream";
import { fromReadable } from "from-node-stream/fromReadable";
import { fromWritable } from "from-node-stream/fromWritable";
// Execute everything from stdin in bash and then output to stdout
await fromReadable(process.stdin)
.pipeThrough(fromStdio(exec("bash")))
.pipeTo(fromWritable(process.stdout));
```
## Development
To install dependencies:

@@ -4,0 +110,0 @@