improved early and added loading time

This commit is contained in:
2016-08-20 07:03:49 +02:00
parent 5f17ea48ed
commit 569c597f8b
6 changed files with 95 additions and 87 deletions

View File

@ -1,24 +1,18 @@
import "typings-global";
let colors = require("colors");
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 = "["
+ "/".green.repeat(frameCounter)
+ " ".repeat(loaderLength - frameCounter)
+ "]"
+ " starting "
+ moduleName.cyan;
if(frameCounter == loaderLength){
let makeFrame = (): string => {
let resultString: string = `[${chalk.green("/".repeat(frameCounter))}${" ".repeat(loaderLength - frameCounter)}] starting ${moduleName}`;
if (frameCounter == loaderLength) {
frameCounter = 0;
} else {
frameCounter++;
@ -28,25 +22,29 @@ let makeFrame = ():string => {
let logEarlyAbort = false;
let logEarly = () => {
rl.write(null, {ctrl: true, name: 'u'});
rl.write(makeFrame());
setTimeout(function(){
if(!logEarlyAbort) logEarly();
},80);
if (!logEarlyAbort) {
rl.write(null, { ctrl: true, name: 'u' });
rl.write(makeFrame());
setTimeout(function () {
logEarly();
}, 80);
}
};
let start = function(moduleNameArg:string = "",loaderLengthArg:string = "10"){
let start = function (moduleNameArg: string = "", loaderLengthArg: string = "10") {
moduleName = moduleNameArg;
loaderLength = parseInt(loaderLengthArg);
logEarly();
};
start(process.env.moduleNameArg,process.env.loaderLengthArg);
start(process.env.moduleNameArg, process.env.loaderLengthArg);
process.on('SIGINT', () => {
process.on('SIGHUP', () => {
logEarlyAbort = true;
rl.write(null, {ctrl: true, name: 'u'});
rl.write(null, { ctrl: true, name: 'u' });
rl.write(`loaded ${chalk.green(moduleName)}`);
rl.close();
rl.on("close",function(){
rl.on("close",() => {
process.exit(0);
})
});

View File

@ -1,43 +1,53 @@
import "typings-global"
import colors = require("colors");
import path = require("path");
import chalk = require("chalk");
let q = require("q");
import readline = require("readline");
import childProcess = require("child_process");
let earlyChild;
let doAnimation:boolean = true;
let doText:boolean = false;
if(process.argv.indexOf("-v") != -1 || process.env.CI){
let doAnimation: boolean = true;
let doText: boolean = false;
let moduleName:string = "undefined module name";
let startTime;
if (process.argv.indexOf("-v") != -1 || process.env.CI) {
doAnimation = false;
} else if(process.argv.indexOf("-v") == -1){
} else if (process.argv.indexOf("-v") == -1) {
doText = true;
}
// exports
export let start = function(moduleNameArg:string = "",loaderLengthArg:string = "10"){
if(doAnimation){
earlyChild = childProcess.fork(path.join(__dirname,"early.child.js"),[],{
export let start = function (moduleNameArg: string = "", loaderLengthArg: string = "10") {
startTime = process.hrtime();
moduleName = moduleNameArg;
if (doAnimation) {
earlyChild = childProcess.fork(path.join(__dirname, "early.child.js"), [], {
env: {
moduleNameArg:moduleNameArg,
loaderLengthArg:loaderLengthArg,
moduleNameArg: moduleNameArg,
loaderLengthArg: loaderLengthArg,
CI: process.env.CI
}
});
} else if (doText) {
console.log("**** starting " + moduleNameArg.cyan + " ****");
console.log(`**** starting ${chalk.green(moduleNameArg)} ****`);
}
};
export let stop = function(){
export let stop = function () {
let done = q.defer();
if(doAnimation){
earlyChild.kill();
earlyChild.on("close",function(){
console.log("\n");
let endTime = process.hrtime(startTime);
let executionTime = (endTime[0] * 1e9 + endTime[1]) / 1000000000;
if (doAnimation) {
earlyChild.kill("SIGHUP");
earlyChild.on("close", function () {
console.log(` in ${executionTime} seconds!`);
done.resolve();
})
} else {
console.log("... finished loading moduleName in {executionTime}");
done.resolve();
}
return done.promise;