UNPKG

pagespeed-quest

Version:

A framework for efficient web front-end speed improvement

60 lines 4.65 kB
import { startPlayback } from 'rust-http-playback-proxy'; import { InventoryRepository } from './inventory.js'; export class PlaybackProxy { rustProxy; inventoryRepository; entryUrl; deviceType; requestedPort; fullThrottle; dependency; constructor(options, dependency) { options ||= {}; this.dependency = dependency || {}; // Inventory repository this.inventoryRepository = options.inventoryRepository ?? new InventoryRepository(undefined, this.dependency); // Port this.requestedPort = options.port; // Full throttle this.fullThrottle = options.fullThrottle; } async start() { this.dependency.logger?.info(`Starting playback proxy...`); // Load inventory to get entryUrl and deviceType const inventory = await this.inventoryRepository.loadInventory(); this.entryUrl = inventory.entryUrl; this.deviceType = inventory.deviceType; this.rustProxy = await startPlayback({ inventoryDir: this.inventoryRepository.dirPath, port: this.requestedPort || 0, fullThrottle: this.fullThrottle, }); this.dependency.logger?.info(`Playback proxy started on port ${this.rustProxy.port}`); } get port() { if (!this.rustProxy) throw new Error('Proxy not started'); return this.rustProxy.port; } get inventoryDirPath() { return this.inventoryRepository.dirPath; } async stop() { if (this.rustProxy) { this.dependency.logger?.info(`Stopping playback proxy...`); await this.rustProxy.stop(); this.dependency.logger?.info(`Playback proxy stopped`); } } } export async function withPlaybackProxy(options, dependency, cb) { const proxy = new PlaybackProxy(options, dependency); await proxy.start(); try { await cb(proxy); } finally { await proxy.stop(); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWJhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGxheWJhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUU1RSxPQUFPLEVBQWEsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQVcvRCxNQUFNLE9BQU8sYUFBYTtJQUN4QixTQUFTLENBQVk7SUFDckIsbUJBQW1CLENBQXNCO0lBQ3pDLFFBQVEsQ0FBUztJQUNqQixVQUFVLENBQWE7SUFDdkIsYUFBYSxDQUFTO0lBQ3RCLFlBQVksQ0FBVTtJQUN0QixVQUFVLENBQXlCO0lBRW5DLFlBQVksT0FBOEIsRUFBRSxVQUFvQztRQUM5RSxPQUFPLEtBQUssRUFBRSxDQUFBO1FBQ2QsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLElBQUksRUFBRSxDQUFBO1FBRWxDLHVCQUF1QjtRQUN2QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixJQUFJLElBQUksbUJBQW1CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUU3RyxPQUFPO1FBQ1AsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFBO1FBRWpDLGdCQUFnQjtRQUNoQixJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUE7SUFDMUMsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUE7UUFFMUQsZ0RBQWdEO1FBQ2hELE1BQU0sU0FBUyxHQUFjLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQzNFLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQTtRQUNsQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUE7UUFFdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLGFBQWEsQ0FBQztZQUNuQyxZQUFZLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU87WUFDOUMsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQztZQUM3QixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDaEMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGtDQUFrQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7SUFDdkYsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtRQUN6RCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFBO0lBQzVCLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUE7SUFDekMsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJO1FBQ1IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUE7WUFDMUQsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFBO1lBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO1FBQ3hELENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxPQUE2QixFQUM3QixVQUFtQyxFQUNuQyxFQUEyQztJQUUzQyxNQUFNLEtBQUssR0FBRyxJQUFJLGFBQWEsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDcEQsTUFBTSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDbkIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDakIsQ0FBQztZQUFTLENBQUM7UUFDVCxNQUFNLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUNwQixDQUFDO0FBQ0gsQ0FBQyJ9