Compare commits

..

45 Commits

Author SHA1 Message Date
b40d8452ec 2.0.9 2016-06-11 23:53:55 +02:00
d8281f098a fix promise for CI 2016-06-11 23:53:48 +02:00
3ffee9d0d6 2.0.8 2016-06-11 23:47:57 +02:00
03dfdda812 now removing readline correcctly 2016-06-11 23:47:52 +02:00
24cce5d9b2 2.0.7 2016-06-10 06:08:06 +02:00
295e568097 now preventing async readline clutter 2016-06-10 06:08:03 +02:00
846bcf66db 2.0.6 2016-06-10 05:59:24 +02:00
fc7d7fd27f now clearing correctly 2016-06-10 05:59:21 +02:00
9829c7bb1e 2.0.5 2016-06-10 05:43:39 +02:00
6827999cf8 fix another issue 2016-06-10 05:43:27 +02:00
b318fa2076 2.0.4 2016-06-10 05:36:09 +02:00
0c751e1bca fix CI issue 2016-06-10 05:36:06 +02:00
cb489552f2 2.0.3 2016-06-10 05:21:47 +02:00
addd66091f fix gitlab ci base image 2016-06-10 05:21:44 +02:00
c2f8199f0b 2.0.2 2016-06-10 05:18:07 +02:00
5e5696cce1 now paying respect to commandline 2016-06-10 05:18:03 +02:00
44d9782487 update project to use gitlab-ci 2016-05-30 05:58:56 +02:00
41592a4d2f 2.0.1 2016-05-23 05:17:07 +02:00
23367249ec update REAMDE 2016-05-23 05:17:02 +02:00
b415bf4ee7 2.0.0 2016-05-23 05:16:05 +02:00
86b6a6c3c4 update README 2016-05-23 05:15:58 +02:00
ffbfc29628 1.0.12 2016-05-23 05:11:10 +02:00
9c6e452801 another small fix 2016-05-23 05:11:03 +02:00
96c421e96e 1.0.11 2016-05-23 05:02:58 +02:00
84af99ba80 fixed CI detection in child process 2016-05-23 05:02:49 +02:00
6bb20dbc7b 1.0.10 2016-05-23 04:58:02 +02:00
66a7fc2afe small log fix 2016-05-23 04:57:41 +02:00
a42faf36d2 1.0.9 2016-05-23 04:51:50 +02:00
6db7cc0e14 fix path 2016-05-23 04:51:45 +02:00
102d384de5 1.0.8 2016-05-23 04:40:09 +02:00
1ceae01a49 now forking a seperate process to work when node is busy 2016-05-23 04:40:04 +02:00
7f4adbfe9f 1.0.7 2016-05-22 01:00:18 +02:00
eb72e2dccc add typings tag to package.json 2016-05-22 00:59:12 +02:00
839c80f5dd 1.0.6 2016-05-22 00:50:08 +02:00
e7e96972ad add npmts.json 2016-05-22 00:49:54 +02:00
799c2a58ca 1.0.5 2016-05-22 00:43:59 +02:00
1955dadba3 small fix 2016-05-22 00:43:54 +02:00
c14fadadf7 1.0.4 2016-05-22 00:38:28 +02:00
3f1a05d3e0 now working with CI 2016-05-22 00:38:14 +02:00
5908dc8b6f 1.0.3 2016-05-21 20:35:17 +02:00
d7ecf8e320 add travis 2016-05-21 20:35:14 +02:00
8b73f7a6bb 1.0.2 2016-05-21 20:33:20 +02:00
00d9ad0af1 now ready for use 2016-05-21 20:33:13 +02:00
ef20c00999 started using readline 2016-05-20 19:44:52 +02:00
4dab0f250a initial 2016-05-20 19:06:25 +02:00
16 changed files with 335 additions and 10 deletions

4
.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
node_modules/
docs/
coverage/
ts/typings/

35
.gitlab-ci.yml Normal file
View 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

4
.npmignore Normal file
View File

