st-bundle
Version:
CLI for watching and bundling SpringType projects.
75 lines (74 loc) • 2.7 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const events_1 = require("events");
const ElectronLauncher_1 = require("./ElectronLauncher");
const ServerLauncher_1 = require("./ServerLauncher");
class UserHandlerComplete {
constructor(initial, ctx, bundles) {
this.initial = initial;
this.ctx = ctx;
this.bundles = bundles;
}
get server() {
if (this.serverLauncher) {
return this.serverLauncher;
}
if (this.ctx.config.target !== 'server') {
this.ctx.log.error('Cannot create Server launcher. Target must be electron');
}
else {
this.serverLauncher = new ServerLauncher_1.ServerLauncher(this.ctx, this.bundles);
}
return this.serverLauncher;
}
get electron() {
if (this.electronLauncher) {
return this.electronLauncher;
}
const FATAL_ERR = 'Unable to create Electron launcher';
if (this.ctx.config.target !== 'electron') {
this.ctx.fatal(FATAL_ERR, ['Reason: Target must be "electron"']);
}
else {
if (this.bundles.length !== 1) {
this.ctx.fatal(FATAL_ERR, ['Reason: Set useSingleBundle field in your config']);
}
try {
const electronPath = require('electron');
this.electronLauncher = new ElectronLauncher_1.ElectronLauncher(this.ctx, this.bundles, electronPath);
return this.electronLauncher;
}
catch (e) {
this.ctx.fatal(FATAL_ERR, ['Reason: Install electron package first']);
}
}
}
}
exports.UserHandlerComplete = UserHandlerComplete;
class UserHandler {
constructor(ctx) {
this.ctx = ctx;
this.events = new events_1.EventEmitter();
ctx.ict.on('complete', props => {
this.events.emit('complete', [this.createDeveloperHandlerComplete(true, ctx, props.bundles)]);
return props;
});
ctx.ict.on('rebundle_complete', props => {
this.events.emit('complete', [this.createDeveloperHandlerComplete(false, ctx, props.bundles)]);
return props;
});
}
createDeveloperHandlerComplete(initial, ctx, bundles) {
if (!this.completeHandler) {
this.completeHandler = new UserHandlerComplete(initial, ctx, bundles);
}
return this.completeHandler;
}
onComplete(fn) {
this.events.addListener('complete', args => fn(args[0]));
}
onChange(fn) {
this.events.addListener('complete', args => fn(args[0]));
}
}
exports.UserHandler = UserHandler;