Skip to content

Commit 8ac1164

Browse files
feat: remove pump and raise minimum node to v18 (#113)
BREAKING CHANGE: Drop Node.js < 18 support Node.js 4 is long EOL, so this PR raises it to 18 as per comment. Node 10 has built-in `stream.pipeline` and `fs.mkdir` with `recursive` option, which can be used instead of `pump` (they are the same). Also 3 tests fail for me but they fail on main branch as well (timeout) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Chores** * Replaced the external stream piping utility with the native Node.js stream API throughout the codebase and tests. * Updated documentation examples to reflect the new usage of the native stream API. * Replaced external directory creation utilities with native Node.js directory creation methods using recursive options. * Removed obsolete dependencies and increased the minimum required Node.js version to 18.0.0. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: fengmk2 <[email protected]>
1 parent 9478897 commit 8ac1164

20 files changed

+65
-83
lines changed

.github/workflows/nodejs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ jobs:
1313
uses: node-modules/github-actions/.github/workflows/node-test.yml@master
1414
with:
1515
os: 'ubuntu-latest, macos-latest, windows-latest'
16-
version: '14, 16, 18, 20, 22, 24'
16+
version: '18, 20, 22, 24'

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ fs.createReadStream('file/path/to/compress')
7575
.on('error', handleError);
7676

7777
// You should take care of stream errors in caution, use pump to handle error in one place
78-
const pump = require('pump');
78+
const { pipeline: pump } = require('stream');
7979
const sourceStream = fs.createReadStream('file/path/to/compress');
8080
const gzipStream = new compressing.gzip.FileStream();
8181
const destStream = fs.createWriteStream('path/to/destination.gz');
@@ -193,7 +193,7 @@ function onEntry(header, stream, next) => {
193193
if (header.type === 'file') {
194194
stream.pipe(fs.createWriteStream(path.join(destDir, header.name)));
195195
} else { // directory
196-
mkdirp(path.join(destDir, header.name), err => {
196+
fs.mkdir(path.join(destDir, header.name), { recursive: true }, err => {
197197
if (err) return handleError(err);
198198
stream.resume();
199199
});

lib/tgz/file_stream.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ const tar = require('../tar');
44
const gzip = require('../gzip');
55
const utils = require('../utils');
66
const stream = require('stream');
7-
const pump = require('pump');
7+
const { pipeline: pump } = require('stream');
88
const ready = require('get-ready');
99

1010
class TgzFileStream extends stream.Transform {

lib/utils.js

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22

33
const fs = require('fs');
44
const path = require('path');
5-
const mkdirp = require('mkdirp');
6-
const pump = require('pump');
5+
const { pipeline: pump } = require('stream');
76

87
// file/fileBuffer/stream
98
exports.sourceType = source => {
@@ -90,7 +89,7 @@ exports.makeUncompressFn = StreamClass => {
9089
}
9190

9291
return new Promise((resolve, reject) => {
93-
mkdirp(destDir, err => {
92+
fs.mkdir(destDir, { recursive: true }, err => {
9493
if (err) return reject(err);
9594

9695
let entryCount = 0;
@@ -113,7 +112,7 @@ exports.makeUncompressFn = StreamClass => {
113112

114113
if (header.type === 'file') {
115114
const dir = path.dirname(destFilePath);
116-
mkdirp(dir, err => {
115+
fs.mkdir(dir, { recursive: true }, err => {
117116
if (err) return reject(err);
118117

119118
entryCount++;
@@ -128,7 +127,7 @@ exports.makeUncompressFn = StreamClass => {
128127
const target = path.resolve(dir, header.linkname);
129128
entryCount++;
130129

131-
mkdirp(dir, err => {
130+
fs.mkdir(dir, { recursive: true }, err => {
132131
if (err) return reject(err);
133132

134133
const relativeTarget = path.relative(dir, target);
@@ -139,7 +138,7 @@ exports.makeUncompressFn = StreamClass => {
139138
});
140139
});
141140
} else { // directory
142-
mkdirp(destFilePath, err => {
141+
fs.mkdir(destFilePath, { recursive: true }, err => {
143142
if (err) return reject(err);
144143
stream.resume();
145144
});

package.json

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,12 @@
3939
},
4040
"homepage": "https://github.com/node-modules/compressing#readme",
4141
"dependencies": {
42+
"@eggjs/yauzl": "^2.11.0",
4243
"flushwritable": "^1.0.0",
4344
"get-ready": "^1.0.0",
4445
"iconv-lite": "^0.5.0",
45-
"mkdirp": "^0.5.1",
46-
"pump": "^3.0.0",
4746
"streamifier": "^0.1.1",
4847
"tar-stream": "^1.5.2",
49-
"@eggjs/yauzl": "^2.11.0",
5048
"yazl": "^2.4.2"
5149
},
5250
"devDependencies": {
@@ -62,6 +60,6 @@
6260
"uuid": "^3.0.1"
6361
},
6462
"engines": {
65-
"node": ">= 4.0.0"
63+
"node": ">= 18.0.0"
6664
}
6765
}

test/gzip/file_stream.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ const fs = require('fs');
22
const os = require('os');
33
const path = require('path');
44
const uuid = require('uuid');
5-
const pump = require('pump');
5+
const { pipeline: pump } = require('stream');
66
const compressing = require('../..');
77
const assert = require('assert');
88

test/gzip/uncompress_stream.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ const os = require('os');
44
const uuid = require('uuid');
55
const path = require('path');
66
const assert = require('assert');
7-
const pump = require('pump');
7+
const { pipeline: pump } = require('stream');
88
const streamifier = require('streamifier');
99
const compressing = require('../..');
1010

test/tar/file_stream.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const os = require('os');
66
const path = require('path');
77
const uuid = require('uuid');
88
const assert = require('assert');
9-
const pump = require('pump');
9+
const { pipeline: pump } = require('stream');
1010
const compressing = require('../..');
1111

1212
describe('test/tar/file_stream.test.js', () => {

test/tar/index.test.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ const uuid = require('uuid');
88
const compressing = require('../..');
99
const assert = require('assert');
1010
const dircompare = require('dir-compare');
11-
const mkdirp = require('mz-modules/mkdirp');
1211

1312
describe('test/tar/index.test.js', () => {
1413
afterEach(mm.restore);
@@ -108,7 +107,7 @@ describe('test/tar/index.test.js', () => {
108107
assert(fs.existsSync(destFile));
109108

110109
const destDir = path.join(os.tmpdir(), uuid.v4());
111-
await mkdirp(destDir);
110+
await fs.promises.mkdir(destDir, { recursive: true });
112111
await compressing.tar.uncompress(destFile, destDir);
113112
const stat = fs.statSync(path.join(destDir, 'bin'));
114113
assert(stat.mode === originStat.mode);

test/tar/stream.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const fs = require('fs');
55
const os = require('os');
66
const path = require('path');
77
const uuid = require('uuid');
8-
const pump = require('pump');
8+
const { pipeline: pump } = require('stream');
99
const compressing = require('../..');
1010
const assert = require('assert');
1111
const TarStream = compressing.tar.Stream;

0 commit comments

Comments
 (0)