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): RetryPolicy
Parameters
- maxRetryCount:
number
Return Type
RetryPolicy
Defined in: packages/file-transfer/retry.ts:46
createProgressController
createProgressController(onProgress: ProgressController): ProgressController
Parameters
- 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:241
getDefaultAgent
getDefaultAgent(retry: RetryOptions, defaultMaxRedirections: number= 5): ComposedDispatcher
Parameters
- retry:
RetryOptions
- defaultMaxRedirections:
number
Return Type
ComposedDispatcher
Defined in: packages/file-transfer/agent.ts:3
getDownloadBaseOptions
getDownloadBaseOptions(options: T): DownloadBaseOptions
Parameters
- options:
T
Return Type
DownloadBaseOptions
Defined in: packages/file-transfer/download.ts:23
isRangePolicy
isRangePolicy(rangeOptions: RangePolicy | DefaultRangePolicyOptions): rangeOptions is RangePolicy
Parameters
- rangeOptions:
RangePolicy | DefaultRangePolicyOptions
Return Type
rangeOptions is RangePolicy
Defined in: packages/file-transfer/rangePolicy.ts:10
isRetryHandler
isRetryHandler(options: RetryPolicy | DefaultRetryPolicyOptions): options is RetryPolicy
Parameters
- options:
RetryPolicy | DefaultRetryPolicyOptions
Return Type
options is RetryPolicy
Defined in: packages/file-transfer/retry.ts:35
isValidator
isValidator(options: Validator | ChecksumValidatorOptions): options is Validator
Parameters
- options:
Validator | ChecksumValidatorOptions
Return Type
options is Validator
Defined in: packages/file-transfer/validator.ts:38
resolveProgressController
resolveProgressController(controller: ProgressController): ProgressController
Parameters
- controller:
ProgressController
Return Type
ProgressController
Defined in: packages/file-transfer/progress.ts:15
resolveRangePolicy
resolveRangePolicy(rangeOptions: RangePolicy | DefaultRangePolicyOptions): RangePolicy
Parameters
- rangeOptions:
RangePolicy | DefaultRangePolicyOptions
Return Type
RangePolicy
Defined in: packages/file-transfer/rangePolicy.ts:15
resolveRetryHandler
resolveRetryHandler(options: RetryPolicy | DefaultRetryPolicyOptions): RetryPolicy
Parameters
- options:
RetryPolicy | DefaultRetryPolicyOptions
Return Type
RetryPolicy
Defined in: packages/file-transfer/retry.ts:40
resolveValidator
resolveValidator(options: Validator | ChecksumValidatorOptions): Validator | undefined
Parameters
- options:
Validator | ChecksumValidatorOptions
Return Type
Validator | undefined
Defined in: packages/file-transfer/validator.ts:43