now forking a seperate process to work when node is busy
This commit is contained in:
52
ts/early.child.ts
Normal file
52
ts/early.child.ts
Normal file
@@ -0,0 +1,52 @@
|
||||
/// <reference path="./typings/index.d.ts" />
|
||||
let colors = require("colors");
|
||||
import readline = require("readline");
|
||||
let rl;
|
||||
let initReadline = () => {
|
||||
rl = readline.createInterface({
|
||||
input: process.stdin,
|
||||
output: process.stdout
|
||||
});
|
||||
};
|
||||
|
||||
let moduleName:string;
|
||||
let loaderLength:number;
|
||||
let frameCounter:number = 0;
|
||||
|
||||
let makeFrame = ():string => {
|
||||
let resultString:string = "["
|
||||
+ "/".green.repeat(frameCounter)
|
||||
+ " ".repeat(loaderLength - frameCounter)
|
||||
+ "]"
|
||||
+ " starting "
|
||||
+ moduleName.cyan;
|
||||
|
||||
if(frameCounter == loaderLength){
|
||||
frameCounter = 0;
|
||||
} else {
|
||||
frameCounter++;
|
||||
}
|
||||
return resultString;
|
||||
};
|
||||
|
||||
let logEarly = () => {
|
||||
rl.write(null, {ctrl: true, name: 'u'});
|
||||
rl.write(makeFrame());
|
||||
setTimeout(function(){
|
||||
logEarly();
|
||||
},200);
|
||||
};
|
||||
|
||||
let start = function(moduleNameArg:string = "",loaderLengthArg:string = "10"){
|
||||
console.log(moduleNameArg);
|
||||
moduleName = moduleNameArg;
|
||||
loaderLength = parseInt(loaderLengthArg);
|
||||
if (!process.env.CI){
|
||||
initReadline();
|
||||
logEarly();
|
||||
} else {
|
||||
console.log("**** starting " + moduleName.cyan + " ****");
|
||||
};
|
||||
};
|
||||
|
||||
start(process.env.moduleNameArg,process.env.loaderLengthArg);
|
65
ts/index.ts
65
ts/index.ts
@@ -2,64 +2,19 @@
|
||||
let colors = require("colors");
|
||||
let readline = require("readline");
|
||||
|
||||
let rl;
|
||||
let initReadline = () => {
|
||||
rl = readline.createInterface({
|
||||
input: process.stdin,
|
||||
output: process.stdout
|
||||
import childProcess = require("child_process");
|
||||
let earlyChild;
|
||||
// exports
|
||||
export let start = function(moduleNameArg:string = "",loaderLengthArg:string = "10"){
|
||||
earlyChild = childProcess.fork("./dist/early.child.js",[],{
|
||||
env: {
|
||||
moduleNameArg:moduleNameArg,
|
||||
loaderLengthArg:loaderLengthArg
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
let moduleName:string;
|
||||
let loaderLength:number;
|
||||
let frameCounter:number = 0;
|
||||
|
||||
let makeFrame = ():string => {
|
||||
let resultString:string = "["
|
||||
+ "/".green.repeat(frameCounter)
|
||||
+ " ".repeat(loaderLength - frameCounter)
|
||||
+ "]"
|
||||
+ " starting "
|
||||
+ moduleName.cyan;
|
||||
|
||||
if(frameCounter == loaderLength){
|
||||
frameCounter = 0;
|
||||
} else {
|
||||
frameCounter++;
|
||||
}
|
||||
return resultString;
|
||||
};
|
||||
|
||||
let abort:boolean = true;
|
||||
let logEarly = () => {
|
||||
rl.write(null, {ctrl: true, name: 'u'});
|
||||
rl.write(makeFrame());
|
||||
setTimeout(function(){
|
||||
if(!abort){
|
||||
logEarly();
|
||||
}
|
||||
},200);
|
||||
};
|
||||
|
||||
|
||||
// exports
|
||||
export let start = function(moduleNameArg:string = "",loaderLengthArg:number = 10){
|
||||
abort = false;
|
||||
moduleName = moduleNameArg;
|
||||
loaderLength = loaderLengthArg;
|
||||
if (!process.env.CI){
|
||||
initReadline();
|
||||
logEarly();
|
||||
} else {
|
||||
console.log("**** starting " + moduleName.cyan + " ****");
|
||||
};
|
||||
};
|
||||
|
||||
export let stop = function(){
|
||||
abort = true;
|
||||
if (!process.env.CI){
|
||||
rl.write(null, {ctrl: true, name: 'u'});
|
||||
rl.close();
|
||||
}
|
||||
earlyChild.kill();
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user