@ -0,0 +1,4 @@
docs/
coverage/
ts/typings/
.travis.yml

12
.travis.yml Normal file
View File

@ -0,0 +1,12 @@
language: node_js
node_js:
- '4'
- stable
deploy:
provider: npm
email: npm@lossless.digital
api_key:
secure: WmJJw1aJ1kbTOtArdBvgtYEcEk2899hiPc/XnCoUrHz45DAgnAES4eVUbhI5AC78tjnKc+iqbB9e5+vziSW4G5P4KAuP0CYLd5v4G5ZC4IYigFPxroIib7wFtGoOlhe8AItLDMdYO2KcPYXVpZzaITj2FlfNjoqg5UiKnSVShKwUALQk6JdZ345d0iwyr2nmNA6m0FJhcO2weY3BEDRyPWuody/FEoVZ3I2Q1f3R50v3Kb7Nzfn0uob5ABjux4YZ4xJ6tNeJkU021tSgJhjqfwbVMoIVJohwa5jlaqXdMQvWWKvhOAFyDj6zOJ1BnIuVYltDoWczuPi3+YVtFoc2+rYdSXYUcK1aCfVQZ8DDYYzlZ9Sp1vxiy8D3RZuNkLzUImranCDl6r6EYTxEw2L2bAowo9wLZtnht/mlRvOOLM9ZYVi0yr7Cd9FhVfiLZO97OGybfTFvih+nbMZGk5/RVeQzYzsycgeNT96ii5+de0yerbD690Qf+Kap5IlS5Fyvo2Y/SVQ3nxgQt7Pa4bTLbMwzSmXoBgUO6j6d8Qv7fPGQvbOQJEGJaZDaqpgxxS7WIc2YtwLXXob757BxKNW6Y6xPCcTqX7lMqfyQa194EjPTNTK+O0YnGAFFnXps/uCc8ccH3z3x6IrAAQpPx68gPERiWMf2WiPsMoh+kH4UzLc=
on:
tags: true
repo: pushrocks/early

View File

