| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 8ac1164 commit ba52b7b
16 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -7,10 +7,14 @@ on: | |||
| 7 | 7 | pull_request: | |
| 8 | 8 | branches: [ master ] | |
| 9 | 9 | ||
| 10 | + merge_group: | ||
| 11 | + | ||
| 10 | 12 | jobs: | |
| 11 | 13 | Job: | |
| 12 | 14 | name: Node.js | |
| 13 | 15 | uses: node-modules/github-actions/.github/workflows/node-test.yml@master | |
| 14 | 16 | with: | |
| 15 | 17 | os: 'ubuntu-latest, macos-latest, windows-latest' | |
| 16 | 18 | version: '18, 20, 22, 24' | |
| 19 | + secrets: | ||
| 20 | + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -6,8 +6,7 @@ on: | |||
| 6 | 6 | ||
| 7 | 7 | jobs: | |
| 8 | 8 | release: | |
| 9 | - name: Node.js | ||
| 10 | - uses: node-modules/github-actions/.github/workflows/node-release.yml@master | ||
| 9 | + name: NPM | ||
| 10 | + uses: node-modules/github-actions/.github/workflows/npm-release.yml@master | ||
| 11 | 11 | secrets: | |
| 12 | - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} | ||
| 13 | 12 | GIT_TOKEN: ${{ secrets.GIT_TOKEN }} | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -7,3 +7,4 @@ test/fixtures/chinese-path-test.zip | |||
| 7 | 7 | .DS_Store | |
| 8 | 8 | yarn.lock | |
| 9 | 9 | !test/fixtures/symlink/node_modules | |
| 10 | + pnpm-lock.yaml | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -2,6 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | 3 | // https://github.com/thejoshwolfe/yauzl#no-streaming-unzip-api | |
| 4 | 4 | ||
| 5 | + const debug = require('util').debuglog('compressing/zip/uncompress_stream'); | ||
| 5 | 6 | const yauzl = require('@eggjs/yauzl'); | |
| 6 | 7 | const stream = require('stream'); | |
| 7 | 8 | const UncompressBaseStream = require('../base_write_stream'); | |
@@ -38,12 +39,20 @@ class ZipUncompressStream extends UncompressBaseStream { | |||
| 38 | 39 | if (this._zipFileNameEncoding === 'utf-8') { | |
| 39 | 40 | this._zipFileNameEncoding = 'utf8'; | |
| 40 | 41 | } | |
| 42 | + this._finalCallback = err => { | ||
| 43 | + if (err) { | ||
| 44 | + debug('finalCallback, error: %j', err); | ||
| 45 | + return this.emit('error', err); | ||
| 46 | + } | ||
| 47 | + this.emit('finish'); | ||
| 48 | + }; | ||
| 41 | 49 | ||
| 42 | 50 | this[YAUZL_CALLBACK] = this[YAUZL_CALLBACK].bind(this); | |
| 43 | 51 | ||
| 44 | 52 | const sourceType = utils.sourceType(opts.source); | |
| 45 | 53 | ||
| 46 | 54 | const yauzlOpts = this._yauzlOpts = Object.assign({}, DEFAULTS, opts.yauzl); | |
| 55 | + debug('sourceType: %s, yauzlOpts: %j', sourceType, yauzlOpts); | ||
| 47 | 56 | if (sourceType === 'file') { | |
| 48 | 57 | yauzl.open(opts.source, yauzlOpts, this[YAUZL_CALLBACK]); | |
| 49 | 58 | return; | |
@@ -60,27 +69,26 @@ class ZipUncompressStream extends UncompressBaseStream { | |||
| 60 | 69 | .catch(e => this.emit('error', e)); | |
| 61 | 70 | return; | |
| 62 | 71 | } | |
| 63 | - | ||
| 64 | - this.on('pipe', srcStream => { | ||
| 65 | - srcStream.unpipe(srcStream); | ||
| 66 | - | ||
| 67 | - utils.streamToBuffer(srcStream) | ||
| 68 | - .then(buf => { | ||
| 69 | - this._chunks.push(buf); | ||
| 70 | - buf = Buffer.concat(this._chunks); | ||
| 71 | - yauzl.fromBuffer(buf, yauzlOpts, this[YAUZL_CALLBACK]); | ||
| 72 | - }) | ||
| 73 | - .catch(e => this.emit('error', e)); | ||
| 74 | - }); | ||
| 75 | 72 | } | |
| 76 | 73 | ||
| 77 | - _write(chunk) { | ||
| 78 | - // push to _chunks array, this will only happen once, for stream will be unpiped. | ||
| 74 | + _write(chunk, _encoding, callback) { | ||
| 79 | 75 | this._chunks.push(chunk); | |
| 76 | + debug('write size: %d, chunks: %d', chunk.length, this._chunks.length); | ||
| 77 | + callback(); | ||
| 78 | + } | ||
| 79 | + | ||
| 80 | + _final(callback) { | ||
| 81 | + const buf = Buffer.concat(this._chunks); | ||
| 82 | + debug('final, buf size: %d, chunks: %d', buf.length, this._chunks.length); | ||
| 83 | + this._finalCallback = callback; | ||
| 84 | + yauzl.fromBuffer(buf, this._yauzlOpts, this[YAUZL_CALLBACK]); | ||
| 80 | 85 | } | |
| 81 | 86 | ||
| 82 | 87 | [YAUZL_CALLBACK](err, zipFile) { | |
| 83 | - if (err) return this.emit('error', err); | ||
| 88 | + if (err) { | ||
| 89 | + debug('yauzl error', err); | ||
| 90 | + return this._finalCallback(err); | ||
| 91 | + } | ||
| 84 | 92 | ||
| 85 | 93 | zipFile.readEntry(); | |
| 86 | 94 | ||
@@ -106,17 +114,22 @@ class ZipUncompressStream extends UncompressBaseStream { | |||
| 106 | 114 | ||
| 107 | 115 | if (type === 'file') { | |
| 108 | 116 | zipFile.openReadStream(entry, (err, readStream) => { | |
| 109 | - if (err) return this.emit('error', err); | ||
| 117 | + if (err) { | ||
| 118 | + debug('file, error: %j', err); | ||
| 119 | + return this._finalCallback(err); | ||
| 120 | + } | ||
| 121 | + debug('file, header: %j', header); | ||
| 110 | 122 | this.emit('entry', header, readStream, next); | |
| 111 | 123 | }); | |
| 112 | 124 | } else { // directory | |
| 113 | 125 | const placeholder = new stream.Readable({ read() {} }); | |
| 126 | + debug('directory, header: %j', header); | ||
| 114 | 127 | this.emit('entry', header, placeholder, next); | |
| 115 | 128 | setImmediate(() => placeholder.emit('end')); | |
| 116 | 129 | } | |
| 117 | 130 | }) | |
| 118 | - .on('end', () => this.emit('finish')) | ||
| 119 | - .on('error', err => this.emit('error', err)); | ||
| 131 | + .on('end', () => this._finalCallback()) | ||
| 132 | + .on('error', err => this._finalCallback(err)); | ||
| 120 | 133 | ||
| 121 | 134 | function next() { | |
| 122 | 135 | zipFile.readEntry(); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -11,7 +11,7 @@ describe('test/gzip/file_stream.test.js', () => { | |||
| 11 | 11 | const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); | |
| 12 | 12 | const sourceStream = fs.createReadStream(sourceFile); | |
| 13 | 13 | const destFile = path.join(os.tmpdir(), uuid.v4() + '.log.gz'); | |
| 14 | - console.log('destFile', destFile); | ||
| 14 | + // console.log('destFile', destFile); | ||
| 15 | 15 | const gzipStream = new compressing.gzip.FileStream(); | |
| 16 | 16 | const destStream = fs.createWriteStream(destFile); | |
| 17 | 17 | pump(sourceStream, gzipStream, destStream, err => { | |
@@ -24,7 +24,7 @@ describe('test/gzip/file_stream.test.js', () => { | |||
| 24 | 24 | it('should compress according to file path', done => { | |
| 25 | 25 | const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); | |
| 26 | 26 | const destFile = path.join(os.tmpdir(), uuid.v4() + '.log.gz'); | |
| 27 | - console.log('destFile', destFile); | ||
| 27 | + // console.log('destFile', destFile); | ||
| 28 | 28 | const gzipStream = new compressing.gzip.FileStream({ source: sourceFile }); | |
| 29 | 29 | const destStream = fs.createWriteStream(destFile); | |
| 30 | 30 | pump(gzipStream, destStream, err => { | |
@@ -44,14 +44,14 @@ describe('test/gzip/file_stream.test.js', () => { | |||
| 44 | 44 | ||
| 45 | 45 | const destFile = path.join(os.tmpdir(), uuid.v4() + '.log.gz'); | |
| 46 | 46 | await fs.promises.writeFile(destFile, Buffer.concat(gzipChunks)); | |
| 47 | - console.log(destFile); | ||
| 47 | + // console.log(destFile); | ||
| 48 | 48 | }); | |
| 49 | 49 | ||
| 50 | 50 | it('should compress buffer', done => { | |
| 51 | 51 | const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); | |
| 52 | 52 | const sourceBuffer = fs.readFileSync(sourceFile); | |
| 53 | 53 | const destFile = path.join(os.tmpdir(), uuid.v4() + '.log.gz'); | |
| 54 | - console.log('destFile', destFile); | ||
| 54 | + // console.log('destFile', destFile); | ||
| 55 | 55 | const destStream = fs.createWriteStream(destFile); | |
| 56 | 56 | const gzipStream = new compressing.gzip.FileStream({ source: sourceBuffer }); | |
| 57 | 57 | pump(gzipStream, destStream, err => { | |
@@ -66,7 +66,7 @@ describe('test/gzip/file_stream.test.js', () => { | |||
| 66 | 66 | const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); | |
| 67 | 67 | const sourceStream = fs.createReadStream(sourceFile); | |
| 68 | 68 | const destFile = path.join(os.tmpdir(), uuid.v4() + '.log.gz'); | |
| 69 | - console.log('destFile', destFile); | ||
| 69 | + // console.log('destFile', destFile); | ||
| 70 | 70 | const destStream = fs.createWriteStream(destFile); | |
| 71 | 71 | const gzipStream = new compressing.gzip.FileStream({ source: sourceStream }); | |
| 72 | 72 | pump(gzipStream, destStream, err => { | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -13,7 +13,7 @@ describe('test/gzip/index.test.js', () => { | |||
| 13 | 13 | it('gzip.compressFile(file, stream)', async () => { | |
| 14 | 14 | const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); | |
| 15 | 15 | const destFile = path.join(os.tmpdir(), uuid.v4() + '.log.gz'); | |
| 16 | - console.log('destFile', destFile); | ||
| 16 | + // console.log('destFile', destFile); | ||
| 17 | 17 | const fileStream = fs.createWriteStream(destFile); | |
| 18 | 18 | await compressing.gzip.compressFile(sourceFile, fileStream); | |
| 19 | 19 | assert(fs.existsSync(destFile)); | |
@@ -38,7 +38,7 @@ describe('test/gzip/index.test.js', () => { | |||
| 38 | 38 | const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); | |
| 39 | 39 | const sourceBuffer = fs.readFileSync(sourceFile); | |
| 40 | 40 | const destFile = path.join(os.tmpdir(), uuid.v4() + '.log.gz'); | |
| 41 | - console.log('destFile', destFile); | ||
| 41 | + // console.log('destFile', destFile); | ||
| 42 | 42 | const fileStream = fs.createWriteStream(destFile); | |
| 43 | 43 | await compressing.gzip.compressFile(sourceBuffer, fileStream); | |
| 44 | 44 | assert(fs.existsSync(destFile)); | |
@@ -48,7 +48,7 @@ describe('test/gzip/index.test.js', () => { | |||
| 48 | 48 | const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); | |
| 49 | 49 | const sourceStream = fs.createReadStream(sourceFile); | |
| 50 | 50 | const destFile = path.join(os.tmpdir(), uuid.v4() + '.log.gz'); | |
| 51 | - console.log('destFile', destFile); | ||
| 51 | + // console.log('destFile', destFile); | ||
| 52 | 52 | const fileStream = fs.createWriteStream(destFile); | |
| 53 | 53 | await compressing.gzip.compressFile(sourceStream, fileStream); | |
| 54 | 54 | assert(fs.existsSync(destFile)); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -15,7 +15,7 @@ describe('test/tar/file_stream.test.js', () => { | |||
| 15 | 15 | const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); | |
| 16 | 16 | const sourceStream = fs.createReadStream(sourceFile); | |
| 17 | 17 | const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); | |
| 18 | - console.log('dest', destFile); | ||
| 18 | + // console.log('dest', destFile); | ||
| 19 | 19 | ||
| 20 | 20 | mm(console, 'warn', msg => { | |
| 21 | 21 | assert(msg === 'You should specify the size of streamming data by opts.size to prevent all streaming data from loading into memory. If you are sure about memory cost, pass opts.suppressSizeWarning: true to suppress this warning'); | |
@@ -34,7 +34,7 @@ describe('test/tar/file_stream.test.js', () => { | |||
| 34 | 34 | const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); | |
| 35 | 35 | const sourceStream = fs.createReadStream(sourceFile); | |
| 36 | 36 | const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); | |
| 37 | - console.log('dest', destFile); | ||
| 37 | + // console.log('dest', destFile); | ||
| 38 | 38 | ||
| 39 | 39 | mm(console, 'warn', msg => { | |
| 40 | 40 | assert(!msg); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -16,7 +16,7 @@ describe('test/tar/index.test.js', () => { | |||
| 16 | 16 | it('tar.compressFile(file, stream)', async () => { | |
| 17 | 17 | const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); | |
| 18 | 18 | const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); | |
| 19 | - console.log('dest', destFile); | ||
| 19 | + // console.log('dest', destFile); | ||
| 20 | 20 | const fileStream = fs.createWriteStream(destFile); | |
| 21 | 21 | await compressing.tar.compressFile(sourceFile, fileStream); | |
| 22 | 22 | assert(fs.existsSync(destFile)); | |
@@ -25,7 +25,7 @@ describe('test/tar/index.test.js', () => { | |||
| 25 | 25 | it('tar.compressFile(file, stream, { relativePath })', async () => { | |
| 26 | 26 | const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); | |
| 27 | 27 | const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); | |
| 28 | - console.log('dest', destFile); | ||
| 28 | + // console.log('dest', destFile); | ||
| 29 | 29 | const fileStream = fs.createWriteStream(destFile); | |
| 30 | 30 | await compressing.tar.compressFile(sourceFile, fileStream, { relativePath: 'dd/dd.log' }); | |
| 31 | 31 | assert(fs.existsSync(destFile)); | |
@@ -35,7 +35,7 @@ describe('test/tar/index.test.js', () => { | |||
| 35 | 35 | it('tar.compressFile(file, stream) should error if file not exist', async () => { | |
| 36 | 36 | const sourceFile = path.join(__dirname, '..', 'fixtures', 'not-exist.log'); | |
| 37 | 37 | const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); | |
| 38 | - console.log('dest', destFile); | ||
| 38 | + // console.log('dest', destFile); | ||
| 39 | 39 | const fileStream = fs.createWriteStream(destFile); | |
| 40 | 40 | let err; | |
| 41 | 41 | try { | |
@@ -65,7 +65,7 @@ describe('test/tar/index.test.js', () => { | |||
| 65 | 65 | const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); | |
| 66 | 66 | const sourceStream = fs.createReadStream(sourceFile); | |
| 67 | 67 | const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); | |
| 68 | - console.log('dest', destFile); | ||
| 68 | + // console.log('dest', destFile); | ||
| 69 | 69 | const fileStream = fs.createWriteStream(destFile); | |
| 70 | 70 | mm(console, 'warn', msg => { | |
| 71 | 71 | assert(msg === 'You should specify the size of streamming data by opts.size to prevent all streaming data from loading into memory. If you are sure about memory cost, pass opts.suppressSizeWarning: true to suppress this warning'); | |
@@ -78,7 +78,7 @@ describe('test/tar/index.test.js', () => { | |||
| 78 | 78 | const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); | |
| 79 | 79 | const sourceStream = fs.createReadStream(sourceFile); | |
| 80 | 80 | const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); | |
| 81 | - console.log('destFile', destFile); | ||
| 81 | + // console.log('destFile', destFile); | ||
| 82 | 82 | const fileStream = fs.createWriteStream(destFile); | |
| 83 | 83 | mm(console, 'warn', msg => { | |
| 84 | 84 | assert(!msg); | |
@@ -91,7 +91,7 @@ describe('test/tar/index.test.js', () => { | |||
| 91 | 91 | const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); | |
| 92 | 92 | const sourceBuffer = fs.readFileSync(sourceFile); | |
| 93 | 93 | const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); | |
| 94 | - console.log('dest', destFile); | ||
| 94 | + // console.log('dest', destFile); | ||
| 95 | 95 | const fileStream = fs.createWriteStream(destFile); | |
| 96 | 96 | await compressing.tar.compressFile(sourceBuffer, fileStream, { relativePath: 'xx.log' }); | |
| 97 | 97 | assert(fs.existsSync(destFile)); | |
@@ -101,7 +101,7 @@ describe('test/tar/index.test.js', () => { | |||
| 101 | 101 | const sourceFile = path.join(__dirname, '..', 'fixtures/xxx/bin'); | |
| 102 | 102 | const originStat = fs.statSync(sourceFile); | |
| 103 | 103 | const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); | |
| 104 | - console.log('dest', destFile); | ||
| 104 | + // console.log('dest', destFile); | ||
| 105 | 105 | const fileStream = fs.createWriteStream(destFile); | |
| 106 | 106 | await compressing.tar.compressFile(sourceFile, fileStream); | |
| 107 | 107 | assert(fs.existsSync(destFile)); | |
@@ -111,7 +111,7 @@ describe('test/tar/index.test.js', () => { | |||
| 111 | 111 | await compressing.tar.uncompress(destFile, destDir); | |
| 112 | 112 | const stat = fs.statSync(path.join(destDir, 'bin')); | |
| 113 | 113 | assert(stat.mode === originStat.mode); | |
| 114 | - console.log(destDir); | ||
| 114 | + // console.log(destDir); | ||
| 115 | 115 | }); | |
| 116 | 116 | ||
| 117 | 117 | }); | |
@@ -120,7 +120,7 @@ describe('test/tar/index.test.js', () => { | |||
| 120 | 120 | it('tar.compressDir(dir, destFile)', async () => { | |
| 121 | 121 | const sourceDir = path.join(__dirname, '..', 'fixtures'); | |
| 122 | 122 | const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); | |
| 123 | - console.log('dest', destFile); | ||
| 123 | + // console.log('dest', destFile); | ||
| 124 | 124 | await compressing.tar.compressDir(sourceDir, destFile); | |
| 125 | 125 | assert(fs.existsSync(destFile)); | |
| 126 | 126 | }); | |
@@ -129,7 +129,7 @@ describe('test/tar/index.test.js', () => { | |||
| 129 | 129 | const sourceDir = path.join(__dirname, '..', 'fixtures'); | |
| 130 | 130 | const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); | |
| 131 | 131 | const destStream = fs.createWriteStream(destFile); | |
| 132 | - console.log('dest', destFile); | ||
| 132 | + // console.log('dest', destFile); | ||
| 133 | 133 | await compressing.tar.compressDir(sourceDir, destStream); | |
| 134 | 134 | assert(fs.existsSync(destFile)); | |
| 135 | 135 | }); | |
@@ -138,15 +138,15 @@ describe('test/tar/index.test.js', () => { | |||
| 138 | 138 | const sourceDir = path.join(__dirname, '..', 'fixtures'); | |
| 139 | 139 | const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); | |
| 140 | 140 | const destStream = fs.createWriteStream(destFile); | |
| 141 | - console.log('dest', destFile); | ||
| 141 | + // console.log('dest', destFile); | ||
| 142 | 142 | await compressing.tar.compressDir(sourceDir, destStream, { ignoreBase: true }); | |
| 143 | 143 | assert(fs.existsSync(destFile)); | |
| 144 | 144 | }); | |
| 145 | 145 | ||
| 146 | 146 | it('tar.compressDir(dir, destStream) should return promise', async () => { | |
| 147 | 147 | const sourceDir = path.join(__dirname, '..', 'fixtures'); | |
| 148 | 148 | const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); | |
| 149 | - console.log('dest', destFile); | ||
| 149 | + // console.log('dest', destFile); | ||
| 150 | 150 | await compressing.tar.compressDir(sourceDir, destFile); | |
| 151 | 151 | assert(fs.existsSync(destFile)); | |
| 152 | 152 | }); | |
@@ -155,7 +155,7 @@ describe('test/tar/index.test.js', () => { | |||
| 155 | 155 | const sourceDir = path.join(__dirname, '..', 'fixtures'); | |
| 156 | 156 | const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); | |
| 157 | 157 | const destStream = fs.createWriteStream(destFile); | |
| 158 | - console.log('dest', destFile); | ||
| 158 | + // console.log('dest', destFile); | ||
| 159 | 159 | setImmediate(() => { | |
| 160 | 160 | destStream.emit('error', new Error('xxx')); | |
| 161 | 161 | }); | |
| Back | FazBrowse Home | New Git URL |
0 commit comments