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