UNPKG

@libotony/sharp-cli

Version:
75 lines 6.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); // tslint:disable:max-line-length const child_process_1 = require("child_process"); const events_1 = require("events"); const fs = require("fs"); const debug = require('debug')('sharp:runner:solo'); class SoloRunner extends events_1.EventEmitter { constructor(path, port = 8668) { super(); this.child = null; this.exited = false; if (port > 65535 || port < 0) { throw new Error('invalid port number'); } this.port = port; fs.accessSync(path, fs.constants.F_OK | fs.constants.X_OK); this.path = path; } start() { this.child = child_process_1.spawn(this.path, ['solo', '--on-demand', '--api-addr', '127.0.0.1:' + this.port], { stdio: ['ignore', 'pipe', 'pipe'] }); this.child.on('exit', (code, signal) => { this.exited = true; this.emit('exit'); }); this.child.stderr.on('data', (msg) => { debug(msg.toString().trim()); }); this.child.stdout.on('data', (msg) => { debug(msg.toString().trim()); }); // 'Can not be spawned' error emitted by event other than synchronously return new Promise((resolve, reject) => { const child = this.child; const onError = (e) => { detachEvents(); return reject(e); }; const onStdout = (data) => { detachEvents(); if (data.toString().startsWith('Starting Thor solo')) { child.on('error', (e) => { debug('running solo node error', e); }); return resolve(); } else { return reject(new Error('Failed to start solo node: ' + data.toString().trim())); } }; const detachEvents = () => { child.removeListener('error', onError); child.stdout.removeListener('data', onStdout); }; child.once('error', onError); child.stdout.once('data', onStdout); }); } close() { return new Promise((resolve) => { if (this.exited) { return resolve(); } this.child.on('close', () => { resolve(); }); this.child.kill('SIGTERM'); }); } get Exited() { return this.exited; } } exports.SoloRunner = SoloRunner; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sby1ydW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc29sby1ydW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxpQ0FBaUM7QUFDakMsaURBQW1EO0FBQ25ELG1DQUFxQztBQUNyQyx5QkFBd0I7QUFDeEIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUE7QUFFbkQsTUFBYSxVQUFXLFNBQVEscUJBQVk7SUFNeEMsWUFBWSxJQUFZLEVBQUUsSUFBSSxHQUFHLElBQUk7UUFDakMsS0FBSyxFQUFFLENBQUE7UUFOSCxVQUFLLEdBQXNCLElBQUksQ0FBQTtRQUcvQixXQUFNLEdBQUcsS0FBSyxDQUFBO1FBS2xCLElBQUksSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQTtTQUN6QztRQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDMUQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7SUFFcEIsQ0FBQztJQUVNLEtBQUs7UUFDUixJQUFJLENBQUMsS0FBSyxHQUFHLHFCQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUVySSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJ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