From 4e85254444cfaf34fefc253ecd0b43b786e31dd8 Mon Sep 17 00:00:00 2001 From: Veetaha Date: Sat, 8 Feb 2020 21:03:27 +0200 Subject: vscode: add docs to installation module interfaces and sanity check to donloadFile() --- editors/code/src/installation/download_file.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'editors/code/src/installation/download_file.ts') diff --git a/editors/code/src/installation/download_file.ts b/editors/code/src/installation/download_file.ts index 7b537e114..0cc5fc0cb 100644 --- a/editors/code/src/installation/download_file.ts +++ b/editors/code/src/installation/download_file.ts @@ -1,17 +1,25 @@ import fetch from "node-fetch"; import { throttle } from "throttle-debounce"; import * as fs from "fs"; +import { strict as assert } from "assert"; +/** + * Downloads file from `url` and stores it at `destFilePath`. + * `onProgress` callback is periodically called to track the progress of downloading, + * it gets the already read and total amount of bytes to read as its parameters. + */ export async function downloadFile( url: string, destFilePath: fs.PathLike, onProgress: (readBytes: number, totalBytes: number) => void ): Promise { - onProgress = throttle(1000, /* noTrailing: */ true, onProgress); + onProgress = throttle(500, /* noTrailing: */ true, onProgress); const response = await fetch(url); const totalBytes = Number(response.headers.get('content-length')); + assert(!Number.isNaN(totalBytes), "Sanity check of content-length protocol"); + let readBytes = 0; return new Promise((resolve, reject) => response.body -- cgit v1.2.3