Compare commits

..

103 Commits

Author SHA1 Message Date
ce99e04b45 2.1.1 2017-04-23 20:59:33 +02:00
c0a1e0a14f update ci and docs 2017-04-23 20:59:28 +02:00
83392d18f6 2.1.0 2017-04-23 20:57:13 +02:00
270cb2533e now has better hrtMeasurement 2017-04-23 20:57:01 +02:00
fad367ca0b now has hrtime Measurement 2017-04-23 18:46:13 +02:00
836f8d18b0 2.0.38 2017-03-26 22:04:39 +02:00
ce269ae337 update npmextra.json 2017-03-26 22:04:32 +02:00
727d26fae4 2.0.37 2017-03-26 22:02:21 +02:00
0f2b71ebc3 add new ci 2017-03-26 22:02:18 +02:00
638c1a8c8c now testing properly 2017-03-26 22:01:33 +02:00
c54644949e 2.0.36 2017-02-17 18:57:06 +01:00
53c26d4634 clean up and update deps 2017-02-17 18:56:58 +01:00
e3b1ec0633 improve README 2017-02-03 15:15:36 +01:00
1892bd6df1 2.0.35 2016-09-19 20:50:09 +02:00
20bdf70686 Update description 2016-09-19 20:50:01 +02:00
7787330d63 2.0.34 2016-09-19 20:48:23 +02:00
67c3efdd59 improve README 2016-09-19 20:48:11 +02:00
7655ba749a 2.0.33 2016-09-19 00:44:12 +02:00
0a089b6f10 removed unnecessary import 2016-09-19 00:43:58 +02:00
29bf694db6 2.0.32 2016-09-19 00:34:50 +02:00
019d8deadd update 2016-09-19 00:34:45 +02:00
bfef45cab3 update 2016-09-19 00:34:38 +02:00
eddc64b891 2.0.31 2016-09-18 23:45:00 +02:00
e47df19015 fix 2016-09-18 23:44:56 +02:00
af96ab531b add bithoundrc 2016-09-18 23:22:55 +02:00
b96206e8f7 2.0.30 2016-09-18 23:13:03 +02:00
f96bfc0875 improve README 2016-09-18 23:12:58 +02:00
62f3dbabda 2.0.29 2016-09-18 23:11:34 +02:00
5486e268ed prevent segmentation fault error by directly communicating with process 2016-09-18 23:11:26 +02:00
6d61043379 2.0.28 2016-09-15 14:59:33 +02:00
ac92f355d4 now passing required loading time through promise 2016-09-15 14:59:22 +02:00
140bfb4f5e 2.0.27 2016-09-15 14:46:02 +02:00
4ed87cac7e now adhering to standardjs 2016-09-15 14:45:58 +02:00
d2182a6d0f 2.0.26 2016-08-21 17:29:46 +02:00
b7e48313e1 improve typings 2016-08-21 17:29:38 +02:00
9f8e30526f 2.0.25 2016-08-20 09:09:07 +02:00
8dd5c97f3b finally fixed Segmentation error caused by readline in child process 2016-08-20 09:09:03 +02:00
58b6a9a328 2.0.24 2016-08-20 08:42:42 +02:00
1c4020824d switch from process.hrtime() to Date.now() 2016-08-20 08:42:39 +02:00
521e5740e5 2.0.23 2016-08-20 08:29:25 +02:00
ce76702d53 make it even more foolproof 2016-08-20 08:29:18 +02:00
4590c8f64e 2.0.22 2016-08-20 08:06:47 +02:00
ab7155f198 fix 2016-08-20 08:06:41 +02:00
feba451f90 2.0.21 2016-08-20 07:51:41 +02:00
1ba1b0447b fixed CI console output 2016-08-20 07:51:04 +02:00
e4db3ba7ee 2.0.20 2016-08-20 07:46:42 +02:00
da209ecc06 2.0.19 2016-08-20 07:42:04 +02:00
e010b01c42 fixed error 2016-08-20 07:41:56 +02:00
225c46a788 2.0.18 2016-08-20 07:32:48 +02:00
7883f1cb7d add npmextra.json 2016-08-20 07:32:44 +02:00
394dd88a1d 2.0.17 2016-08-20 07:29:30 +02:00
1d8fee1506 fixed small error 2016-08-20 07:29:27 +02:00
88d5409c40 2.0.16 2016-08-20 07:15:55 +02:00
b8c9508d21 try catch for execution time 2016-08-20 07:15:52 +02:00
59f97c3254 2.0.15 2016-08-20 07:12:24 +02:00
0491493b2e fixed typo 2016-08-20 07:12:19 +02:00
aca45165f8 2.0.14 2016-08-20 07:04:03 +02:00
569c597f8b improved early and added loading time 2016-08-20 07:03:49 +02:00
5f17ea48ed 2.0.13 2016-06-12 00:42:24 +02:00
6a9cdd297a fix 2016-06-12 00:42:04 +02:00
0a363b441c 2.0.12 2016-06-12 00:38:17 +02:00
3af6edd5e6 move new line to main process 2016-06-12 00:38:11 +02:00
9a26f1367d 2.0.11 2016-06-12 00:30:14 +02:00
15dd17e7a7 now inserting new line 2016-06-12 00:30:10 +02:00
3b704dbde5 2.0.10 2016-06-12 00:12:46 +02:00
48aeb16dfd fix some readline closing issue 2016-06-12 00:12:40 +02:00
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
21 changed files with 612 additions and 192 deletions

