|
|
"use strict"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Object.defineProperty(exports, "__esModule", { value: true }); |
|
|
exports.makeConsoleReporter = exports.SilentReporter = exports.ProgressReportStage = void 0; |
|
|
|
|
|
var ProgressReportStage; |
|
|
(function (ProgressReportStage) { |
|
|
|
|
|
ProgressReportStage["FetchingVersion"] = "fetchingVersion"; |
|
|
|
|
|
ProgressReportStage["ResolvedVersion"] = "resolvedVersion"; |
|
|
|
|
|
ProgressReportStage["FetchingInsidersMetadata"] = "fetchingInsidersMetadata"; |
|
|
|
|
|
ProgressReportStage["ReplacingOldInsiders"] = "replacingOldInsiders"; |
|
|
|
|
|
ProgressReportStage["FoundMatchingInstall"] = "foundMatchingInstall"; |
|
|
|
|
|
ProgressReportStage["ResolvingCDNLocation"] = "resolvingCDNLocation"; |
|
|
|
|
|
ProgressReportStage["Downloading"] = "downloading"; |
|
|
|
|
|
ProgressReportStage["ExtractingSynchonrously"] = "extractingSynchonrously"; |
|
|
|
|
|
ProgressReportStage["Retrying"] = "retrying"; |
|
|
|
|
|
ProgressReportStage["NewInstallComplete"] = "newInstallComplete"; |
|
|
})(ProgressReportStage || (exports.ProgressReportStage = ProgressReportStage = {})); |
|
|
|
|
|
class SilentReporter { |
|
|
report() { |
|
|
|
|
|
} |
|
|
error() { |
|
|
|
|
|
} |
|
|
} |
|
|
exports.SilentReporter = SilentReporter; |
|
|
|
|
|
const makeConsoleReporter = async () => { |
|
|
|
|
|
const { default: ora } = await import('ora'); |
|
|
let version; |
|
|
let spinner = ora('Resolving version...').start(); |
|
|
function toMB(bytes) { |
|
|
return (bytes / 1024 / 1024).toFixed(2); |
|
|
} |
|
|
return { |
|
|
error(err) { |
|
|
if (spinner) { |
|
|
spinner?.fail(`Error: ${err}`); |
|
|
spinner = undefined; |
|
|
} |
|
|
else { |
|
|
console.error(err); |
|
|
} |
|
|
}, |
|
|
report(report) { |
|
|
switch (report.stage) { |
|
|
case ProgressReportStage.ResolvedVersion: |
|
|
version = report.version; |
|
|
spinner?.succeed(`Validated version: ${version}`); |
|
|
spinner = undefined; |
|
|
break; |
|
|
case ProgressReportStage.ReplacingOldInsiders: |
|
|
spinner?.succeed(); |
|
|
spinner = ora(`Updating Insiders ${report.oldHash} (${report.oldDate.toISOString()}) -> ${report.newHash}`).start(); |
|
|
break; |
|
|
case ProgressReportStage.FoundMatchingInstall: |
|
|
spinner?.succeed(); |
|
|
spinner = undefined; |
|
|
ora(`Found existing install in ${report.downloadedPath}`).succeed(); |
|
|
break; |
|
|
case ProgressReportStage.ResolvingCDNLocation: |
|
|
spinner?.succeed(); |
|
|
spinner = ora(`Found at ${report.url}`).start(); |
|
|
break; |
|
|
case ProgressReportStage.Downloading: |
|
|
if (report.bytesSoFar === 0) { |
|
|
spinner?.succeed(); |
|
|
spinner = ora(`Downloading (${toMB(report.totalBytes)} MB)`).start(); |
|
|
} |
|
|
else if (spinner) { |
|
|
if (report.bytesSoFar === report.totalBytes) { |
|
|
spinner.text = 'Extracting...'; |
|
|
} |
|
|
else { |
|
|
const percent = Math.max(0, Math.min(1, report.bytesSoFar / report.totalBytes)); |
|
|
const size = `${toMB(report.bytesSoFar)}/${toMB(report.totalBytes)}MB`; |
|
|
spinner.text = `Downloading VS Code: ${size} (${(percent * 100).toFixed()}%)`; |
|
|
} |
|
|
} |
|
|
break; |
|
|
case ProgressReportStage.Retrying: |
|
|
spinner?.fail(`Error downloading, retrying (attempt ${report.attempt} of ${report.totalAttempts}): ${report.error.message}`); |
|
|
spinner = undefined; |
|
|
break; |
|
|
case ProgressReportStage.NewInstallComplete: |
|
|
spinner?.succeed(`Downloaded VS Code into ${report.downloadedPath}`); |
|
|
spinner = undefined; |
|
|
break; |
|
|
} |
|
|
}, |
|
|
}; |
|
|
}; |
|
|
exports.makeConsoleReporter = makeConsoleReporter; |
|
|
|