proload
v1.0.0-beta.4
Published
File & Buffer URI downloader with a progress bar, compatible with ora.
Downloads
7
Maintainers
Readme
proload
File & Buffer URI downloader with a progress bar, compatible with ora.
TOC
Install
npm i -D proload
Features
- Ora optional integration (= ability to attach an existing ora instance).
- Automatically creates the destination directory if it does not exist.
- Can return a buffer of the data instead of creating a new file.
API
proload(uri: string, options?: Object): Promise<Buffer>
proload(uri: string, destFilePath: string, options?: Object): Promise<Buffer>
Options
{
request: request.CoreOptions; // @see https://github.com/request/request#requestoptions-callback
spinner: {
instance: ora.Ora;
progressPrefix: string; // Prefix message while downloading (before the `XXX%`)
progressSuffix: string; // Suffix message while downloading (after the `XXX%`)
successMessage: string; // Success message once the download has ended
}
}
Examples
Download to Buffer
import proload from "proload";
(async () => {
const dataBuffer = await proload("https://www.gutenberg.org/files/308/308-h.zip");
console.log(dataBuffer.toString());
})();
Download to File
import proload from "proload";
(async () => {
await proload("https://www.gutenberg.org/files/308/308-h.zip", "./Three Men in a Boat.zip");
})();
Existing Ora Spinner
import ora from "ora";
import proload from "proload";
const spinner = ora();
(async () => {
const uri = "https://www.gutenberg.org/files/308/308-h.zip";
const options = {
spinner: {
instance: spinner
}
};
const dataBuffer = await proload(uri, options);
// Or:
await proload(uri, "./Three Men in a Boat.zip", options);
// Don't forget that the spinner is on your side, so you will have to stop it yourself
// or do something else with it:
spinner.stop();
})();
Known Issues
If you want to use rimraf or make-dir before calling proload()
in your code, you will have to use the .sync()
method instead of the await
mode. I don't know
yet why this issue happens and will try my best to find a fix.
Contribute
Get Started
npm i
Test
- All Tests:
npm test
- Lint Tests:
npm run test:lint
- Unit Tests:
npm run test:unit
- Unit Tests (watch):
npm run test:watch