UNPKG

@quenty/cli-output-helpers

Version:

Helpers to generate Nevermore package and game templates

66 lines 2.05 kB
import * as fs from 'fs/promises'; /** * Batch state loaded from a previously-saved BatchSummary JSON file. * All packages are already in their final passed/failed state. */ export class LoadedStateTracker { _packages; _results; _failures; _startTimeMs; constructor(packages, results, failures, startTimeMs) { this._packages = packages; this._results = results; this._failures = failures; this._startTimeMs = startTimeMs; } static async fromFileAsync(filePath) { const raw = await fs.readFile(filePath, 'utf-8'); const summary = JSON.parse(raw); return LoadedStateTracker.fromSummary(summary); } static fromSummary(summary) { const packages = new Map(); const failures = []; for (const result of summary.packages) { packages.set(result.packageName, { name: result.packageName, status: result.success ? 'passed' : 'failed', durationMs: result.durationMs, result, progress: result.progressSummary, }); if (!result.success) { failures.push(result); } } // Set startTimeMs so that Date.now() - startTimeMs ≈ summary.durationMs const startTimeMs = Date.now() - summary.summary.durationMs; return new LoadedStateTracker(packages, summary.packages, failures, startTimeMs); } get total() { return this._packages.size; } get completed() { return this._packages.size; } get startTimeMs() { return this._startTimeMs; } getPackage(name) { return this._packages.get(name); } getAllPackages() { return [...this._packages.values()]; } getResults() { return this._results; } getFailures() { return this._failures; } getCurrentPhase(name) { return this._packages.get(name)?.status; } } //# sourceMappingURL=loaded-state-tracker.js.map