4
.gitignore vendored
View File

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

71
.gitlab-ci.yml Normal file
View 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
tags:
- docker
only:
- tags
artifacts:
expire_in: 1 week
paths:
- public

View File

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

View File

@ -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

View File

@ -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

View File

@ -1,15 +1,25 @@
# early
minimal and fast loading animation for modules that need a little starting time.
minimal and fast loading plugin for startup time measuring
## Usage
## Availabililty
[![npm](https://pushrocks.gitlab.io/assets/repo-button-npm.svg)](https://www.npmjs.com/package/early)
[![git](https://pushrocks.gitlab.io/assets/repo-button-git.svg)](https://GitLab.com/pushrocks/early)
[![git](https://pushrocks.gitlab.io/assets/repo-button-mirror.svg)](https://github.com/pushrocks/early)
[![docs](https://pushrocks.gitlab.io/assets/repo-button-docs.svg)](https://pushrocks.gitlab.io/early/)
```typescript
// 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
```
## Status for master
[![build status](https://GitLab.com/pushrocks/early/badges/master/build.svg)](https://GitLab.com/pushrocks/early/commits/master)
[![coverage report](https://GitLab.com/pushrocks/early/badges/master/coverage.svg)](https://GitLab.com/pushrocks/early/commits/master)
[![npm downloads per month](https://img.shields.io/npm/dm/early.svg)](https://www.npmjs.com/package/early)
[![Dependency Status](https://david-dm.org/pushrocks/early.svg)](https://david-dm.org/pushrocks/early)
[![bitHound Dependencies](https://www.bithound.io/github/pushrocks/early/badges/dependencies.svg)](https://www.bithound.io/github/pushrocks/early/master/dependencies/npm)
[![bitHound Code](https://www.bithound.io/github/pushrocks/early/badges/code.svg)](https://www.bithound.io/github/pushrocks/early)
[![TypeScript](https://img.shields.io/badge/TypeScript-2.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
[![node](https://img.shields.io/badge/node->=%206.x.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
[![JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)
For further information read the linked docs at the top of this README.
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
[![repo-footer](https://pushrocks.gitlab.io/assets/repo-footer.svg)](https://push.rocks)

22
dist/early.hrtMeasurement.d.ts vendored Normal file
View File

@ -0,0 +1,22 @@
/**
* easy high resolution time measurement
*/
export declare class HrtMeasurement {
nanoSeconds: number;
milliSeconds: number;
private _hrTimeStart;
private _hrTimeStopDiff;
private _started;
/**
* start the measurement
*/
start(): void;
/**
* stop the measurement
*/
stop(): this;
/**
* reset the measurement
*/
reset(): void;
}

47
dist/early.hrtMeasurement.js vendored Normal file
View File

@ -0,0 +1,47 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const process = require("process");
/**
* easy high resolution time measurement
*/
class HrtMeasurement {
constructor() {
this.nanoSeconds = null;
this.milliSeconds = null;
this._hrTimeStart = null;
this._hrTimeStopDiff = null;
this._started = false;
}
/**
* start the measurement
*/
start() {
this._started = true;
this._hrTimeStart = process.hrtime();
}
/**
* stop the measurement
*/
stop() {
if (this._started === false) {
console.log('Hasn\'t started yet');
return;
}
this._hrTimeStopDiff = process.hrtime(this._hrTimeStart);
this.nanoSeconds = (this._hrTimeStopDiff[0] * 1e9) + this._hrTimeStopDiff[1];
this.milliSeconds = this.nanoSeconds / 1000000;
return this;
}
/**
* reset the measurement
*/
reset() {
this.nanoSeconds = null;
this.milliSeconds = null;
this._hrTimeStart = null;
this._hrTimeStopDiff = null;
this._started = false;
}
}
exports.HrtMeasurement = HrtMeasurement;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWFybHkuaHJ0TWVhc3VyZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9lYXJseS5ocnRNZWFzdXJlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1DQUFrQztBQUVsQzs7R0FFRztBQUNIO0lBQUE7UUFDRSxnQkFBVyxHQUFXLElBQUksQ0FBQTtRQUMxQixpQkFBWSxHQUFXLElBQUksQ0FBQTtRQUNuQixpQkFBWSxHQUFHLElBQUksQ0FBQTtRQUNuQixvQkFBZSxHQUFHLElBQUksQ0FBQTtRQUN0QixhQUFRLEdBQVksS0FBSyxDQUFBO0lBa0NuQyxDQUFDO0lBaENDOztPQUVHO0lBQ0gsS0FBSztRQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUk7UUFDRixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1lBQ2xDLE1BQU0sQ0FBQTtRQUNSLENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ3hELElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDNUUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQTtRQUM5QyxNQUFNLENBQUMsSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSztRQUNILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFBO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFBO0lBQ3ZCLENBQUM7Q0FDRjtBQXZDRCx3Q0F1Q0MifQ==

10
dist/index.d.ts vendored
View File

@ -1,2 +1,8 @@
export declare let start: (moduleNameArg?: string, loaderLengthArg?: number) => void;
export declare let stop: () => void;
import 'typings-global';
import { HrtMeasurement } from './early.hrtMeasurement';
export { HrtMeasurement };
/**
* start the loading
*/
export declare let start: (moduleNameArg?: string, loaderLengthArg?: string) => void;
export declare let stop: () => Promise<number>;

89
dist/index.js vendored
View File

@ -1,64 +1,33 @@
"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);
};
// exports
exports.start = function (moduleNameArg, loaderLengthArg) {
if (moduleNameArg === void 0) { moduleNameArg = ""; }
if (loaderLengthArg === void 0) { loaderLengthArg = 10; }
abort = false;
Object.defineProperty(exports, "__esModule", { value: true });
require("typings-global");
const beautycolor = require("beautycolor");
const smartq = require("smartq");
const early_hrtMeasurement_1 = require("./early.hrtMeasurement");
exports.HrtMeasurement = early_hrtMeasurement_1.HrtMeasurement;
let doText = false;
let moduleName = 'undefined module name';
let startHrt;
if (process.argv.indexOf('-v') === -1) {
doText = true;
}
/**
* start the loading
*/
exports.start = function (moduleNameArg = '', loaderLengthArg = '10') {
moduleName = moduleNameArg;
loaderLength = loaderLengthArg;
if (!process.env.CI) {
initReadline();
logEarly();
}
else {
console.log("**** starting " + moduleName + " ****");
}
;
};
exports.stop = function () {
abort = true;
if (!process.env.CI) {
rl.write(null, { ctrl: true, name: 'u' });
rl.close();
startHrt = new early_hrtMeasurement_1.HrtMeasurement();
startHrt.start();
if (doText) {
console.log(`**** starting ${beautycolor.coloredString(moduleNameArg, 'green')} ****`);
}
};
//# sourceMappingURL=data:application/json;charset=utf8;base64,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ZWZlcmVuY2UgcGF0aD1cIi4vdHlwaW5ncy9pbmRleC5kLnRzXCIgLz5cclxubGV0IGNvbG9ycyA9IHJlcXVpcmUoXCJjb2xvcnNcIik7XHJcbmxldCByZWFkbGluZSA9IHJlcXVpcmUoXCJyZWFkbGluZVwiKTtcclxuXHJcbmxldCBybDsgXHJcbmxldCBpbml0UmVhZGxpbmUgPSAoKSA9PiB7XHJcbiAgICBybCA9IHJlYWRsaW5lLmNyZWF0ZUludGVyZmFjZSh7XHJcbiAgICBpbnB1dDogcHJvY2Vzcy5zdGRpbixcclxuICAgIG91dHB1dDogcHJvY2Vzcy5zdGRvdXRcclxuICAgIH0pO1xyXG59O1xyXG5cclxubGV0IG1vZHVsZU5hbWU6c3RyaW5nO1xyXG5sZXQgbG9hZGVyTGVuZ3RoOm51bWJlcjtcclxubGV0IGZyYW1lQ291bnRlcjpudW1iZXIgPSAwO1xyXG5cclxubGV0IG1ha2VGcmFtZSA9ICgpOnN0cmluZyA9PiB7XHJcbiAgICBsZXQgcmVzdWx0U3RyaW5nOnN0cmluZyA9IFwiW1wiXHJcbiAgICAgICAgKyBcIi9cIi5ncmVlbi5yZXBlYXQoZnJhbWVDb3VudGVyKVxyXG4gICAgICAgICsgXCIgXCIucmVwZWF0KGxvYWRlckxlbmd0aCAtIGZyYW1lQ291bnRlcilcclxuICAgICAgICArIFwiXVwiXHJcbiAgICAgICAgKyBcIiBzdGFydGluZyBcIlxyXG4gICAgICAgICsgbW9kdWxlTmFtZS5jeWFuO1xyXG5cclxuICAgIGlmKGZyYW1lQ291bnRlciA9PSBsb2FkZXJMZW5ndGgpe1xyXG4gICAgICAgIGZyYW1lQ291bnRlciA9IDA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZyYW1lQ291bnRlcisrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdFN0cmluZztcclxufTtcclxuXHJcbmxldCBhYm9ydDpib29sZWFuID0gdHJ1ZTtcclxubGV0IGxvZ0Vhcmx5ID0gKCkgPT4ge1xyXG4gICAgcmwud3JpdGUobnVsbCwge2N0cmw6IHRydWUsIG5hbWU6ICd1J30pO1xyXG4gICAgcmwud3JpdGUobWFrZUZyYW1lKCkpO1xyXG4gICAgc2V0VGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgIGlmKCFhYm9ydCl7XHJcbiAgICAgICAgICAgIGxvZ0Vhcmx5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwyMDApO1xyXG59O1xyXG5cclxuXHJcbi8vIGV4cG9ydHNcclxuZXhwb3J0IGxldCBzdGFydCA9IGZ1bmN0aW9uKG1vZHVsZU5hbWVBcmc6c3RyaW5nID0gXCJcIixsb2FkZXJMZW5ndGhBcmc6bnVtYmVyID0gMTApe1xyXG4gICAgYWJvcnQgPSBmYWxzZTtcclxuICAgIG1vZHVsZU5hbWUgPSBtb2R1bGVOYW1lQXJnO1xyXG4gICAgbG9hZGVyTGVuZ3RoID0gbG9hZGVyTGVuZ3RoQXJnO1xyXG4gICAgaWYgKCFwcm9jZXNzLmVudi5DSSl7XHJcbiAgICAgICAgaW5pdFJlYWRsaW5lKCk7XHJcbiAgICAgICAgbG9nRWFybHkoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCIqKioqIHN0YXJ0aW5nIFwiICsgbW9kdWxlTmFtZSArIFwiICoqKipcIik7XHJcbiAgICB9O1xyXG59O1xyXG5cclxuZXhwb3J0IGxldCBzdG9wID0gZnVuY3Rpb24oKXtcclxuICAgIGFib3J0ID0gdHJ1ZTtcclxuICAgIGlmICghcHJvY2Vzcy5lbnYuQ0kpe1xyXG4gICAgICAgIHJsLndyaXRlKG51bGwsIHtjdHJsOiB0cnVlLCBuYW1lOiAndSd9KTtcclxuICAgICAgICBybC5jbG9zZSgpO1xyXG4gICAgfVxyXG59O1xyXG5cclxuIl19
exports.stop = () => {
let done = smartq.defer();
let earlyExecutionTime = startHrt.stop().milliSeconds;
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;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF1QjtBQUN2QiwyQ0FBMEM7QUFDMUMsaUNBQWdDO0FBQ2hDLGlFQUF1RDtBQUdyRCx5QkFITyxxQ0FBYyxDQUdQO0FBR2hCLElBQUksTUFBTSxHQUFZLEtBQUssQ0FBQTtBQUMzQixJQUFJLFVBQVUsR0FBVyx1QkFBdUIsQ0FBQTtBQUNoRCxJQUFJLFFBQXdCLENBQUE7QUFFNUIsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sR0FBRyxJQUFJLENBQUE7QUFDZixDQUFDO0FBRUQ7O0dBRUc7QUFDUSxRQUFBLEtBQUssR0FBRyxVQUFVLGdCQUF3QixFQUFFLEVBQUUsa0JBQTBCLElBQUk7SUFDckYsVUFBVSxHQUFHLGFBQWEsQ0FBQTtJQUMxQixRQUFRLEdBQUcsSUFBSSxxQ0FBYyxFQUFFLENBQUE7SUFDL0IsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ2hCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixXQUFXLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDeEYsQ0FBQztBQUNILENBQUMsQ0FBQTtBQUVVLFFBQUEsSUFBSSxHQUFHO0lBQ2hCLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQVUsQ0FBQTtJQUNqQyxJQUFJLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUE7SUFDckQsSUFBSSx3QkFBd0IsR0FBVyxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQzdFLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQWtDLFdBQVcsQ0FBQyxhQUFhLENBQUMsd0JBQXdCLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQzVHLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtJQUNoQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtBQUNyQixDQUFDLENBQUEifQ==

40
docs/index.md Normal file
View File

@ -0,0 +1,40 @@
# early
minimal and fast loading plugin for startup time measuring
## Availabililty
[![npm](https://pushrocks.gitlab.io/assets/repo-button-npm.svg)](https://www.npmjs.com/package/early)
[![git](https://pushrocks.gitlab.io/assets/repo-button-git.svg)](https://GitLab.com/pushrocks/early)
[![git](https://pushrocks.gitlab.io/assets/repo-button-mirror.svg)](https://github.com/pushrocks/early)
[![docs](https://pushrocks.gitlab.io/assets/repo-button-docs.svg)](https://pushrocks.gitlab.io/early/)
## Status for master
[![build status](https://GitLab.com/pushrocks/early/badges/master/build.svg)](https://GitLab.com/pushrocks/early/commits/master)
[![coverage report](https://GitLab.com/pushrocks/early/badges/master/coverage.svg)](https://GitLab.com/pushrocks/early/commits/master)
[![npm downloads per month](https://img.shields.io/npm/dm/early.svg)](https://www.npmjs.com/package/early)
[![Dependency Status](https://david-dm.org/pushrocks/early.svg)](https://david-dm.org/pushrocks/early)
[![bitHound Dependencies](https://www.bithound.io/github/pushrocks/early/badges/dependencies.svg)](https://www.bithound.io/github/pushrocks/early/master/dependencies/npm)
[![bitHound Code](https://www.bithound.io/github/pushrocks/early/badges/code.svg)](https://www.bithound.io/github/pushrocks/early)
[![TypeScript](https://img.shields.io/badge/TypeScript-2.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
[![node](https://img.shields.io/badge/node->=%206.x.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
[![JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)
## Usage
Use TypeScript for best in class instellisense.
```javascript
// Put the following at the start of your module
import * as early from "early";
early.start("myModuleName");
/*
do your loading stuff
*/
early.stop().then((loadingTime:number) => { // loadingTime in milliseconds
}); // stop "early" when your module is ready
```
For further information read the linked docs at the top of this README.
> MIT licensed | **&copy;** [Lossless GmbH](https://lossless.gmbh)
[![repo-footer](https://pushrocks.gitlab.io/assets/repo-footer.svg)](https://push.rocks)

10
npmextra.json Normal file
View File

@ -0,0 +1,10 @@
{
"npmts":{
"coverageTreshold":50
},
"npmci": {
"globalNpmTools": [
"npmts"
]
}
}

View File

@ -1,14 +1,15 @@
{
"name": "early",
"version": "1.0.4",
"description": "nice module loading animation for modules that need a little starting time.",
"version": "2.1.1",
"description": "minimal and fast loading plugin for startup time measuring",
"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,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.8"
},
"dependencies": {
"colors": "^1.1.2"
"beautycolor": "^1.0.7",
"smartq": "^1.1.1",
"typings-global": "^1.0.16"
}
}

0
test/test.d.ts vendored
View File

View File

@ -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==

View File

@ -1,13 +1,23 @@
/// <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()
})
tap.test('hrTime Measurement', async () => {
let earlyHr = new early.HrtMeasurement()
earlyHr.start()
await smartdelay.delayFor(1000)
let measuredTime = earlyHr.stop()
console.log(measuredTime)
return expect(measuredTime.milliSeconds).to.be.greaterThan(999)
})
tap.start()

View File

@ -0,0 +1,45 @@
import * as process from 'process'
/**
* easy high resolution time measurement
*/
export class HrtMeasurement {
nanoSeconds: number = null
milliSeconds: number = null
private _hrTimeStart = null
private _hrTimeStopDiff = null
private _started: boolean = false
/**
* start the measurement
*/
start () {
this._started = true
this._hrTimeStart = process.hrtime()
}
/**
* stop the measurement
*/
stop () {
if (this._started === false) {
console.log('Hasn\'t started yet')
return
}
this._hrTimeStopDiff = process.hrtime(this._hrTimeStart)
this.nanoSeconds = (this._hrTimeStopDiff[0] * 1e9) + this._hrTimeStopDiff[1]
this.milliSeconds = this.nanoSeconds / 1000000
return this
}
/**
* reset the measurement
*/
reset () {
this.nanoSeconds = null
this.milliSeconds = null
this._hrTimeStart = null
this._hrTimeStopDiff = null
this._started = false
}
}

View File

@ -1,65 +1,37 @@
/// <reference path="./typings/index.d.ts" />
let colors = require("colors");
let readline = require("readline");
import 'typings-global'
import * as beautycolor from 'beautycolor'
import * as smartq from 'smartq'
import { HrtMeasurement } from './early.hrtMeasurement'
let rl;
let initReadline = () => {
rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
};
export {
HrtMeasurement
}
let moduleName:string;
let loaderLength:number;
let frameCounter:number = 0;
let doText: boolean = false
let moduleName: string = 'undefined module name'
let startHrt: HrtMeasurement
let makeFrame = ():string => {
let resultString:string = "["
+ "/".green.repeat(frameCounter)
+ " ".repeat(loaderLength - frameCounter)
+ "]"
+ " starting "
+ moduleName.cyan;
if (process.argv.indexOf('-v') === -1) {
doText = true
}
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);
};
// 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 + " ****");
};
};
export let stop = function(){
abort = true;
if (!process.env.CI){
rl.write(null, {ctrl: true, name: 'u'});
rl.close();
}
};
/**
* start the loading
*/
export let start = function (moduleNameArg: string = '', loaderLengthArg: string = '10') {
moduleName = moduleNameArg
startHrt = new HrtMeasurement()
startHrt.start()
if (doText) {
console.log(`**** starting ${beautycolor.coloredString(moduleNameArg, 'green')} ****`)
}
}
export let stop = (): Promise<number> => {
let done = smartq.defer<number>()
let earlyExecutionTime = startHrt.stop().milliSeconds
let earlyExecutionTimeString: string = (earlyExecutionTime / 1000).toString()
console.log(`OK! -> finished loading within ${beautycolor.coloredString(earlyExecutionTimeString, 'blue')}`)
done.resolve(earlyExecutionTime)
return done.promise
}

View File

@ -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
View File

@ -0,0 +1,3 @@
{
"extends": "tslint-config-standard"
}

248
yarn.lock Normal file
View File

@ -0,0 +1,248 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@types/chai-as-promised@0.0.29":
version "0.0.29"
resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-0.0.29.tgz#43d52892aa998e185a3de3e2477edb8573be1d77"
dependencies:
"@types/chai" "*"
"@types/promises-a-plus" "*"
"@types/chai-string@^1.1.30":
version "1.1.30"
resolved "https://registry.yarnpkg.com/@types/chai-string/-/chai-string-1.1.30.tgz#4d8744b31a5a2295fc01c981ed1e2d4c8a070f0a"
dependencies:
"@types/chai" "*"
"@types/chai@*", "@types/chai@^3.4.35":
version "3.5.1"
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-3.5.1.tgz#9bd77fe12503ae00648b0945b38eab666adffe2e"
"@types/promises-a-plus@*":
version "0.0.27"
resolved "https://registry.yarnpkg.com/@types/promises-a-plus/-/promises-a-plus-0.0.27.tgz#c64651134614c84b8f5d7114ce8901d36a609780"
ansi-256-colors@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/ansi-256-colors/-/ansi-256-colors-1.1.0.tgz#910de50efcc7c09e3d82f2f87abd6b700c18818a"
assertion-error@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c"
balanced-match@^0.4.1:
version "0.4.2"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
beautycolor@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/beautycolor/-/beautycolor-1.0.7.tgz#a4715738ac4c8221371e9cbeb5a6cc6d11ecbf7c"
dependencies:
ansi-256-colors "^1.1.0"
typings-global "^1.0.14"
bindings@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11"
brace-expansion@^1.0.0:
version "1.1.7"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59"
dependencies:
balanced-match "^0.4.1"
concat-map "0.0.1"
chai-as-promised@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-6.0.0.tgz#1a02a433a6f24dafac63b9c96fa1684db1aa8da6"
dependencies:
check-error "^1.0.2"
chai-string@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/chai-string/-/chai-string-1.3.0.tgz#df6139f294391b1035be5606f60a843b3a5041e7"
chai@^3.5.0:
version "3.5.0"
resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247"
dependencies:
assertion-error "^1.0.1"
deep-eql "^0.1.3"
type-detect "^1.0.0"
check-error@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
deep-eql@^0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2"
dependencies:
type-detect "0.1.1"
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
glob@^7.0.0:
version "7.1.1"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.0.2"
once "^1.3.0"
path-is-absolute "^1.0.0"
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
dependencies:
once "^1.3.0"
wrappy "1"
inherits@2:
version "2.0.3"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
interpret@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90"
leakage@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/leakage/-/leakage-0.2.0.tgz#9e7a8cc1d241d8c8427e348769e192e172fd8733"
dependencies:
left-pad "^1.1.3"
memwatch-next "^0.3.0"
minimist "^1.2.0"
pretty-bytes "^4.0.2"
left-pad@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.1.3.tgz#612f61c033f3a9e08e939f1caebeea41b6f3199a"
memwatch-next@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/memwatch-next/-/memwatch-next-0.3.0.tgz#2111050f9a906e0aa2d72a4ec0f0089c78726f8f"
dependencies:
bindings "^1.2.1"
nan "^2.3.2"
minimatch@^3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
dependencies:
brace-expansion "^1.0.0"
minimist@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
nan@^2.3.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45"
once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
dependencies:
wrappy "1"
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
path-parse@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
pretty-bytes@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
rechoir@^0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
dependencies:
resolve "^1.1.6"
resolve@^1.1.6:
version "1.3.3"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5"
dependencies:
path-parse "^1.0.5"
semver@^5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
shelljs@^0.7.7:
version "0.7.7"
resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1"
dependencies:
glob "^7.0.0"
interpret "^1.0.0"
rechoir "^0.6.2"
smartchai@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/smartchai/-/smartchai-1.0.3.tgz#de6d010bb8b5aef24cb70b31a5f5334e8c41b72f"
dependencies:
"@types/chai" "^3.4.35"
"@types/chai-as-promised" "0.0.29"
"@types/chai-string" "^1.1.30"
chai "^3.5.0"
chai-as-promised "^6.0.0"
chai-string "^1.3.0"
smartdelay@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/smartdelay/-/smartdelay-1.0.1.tgz#687f8bcc09d7c62c9c5a8a1771c1aba3aff54156"
dependencies:
typings-global "^1.0.14"
smartq@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/smartq/-/smartq-1.1.1.tgz#efb358705260d41ae18aef7ffd815f7b6fe17dd3"
dependencies:
typed-promisify "^0.3.0"
typings-global "^1.0.14"
tapbundle@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/tapbundle/-/tapbundle-1.0.8.tgz#a0e9846d4e91374a54d42224cfa1062319d460b9"
dependencies:
leakage "^0.2.0"
smartchai "^1.0.3"
smartq "^1.1.1"
typings-global "^1.0.16"
type-detect@0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822"
type-detect@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2"
typed-promisify@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/typed-promisify/-/typed-promisify-0.3.0.tgz#1ba0af5e444c87d8047406f18ce49092a1191853"
typings-global@^1.0.14, typings-global@^1.0.16:
version "1.0.16"
resolved "https://registry.yarnpkg.com/typings-global/-/typings-global-1.0.16.tgz#489b71781af24268750c2899316400a5e482961f"
dependencies:
semver "^5.3.0"
shelljs "^0.7.7"
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"