UNPKG

homebridge-eufy-security-mikebcbc

Version:
54 lines 1.92 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.FFmpegProgress = void 0; const net_1 = __importDefault(require("net")); const events_1 = __importDefault(require("events")); class FFmpegProgress extends events_1.default { constructor(port) { super(); this.started = false; this.port = port; let killTimeout = undefined; this.server = net_1.default.createServer((socket) => { if (killTimeout) { clearTimeout(killTimeout); } this.server.close(); // close server and terminate after connection is released socket.on('data', this.analyzeProgress.bind(this)); socket.on('error', (err) => { // ignore since this is handled elsewhere }); }); killTimeout = setTimeout(() => { this.server.close(); }, 5 * 60 * 1000); this.server.on('close', () => { this.emit('progress stopped'); }); this.server.on('error', (err) => { // ignore since this is handled elsewhere }); this.server.listen(this.port); } analyzeProgress(progressData) { const progress = new Map(); progressData.toString().split(/\r?\n/).forEach((line) => { const split = line.split('=', 2); if (split.length !== 2) { return; } progress.set(split[0], split[1]); }); if (!this.started) { if (progress.get('progress') !== undefined) { this.started = true; this.emit('progress started'); } } } } exports.FFmpegProgress = FFmpegProgress; //# sourceMappingURL=ffmpeg-progress.js.map