prevent segmentation fault error by directly communicating with process
This commit is contained in:
		@@ -1,46 +1,47 @@
 | 
			
		||||
import "typings-global";
 | 
			
		||||
import chalk = require("chalk");
 | 
			
		||||
import readline = require("readline");
 | 
			
		||||
import 'typings-global'
 | 
			
		||||
import chalk = require('chalk')
 | 
			
		||||
import readline = require('readline')
 | 
			
		||||
let rl = readline.createInterface({
 | 
			
		||||
    input: process.stdin,
 | 
			
		||||
    output: process.stdout
 | 
			
		||||
});
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
let moduleName: string;
 | 
			
		||||
let loaderLength: number;
 | 
			
		||||
let frameCounter: number = 0;
 | 
			
		||||
let moduleName: string
 | 
			
		||||
let loaderLength: number
 | 
			
		||||
let frameCounter: number = 0
 | 
			
		||||
 | 
			
		||||
let makeFrame = (): string => {
 | 
			
		||||
    let resultString: string = `[${chalk.green("/".repeat(frameCounter))}${" ".repeat(loaderLength - frameCounter)}] starting ${moduleName}`;
 | 
			
		||||
    if (frameCounter == loaderLength) {
 | 
			
		||||
        frameCounter = 0;
 | 
			
		||||
    let resultString: string = `[${chalk.green('/'.repeat(frameCounter))}${' '.repeat(loaderLength - frameCounter)}] starting ${moduleName}`
 | 
			
		||||
    if (frameCounter === loaderLength) {
 | 
			
		||||
        frameCounter = 0
 | 
			
		||||
    } else {
 | 
			
		||||
        frameCounter++;
 | 
			
		||||
        frameCounter++
 | 
			
		||||
    }
 | 
			
		||||
    return resultString;
 | 
			
		||||
};
 | 
			
		||||
    return resultString
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
let logEarlyAbort = false;
 | 
			
		||||
let logEarlyAbort = false
 | 
			
		||||
let logEarly = () => {
 | 
			
		||||
    if (!logEarlyAbort) {
 | 
			
		||||
        rl.write(null, { ctrl: true, name: 'u' });
 | 
			
		||||
        rl.write(makeFrame());
 | 
			
		||||
        rl.write(null, { ctrl: true, name: 'u' })
 | 
			
		||||
        rl.write(makeFrame())
 | 
			
		||||
        setTimeout(function () {
 | 
			
		||||
            logEarly();
 | 
			
		||||
        }, 80);
 | 
			
		||||
            logEarly()
 | 
			
		||||
        }, 80)
 | 
			
		||||
    } else {
 | 
			
		||||
        readline.clearLine(process.stdout,0)
 | 
			
		||||
        process.exit(0)
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
let start = function (moduleNameArg: string = "", loaderLengthArg: string = "10") {
 | 
			
		||||
    moduleName = moduleNameArg;
 | 
			
		||||
    loaderLength = parseInt(loaderLengthArg);
 | 
			
		||||
    logEarly();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
start(process.env.moduleNameArg, process.env.loaderLengthArg);
 | 
			
		||||
let start = function (moduleNameArg: string = '', loaderLengthArg: string = '10') {
 | 
			
		||||
    moduleName = moduleNameArg
 | 
			
		||||
    loaderLength = parseInt(loaderLengthArg)
 | 
			
		||||
    logEarly()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
process.on('SIGINT', () => {
 | 
			
		||||
    logEarlyAbort = true;
 | 
			
		||||
    rl.write(null, { ctrl: true, name: 'u' });
 | 
			
		||||
    process.exit(0);
 | 
			
		||||
});
 | 
			
		||||
    logEarlyAbort = true
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
start()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user