pandora
Version:
A powerful and lightweight application manager for Node.js applications powered by TypeScript.
61 lines (53 loc) • 1.64 kB
text/typescript
;
import {ApplicationRepresentation} from '../domain';
import {ComplexHandler} from '../daemon/ComplexHandler';
import {consoleLogger} from '../universal/LoggerBroker';
import {ProcessBootstrap} from '../application/ProcessBootstrap';
import {GlobalConfigProcessor} from '../universal/GlobalConfigProcessor';
const globalConfigProcessor = GlobalConfigProcessor.getInstance();
/**
* Class DebugApplicationLoader
* For a profile.js application to debugging
*/
export class DebugApplicationLoader {
protected options: ApplicationRepresentation;
protected master: ComplexHandler | ProcessBootstrap;
constructor(options: ApplicationRepresentation) {
this.options = options;
}
/**
* Start debug application
* @return {Promise<void>}
*/
async start() {
globalConfigProcessor.getAllProperties();
globalConfigProcessor.mergeProperties({
logger: {
appLogger: {
stdoutLevel: 'ALL',
level: 'NONE'
}
}
});
process.env.PANDORA_DEV = 'true';
process.env.NODE_ENV = process.env.NODE_ENV || 'local';
const mode = this.options.mode || 'procfile.js';
const appName = this.options.appName || 'debug';
const options = {
...this.options,
mode, appName
};
if(!this.master) {
if('fork' === mode) {
this.master = new ProcessBootstrap(options.entryFile, options);
} else {
this.master = new ComplexHandler(options);
}
}
this.master.start().then(() => {
console.log('Debug application start successful.');
}).catch((err) => {
consoleLogger.error(err);
});
}
}