Skip to content

Latest commit

 

History

History
77 lines (55 loc) · 5.42 KB

README.md

File metadata and controls

77 lines (55 loc) · 5.42 KB

dl-vampire

download file like a vampire

Build Status Coverage Status npm version npm downloads npm license

vampire

Highlight

  • skip mechanism, local file & content-length
  • retry / timeout support
  • stream to file, not ate memory like the download module
  • download progress support, via awesome got module

Install

$ npm i dl-vampire --save

API

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

CHANGELOG.md

License

the MIT License http://magicdawn.mit-license.org