@ -1,12 +1,16 @@
# early
nice module loading animation for modules that need a little starting time.
minimal and fast loading animation for modules that need a little starting time.
> **note: this package is NOT READY YET**
## Usage
```typscript
```typescript
// Put the following at the start of your module
import * as early from "early";
early.start();
// do your loading stuff
early.stop();
early.start("myModuleName");
/*
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
View File

@ -0,0 +1 @@
import "typings-global";

51
dist/early.child.js vendored Normal file
View File

@ -0,0 +1,51 @@
"use strict";
require("typings-global");
var colors = require("colors");
var readline = require("readline");
var 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 logEarlyAbort = false;
var logEarly = function () {
rl.write(null, { ctrl: true, name: 'u' });
rl.write(makeFrame());
setTimeout(function () {
if (!logEarlyAbort)
logEarly();
}, 80);
};
var start = function (moduleNameArg, loaderLengthArg) {
if (moduleNameArg === void 0) { moduleNameArg = ""; }
if (loaderLengthArg === void 0) { loaderLengthArg = "10"; }
moduleName = moduleNameArg;
loaderLength = parseInt(loaderLengthArg);
logEarly();
};
start(process.env.moduleNameArg, process.env.loaderLengthArg);
process.on('SIGINT', function () {
logEarlyAbort = true;
rl.write(null, { ctrl: true, name: 'u' });
rl.close();
process.exit(0);
});
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVhcmx5LmNoaWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxRQUFPLGdCQUFnQixDQUFDLENBQUE7QUFDeEIsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQy9CLElBQU8sUUFBUSxXQUFXLFVBQVUsQ0FBQyxDQUFDO0FBQ3RDLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7SUFDOUIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO0lBQ3BCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtDQUN6QixDQUFDLENBQUM7QUFFSCxJQUFJLFVBQWlCLENBQUM7QUFDdEIsSUFBSSxZQUFtQixDQUFDO0FBQ3hCLElBQUksWUFBWSxHQUFVLENBQUMsQ0FBQztBQUU1QixJQUFJLFNBQVMsR0FBRztJQUNaLElBQUksWUFBWSxHQUFVLEdBQUc7VUFDdkIsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO1VBQzlCLEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztVQUN2QyxHQUFHO1VBQ0gsWUFBWTtVQUNaLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFFdEIsRUFBRSxDQUFBLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQyxDQUFBLENBQUM7UUFDN0IsWUFBWSxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDSixZQUFZLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxDQUFDLFlBQVksQ0FBQztBQUN4QixDQUFDLENBQUM7QUFFRixJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7QUFDMUIsSUFBSSxRQUFRLEdBQUc7SUFDWCxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQUM7SUFDeEMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3RCLFVBQVUsQ0FBQztRQUNQLEVBQUUsQ0FBQSxDQUFDLENBQUMsYUFBYSxDQUFDO1lBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ1YsQ0FBQyxDQUFDO0FBRUYsSUFBSSxLQUFLLEdBQUcsVUFBUyxhQUF5QixFQUFDLGVBQTZCO0lBQXZELDZCQUF5QixHQUF6QixrQkFBeUI7SUFBQywrQkFBNkIsR0FBN0Isc0JBQTZCO0lBQ3hFLFVBQVUsR0FBRyxhQUFhLENBQUM7SUFDM0IsWUFBWSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN6QyxRQUFRLEVBQUUsQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVGLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBRTdELE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2pCLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDckIsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUMsQ0FBQyxDQUFDO0lBQ3hDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNYLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEIsQ0FBQyxDQUFDLENBQUMiLCJmaWxlIjoiZWFybHkuY2hpbGQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCJ0eXBpbmdzLWdsb2JhbFwiO1xubGV0IGNvbG9ycyA9IHJlcXVpcmUoXCJjb2xvcnNcIik7XG5pbXBvcnQgcmVhZGxpbmUgPSByZXF1aXJlKFwicmVhZGxpbmVcIik7XG5sZXQgcmwgPSByZWFkbGluZS5jcmVhdGVJbnRlcmZhY2Uoe1xuICAgIGlucHV0OiBwcm9jZXNzLnN0ZGluLFxuICAgIG91dHB1dDogcHJvY2Vzcy5zdGRvdXRcbn0pO1xuXG5sZXQgbW9kdWxlTmFtZTpzdHJpbmc7XG5sZXQgbG9hZGVyTGVuZ3RoOm51bWJlcjtcbmxldCBmcmFtZUNvdW50ZXI6bnVtYmVyID0gMDtcblxubGV0IG1ha2VGcmFtZSA9ICgpOnN0cmluZyA9PiB7XG4gICAgbGV0IHJlc3VsdFN0cmluZzpzdHJpbmcgPSBcIltcIlxuICAgICAgICArIFwiL1wiLmdyZWVuLnJlcGVhdChmcmFtZUNvdW50ZXIpXG4gICAgICAgICsgXCIgXCIucmVwZWF0KGxvYWRlckxlbmd0aCAtIGZyYW1lQ291bnRlcilcbiAgICAgICAgKyBcIl1cIlxuICAgICAgICArIFwiIHN0YXJ0aW5nIFwiXG4gICAgICAgICsgbW9kdWxlTmFtZS5jeWFuO1xuXG4gICAgaWYoZnJhbWVDb3VudGVyID09IGxvYWRlckxlbmd0aCl7XG4gICAgICAgIGZyYW1lQ291bnRlciA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZnJhbWVDb3VudGVyKys7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRTdHJpbmc7XG59O1xuXG5sZXQgbG9nRWFybHlBYm9ydCA9IGZhbHNlO1xubGV0IGxvZ0Vhcmx5ID0gKCkgPT4ge1xuICAgIHJsLndyaXRlKG51bGwsIHtjdHJsOiB0cnVlLCBuYW1lOiAndSd9KTtcbiAgICBybC53cml0ZShtYWtlRnJhbWUoKSk7XG4gICAgc2V0VGltZW91dChmdW5jdGlvbigpe1xuICAgICAgICBpZighbG9nRWFybHlBYm9ydCkgbG9nRWFybHkoKTtcbiAgICB9LDgwKTtcbn07XG5cbmxldCBzdGFydCA9IGZ1bmN0aW9uKG1vZHVsZU5hbWVBcmc6c3RyaW5nID0gXCJcIixsb2FkZXJMZW5ndGhBcmc6c3RyaW5nID0gXCIxMFwiKXtcbiAgICBtb2R1bGVOYW1lID0gbW9kdWxlTmFtZUFyZztcbiAgICBsb2FkZXJMZW5ndGggPSBwYXJzZUludChsb2FkZXJMZW5ndGhBcmcpO1xuICAgIGxvZ0Vhcmx5KCk7XG59O1xuXG5zdGFydChwcm9jZXNzLmVudi5tb2R1bGVOYW1lQXJnLHByb2Nlc3MuZW52LmxvYWRlckxlbmd0aEFyZyk7XG5cbnByb2Nlc3Mub24oJ1NJR0lOVCcsICgpID0+IHtcbiAgICBsb2dFYXJseUFib3J0ID0gdHJ1ZTtcbiAgICBybC53cml0ZShudWxsLCB7Y3RybDogdHJ1ZSwgbmFtZTogJ3UnfSk7XG4gICAgcmwuY2xvc2UoKTtcbiAgICBwcm9jZXNzLmV4aXQoMCk7XG59KTsiXX0=

3
dist/index.d.ts vendored Normal file
View File

@ -0,0 +1,3 @@
import "typings-global";
export declare let start: (moduleNameArg?: string, loaderLengthArg?: string) => void;
export declare let stop: () => any;

59
dist/index.js vendored Normal file
View File

@ -0,0 +1,59 @@
"use strict";
require("typings-global");
var path = require("path");
var q = require("q");
var readline = require("readline");
var childProcess = require("child_process");
var earlyChild;
var doAnimation = true;
var doText = false;
if (process.argv.indexOf("-v") != -1 || process.env.CI) {
doAnimation = false;
}
else if (process.argv.indexOf("-v") == -1) {
doText = true;
}
// exports
exports.start = function (moduleNameArg, loaderLengthArg) {
if (moduleNameArg === void 0) { moduleNameArg = ""; }
if (loaderLengthArg === void 0) { loaderLengthArg = "10"; }
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 " + moduleNameArg.cyan + " ****");
}
};
exports.stop = function () {
var done = q.defer();
if (doAnimation) {
earlyChild.kill();
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.write(null, { ctrl: true, name: 'u' });
rl.close();
earlyChild.on("close", function () {
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.write(null, { ctrl: true, name: 'u' });
rl.close();
done.resolve();
});
}
else {
done.resolve();
}
return done.promise;
};
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUUsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNKLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDeEIsQ0FBQyxDQUFDIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwidHlwaW5ncy1nbG9iYWxcIlxuaW1wb3J0IGNvbG9ycyA9IHJlcXVpcmUoXCJjb2xvcnNcIik7XG5pbXBvcnQgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xubGV0IHEgPSByZXF1aXJlKFwicVwiKTtcbmltcG9ydCByZWFkbGluZSA9IHJlcXVpcmUoXCJyZWFkbGluZVwiKTtcbmltcG9ydCBjaGlsZFByb2Nlc3MgPSByZXF1aXJlKFwiY2hpbGRfcHJvY2Vzc1wiKTtcbmxldCBlYXJseUNoaWxkO1xuXG5sZXQgZG9BbmltYXRpb246Ym9vbGVhbiA9IHRydWU7XG5sZXQgZG9UZXh0OmJvb2xlYW4gPSBmYWxzZTtcbmlmKHByb2Nlc3MuYXJndi5pbmRleE9mKFwiLXZcIikgIT0gLTEgfHwgcHJvY2Vzcy5lbnYuQ0kpe1xuICAgIGRvQW5pbWF0aW9uID0gZmFsc2U7XG59IGVsc2UgaWYocHJvY2Vzcy5hcmd2LmluZGV4T2YoXCItdlwiKSA9PSAtMSl7XG4gICAgZG9UZXh0ID0gdHJ1ZTtcbn1cblxuLy8gZXhwb3J0c1xuZXhwb3J0IGxldCBzdGFydCA9IGZ1bmN0aW9uKG1vZHVsZU5hbWVBcmc6c3RyaW5nID0gXCJcIixsb2FkZXJMZW5ndGhBcmc6c3RyaW5nID0gXCIxMFwiKXtcbiAgICBpZihkb0FuaW1hdGlvbil7XG4gICAgICAgIGVhcmx5Q2hpbGQgPSBjaGlsZFByb2Nlc3MuZm9yayhwYXRoLmpvaW4oX19kaXJuYW1lLFwiZWFybHkuY2hpbGQuanNcIiksW10se1xuICAgICAgICAgICAgZW52OiB7XG4gICAgICAgICAgICAgICAgbW9kdWxlTmFtZUFyZzptb2R1bGVOYW1lQXJnLFxuICAgICAgICAgICAgICAgIGxvYWRlckxlbmd0aEFyZzpsb2FkZXJMZW5ndGhBcmcsXG4gICAgICAgICAgICAgICAgQ0k6IHByb2Nlc3MuZW52LkNJXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoZG9UZXh0KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiKioqKiBzdGFydGluZyBcIiArIG1vZHVsZU5hbWVBcmcuY3lhbiArIFwiICoqKipcIik7XG4gICAgfVxufTtcblxuZXhwb3J0IGxldCBzdG9wID0gZnVuY3Rpb24oKXtcbiAgICBsZXQgZG9uZSA9IHEuZGVmZXIoKTtcbiAgICBpZihkb0FuaW1hdGlvbil7XG4gICAgICAgIGVhcmx5Q2hpbGQua2lsbCgpO1xuICAgICAgICBsZXQgcmwgPSByZWFkbGluZS5jcmVhdGVJbnRlcmZhY2Uoe1xuICAgICAgICAgICAgaW5wdXQ6IHByb2Nlc3Muc3RkaW4sXG4gICAgICAgICAgICBvdXRwdXQ6IHByb2Nlc3Muc3Rkb3V0XG4gICAgICAgIH0pO1xuICAgICAgICBybC53cml0ZShudWxsLCB7Y3RybDogdHJ1ZSwgbmFtZTogJ3UnfSk7XG4gICAgICAgIHJsLmNsb3NlKCk7XG4gICAgICAgIGVhcmx5Q2hpbGQub24oXCJjbG9zZVwiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBsZXQgcmwgPSByZWFkbGluZS5jcmVhdGVJbnRlcmZhY2Uoe1xuICAgICAgICAgICAgICAgIGlucHV0OiBwcm9jZXNzLnN0ZGluLFxuICAgICAgICAgICAgICAgIG91dHB1dDogcHJvY2Vzcy5zdGRvdXRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmwud3JpdGUobnVsbCwge2N0cmw6IHRydWUsIG5hbWU6ICd1J30pO1xuICAgICAgICAgICAgcmwuY2xvc2UoKTtcbiAgICAgICAgICAgIGRvbmUucmVzb2x2ZSgpO1xuICAgICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGRvbmUucmVzb2x2ZSgpO1xuICAgIH1cbiAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xufTtcblxuIl19

4
npmts.json Normal file
View File

@ -0,0 +1,4 @@
{
"mode":"default",
"coverageTreshold":30
}

View File

@ -1,14 +1,15 @@
{
"name": "early",
"version": "1.0.1",
"version": "2.0.9",
"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,7 +17,16 @@
"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-g": "^5.2.6",
"typings-test": "^1.0.1"
},
"dependencies": {
"colors": "^1.1.2",
"q": "^1.4.1",
"typings-global": "^1.0.3"
}
}

1
test/test.d.ts vendored Normal file
View File

@ -0,0 +1 @@
import "typings-test";

16
test/test.js Normal file
View File

@ -0,0 +1,16 @@
"use strict";
require("typings-test");
var early = require("../dist/index");
describe("early", function () {
it(".start()", function (done) {
this.timeout(10000);
early.start("early");
setTimeout(done, 5000);
});
it(".stop()", function (done) {
early.stop()
.then(done);
});
});
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FBYyxDQUFDLENBQUE7QUFDdEIsSUFBTyxLQUFLLFdBQVcsZUFBZSxDQUFDLENBQUM7QUFFeEMsUUFBUSxDQUFDLE9BQU8sRUFBQztJQUNiLEVBQUUsQ0FBQyxVQUFVLEVBQUMsVUFBUyxJQUFJO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQixVQUFVLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ0gsRUFBRSxDQUFDLFNBQVMsRUFBQyxVQUFTLElBQUk7UUFDdEIsS0FBSyxDQUFDLElBQUksRUFBRTthQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQyxDQUFBIiwiZmlsZSI6InRlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCJ0eXBpbmdzLXRlc3RcIjtcbmltcG9ydCBlYXJseSA9IHJlcXVpcmUoXCIuLi9kaXN0L2luZGV4XCIpO1xuXG5kZXNjcmliZShcImVhcmx5XCIsZnVuY3Rpb24oKXtcbiAgICBpdChcIi5zdGFydCgpXCIsZnVuY3Rpb24oZG9uZSl7XG4gICAgICAgIHRoaXMudGltZW91dCgxMDAwMCk7XG4gICAgICAgIGVhcmx5LnN0YXJ0KFwiZWFybHlcIik7XG4gICAgICAgIHNldFRpbWVvdXQoZG9uZSw1MDAwKTtcbiAgICB9KTtcbiAgICBpdChcIi5zdG9wKClcIixmdW5jdGlvbihkb25lKXtcbiAgICAgICAgZWFybHkuc3RvcCgpXG4gICAgICAgICAgICAudGhlbihkb25lKTtcbiAgICB9KVxufSkiXX0=

14
test/test.ts Normal file
View File

@ -0,0 +1,14 @@
import "typings-test";
import early = require("../dist/index");
describe("early",function(){
it(".start()",function(done){
this.timeout(10000);
early.start("early");
setTimeout(done,5000);
});
it(".stop()",function(done){
early.stop()
.then(done);
})
})

51
ts/early.child.ts Normal file
View File

@ -0,0 +1,51 @@
import "typings-global";
let colors = require("colors");
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 = "["
+ "/".green.repeat(frameCounter)
+ " ".repeat(loaderLength - frameCounter)
+ "]"
+ " starting "
+ moduleName.cyan;
if(frameCounter == loaderLength){
frameCounter = 0;
} else {
frameCounter++;
}
return resultString;
};
let logEarlyAbort = false;
let logEarly = () => {
rl.write(null, {ctrl: true, name: 'u'});
rl.write(makeFrame());
setTimeout(function(){
if(!logEarlyAbort) 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.close();
process.exit(0);
});

56
ts/index.ts Normal file
View File

@ -0,0 +1,56 @@
import "typings-global"
import colors = require("colors");
import path = require("path");
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){
doAnimation = false;
} 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"),[],{
env: {
moduleNameArg:moduleNameArg,
loaderLengthArg:loaderLengthArg,
CI: process.env.CI
}
});
} else if (doText) {
console.log("**** starting " + moduleNameArg.cyan + " ****");
}
};
export let stop = function(){
let done = q.defer();
if(doAnimation){
earlyChild.kill();
let rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.write(null, {ctrl: true, name: 'u'});
rl.close();
earlyChild.on("close",function(){
let rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.write(null, {ctrl: true, name: 'u'});
rl.close();
done.resolve();
})
} else {
done.resolve();
}
return done.promise;
};