Compare commits
76 Commits
Author | SHA1 | Date | |
---|---|---|---|
727d26fae4 | |||
0f2b71ebc3 | |||
638c1a8c8c | |||
c54644949e | |||
53c26d4634 | |||
e3b1ec0633 | |||
1892bd6df1 | |||
20bdf70686 | |||
7787330d63 | |||
67c3efdd59 | |||
7655ba749a | |||
0a089b6f10 | |||
29bf694db6 | |||
019d8deadd | |||
bfef45cab3 | |||
eddc64b891 | |||
e47df19015 | |||
af96ab531b | |||
b96206e8f7 | |||
f96bfc0875 | |||
62f3dbabda | |||
5486e268ed | |||
6d61043379 | |||
ac92f355d4 | |||
140bfb4f5e | |||
4ed87cac7e | |||
d2182a6d0f | |||
b7e48313e1 | |||
9f8e30526f | |||
8dd5c97f3b | |||
58b6a9a328 | |||
1c4020824d | |||
521e5740e5 | |||
ce76702d53 | |||
4590c8f64e | |||
ab7155f198 | |||
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 |
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,4 +1,4 @@
|
||||
node_modules/
|
||||
docs/
|
||||
pages/
|
||||
public/
|
||||
coverage/
|
||||
ts/typings/
|
71
.gitlab-ci.yml
Normal file
71
.gitlab-ci.yml
Normal file
@ -0,0 +1,71 @@
|
||||
# gitzone standard
|
||||
image: hosttoday/ht-docker-node:npmci
|
||||
|
||||
cache:
|
||||
paths:
|
||||
- .yarn/
|
||||
key: "$CI_BUILD_STAGE"
|
||||
|
||||
stages:
|
||||
- test
|
||||
- release
|
||||
- trigger
|
||||
- pages
|
||||
|
||||
testLEGACY:
|
||||
stage: test
|
||||
script:
|
||||
- npmci test legacy
|
||||
coverage: /\d+.?\d+?\%\s*coverage/
|
||||
tags:
|
||||
- docker
|
||||
allow_failure: true
|
||||
|
||||
testLTS:
|
||||
stage: test
|
||||
script:
|
||||
- npmci test lts
|
||||
coverage: /\d+.?\d+?\%\s*coverage/
|
||||
tags:
|
||||
- docker
|
||||
|
||||
testSTABLE:
|
||||
stage: test
|
||||
script:
|
||||
- npmci test stable
|
||||
coverage: /\d+.?\d+?\%\s*coverage/
|
||||
tags:
|
||||
- docker
|
||||
|
||||
release:
|
||||
stage: release
|
||||
script:
|
||||
- npmci publish
|
||||
only:
|
||||
- tags
|
||||
tags:
|
||||
- docker
|
||||
|
||||
trigger:
|
||||
stage: trigger
|
||||
script:
|
||||
- npmci trigger
|
||||
only:
|
||||
- tags
|
||||
tags:
|
||||
- docker
|
||||
|
||||
pages:
|
||||
image: hosttoday/ht-docker-node:npmci
|
||||
stage: pages
|
||||
script:
|
||||
- npmci command yarn global add npmpage
|
||||
- npmci command npmpage --publish gitlab
|
||||
tags:
|
||||
- docker
|
||||
only:
|
||||
- tags
|
||||
artifacts:
|
||||
expire_in: 1 week
|
||||
paths:
|
||||
- public
|
@ -1,4 +0,0 @@
|
||||
docs/
|
||||
coverage/
|
||||
ts/typings/
|
||||
.travis.yml
|
12
.travis.yml
12
.travis.yml
@ -1,12 +0,0 @@
|
||||
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
|
2
LICENSE
2
LICENSE
@ -1,6 +1,6 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Push.Rocks
|
||||
Copyright (c) 2016 Lossless GmbH
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
32
README.md
32
README.md
@ -1,16 +1,40 @@
|
||||
# early
|
||||
minimal and fast loading animation for modules that need a little starting time.
|
||||
minimal and fast loading plugin for startup time measuring
|
||||
|
||||
## Availabililty
|
||||
[](https://www.npmjs.com/package/early)
|
||||
[](https://GitLab.com/pushrocks/early)
|
||||
[](https://github.com/pushrocks/early)
|
||||
[](https://pushrocks.gitlab.io/early/)
|
||||
|
||||
## Status for master
|
||||
[](https://GitLab.com/pushrocks/early/commits/master)
|
||||
[](https://GitLab.com/pushrocks/early/commits/master)
|
||||
[](https://www.npmjs.com/package/early)
|
||||
[](https://david-dm.org/pushrocks/early)
|
||||
[](https://www.bithound.io/github/pushrocks/early/master/dependencies/npm)
|
||||
[](https://www.bithound.io/github/pushrocks/early)
|
||||
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
||||
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
||||
[](http://standardjs.com/)
|
||||
|
||||
## Usage
|
||||
Use TypeScript for best in class instellisense.
|
||||
|
||||
```typescript
|
||||
```javascript
|
||||
// Put the following at the start of your module
|
||||
import * as early from "early";
|
||||
early.start("myModuleName");
|
||||
/*
|
||||
do your loading stuff
|
||||
*/
|
||||
early.stop(); // stop "early" when your module is ready
|
||||
early.stop().then((loadingTime:number) => { // loadingTime in milliseconds
|
||||
|
||||
}); // 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.
|
||||
For further information read the linked docs at the top of this README.
|
||||
|
||||
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
|
||||
|
||||
[](https://push.rocks)
|
||||
|
0
dist/early.child.d.ts
vendored
0
dist/early.child.d.ts
vendored
53
dist/early.child.js
vendored
53
dist/early.child.js
vendored
@ -1,53 +0,0 @@
|
||||
"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 logEarly = function () {
|
||||
rl.write(null, { ctrl: true, name: 'u' });
|
||||
rl.write(makeFrame());
|
||||
setTimeout(function () {
|
||||
logEarly();
|
||||
}, 80);
|
||||
};
|
||||
var start = function (moduleNameArg, loaderLengthArg) {
|
||||
if (moduleNameArg === void 0) { moduleNameArg = ""; }
|
||||
if (loaderLengthArg === void 0) { loaderLengthArg = "10"; }
|
||||
moduleName = moduleNameArg;
|
||||
loaderLength = parseInt(loaderLengthArg);
|
||||
if (process.env.CI == "undefined") {
|
||||
initReadline();
|
||||
logEarly();
|
||||
}
|
||||
else {
|
||||
console.log("**** starting " + moduleName.cyan + " ****");
|
||||
}
|
||||
;
|
||||
};
|
||||
start(process.env.moduleNameArg, process.env.loaderLengthArg);
|
||||
|
||||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVhcmx5LmNoaWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw2Q0FBNkM7QUFDN0MsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQy9CLElBQU8sUUFBUSxXQUFXLFVBQVUsQ0FBQyxDQUFDO0FBQ3RDLElBQUksRUFBRSxDQUFDO0FBQ1AsSUFBSSxZQUFZLEdBQUc7SUFDZixFQUFFLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQztRQUM5QixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7UUFDcEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO0tBQ3JCLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQztBQUVGLElBQUksVUFBaUIsQ0FBQztBQUN0QixJQUFJLFlBQW1CLENBQUM7QUFDeEIsSUFBSSxZQUFZLEdBQVUsQ0FBQyxDQUFDO0FBRTVCLElBQUksU0FBUyxHQUFHO0lBQ1osSUFBSSxZQUFZLEdBQVUsR0FBRztVQUN2QixHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7VUFDOUIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1VBQ3ZDLEdBQUc7VUFDSCxZQUFZO1VBQ1osVUFBVSxDQUFDLElBQUksQ0FBQztJQUV0QixFQUFFLENBQUEsQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLENBQUEsQ0FBQztRQUM3QixZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNKLFlBQVksRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFDRCxNQUFNLENBQUMsWUFBWSxDQUFDO0FBQ3hCLENBQUMsQ0FBQztBQUVGLElBQUksUUFBUSxHQUFHO0lBQ1gsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUMsQ0FBQyxDQUFDO0lBQ3hDLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN0QixVQUFVLENBQUM7UUFDUCxRQUFRLEVBQUUsQ0FBQztJQUNmLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQztBQUNWLENBQUMsQ0FBQztBQUVGLElBQUksS0FBSyxHQUFHLFVBQVMsYUFBeUIsRUFBQyxlQUE2QjtJQUF2RCw2QkFBeUIsR0FBekIsa0JBQXlCO0lBQUMsK0JBQTZCLEdBQTdCLHNCQUE2QjtJQUN4RSxVQUFVLEdBQUcsYUFBYSxDQUFDO0lBQzNCLFlBQVksR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDekMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksV0FBVyxDQUFDLENBQUEsQ0FBQztRQUMvQixZQUFZLEVBQUUsQ0FBQztRQUNmLFFBQVEsRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ0osT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFBQSxDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBRUYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMiLCJmaWxlIjoiZWFybHkuY2hpbGQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi90eXBpbmdzL2luZGV4LmQudHNcIiAvPlxyXG5sZXQgY29sb3JzID0gcmVxdWlyZShcImNvbG9yc1wiKTtcclxuaW1wb3J0IHJlYWRsaW5lID0gcmVxdWlyZShcInJlYWRsaW5lXCIpO1xyXG5sZXQgcmw7IFxyXG5sZXQgaW5pdFJlYWRsaW5lID0gKCkgPT4ge1xyXG4gICAgcmwgPSByZWFkbGluZS5jcmVhdGVJbnRlcmZhY2Uoe1xyXG4gICAgaW5wdXQ6IHByb2Nlc3Muc3RkaW4sXHJcbiAgICBvdXRwdXQ6IHByb2Nlc3Muc3Rkb3V0XHJcbiAgICB9KTtcclxufTtcclxuXHJcbmxldCBtb2R1bGVOYW1lOnN0cmluZztcclxubGV0IGxvYWRlckxlbmd0aDpudW1iZXI7XHJcbmxldCBmcmFtZUNvdW50ZXI6bnVtYmVyID0gMDtcclxuXHJcbmxldCBtYWtlRnJhbWUgPSAoKTpzdHJpbmcgPT4ge1xyXG4gICAgbGV0IHJlc3VsdFN0cmluZzpzdHJpbmcgPSBcIltcIlxyXG4gICAgICAgICsgXCIvXCIuZ3JlZW4ucmVwZWF0KGZyYW1lQ291bnRlcilcclxuICAgICAgICArIFwiIFwiLnJlcGVhdChsb2FkZXJMZW5ndGggLSBmcmFtZUNvdW50ZXIpXHJcbiAgICAgICAgKyBcIl1cIlxyXG4gICAgICAgICsgXCIgc3RhcnRpbmcgXCJcclxuICAgICAgICArIG1vZHVsZU5hbWUuY3lhbjtcclxuXHJcbiAgICBpZihmcmFtZUNvdW50ZXIgPT0gbG9hZGVyTGVuZ3RoKXtcclxuICAgICAgICBmcmFtZUNvdW50ZXIgPSAwO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBmcmFtZUNvdW50ZXIrKztcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHRTdHJpbmc7XHJcbn07XHJcblxyXG5sZXQgbG9nRWFybHkgPSAoKSA9PiB7XHJcbiAgICBybC53cml0ZShudWxsLCB7Y3RybDogdHJ1ZSwgbmFtZTogJ3UnfSk7XHJcbiAgICBybC53cml0ZShtYWtlRnJhbWUoKSk7XHJcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgbG9nRWFybHkoKTtcclxuICAgIH0sODApO1xyXG59O1xyXG5cclxubGV0IHN0YXJ0ID0gZnVuY3Rpb24obW9kdWxlTmFtZUFyZzpzdHJpbmcgPSBcIlwiLGxvYWRlckxlbmd0aEFyZzpzdHJpbmcgPSBcIjEwXCIpe1xyXG4gICAgbW9kdWxlTmFtZSA9IG1vZHVsZU5hbWVBcmc7XHJcbiAgICBsb2FkZXJMZW5ndGggPSBwYXJzZUludChsb2FkZXJMZW5ndGhBcmcpO1xyXG4gICAgaWYgKHByb2Nlc3MuZW52LkNJID09IFwidW5kZWZpbmVkXCIpe1xyXG4gICAgICAgIGluaXRSZWFkbGluZSgpO1xyXG4gICAgICAgIGxvZ0Vhcmx5KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiKioqKiBzdGFydGluZyBcIiArIG1vZHVsZU5hbWUuY3lhbiArIFwiICoqKipcIik7XHJcbiAgICB9O1xyXG59O1xyXG5cclxuc3RhcnQocHJvY2Vzcy5lbnYubW9kdWxlTmFtZUFyZyxwcm9jZXNzLmVudi5sb2FkZXJMZW5ndGhBcmcpOyJdfQ==
|
6
dist/index.d.ts
vendored
6
dist/index.d.ts
vendored
@ -1,2 +1,6 @@
|
||||
import 'typings-global';
|
||||
/**
|
||||
* start the loading
|
||||
*/
|
||||
export declare let start: (moduleNameArg?: string, loaderLengthArg?: string) => void;
|
||||
export declare let stop: () => void;
|
||||
export declare let stop: () => Promise<number>;
|
||||
|
45
dist/index.js
vendored
45
dist/index.js
vendored
@ -1,21 +1,30 @@
|
||||
"use strict";
|
||||
var path = require("path");
|
||||
var childProcess = require("child_process");
|
||||
var earlyChild;
|
||||
// exports
|
||||
exports.start = function (moduleNameArg, loaderLengthArg) {
|
||||
if (moduleNameArg === void 0) { moduleNameArg = ""; }
|
||||
if (loaderLengthArg === void 0) { loaderLengthArg = "10"; }
|
||||
earlyChild = childProcess.fork(path.join(__dirname, "early.child.js"), [], {
|
||||
env: {
|
||||
moduleNameArg: moduleNameArg,
|
||||
loaderLengthArg: loaderLengthArg,
|
||||
CI: process.env.CI
|
||||
}
|
||||
});
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
require("typings-global");
|
||||
const beautycolor = require("beautycolor");
|
||||
const smartq = require("smartq");
|
||||
let doText = false;
|
||||
let moduleName = 'undefined module name';
|
||||
let startTime = Date.now();
|
||||
if (process.argv.indexOf('-v') === -1) {
|
||||
doText = true;
|
||||
}
|
||||
/**
|
||||
* start the loading
|
||||
*/
|
||||
exports.start = function (moduleNameArg = '', loaderLengthArg = '10') {
|
||||
moduleName = moduleNameArg;
|
||||
if (doText) {
|
||||
console.log(`**** starting ${beautycolor.coloredString(moduleNameArg, 'green')} ****`);
|
||||
}
|
||||
};
|
||||
exports.stop = function () {
|
||||
earlyChild.kill();
|
||||
exports.stop = () => {
|
||||
let done = smartq.defer();
|
||||
let endTime = Date.now();
|
||||
let earlyExecutionTime = (endTime - startTime);
|
||||
let earlyExecutionTimeString = (earlyExecutionTime / 1000).toString();
|
||||
console.log(`OK! -> finished loading within ${beautycolor.coloredString(earlyExecutionTimeString, 'blue')}`);
|
||||
done.resolve(earlyExecutionTime);
|
||||
return done.promise;
|
||||
};
|
||||
|
||||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQSxJQUFPLElBQUksV0FBVyxNQUFNLENBQUMsQ0FBQztBQUU5QixJQUFPLFlBQVksV0FBVyxlQUFlLENBQUMsQ0FBQztBQUMvQyxJQUFJLFVBQVUsQ0FBQztBQUNmLFVBQVU7QUFDQyxhQUFLLEdBQUcsVUFBUyxhQUF5QixFQUFDLGVBQTZCO0lBQXZELDZCQUF5QixHQUF6QixrQkFBeUI7SUFBQywrQkFBNkIsR0FBN0Isc0JBQTZCO0lBQy9FLFVBQVUsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFDLGdCQUFnQixDQUFDLEVBQUMsRUFBRSxFQUFDO1FBQ3BFLEdBQUcsRUFBRTtZQUNELGFBQWEsRUFBQyxhQUFhO1lBQzNCLGVBQWUsRUFBQyxlQUFlO1lBQy9CLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7U0FDckI7S0FDSixDQUFDLENBQUM7QUFDUCxDQUFDLENBQUM7QUFFUyxZQUFJLEdBQUc7SUFDZCxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDdEIsQ0FBQyxDQUFDIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vdHlwaW5ncy9pbmRleC5kLnRzXCIgLz5cclxuaW1wb3J0IGNvbG9ycyA9IHJlcXVpcmUoXCJjb2xvcnNcIik7XHJcbmltcG9ydCBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XHJcblxyXG5pbXBvcnQgY2hpbGRQcm9jZXNzID0gcmVxdWlyZShcImNoaWxkX3Byb2Nlc3NcIik7XHJcbmxldCBlYXJseUNoaWxkO1xyXG4vLyBleHBvcnRzXHJcbmV4cG9ydCBsZXQgc3RhcnQgPSBmdW5jdGlvbihtb2R1bGVOYW1lQXJnOnN0cmluZyA9IFwiXCIsbG9hZGVyTGVuZ3RoQXJnOnN0cmluZyA9IFwiMTBcIil7XHJcbiAgICBlYXJseUNoaWxkID0gY2hpbGRQcm9jZXNzLmZvcmsocGF0aC5qb2luKF9fZGlybmFtZSxcImVhcmx5LmNoaWxkLmpzXCIpLFtdLHtcclxuICAgICAgICBlbnY6IHtcclxuICAgICAgICAgICAgbW9kdWxlTmFtZUFyZzptb2R1bGVOYW1lQXJnLFxyXG4gICAgICAgICAgICBsb2FkZXJMZW5ndGhBcmc6bG9hZGVyTGVuZ3RoQXJnLFxyXG4gICAgICAgICAgICBDSTogcHJvY2Vzcy5lbnYuQ0lcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBsZXQgc3RvcCA9IGZ1bmN0aW9uKCl7XHJcbiAgICBlYXJseUNoaWxkLmtpbGwoKTtcclxufTtcclxuXHJcbiJdfQ==
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF1QjtBQUN2QiwyQ0FBMEM7QUFDMUMsaUNBQWdDO0FBRWhDLElBQUksTUFBTSxHQUFZLEtBQUssQ0FBQTtBQUMzQixJQUFJLFVBQVUsR0FBVyx1QkFBdUIsQ0FBQTtBQUNoRCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUE7QUFFMUIsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sR0FBRyxJQUFJLENBQUE7QUFDZixDQUFDO0FBRUQ7O0dBRUc7QUFDUSxRQUFBLEtBQUssR0FBRyxVQUFVLGdCQUF3QixFQUFFLEVBQUUsa0JBQTBCLElBQUk7SUFDckYsVUFBVSxHQUFHLGFBQWEsQ0FBQTtJQUMxQixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsV0FBVyxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3hGLENBQUM7QUFDSCxDQUFDLENBQUE7QUFFVSxRQUFBLElBQUksR0FBRztJQUNoQixJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFVLENBQUE7SUFDakMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQ3hCLElBQUksa0JBQWtCLEdBQVcsQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLENBQUE7SUFDdEQsSUFBSSx3QkFBd0IsR0FBVyxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQzdFLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQWtDLFdBQVcsQ0FBQyxhQUFhLENBQUMsd0JBQXdCLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQzVHLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtJQUNoQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtBQUNyQixDQUFDLENBQUEifQ==
|
5
npmextra.json
Normal file
5
npmextra.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"npmts":{
|
||||
"coverageTreshold":50
|
||||
}
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
{
|
||||
"mode":"default",
|
||||
"coverageTreshold":30
|
||||
}
|
17
package.json
17
package.json
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "early",
|
||||
"version": "2.0.1",
|
||||
"description": "nice module loading animation for modules that need a little starting time.",
|
||||
"version": "2.0.37",
|
||||
"description": "minimal and fast loading plugin for startup time measuring",
|
||||
"main": "dist/index.js",
|
||||
"typings": "dist/index.d.ts",
|
||||
"scripts": {
|
||||
@ -9,7 +9,7 @@
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/pushrocks/early.git"
|
||||
"url": "git+https://gitlab.com/pushrocks/early.git"
|
||||
},
|
||||
"keywords": [
|
||||
"preloader"
|
||||
@ -17,13 +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": "^5.1.9"
|
||||
"smartdelay": "^1.0.1",
|
||||
"tapbundle": "^1.0.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"colors": "^1.1.2"
|
||||
"beautycolor": "^1.0.7",
|
||||
"smartq": "^1.1.1",
|
||||
"typings-global": "^1.0.14"
|
||||
}
|
||||
}
|
||||
|
0
test/test.d.ts
vendored
0
test/test.d.ts
vendored
15
test/test.js
15
test/test.js
@ -1,15 +0,0 @@
|
||||
"use strict";
|
||||
/// <reference path="../ts/typings/index.d.ts" />
|
||||
var early = require("../dist/index.js");
|
||||
describe("early", function () {
|
||||
it(".start()", function (done) {
|
||||
this.timeout(10000);
|
||||
early.start("early");
|
||||
setTimeout(done, 5000);
|
||||
});
|
||||
it(".stop()", function () {
|
||||
early.stop();
|
||||
});
|
||||
});
|
||||
|
||||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGlEQUFpRDtBQUNqRCxJQUFPLEtBQUssV0FBVyxrQkFBa0IsQ0FBQyxDQUFDO0FBRTNDLFFBQVEsQ0FBQyxPQUFPLEVBQUM7SUFDYixFQUFFLENBQUMsVUFBVSxFQUFDLFVBQVMsSUFBSTtRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BCLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckIsVUFBVSxDQUFDLElBQUksRUFBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDLENBQUMsQ0FBQztJQUNILEVBQUUsQ0FBQyxTQUFTLEVBQUM7UUFDVCxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakIsQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDLENBQUMsQ0FBQSIsImZpbGUiOiJ0ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL3RzL3R5cGluZ3MvaW5kZXguZC50c1wiIC8+XHJcbmltcG9ydCBlYXJseSA9IHJlcXVpcmUoXCIuLi9kaXN0L2luZGV4LmpzXCIpO1xyXG5cclxuZGVzY3JpYmUoXCJlYXJseVwiLGZ1bmN0aW9uKCl7XHJcbiAgICBpdChcIi5zdGFydCgpXCIsZnVuY3Rpb24oZG9uZSl7XHJcbiAgICAgICAgdGhpcy50aW1lb3V0KDEwMDAwKTtcclxuICAgICAgICBlYXJseS5zdGFydChcImVhcmx5XCIpO1xyXG4gICAgICAgIHNldFRpbWVvdXQoZG9uZSw1MDAwKTtcclxuICAgIH0pO1xyXG4gICAgaXQoXCIuc3RvcCgpXCIsZnVuY3Rpb24oKXtcclxuICAgICAgICBlYXJseS5zdG9wKCk7XHJcbiAgICB9KVxyXG59KSJdfQ==
|
20
test/test.ts
20
test/test.ts
@ -1,13 +1,11 @@
|
||||
/// <reference path="../ts/typings/index.d.ts" />
|
||||
import early = require("../dist/index.js");
|
||||
import { expect, tap } from 'tapbundle'
|
||||
import * as smartdelay from 'smartdelay'
|
||||
import 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();
|
||||
})
|
||||
tap.test('.start()', async () => {
|
||||
early.start('early')
|
||||
await smartdelay.delayFor(2000)
|
||||
})
|
||||
tap.test('.stop()', async () => {
|
||||
await early.stop()
|
||||
})
|
@ -1,51 +0,0 @@
|
||||
/// <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();
|
||||
},80);
|
||||
};
|
||||
|
||||
let start = function(moduleNameArg:string = "",loaderLengthArg:string = "10"){
|
||||
moduleName = moduleNameArg;
|
||||
loaderLength = parseInt(loaderLengthArg);
|
||||
if (process.env.CI == "undefined"){
|
||||
initReadline();
|
||||
logEarly();
|
||||
} else {
|
||||
console.log("**** starting " + moduleName.cyan + " ****");
|
||||
};
|
||||
};
|
||||
|
||||
start(process.env.moduleNameArg,process.env.loaderLengthArg);
|
46
ts/index.ts
46
ts/index.ts
@ -1,21 +1,31 @@
|
||||
/// <reference path="./typings/index.d.ts" />
|
||||
import colors = require("colors");
|
||||
import path = require("path");
|
||||
import 'typings-global'
|
||||
import * as beautycolor from 'beautycolor'
|
||||
import * as smartq from 'smartq'
|
||||
|
||||
import childProcess = require("child_process");
|
||||
let earlyChild;
|
||||
// exports
|
||||
export let start = function(moduleNameArg:string = "",loaderLengthArg:string = "10"){
|
||||
earlyChild = childProcess.fork(path.join(__dirname,"early.child.js"),[],{
|
||||
env: {
|
||||
moduleNameArg:moduleNameArg,
|
||||
loaderLengthArg:loaderLengthArg,
|
||||
CI: process.env.CI
|
||||
}
|
||||
});
|
||||
};
|
||||
let doText: boolean = false
|
||||
let moduleName: string = 'undefined module name'
|
||||
let startTime = Date.now()
|
||||
|
||||
export let stop = function(){
|
||||
earlyChild.kill();
|
||||
};
|
||||
if (process.argv.indexOf('-v') === -1) {
|
||||
doText = true
|
||||
}
|
||||
|
||||
/**
|
||||
* start the loading
|
||||
*/
|
||||
export let start = function (moduleNameArg: string = '', loaderLengthArg: string = '10') {
|
||||
moduleName = moduleNameArg
|
||||
if (doText) {
|
||||
console.log(`**** starting ${beautycolor.coloredString(moduleNameArg, 'green')} ****`)
|
||||
}
|
||||
}
|
||||
|
||||
export let stop = (): Promise<number> => {
|
||||
let done = smartq.defer<number>()
|
||||
let endTime = Date.now()
|
||||
let earlyExecutionTime: number = (endTime - startTime)
|
||||
let earlyExecutionTimeString: string = (earlyExecutionTime / 1000).toString()
|
||||
console.log(`OK! -> finished loading within ${beautycolor.coloredString(earlyExecutionTimeString, 'blue')}`)
|
||||
done.resolve(earlyExecutionTime)
|
||||
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"
|
||||
}
|
||||
}
|
3
tslint.json
Normal file
3
tslint.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": "tslint-config-standard"
|
||||
}
|
Reference in New Issue
Block a user