UNPKG

pandora

Version:

A powerful and lightweight application manager for Node.js applications powered by TypeScript.

57 lines (42 loc) 1.39 kB
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); } }