Chapter 3: Samples

This commit is contained in:
Beth Griggs 2020-10-28 02:18:01 +00:00
parent ac0ff4d2af
commit cc2ef4e747
No known key found for this signature in database
GPG Key ID: D7062848A1AB005C
19 changed files with 281 additions and 0 deletions

View File

@ -0,0 +1,15 @@
const { Readable } = require("stream");
async function* generate() {
yield "Node.js";
yield "is";
yield "a";
yield "JavaScript";
yield "Runtime";
}
const readable = Readable.from(generate());
readable.on("data", (chunk) => {
console.log(chunk);
});

View File

@ -0,0 +1,12 @@
const fs = require("fs");
const rs = fs.createReadStream("./file.txt");
async function run() {
for await (const chunk of rs) {
console.log("Read chunk:", chunk);
}
console.log("No more data.");
}
run();

View File

@ -0,0 +1,9 @@
const fs = require("fs");
const rs = fs.createReadStream("/dev/urandom");
let size = 0;
rs.on("data", (data) => {
size += data.length;
console.log("File size:", size);
});

View File

@ -0,0 +1,16 @@
const fs = require("fs");
const rs = fs.createReadStream("./file.txt");
rs.on("readable", () => {
// Read data
let data = rs.read();
while (data !== null) {
console.log("Read chunk:", data);
data = rs.read();
}
});
rs.on("end", () => {
console.log("No more data.");
});

View File

@ -0,0 +1,11 @@
const fs = require("fs");
const rs = fs.createReadStream("./file.txt");
rs.on("data", (data) => {
console.log("Read chunk:", data.toString());
});
rs.on("end", () => {
console.log("No more data.");
});

View File

@ -0,0 +1,9 @@
const fs = require("fs");
const file = fs.createWriteStream("./file.txt");
for (let i = 0; i <= 1000000; i++) {
file.write(
"Node.js is a JavaScript runtime built on Google Chrome's V8 JavaScript engine.\n"
);
}

View File

@ -0,0 +1,14 @@
const { Transform } = require("stream");
const { stringify } = require("ndjson");
const Name = Transform({
objectMode: true,
transform: ({ forename, surname }, encoding, callback) => {
callback(null, { name: forename + " " + surname });
},
});
Name.pipe(stringify()).pipe(process.stdout);
Name.write({ forename: "John", surname: "Doe" });
Name.write({ forename: "Jane", surname: "Doe" });

View File

@ -0,0 +1,79 @@
{
"name": "object-streams",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
},
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
},
"ndjson": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ndjson/-/ndjson-2.0.0.tgz",
"integrity": "sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==",
"requires": {
"json-stringify-safe": "^5.0.1",
"minimist": "^1.2.5",
"readable-stream": "^3.6.0",
"split2": "^3.0.0",
"through2": "^4.0.0"
}
},
"readable-stream": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
}
},
"safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
},
"split2": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz",
"integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==",
"requires": {
"readable-stream": "^3.0.0"
}
},
"string_decoder": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
"integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
"requires": {
"safe-buffer": "~5.2.0"
}
},
"through2": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
"integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
"requires": {
"readable-stream": "3"
}
},
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
}
}
}

View File

@ -0,0 +1,15 @@
{
"name": "object-streams",
"version": "1.0.0",
"description": "",
"main": "object-stream.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"ndjson": "^2.0.0"
}
}

View File

@ -0,0 +1,4 @@
Node.js is a JavaScript runtime built on Google Chrome's V8 JavaScript engine.
Node.js is a JavaScript runtime built on Google Chrome's V8 JavaScript engine.
Node.js is a JavaScript runtime built on Google Chrome's V8 JavaScript engine.

View File

@ -0,0 +1,5 @@
const fs = require("fs");
const rs = fs.createReadStream("file.txt");
rs.pipe(process.stdout);

View File

@ -0,0 +1,3 @@
Node.js is a JavaScript runtime built on Google Chrome's V8 JavaScript engine.
Node.js is a JavaScript runtime built on Google Chrome's V8 JavaScript engine.
Node.js is a JavaScript runtime built on Google Chrome's V8 JavaScript engine.

View File

@ -0,0 +1,3 @@
NODE.JS IS A JAVASCRIPT RUNTIME BUILT ON GOOGLE CHROME'S V8 JAVASCRIPT ENGINE.
NODE.JS IS A JAVASCRIPT RUNTIME BUILT ON GOOGLE CHROME'S V8 JAVASCRIPT ENGINE.
NODE.JS IS A JAVASCRIPT RUNTIME BUILT ON GOOGLE CHROME'S V8 JAVASCRIPT ENGINE.

View File

@ -0,0 +1,22 @@
const fs = require("fs");
const { pipeline, Transform } = require("stream");
const uppercase = new Transform({
transform(chunk, encoding, callback) {
// Data processing
callback(null, chunk.toString().toUpperCase());
},
});
pipeline(
fs.createReadStream("./file.txt"),
uppercase,
fs.createWriteStream("./newFile.txt"),
(err) => {
if (err) {
console.error("Pipeline failed.", err);
} else {
console.log("Pipeline succeeded.");
}
}
);

View File

@ -0,0 +1,25 @@
const fs = require("fs");
const stream = require("stream");
const util = require("util");
const pipeline = util.promisify(stream.pipeline);
const uppercase = new stream.Transform({
transform(chunk, encoding, callback) {
// Data processing
callback(null, chunk.toString().toUpperCase());
},
});
async function run() {
await pipeline(
fs.createReadStream("./file.txt"),
uppercase,
fs.createWriteStream("./newFile.txt")
);
console.log("Pipeline succeeded.");
}
run().catch((err) => {
console.error("Pipeline failed.", err);
});

View File

@ -0,0 +1,3 @@
Node.js is a JavaScript runtime built on Google Chrome's V8 JavaScript engine.
Node.js is a JavaScript runtime built on Google Chrome's V8 JavaScript engine.
Node.js is a JavaScript runtime built on Google Chrome's V8 JavaScript engine.

View File

@ -0,0 +1,3 @@
NODE.JS IS A JAVASCRIPT RUNTIME BUILT ON GOOGLE CHROME'S V8 JAVASCRIPT ENGINE.
NODE.JS IS A JAVASCRIPT RUNTIME BUILT ON GOOGLE CHROME'S V8 JAVASCRIPT ENGINE.
NODE.JS IS A JAVASCRIPT RUNTIME BUILT ON GOOGLE CHROME'S V8 JAVASCRIPT ENGINE.

View File

@ -0,0 +1,18 @@
const fs = require("fs");
const { Transform } = require("stream");
const rs = fs.createReadStream("./file.txt");
const newFile = fs.createWriteStream("./newFile.txt");
class Uppercase extends Transform {
constructor() {
super();
}
_transform(chunk, encoding, callback) {
this.push(chunk.toString().toUpperCase());
callback();
}
}
rs.pipe(new Uppercase()).pipe(newFile);

View File

@ -0,0 +1,15 @@
const fs = require("fs");
const { Transform } = require("stream");
const rs = fs.createReadStream("./file.txt");
const newFile = fs.createWriteStream("./newFile.txt");
const uppercase = new Transform({
transform(chunk, encoding, callback) {
// Data processing
callback(null, chunk.toString().toUpperCase());
},
});
rs.pipe(uppercase).pipe(newFile);