Chapter 3: Samples
This commit is contained in:
parent
ac0ff4d2af
commit
cc2ef4e747
15
Chapter03/learning-streams/async-generator.js
Normal file
15
Chapter03/learning-streams/async-generator.js
Normal 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);
|
||||
});
|
||||
12
Chapter03/learning-streams/for-await-read-stream.js
Normal file
12
Chapter03/learning-streams/for-await-read-stream.js
Normal 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();
|
||||
9
Chapter03/learning-streams/infinite-read.js
Normal file
9
Chapter03/learning-streams/infinite-read.js
Normal 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);
|
||||
});
|
||||
16
Chapter03/learning-streams/paused-stream.js
Normal file
16
Chapter03/learning-streams/paused-stream.js
Normal 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.");
|
||||
});
|
||||
11
Chapter03/learning-streams/read-stream.js
Normal file
11
Chapter03/learning-streams/read-stream.js
Normal 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.");
|
||||
});
|
||||
9
Chapter03/learning-streams/write-stream.js
Normal file
9
Chapter03/learning-streams/write-stream.js
Normal 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"
|
||||
);
|
||||
}
|
||||
14
Chapter03/object-streams/object-stream.js
Normal file
14
Chapter03/object-streams/object-stream.js
Normal 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" });
|
||||
79
Chapter03/object-streams/package-lock.json
generated
Normal file
79
Chapter03/object-streams/package-lock.json
generated
Normal 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="
|
||||
}
|
||||
}
|
||||
}
|
||||
15
Chapter03/object-streams/package.json
Normal file
15
Chapter03/object-streams/package.json
Normal 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"
|
||||
}
|
||||
}
|
||||
4
Chapter03/piping-streams/file.txt
Normal file
4
Chapter03/piping-streams/file.txt
Normal 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.
|
||||
|
||||
5
Chapter03/piping-streams/pipe-stream.js
Normal file
5
Chapter03/piping-streams/pipe-stream.js
Normal file
@ -0,0 +1,5 @@
|
||||
const fs = require("fs");
|
||||
|
||||
const rs = fs.createReadStream("file.txt");
|
||||
|
||||
rs.pipe(process.stdout);
|
||||
3
Chapter03/stream-pipelines/file.txt
Normal file
3
Chapter03/stream-pipelines/file.txt
Normal 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.
|
||||
3
Chapter03/stream-pipelines/newFile.txt
Normal file
3
Chapter03/stream-pipelines/newFile.txt
Normal 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.
|
||||
22
Chapter03/stream-pipelines/pipeline.js
Normal file
22
Chapter03/stream-pipelines/pipeline.js
Normal 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.");
|
||||
}
|
||||
}
|
||||
);
|
||||
25
Chapter03/stream-pipelines/promise-pipeline.js
Normal file
25
Chapter03/stream-pipelines/promise-pipeline.js
Normal 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);
|
||||
});
|
||||
3
Chapter03/transform-stream/file.txt
Normal file
3
Chapter03/transform-stream/file.txt
Normal 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.
|
||||
3
Chapter03/transform-stream/newFile.txt
Normal file
3
Chapter03/transform-stream/newFile.txt
Normal 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.
|
||||
18
Chapter03/transform-stream/transform-stream-es6.js
Normal file
18
Chapter03/transform-stream/transform-stream-es6.js
Normal 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);
|
||||
15
Chapter03/transform-stream/transform-stream.js
Normal file
15
Chapter03/transform-stream/transform-stream.js
Normal 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);
|
||||
Loading…
x
Reference in New Issue
Block a user