Compare commits
58 Commits
Author | SHA1 | Date | |
---|---|---|---|
feba451f90 | |||
1ba1b0447b | |||
e4db3ba7ee | |||
da209ecc06 | |||
e010b01c42 | |||
225c46a788 | |||
7883f1cb7d | |||
394dd88a1d | |||
1d8fee1506 | |||
88d5409c40 | |||
b8c9508d21 | |||
59f97c3254 | |||
0491493b2e | |||
aca45165f8 | |||
569c597f8b | |||
5f17ea48ed | |||
6a9cdd297a | |||
0a363b441c | |||
3af6edd5e6 | |||
9a26f1367d | |||
15dd17e7a7 | |||
3b704dbde5 | |||
48aeb16dfd | |||
b40d8452ec | |||
d8281f098a | |||
3ffee9d0d6 | |||
03dfdda812 | |||
24cce5d9b2 | |||
295e568097 | |||
846bcf66db | |||
fc7d7fd27f | |||
9829c7bb1e | |||
6827999cf8 | |||
b318fa2076 | |||
0c751e1bca | |||
cb489552f2 | |||
addd66091f | |||
c2f8199f0b | |||
5e5696cce1 | |||
44d9782487 | |||
41592a4d2f | |||
23367249ec | |||
b415bf4ee7 | |||
86b6a6c3c4 | |||
ffbfc29628 | |||
9c6e452801 | |||
96c421e96e | |||
84af99ba80 | |||
6bb20dbc7b | |||
66a7fc2afe | |||
a42faf36d2 | |||
6db7cc0e14 | |||
102d384de5 | |||
1ceae01a49 | |||
7f4adbfe9f | |||
eb72e2dccc | |||
839c80f5dd | |||
e7e96972ad |
35
.gitlab-ci.yml
Normal file
35
.gitlab-ci.yml
Normal file
@ -0,0 +1,35 @@
|
||||
image: hosttoday/ht-docker-node:npmts
|
||||
|
||||
stages:
|
||||
- test
|
||||
- release
|
||||
|
||||
testLEGACY:
|
||||
stage: test
|
||||
script:
|
||||
- npmci test legacy
|
||||
tags:
|
||||
- docker
|
||||
|
||||
testLTS:
|
||||
stage: test
|
||||
script:
|
||||
- npmci test lts
|
||||
tags:
|
||||
- docker
|
||||
|
||||
testSTABLE:
|
||||
stage: test
|
||||
script:
|
||||
- npmci test stable
|
||||
tags:
|
||||
- docker
|
||||
|
||||
release:
|
||||
stage: release
|
||||
script:
|
||||
- npmci publish
|
||||
only:
|
||||
- tags
|
||||
tags:
|
||||
- docker
|
@ -13,3 +13,4 @@ do your loading stuff
|
||||
early.stop(); // stop "early" when your module is ready
|
||||
```
|
||||
|
||||
early runs in its own process: The loader animation runs smoothly even when your event queue of your currently loading module is working heavily.
|
||||
|
1
dist/early.child.d.ts
vendored
Normal file
1
dist/early.child.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
||||
import "typings-global";
|
46
dist/early.child.js
vendored
Normal file
46
dist/early.child.js
vendored
Normal file
@ -0,0 +1,46 @@
|
||||
"use strict";
|
||||
require("typings-global");
|
||||
const chalk = require("chalk");
|
||||
const readline = require("readline");
|
||||
let rl = readline.createInterface({
|
||||
input: process.stdin,
|
||||
output: process.stdout
|
||||
});
|
||||
let moduleName;
|
||||
let loaderLength;
|
||||
let frameCounter = 0;
|
||||
let makeFrame = () => {
|
||||
let resultString = `[${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);
|
||||
}
|
||||
};
|
||||
let start = function (moduleNameArg = "", loaderLengthArg = "10") {
|
||||
moduleName = moduleNameArg;
|
||||
loaderLength = parseInt(loaderLengthArg);
|
||||
logEarly();
|
||||
};
|
||||
start(process.env.moduleNameArg, process.env.loaderLengthArg);
|
||||
process.on('SIGINT', () => {
|
||||
logEarlyAbort = true;
|
||||
rl.write(null, { ctrl: true, name: 'u' });
|
||||
rl.write(`loaded ${chalk.green(moduleName)}`);
|
||||
rl.close();
|
||||
rl.on("close", () => {
|
||||
});
|
||||
});
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWFybHkuY2hpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9lYXJseS5jaGlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsUUFBTyxnQkFBZ0IsQ0FBQyxDQUFBO0FBQ3hCLE1BQU8sS0FBSyxXQUFXLE9BQU8sQ0FBQyxDQUFDO0FBQ2hDLE1BQU8sUUFBUSxXQUFXLFVBQVUsQ0FBQyxDQUFDO0FBQ3RDLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7SUFDOUIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO0lBQ3BCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtDQUN6QixDQUFDLENBQUM7QUFFSCxJQUFJLFVBQWtCLENBQUM7QUFDdkIsSUFBSSxZQUFvQixDQUFDO0FBQ3pCLElBQUksWUFBWSxHQUFXLENBQUMsQ0FBQztBQUU3QixJQUFJLFNBQVMsR0FBRztJQUNaLElBQUksWUFBWSxHQUFXLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLGNBQWMsVUFBVSxFQUFFLENBQUM7SUFDekksRUFBRSxDQUFDLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDL0IsWUFBWSxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDSixZQUFZLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxDQUFDLFlBQVksQ0FBQztBQUN4QixDQUFDLENBQUM7QUFFRixJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7QUFDMUIsSUFBSSxRQUFRLEdBQUc7SUFDWCxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDakIsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUN0QixVQUFVLENBQUM7WUFDUCxRQUFRLEVBQUUsQ0FBQztRQUNmLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNYLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixJQUFJLEtBQUssR0FBRyxVQUFVLGFBQWEsR0FBVyxFQUFFLEVBQUUsZUFBZSxHQUFXLElBQUk7SUFDNUUsVUFBVSxHQUFHLGFBQWEsQ0FBQztJQUMzQixZQUFZLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsRUFBRSxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7QUFFOUQsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDakIsYUFBYSxHQUFHLElBQUksQ0FBQztJQUNyQixFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDMUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNYLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFDO0lBRWQsQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDLENBQUMsQ0FBQyJ9
|
5
dist/index.d.ts
vendored
5
dist/index.d.ts
vendored
@ -1,2 +1,3 @@
|
||||
export declare let start: (moduleNameArg?: string, loaderLengthArg?: number) => void;
|
||||
export declare let stop: () => void;
|
||||
import "typings-global";
|
||||
export declare let start: (moduleNameArg?: string, loaderLengthArg?: string) => void;
|
||||
export declare let stop: () => any;
|
||||
|
98
dist/index.js
vendored
98
dist/index.js
vendored
@ -1,64 +1,52 @@
|
||||
"use strict";
|
||||
/// <reference path="./typings/index.d.ts" />
|
||||
var colors = require("colors");
|
||||
var readline = require("readline");
|
||||
var rl;
|
||||
var initReadline = function () {
|
||||
rl = readline.createInterface({
|
||||
input: process.stdin,
|
||||
output: process.stdout
|
||||
});
|
||||
};
|
||||
var moduleName;
|
||||
var loaderLength;
|
||||
var frameCounter = 0;
|
||||
var makeFrame = function () {
|
||||
var resultString = "["
|
||||
+ "/".green.repeat(frameCounter)
|
||||
+ " ".repeat(loaderLength - frameCounter)
|
||||
+ "]"
|
||||
+ " starting "
|
||||
+ moduleName.cyan;
|
||||
if (frameCounter == loaderLength) {
|
||||
frameCounter = 0;
|
||||
}
|
||||
else {
|
||||
frameCounter++;
|
||||
}
|
||||
return resultString;
|
||||
};
|
||||
var abort = true;
|
||||
var logEarly = function () {
|
||||
rl.write(null, { ctrl: true, name: 'u' });
|
||||
rl.write(makeFrame());
|
||||
setTimeout(function () {
|
||||
if (!abort) {
|
||||
logEarly();
|
||||
}
|
||||
}, 200);
|
||||
};
|
||||
require("typings-global");
|
||||
const path = require("path");
|
||||
const chalk = require("chalk");
|
||||
let q = require("q");
|
||||
const childProcess = require("child_process");
|
||||
let earlyChild;
|
||||
let doAnimation = true;
|
||||
let doText = false;
|
||||
let moduleName = "undefined module name";
|
||||
let startTime;
|
||||
if (process.argv.indexOf("-v") != -1 || process.env.CI) {
|
||||
doAnimation = false;
|
||||
}
|
||||
if (process.argv.indexOf("-v") == -1 && process.env.CI) {
|
||||
doText = true;
|
||||
}
|
||||
// exports
|
||||
exports.start = function (moduleNameArg, loaderLengthArg) {
|
||||
if (moduleNameArg === void 0) { moduleNameArg = ""; }
|
||||
if (loaderLengthArg === void 0) { loaderLengthArg = 10; }
|
||||
abort = false;
|
||||
exports.start = function (moduleNameArg = "", loaderLengthArg = "10") {
|
||||
startTime = process.hrtime();
|
||||
moduleName = moduleNameArg;
|
||||
loaderLength = loaderLengthArg;
|
||||
if (!process.env.CI) {
|
||||
initReadline();
|
||||
logEarly();
|
||||
if (doAnimation) {
|
||||
earlyChild = childProcess.fork(path.join(__dirname, "early.child.js"), [], {
|
||||
env: {
|
||||
moduleNameArg: moduleNameArg,
|
||||
loaderLengthArg: loaderLengthArg,
|
||||
CI: process.env.CI
|
||||
}
|
||||
});
|
||||
}
|
||||
else {
|
||||
console.log("**** starting " + moduleName.cyan + " ****");
|
||||
else if (doText) {
|
||||
console.log(`**** starting ${chalk.green(moduleNameArg)} ****`);
|
||||
}
|
||||
;
|
||||
};
|
||||
exports.stop = function () {
|
||||
abort = true;
|
||||
if (!process.env.CI) {
|
||||
rl.write(null, { ctrl: true, name: 'u' });
|
||||
rl.close();
|
||||
let done = q.defer();
|
||||
let endTime = process.hrtime(startTime);
|
||||
let executionTime = (endTime[0] * 1e9 + endTime[1]) / 1000000000;
|
||||
if (doAnimation) {
|
||||
earlyChild.kill("SIGINT");
|
||||
earlyChild.on("close", function () {
|
||||
console.log(` in ${executionTime} seconds!`);
|
||||
done.resolve();
|
||||
});
|
||||
}
|
||||
else {
|
||||
console.log(`... finished loading ${moduleName} in ${executionTime}`);
|
||||
done.resolve();
|
||||
}
|
||||
return done.promise;
|
||||
};
|
||||
|
||||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuL3R5cGluZ3MvaW5kZXguZC50c1wiIC8+XHJcbmxldCBjb2xvcnMgPSByZXF1aXJlKFwiY29sb3JzXCIpO1xyXG5sZXQgcmVhZGxpbmUgPSByZXF1aXJlKFwicmVhZGxpbmVcIik7XHJcblxyXG5sZXQgcmw7IFxyXG5sZXQgaW5pdFJlYWRsaW5lID0gKCkgPT4ge1xyXG4gICAgcmwgPSByZWFkbGluZS5jcmVhdGVJbnRlcmZhY2Uoe1xyXG4gICAgaW5wdXQ6IHByb2Nlc3Muc3RkaW4sXHJcbiAgICBvdXRwdXQ6IHByb2Nlc3Muc3Rkb3V0XHJcbiAgICB9KTtcclxufTtcclxuXHJcbmxldCBtb2R1bGVOYW1lOnN0cmluZztcclxubGV0IGxvYWRlckxlbmd0aDpudW1iZXI7XHJcbmxldCBmcmFtZUNvdW50ZXI6bnVtYmVyID0gMDtcclxuXHJcbmxldCBtYWtlRnJhbWUgPSAoKTpzdHJpbmcgPT4ge1xyXG4gICAgbGV0IHJlc3VsdFN0cmluZzpzdHJpbmcgPSBcIltcIlxyXG4gICAgICAgICsgXCIvXCIuZ3JlZW4ucmVwZWF0KGZyYW1lQ291bnRlcilcclxuICAgICAgICArIFwiIFwiLnJlcGVhdChsb2FkZXJMZW5ndGggLSBmcmFtZUNvdW50ZXIpXHJcbiAgICAgICAgKyBcIl1cIlxyXG4gICAgICAgICsgXCIgc3RhcnRpbmcgXCJcclxuICAgICAgICArIG1vZHVsZU5hbWUuY3lhbjtcclxuXHJcbiAgICBpZihmcmFtZUNvdW50ZXIgPT0gbG9hZGVyTGVuZ3RoKXtcclxuICAgICAgICBmcmFtZUNvdW50ZXIgPSAwO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBmcmFtZUNvdW50ZXIrKztcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHRTdHJpbmc7XHJcbn07XHJcblxyXG5sZXQgYWJvcnQ6Ym9vbGVhbiA9IHRydWU7XHJcbmxldCBsb2dFYXJseSA9ICgpID0+IHtcclxuICAgIHJsLndyaXRlKG51bGwsIHtjdHJsOiB0cnVlLCBuYW1lOiAndSd9KTtcclxuICAgIHJsLndyaXRlKG1ha2VGcmFtZSgpKTtcclxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICBpZighYWJvcnQpe1xyXG4gICAgICAgICAgICBsb2dFYXJseSgpO1xyXG4gICAgICAgIH1cclxuICAgIH0sMjAwKTtcclxufTtcclxuXHJcblxyXG4vLyBleHBvcnRzXHJcbmV4cG9ydCBsZXQgc3RhcnQgPSBmdW5jdGlvbihtb2R1bGVOYW1lQXJnOnN0cmluZyA9IFwiXCIsbG9hZGVyTGVuZ3RoQXJnOm51bWJlciA9IDEwKXtcclxuICAgIGFib3J0ID0gZmFsc2U7XHJcbiAgICBtb2R1bGVOYW1lID0gbW9kdWxlTmFtZUFyZztcclxuICAgIGxvYWRlckxlbmd0aCA9IGxvYWRlckxlbmd0aEFyZztcclxuICAgIGlmICghcHJvY2Vzcy5lbnYuQ0kpe1xyXG4gICAgICAgIGluaXRSZWFkbGluZSgpO1xyXG4gICAgICAgIGxvZ0Vhcmx5KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiKioqKiBzdGFydGluZyBcIiArIG1vZHVsZU5hbWUuY3lhbiArIFwiICoqKipcIik7XHJcbiAgICB9O1xyXG59O1xyXG5cclxuZXhwb3J0IGxldCBzdG9wID0gZnVuY3Rpb24oKXtcclxuICAgIGFib3J0ID0gdHJ1ZTtcclxuICAgIGlmICghcHJvY2Vzcy5lbnYuQ0kpe1xyXG4gICAgICAgIHJsLndyaXRlKG51bGwsIHtjdHJsOiB0cnVlLCBuYW1lOiAndSd9KTtcclxuICAgICAgICBybC5jbG9zZSgpO1xyXG4gICAgfVxyXG59O1xyXG5cclxuIl19
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsUUFBTyxnQkFDUCxDQUFDLENBRHNCO0FBQ3ZCLE1BQU8sSUFBSSxXQUFXLE1BQU0sQ0FBQyxDQUFDO0FBQzlCLE1BQU8sS0FBSyxXQUFXLE9BQU8sQ0FBQyxDQUFDO0FBQ2hDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUVyQixNQUFPLFlBQVksV0FBVyxlQUFlLENBQUMsQ0FBQztBQUMvQyxJQUFJLFVBQVUsQ0FBQztBQUVmLElBQUksV0FBVyxHQUFZLElBQUksQ0FBQztBQUNoQyxJQUFJLE1BQU0sR0FBWSxLQUFLLENBQUM7QUFDNUIsSUFBSSxVQUFVLEdBQVcsdUJBQXVCLENBQUM7QUFDakQsSUFBSSxTQUFTLENBQUM7QUFFZCxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckQsV0FBVyxHQUFHLEtBQUssQ0FBQztBQUN4QixDQUFDO0FBQ0QsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JELE1BQU0sR0FBRyxJQUFJLENBQUM7QUFDbEIsQ0FBQztBQUVELFVBQVU7QUFDQyxhQUFLLEdBQUcsVUFBVSxhQUFhLEdBQVcsRUFBRSxFQUFFLGVBQWUsR0FBVyxJQUFJO0lBRW5GLFNBQVMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7SUFFN0IsVUFBVSxHQUFHLGFBQWEsQ0FBQztJQUMzQixFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ2QsVUFBVSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDdkUsR0FBRyxFQUFFO2dCQUNELGFBQWEsRUFBRSxhQUFhO2dCQUM1QixlQUFlLEVBQUUsZUFBZTtnQkFDaEMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTthQUNyQjtTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7SUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwRSxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRVMsWUFBSSxHQUFHO0lBQ2QsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JCLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEMsSUFBSSxhQUFhLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztJQUNqRSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ2QsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxQixVQUFVLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRTtZQUNuQixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sYUFBYSxXQUFXLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDSixPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixVQUFVLE9BQU8sYUFBYSxFQUFFLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUMsQ0FBQyJ9
|
5
npmextra.json
Normal file
5
npmextra.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"npmts":{
|
||||
"coverageTreshold":50
|
||||
}
|
||||
}
|
4
npmts.json
Normal file
4
npmts.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"mode":"default",
|
||||
"coverageTreshold":30
|
||||
}
|
17
package.json
17
package.json
@ -1,14 +1,15 @@
|
||||
{
|
||||
"name": "early",
|
||||
"version": "1.0.5",
|
||||
"version": "2.0.21",
|
||||
"description": "nice module loading animation for modules that need a little starting time.",
|
||||
"main": "dist/index.js",
|
||||
"typings": "dist/index.d.ts",
|
||||
"scripts": {
|
||||
"test": "(npmts)"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/pushrocks/early.git"
|
||||
"url": "git+https://gitlab.com/pushrocks/early.git"
|
||||
},
|
||||
"keywords": [
|
||||
"preloader"
|
||||
@ -16,13 +17,17 @@
|
||||
"author": "Lossless GmbH",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/pushrocks/early/issues"
|
||||
"url": "https://gitlab.com/pushrocks/early/issues"
|
||||
},
|
||||
"homepage": "https://github.com/pushrocks/early#readme",
|
||||
"homepage": "https://gitlab.com/pushrocks/early#readme",
|
||||
"devDependencies": {
|
||||
"npmts": "^5.1.9"
|
||||
"npmts-g": "^5.2.8",
|
||||
"typings-test": "^1.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"colors": "^1.1.2"
|
||||
"@types/chalk": "^0.4.28",
|
||||
"chalk": "^1.1.3",
|
||||
"q": "^1.4.1",
|
||||
"typings-global": "^1.0.6"
|
||||
}
|
||||
}
|
||||
|
1
test/test.d.ts
vendored
1
test/test.d.ts
vendored
@ -0,0 +1 @@
|
||||
import "typings-test";
|
||||
|
12
test/test.js
12
test/test.js
@ -1,15 +1,15 @@
|
||||
"use strict";
|
||||
/// <reference path="../ts/typings/index.d.ts" />
|
||||
var early = require("../dist/index.js");
|
||||
require("typings-test");
|
||||
const early = require("../dist/index");
|
||||
describe("early", function () {
|
||||
it(".start()", function (done) {
|
||||
this.timeout(10000);
|
||||
early.start("early");
|
||||
setTimeout(done, 5000);
|
||||
});
|
||||
it(".stop()", function () {
|
||||
early.stop();
|
||||
it(".stop()", function (done) {
|
||||
early.stop()
|
||||
.then(done);
|
||||
});
|
||||
});
|
||||
|
||||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGlEQUFpRDtBQUNqRCxJQUFPLEtBQUssV0FBVyxrQkFBa0IsQ0FBQyxDQUFDO0FBRTNDLFFBQVEsQ0FBQyxPQUFPLEVBQUM7SUFDYixFQUFFLENBQUMsVUFBVSxFQUFDLFVBQVMsSUFBSTtRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BCLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckIsVUFBVSxDQUFDLElBQUksRUFBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDLENBQUMsQ0FBQztJQUNILEVBQUUsQ0FBQyxTQUFTLEVBQUM7UUFDVCxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakIsQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDLENBQUMsQ0FBQSIsImZpbGUiOiJ0ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL3RzL3R5cGluZ3MvaW5kZXguZC50c1wiIC8+XHJcbmltcG9ydCBlYXJseSA9IHJlcXVpcmUoXCIuLi9kaXN0L2luZGV4LmpzXCIpO1xyXG5cclxuZGVzY3JpYmUoXCJlYXJseVwiLGZ1bmN0aW9uKCl7XHJcbiAgICBpdChcIi5zdGFydCgpXCIsZnVuY3Rpb24oZG9uZSl7XHJcbiAgICAgICAgdGhpcy50aW1lb3V0KDEwMDAwKTtcclxuICAgICAgICBlYXJseS5zdGFydChcImVhcmx5XCIpO1xyXG4gICAgICAgIHNldFRpbWVvdXQoZG9uZSw1MDAwKTtcclxuICAgIH0pO1xyXG4gICAgaXQoXCIuc3RvcCgpXCIsZnVuY3Rpb24oKXtcclxuICAgICAgICBlYXJseS5zdG9wKCk7XHJcbiAgICB9KVxyXG59KSJdfQ==
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FBYyxDQUFDLENBQUE7QUFDdEIsTUFBTyxLQUFLLFdBQVcsZUFBZSxDQUFDLENBQUM7QUFFeEMsUUFBUSxDQUFDLE9BQU8sRUFBQztJQUNiLEVBQUUsQ0FBQyxVQUFVLEVBQUMsVUFBUyxJQUFJO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQixVQUFVLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ0gsRUFBRSxDQUFDLFNBQVMsRUFBQyxVQUFTLElBQUk7UUFDdEIsS0FBSyxDQUFDLElBQUksRUFBRTthQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQyxDQUFBIn0=
|
@ -1,5 +1,5 @@
|
||||
/// <reference path="../ts/typings/index.d.ts" />
|
||||
import early = require("../dist/index.js");
|
||||
import "typings-test";
|
||||
import early = require("../dist/index");
|
||||
|
||||
describe("early",function(){
|
||||
it(".start()",function(done){
|
||||
@ -7,7 +7,8 @@ describe("early",function(){
|
||||
early.start("early");
|
||||
setTimeout(done,5000);
|
||||
});
|
||||
it(".stop()",function(){
|
||||
early.stop();
|
||||
it(".stop()",function(done){
|
||||
early.stop()
|
||||
.then(done);
|
||||
})
|
||||
})
|
50
ts/early.child.ts
Normal file
50
ts/early.child.ts
Normal file
@ -0,0 +1,50 @@
|
||||
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);
|
||||
}
|
||||
};
|
||||
|
||||
let start = function (moduleNameArg: string = "", loaderLengthArg: string = "10") {
|
||||
moduleName = moduleNameArg;
|
||||
loaderLength = parseInt(loaderLengthArg);
|
||||
logEarly();
|
||||
};
|
||||
|
||||
start(process.env.moduleNameArg, process.env.loaderLengthArg);
|
||||
|
||||
process.on('SIGINT', () => {
|
||||
logEarlyAbort = true;
|
||||
rl.write(null, { ctrl: true, name: 'u' });
|
||||
rl.write(`loaded ${chalk.green(moduleName)}`);
|
||||
rl.close();
|
||||
rl.on("close",() => {
|
||||
|
||||
})
|
||||
});
|
105
ts/index.ts
105
ts/index.ts
@ -1,65 +1,56 @@
|
||||
/// <reference path="./typings/index.d.ts" />
|
||||
let colors = require("colors");
|
||||
let readline = require("readline");
|
||||
import "typings-global"
|
||||
import path = require("path");
|
||||
import chalk = require("chalk");
|
||||
let q = require("q");
|
||||
import readline = require("readline");
|
||||
import childProcess = require("child_process");
|
||||
let earlyChild;
|
||||
|
||||
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 abort:boolean = true;
|
||||
let logEarly = () => {
|
||||
rl.write(null, {ctrl: true, name: 'u'});
|
||||
rl.write(makeFrame());
|
||||
setTimeout(function(){
|
||||
if(!abort){
|
||||
logEarly();
|
||||
}
|
||||
},200);
|
||||
};
|
||||
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;
|
||||
}
|
||||
if (process.argv.indexOf("-v") == -1 && process.env.CI) {
|
||||
doText = true;
|
||||
}
|
||||
|
||||
// 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 start = function (moduleNameArg: string = "", loaderLengthArg: string = "10") {
|
||||
|
||||
export let stop = function(){
|
||||
abort = true;
|
||||
if (!process.env.CI){
|
||||
rl.write(null, {ctrl: true, name: 'u'});
|
||||
rl.close();
|
||||
startTime = process.hrtime();
|
||||
|
||||
moduleName = moduleNameArg;
|
||||
if (doAnimation) {
|
||||
earlyChild = childProcess.fork(path.join(__dirname, "early.child.js"), [], {
|
||||
env: {
|
||||
moduleNameArg: moduleNameArg,
|
||||
loaderLengthArg: loaderLengthArg,
|
||||
CI: process.env.CI
|
||||
}
|
||||
});
|
||||
} else if (doText) {
|
||||
console.log(`**** starting ${chalk.green(moduleNameArg)} ****`);
|
||||
}
|
||||
};
|
||||
|
||||
export let stop = function () {
|
||||
let done = q.defer();
|
||||
let endTime = process.hrtime(startTime);
|
||||
let executionTime = (endTime[0] * 1e9 + endTime[1]) / 1000000000;
|
||||
if (doAnimation) {
|
||||
earlyChild.kill("SIGINT");
|
||||
earlyChild.on("close", function () {
|
||||
console.log(` in ${executionTime} seconds!`);
|
||||
done.resolve();
|
||||
})
|
||||
} else {
|
||||
console.log(`... finished loading ${moduleName} in ${executionTime}`);
|
||||
done.resolve();
|
||||
}
|
||||
return done.promise;
|
||||
};
|
||||
|
||||
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"globalDependencies": {
|
||||
"colors": "registry:dt/colors#0.6.0-1+20160501135139",
|
||||
"node": "registry:dt/node#6.0.0+20160514165920"
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user