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 makeFrame = (): string => { let resultString: string = `[${chalk.green('/'.repeat(frameCounter))}${' '.repeat(loaderLength - frameCounter)}] starting ${moduleName}` if (frameCounter === loaderLength) { frameCounter = 0 } else { frameCounter++ } return resultString } let logEarlyAbort = false let logEarly = () => { if (!logEarlyAbort) { rl.write(null, { ctrl: true, name: 'u' }) rl.write(makeFrame()) setTimeout(function () { 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() } process.on('SIGINT', () => { logEarlyAbort = true }) start()