dl-vampire
v2.1.7
Published
download file like a vampire
Maintainers
Readme
dl-vampire
download file like a vampire

Highlight
- [x] skip mechanism, local file & content-length
- [x] retry / timeout support
- [x] stream to file, not ate memory like the download module
- [x] download progress support, via awesome got module
Install
$ npm i dl-vampire --saveAPI
import dl, { Vampire, readUrl } from 'dl-vampire'dl(options: DlOptions) => Promise<{skip: boolean}>
| name | type | required | default value | description |
| ----------------------------- | -------------------- | -------- | ---------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| options.url | String | true | | the download url |
| options.file | String | true | | the local target file path |
| options.onprogress | function(progress) | | | got downloadProgress event listener |
| options.retry | Object | | {times: 5, timeout: false} | retry options, will pass to promise.retry |
| options.skipExists | boolean | | true | if local file already exists AND file stat size match response content-length size, the download will be skiped |
| options.expectSize | number | | | validate local file stat.size === expectSize, if check pass the download will be skiped |
| options.expectHash | string | | | validate local file file.hash === expectHash, using expectHashAlgorithm if check pass the download will be skiped |
| options.expectHashAlgorithm | string | | 'md5' | the expect hash algorithm, default md5 |
| options.useChromeUa | Boolean | | true | use user-agent of the Chrome Browser |
| options.useProxyEnv | Boolean | | true | use proxy-agent module, will use http_proxy / https_proxy / all_proxy env variable |
| options.requestOptions | Object | | | custom request options, see request options |
- if finally the download is skiped, the return promise will resolve to
{skip: true} - else it will resolve to
{skip: false}
options.retry.*
| name | type | description |
| ----------------------- | ---------------------- | ----------------------------------------------------------------------------------------------------------- |
| options.retry.times | Number | max retry times |
| options.retry.timeout | Number / false | false disables timeout check, Number: max wait in ms |
| options.retry.onerror | function(err, index) | when retry happens, this hook will be called, whether a normal error or a timeout error, index is 0 based |
more see https://github.com/magicdawn/promise.retry
ts types
// options for dl() / readUrl()
import type { DlOptions, ReadUrlOptions, ReadUrlOptionsWithEncoding } from 'dl-vampire'
// onpregress type, and progress arg type
import type { OnProgress, Progress } from 'dl-vampire'Changelog
License
the MIT License http://magicdawn.mit-license.org
