Download Core 
Provide a high performance download file function based on undici.
- Support download by range request - Customize the range size
 
- Support validating the checksum - If the validation matched, it won't download the file.
- Also support customize validation.
 
- Support download and fallback to another url
- Support AbortSignal
- Fully customizable retry logic
Usage 
Download the file by url
import { download } from '@xmcl/file-transfer'
await download({
  url: 'http://example.com/file.zip', // required
  destination: 'file.zip', // required
  headers: { // optional
    'customized': 'header'
  },
  abortSignal: new AbortController().signal, // optional
  progressController: (url, chunkSize, progress, total) => { // optional
    console.log(url)
    console.log(chunkSize)
    console.log(progress)
    console.log(total)
  },
  // use validator to validate the file
  validator: { // optional
    algorithm: 'sha1',
    hash: '1234567890abcdef1234567890abcdef12345678',
  }
})Download with fallback url
import { download } from '@xmcl/file-transfer'
await download({
  // using array to fallback
  url: ['http://example.com/file.zip', 'http://example.com/fallback.zip'],
  destination: 'file.zip',
})🧾 Classes 
🤝 Interfaces 
🏭 Functions 
createDefaultRetryHandler 
createDefaultRetryHandler(maxRetryCount: number= 3): RetryPolicyParameters 
- maxRetryCount: number
Return Type 
- RetryPolicy
Defined in: packages/file-transfer/retry.ts:46
createProgressController 
createProgressController(onProgress: ProgressController): ProgressControllerParameters 
- onProgress: ProgressController
Return Type 
- ProgressController
Defined in: packages/file-transfer/progress.ts:8
download 
download(options: DownloadOptions): Promise<void>Download url or urls to a file path. This process is abortable, it's compatible with the dom like AbortSignal.
Parameters 
- options: DownloadOptions
Return Type 
- Promise<void>
Defined in: packages/file-transfer/download.ts:266
getDefaultAgent 
getDefaultAgent(retry: RetryOptions, defaultMaxRedirections: number= 5): ComposedDispatcherParameters 
- retry: RetryOptions
- defaultMaxRedirections: number
Return Type 
- ComposedDispatcher
Defined in: packages/file-transfer/agent.ts:3
getDownloadBaseOptions 
getDownloadBaseOptions(options: T): DownloadBaseOptionsParameters 
- options: T
Return Type 
- DownloadBaseOptions
Defined in: packages/file-transfer/download.ts:23
isRangePolicy 
isRangePolicy(rangeOptions: RangePolicy | DefaultRangePolicyOptions): rangeOptions is RangePolicyParameters 
- rangeOptions: RangePolicy | DefaultRangePolicyOptions
Return Type 
- rangeOptions is RangePolicy
Defined in: packages/file-transfer/rangePolicy.ts:10
isRetryHandler 
isRetryHandler(options: RetryPolicy | DefaultRetryPolicyOptions): options is RetryPolicyParameters 
- options: RetryPolicy | DefaultRetryPolicyOptions
Return Type 
- options is RetryPolicy
Defined in: packages/file-transfer/retry.ts:35
isValidator 
isValidator(options: Validator | ChecksumValidatorOptions): options is ValidatorParameters 
- options: Validator | ChecksumValidatorOptions
Return Type 
- options is Validator
Defined in: packages/file-transfer/validator.ts:38
resolveProgressController 
resolveProgressController(controller: ProgressController): ProgressControllerParameters 
- controller: ProgressController
Return Type 
- ProgressController
Defined in: packages/file-transfer/progress.ts:15
resolveRangePolicy 
resolveRangePolicy(rangeOptions: RangePolicy | DefaultRangePolicyOptions): RangePolicyParameters 
- rangeOptions: RangePolicy | DefaultRangePolicyOptions
Return Type 
- RangePolicy
Defined in: packages/file-transfer/rangePolicy.ts:15
resolveRetryHandler 
resolveRetryHandler(options: RetryPolicy | DefaultRetryPolicyOptions): RetryPolicyParameters 
- options: RetryPolicy | DefaultRetryPolicyOptions
Return Type 
- RetryPolicy
Defined in: packages/file-transfer/retry.ts:40
resolveValidator 
resolveValidator(options: Validator | ChecksumValidatorOptions): Validator | undefinedParameters 
- options: Validator | ChecksumValidatorOptions
Return Type 
- Validator | undefined
Defined in: packages/file-transfer/validator.ts:43