Comparing version 0.8.1 to 0.8.2
52
cli.js
@@ -130,22 +130,22 @@ #!/usr/bin/env node | ||
) | ||
.use('progressBar', (dataSlice, store) => store.get('progressBar').next(dataSlice.size)) | ||
.on('retry', data => { | ||
if (data.meta === true) log(getRetryMessage(data)); | ||
else data.store.get('progressBar').print(getRetryMessage(data)); | ||
}) | ||
.on('end', () => { | ||
const message = getEndMessage(request); | ||
if (request.store.has('progressBar')) request.store.get('progressBar').end(message.concat('').join('\n')); | ||
else log(message.join('\n')); | ||
.use('progressBar', (dataSlice, store) => store.get('progressBar').next(dataSlice.size)); | ||
request | ||
.on('retry', data => { | ||
if (request.store.has('progressBar')) data.store.get('progressBar').print(getRetryMessage(data)); | ||
else log(getRetryMessage(data)); | ||
}) | ||
.on('end', () => { | ||
const message = getEndMessage(request); | ||
if (request.store.has('progressBar')) request.store.get('progressBar').end(message.concat('').join('\n')); | ||
else log(message.join('\n')); | ||
}) | ||
.on('error', err => { | ||
const message = cStringd(`:{color(red)}[!]:{color:close} :{error}`, { | ||
error: 'index' in err ? 'An error occurred [:{errMessage}]' : ':{errMessage}', | ||
errMessage: err && (err.message || err.stack), | ||
}); | ||
else request.on('retry', data => log(getRetryMessage(data))).on('end', () => log(getEndMessage(request).join('\n'))); | ||
request.on('error', err => { | ||
const message = cStringd(`:{color(red)}[!]:{color:close} :{error}`, { | ||
error: 'index' in err ? 'An error occurred [:{errMessage}]' : ':{errMessage}', | ||
errMessage: err && (err.message || err.stack), | ||
if (request.store.has('progressBar')) request.store.get('progressBar').end(message, '\n'); | ||
else error(message); | ||
}); | ||
if (request.store.has('progressBar')) request.store.get('progressBar').end(message, '\n'); | ||
else error(message); | ||
}); | ||
@@ -169,7 +169,7 @@ function hasPermissions(file, mode) { | ||
request.setHeadHandler(({headers, acceptsRanges, chunks, totalSize}) => { | ||
request.setHeadHandler(({headers, acceptsRanges, start, chunks, totalSize}) => { | ||
const {type} = contentType.parse(headers['content-type'] || 'application/octet-stream'); | ||
const ext = mime.extension(type); | ||
const {filename} = headers['content-disposition'] ? contentDisposition.parse(headers['content-disposition']).parameters : {}; | ||
let [offset, isSameResumeFile, outputFileExists, outputFileStat] = [, false, , ,]; | ||
let [offset, isSameResumeFile, outputFileExists, outputFileStat] = [start, false, , ,]; | ||
outputFile = process.stdout.isTTY | ||
@@ -194,5 +194,5 @@ ? (_path => | ||
if (options.overwrite) { | ||
log( | ||
error( | ||
cStringd( | ||
`:{color(yellow)}[i]:{color:close(yellow)} :{color(cyan)}\`--continue\`:{color:close(cyan)} and :{color(cyan)}\`--overwrite\`:{color:close(cyan)} cannot be used together; exiting...`, | ||
`:{color(red)}[i]:{color:close(red)} :{color(cyan)}\`--continue\`:{color:close(cyan)} and :{color(cyan)}\`--overwrite\`:{color:close(cyan)} cannot be used together; exiting...`, | ||
), | ||
@@ -215,2 +215,10 @@ ); | ||
); | ||
} else { | ||
error( | ||
cStringd( | ||
':{color(red)}[i]:{color:close(red)} :{color(cyan)}`--continue`:{color:close(cyan)}: No such file or directory: :{resumeFile}', | ||
{resumeFile}, | ||
), | ||
); | ||
process.exit(); | ||
} | ||
@@ -217,0 +225,0 @@ } |
@@ -99,2 +99,3 @@ /* eslint-disable no-underscore-dangle */ | ||
headers, | ||
start: store.start, | ||
totalSize: store.totalSize, | ||
@@ -214,2 +215,13 @@ acceptsRanges: store.chunkable, | ||
store.loaded = true; | ||
if (loadData.size < 0) { | ||
this.destroy( | ||
new Error(`The requested size is greater than the resource can provide [${store.start} > ${store.totalSize}]`), | ||
); | ||
return; | ||
} | ||
if (loadData.size === 0) { | ||
store.ended = true; | ||
this.push(null); | ||
return; | ||
} | ||
this.emit('loaded', loadData); | ||
@@ -216,0 +228,0 @@ Object.entries(store.withStack).forEach(([tag, fn]) => { |
{ | ||
"name": "libxget", | ||
"version": "0.8.1", | ||
"version": "0.8.2", | ||
"description": "Non-interractive, chunk-based, web content retriever", | ||
@@ -64,5 +64,5 @@ "main": "lib/index.js", | ||
"xbytes": "^1.6.2", | ||
"xprogress": "^0.17.2", | ||
"xresilient": "^0.8.1-1" | ||
"xprogress": "^0.17.3", | ||
"xresilient": "^0.8.2" | ||
} | ||
} |
@@ -27,3 +27,3 @@ # libxget-js | ||
$ xget -V | ||
v0.8.1 | ||
v0.8.2 | ||
``` | ||
@@ -307,2 +307,3 @@ | ||
- `headers`: <[IncomingHttpHeaders][incominghttpheaders]> GET headers from the URL. | ||
- `start`: <[number][]> Relayed `.start` field from [XGETOptions](#xgetoptions). | ||
- `totalSize`: <[number][]> Actual size of the resource without an offset. | ||
@@ -309,0 +310,0 @@ - `acceptsRanges`: <[boolean][]> Whether or not the URL resource accepts byte ranges. |
@@ -92,2 +92,3 @@ // Type definitions for libxget-js | ||
headers: IncomingHttpHeaders; | ||
start: number; | ||
totalSize: number; | ||
@@ -94,0 +95,0 @@ acceptsRanges: boolean; |
75737
1126
395
Updatedxprogress@^0.17.3
Updatedxresilient@^0.8.2