pandora
Version:
A powerful and lightweight application manager for Node.js applications powered by TypeScript.
57 lines (42 loc) • 1.39 kB
text/typescript
import wrap = require('pandora-spawn-wrap');
const wrapFile = require.resolve('./spawnWrapper');
const DEFAULT_WRAP_MAX_DEPTH = 2; // Level 2 means first level children
export class SpawnWrapperUtils {
private static unwrapFn: () => void;
static wrap() {
if (!SpawnWrapperUtils.unwrapFn) {
SpawnWrapperUtils.unwrapFn = wrap([wrapFile]);
}
}
static unwrap() {
if (SpawnWrapperUtils.unwrapFn) {
this.unwrapFn();
this.unwrapFn = null;
}
}
static setAsFirstLevel() {
process.env.PANDORA_CURRENT_WRAP_LEVEL = '1';
process.env.PANDORA_DO_NOT_FOLLOW_NPM = 'true';
process.env.PANDORA_DO_NOT_FOLLOW_SHEBANG = 'true';
}
static increaseLevel() {
const currentLevel = process.env.PANDORA_CURRENT_WRAP_LEVEL
? parseInt(process.env.PANDORA_CURRENT_WRAP_LEVEL, 10)
: null;
if(currentLevel) {
process.env.PANDORA_CURRENT_WRAP_LEVEL = (currentLevel + 1) + '';
}
}
static decideFollow(): boolean {
const maxLevel: number = process.env.PANDORA_WRAP_MAX_DEPTH
? parseInt(process.env.PANDORA_WRAP_MAX_DEPTH, 10)
: null || DEFAULT_WRAP_MAX_DEPTH;
const currentLevel = process.env.PANDORA_CURRENT_WRAP_LEVEL
? parseInt(process.env.PANDORA_CURRENT_WRAP_LEVEL, 10)
: null;
if(!currentLevel) {
return false;
}
return !(currentLevel >= maxLevel);
}
}