The DownloadManager
class is responsible for managing download tasks. It uses the Helpers
class to handle file-related operations and the async
library for task queuing and concurrency control.
const downloadManager = new DownloadManager(3); // Create a new DownloadManager with a concurrency of 3
downloadManager.enqueueItem({ url: 'https://example.com/file1', directory: './downloads', fileName: 'file1.txt' }); // Enqueue a download task
downloadManager.enqueueItem({ url: 'https://example.com/file2', directory: './downloads', fileName: 'file2.txt' });
downloadManager.start(); // Start the download tasks
downloadManager.onProgress((progress) => {
console.log(`Download progress: ${progress.percentage}%`);
});
downloadManager.onComplete(() => {
console.log('All downloads completed');
});
- Manages download tasks, including starting, pausing, resuming, and canceling tasks.
- Uses the
Helpers
class to handle file-related operations. - Uses the
async
library for task queuing and concurrency control. - Emits events for progress and completion of downloads.
constructor(concurrency: number = 1, displayLog: boolean = false)
: Initializes a new instance of theDownloadManager
class with the specified concurrency and display log settings.start()
: Starts the download tasks.pause()
: Pauses the download tasks.resume()
: Resumes the download tasks.cancel()
: Cancels the download tasks.enqueueItem(item: DownloadItem)
: Enqueues a download task.onProgress(callback: (progress: DownloadProgress) => void)
: Registers a callback function to be called when a progress event is emitted.onError(callback: (error: Error, task: DownloadItem) => void)
: Registers a callback function to be called when an error event is emitted.onComplete(callback: () => void)
: Registers a callback function to be called when a complete event is emitted.queueCount()
: Returns the number of tasks in the task queue.queueStatus()
: Returns the current status of the download stream.
queue
: An instance of theasync.QueueObject
class from theasync
library, used for task queuing and concurrency control.status
: The current status of the download tasks.helper
: An instance of theHelpers
class, used for file-related operations._displayLog
: A boolean flag indicating whether to display log messages.
- async: Async is a utility module which provides straight-forward, powerful functions for working with asynchronous JavaScript.
- axios: Promise based HTTP client for the browser and node.js
Please make sure to read the Contributing Guide before making a pull request.
Thank you to all the people who already contributed to project!
Made with contrib.rocks.
That said, there's a bunch of ways you can contribute to this project, like by:
- 🪲 Reporting a bug
- 📄 Improving this documentation
- 🚨 Sharing this project and recommending it to your friends
- 💵 Supporting this project on GitHub Sponsors or Ko-fi
- 🌟 Giving a star on this repository
If you appreciate that, please consider donating to the Developer.