Compare commits

...

55 Commits

Author SHA1 Message Date
18df32ae5a 1.0.31 2017-06-17 14:45:26 +02:00
66b6e78bb1 update ci 2017-06-17 14:45:23 +02:00
408faa97a4 update tests 2017-06-17 14:44:55 +02:00
4a7749be47 1.0.30 2017-04-09 16:40:37 +02:00
570283551f update README 2017-04-09 16:40:34 +02:00
c6c5c5ea40 1.0.29 2017-04-09 16:33:35 +02:00
ddd071ccb6 update ci 2017-04-09 16:33:32 +02:00
8b9c87d381 1.0.28 2017-04-09 16:29:18 +02:00
89ea1fdb18 update deps 2017-04-09 16:29:14 +02:00
5b2aea7626 1.0.27 2016-11-19 23:54:55 +01:00
cfbc47e365 add lik.Objectmap.isEmpty() 2016-11-19 23:54:52 +01:00
bb3b02ed74 1.0.26 2016-11-19 23:15:46 +01:00
bb4820e980 improve typings 2016-11-19 23:15:43 +01:00
fa17a998f1 1.0.25 2016-11-19 23:08:58 +01:00
afad357ed0 add getOneAndRemove and findOneAndRemove 2016-11-19 23:08:54 +01:00
59173eebc4 1.0.24 2016-10-03 13:48:37 +02:00
515571dcb3 added missing dep 2016-10-03 13:48:34 +02:00
177ed2d03d 1.0.23 2016-09-29 22:14:54 +02:00
23ecaddd5a 1.0.22 2016-09-29 22:05:25 +02:00
924058c90a add new method Objectmap.getArray() 2016-09-29 22:05:20 +02:00
30e23a77b7 1.0.21 2016-09-23 10:20:32 +02:00
b228c3b2f0 improve README 2016-09-23 10:20:20 +02:00
610a037879 1.0.20 2016-09-22 12:00:37 +02:00
2f681911ae implemented Observablemap 2016-09-22 12:00:33 +02:00
3b04f81b68 1.0.19 2016-09-21 15:58:01 +02:00
0c05cf4f7b compile 2016-09-21 15:57:57 +02:00
5451cceaf3 1.0.18 2016-09-21 13:57:27 +02:00
04dbc36525 improve README 2016-09-21 13:57:23 +02:00
a820e0d1b3 1.0.17 2016-09-21 13:51:47 +02:00
57c67a287a add addStringArray 2016-09-21 13:51:37 +02:00
d73bfa8f00 1.0.16 2016-09-21 13:44:33 +02:00
e917c8b9f7 now adhering to standard js added getStringArray method 2016-09-21 13:44:11 +02:00
c0a5cb6e30 1.0.15 2016-08-08 17:29:47 +02:00
b85e79b07d now works with TypeScript Generic Types to track type usage of Objectmap 2016-08-08 17:29:44 +02:00
ba714fe637 1.0.14 2016-08-08 16:07:17 +02:00
3dd4698ce8 another small fix 2016-08-08 16:07:13 +02:00
9814e93dda 1.0.13 2016-08-08 16:04:17 +02:00
5d06e6e78f small fix to return undefined when item is not found 2016-08-08 16:03:58 +02:00
f6c03275f4 1.0.12 2016-08-08 16:01:49 +02:00
d6ca9910e3 1.0.11 2016-08-08 16:01:00 +02:00
ac2267d910 implement find functionality into Objectmap 2016-08-08 16:00:14 +02:00
49f0d7018d 1.0.10 2016-08-07 18:08:56 +02:00
009a1181e5 compile 2016-08-07 18:08:52 +02:00
3c09f048a2 fix objectmap constructor 2016-08-07 18:07:21 +02:00
1bdcae0524 1.0.9 2016-08-03 12:02:00 +02:00
62892fa1b8 update types versions 2016-08-03 12:01:55 +02:00
fc96e1e2da 1.0.8 2016-07-31 15:01:33 +02:00
fe552763fe small fix 2016-07-31 15:01:24 +02:00
c544fc8e3a 1.0.7 2016-07-31 14:36:31 +02:00
9d856ad813 add forEach to Objectmap 2016-07-31 14:36:28 +02:00
24b260c3da 1.0.6 2016-07-31 00:54:51 +02:00
e3a811bffd added Objectmap 2016-07-31 00:54:46 +02:00
95fe1f7937 1.0.5 2016-07-24 18:51:59 +02:00
e2aee98acc improve tests 2016-07-24 18:51:56 +02:00
2705b17dde 1.0.4 2016-07-24 18:49:18 +02:00
25 changed files with 1122 additions and 194 deletions

3
.gitignore vendored
View File

@ -1,4 +1,5 @@
node_modules/ node_modules/
docs/ pages/
public/
coverage/ coverage/
.nogit/ .nogit/

View File

@ -1,20 +1,31 @@
image: hosttoday/ht-docker-node:npmts # gitzone standard
image: hosttoday/ht-docker-node:npmci
cache:
paths:
- .yarn/
key: "$CI_BUILD_STAGE"
stages: stages:
- test - test
- release - release
- trigger
- pages
testLEGACY: testLEGACY:
stage: test stage: test
script: script:
- npmci test legacy - npmci test legacy
coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- docker - docker
allow_failure: true
testLTS: testLTS:
stage: test stage: test
script: script:
- npmci test lts - npmci test lts
coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- docker - docker
@ -22,15 +33,40 @@ testSTABLE:
stage: test stage: test
script: script:
- npmci test stable - npmci test stable
coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- docker - docker
release: release:
stage: release stage: release
environment: npmjs-com_registry
script: script:
- npmci publish - npmci publish
only: only:
- tags - tags
tags: tags:
- docker - 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
allow_failure: true

View File

@ -1,13 +1,48 @@
# lik # lik
light little helpers for node light little helpers for node
## Status ## Availabililty
[![build status](https://gitlab.com/pushrocks/lik/badges/master/build.svg)](https://gitlab.com/pushrocks/lik/commits/master) [![npm](https://pushrocks.gitlab.io/assets/repo-button-npm.svg)](https://www.npmjs.com/package/lik)
[![git](https://pushrocks.gitlab.io/assets/repo-button-git.svg)](https://GitLab.com/pushrocks/lik)
[![git](https://pushrocks.gitlab.io/assets/repo-button-mirror.svg)](https://github.com/pushrocks/lik)
[![docs](https://pushrocks.gitlab.io/assets/repo-button-docs.svg)](https://pushrocks.gitlab.io/lik/)
## Status for master
[![build status](https://GitLab.com/pushrocks/lik/badges/master/build.svg)](https://GitLab.com/pushrocks/lik/commits/master)
[![coverage report](https://GitLab.com/pushrocks/lik/badges/master/coverage.svg)](https://GitLab.com/pushrocks/lik/commits/master)
[![npm downloads per month](https://img.shields.io/npm/dm/lik.svg)](https://www.npmjs.com/package/lik)
[![Dependency Status](https://david-dm.org/pushrocks/lik.svg)](https://david-dm.org/pushrocks/lik)
[![bitHound Dependencies](https://www.bithound.io/github/pushrocks/lik/badges/dependencies.svg)](https://www.bithound.io/github/pushrocks/lik/master/dependencies/npm)
[![bitHound Code](https://www.bithound.io/github/pushrocks/lik/badges/code.svg)](https://www.bithound.io/github/pushrocks/lik)
[![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 ## Usage
We recommend the use of TypeScript for good intellisense. Use TypeScript for best in class instellisense.
```typescript ```javascript
// import any tool that you need from lik // import any tool that you need from lik
import {Stringmap} from "lik"; import { Stringmap, Objectmap, Observablemap } from "lik";
``` ```
### class Stringmap
Stringmap allows you to keep track of strings. It allows you to register triggers for certain events
like when a certain string is removed or added to the map
### class Objectmap
Sometimes you need to keep track of objects, but implementing logic for removing, finding or updating is tedious.
Objectmap takes care of keeping track of objects for you.
### class Observablemap
Event Emitters are nice. However often times you end up with registering multiple listeners for the exact same thing.
Observables have a smaller footprint and a more manageable subscribe logic.
Observablemap registers only one rxjs observable per event and then continues to reference
the same observable that you can subscribe to.
For further information read the linked docs at the top of this README.
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
[![repo-footer](https://pushrocks.gitlab.io/assets/repo-footer.svg)](https://push.rocks)

4
dist/index.d.ts vendored
View File

@ -1 +1,3 @@
export * from "./lik.stringmap"; export * from './lik.stringmap';
export * from './lik.objectmap';
export * from './lik.observablemap';

5
dist/index.js vendored
View File

@ -2,6 +2,9 @@
function __export(m) { function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
} }
Object.defineProperty(exports, "__esModule", { value: true });
// import modules // import modules
__export(require("./lik.stringmap")); __export(require("./lik.stringmap"));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsaUJBQWlCO0FBRWpCLGlCQUFjLGlCQUFpQixDQUFDLEVBQUEifQ== __export(require("./lik.objectmap"));
__export(require("./lik.observablemap"));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLGlCQUFpQjtBQUVqQixxQ0FBK0I7QUFDL0IscUNBQStCO0FBQy9CLHlDQUFtQyJ9

60
dist/lik.objectmap.d.ts vendored Normal file
View File

@ -0,0 +1,60 @@
export interface IObjectmapForEachFunction<T> {
(itemArg: T): void;
}
export interface IObjectmapFindFunction<T> {
(itemArg: T): boolean;
}
/**
* allows keeping track of objects
*/
export declare class Objectmap<T> {
private objectArray;
/**
* returns a new instance
*/
constructor();
/**
* add object to Objectmap
*/
add(objectArg: T): void;
/**
* like .add but adds an whole array of objects
*/
addArray(objectArrayArg: T[]): void;
/**
* check if object is in Objectmap
*/
checkForObject(objectArg: T): boolean;
/**
* find object
*/
find(findFunction: IObjectmapFindFunction<T>): T;
/**
* finds a specific element and then removes it
*/
findOneAndRemove(findFunction: any): T;
/**
* run function for each item in Objectmap
*/
forEach(functionArg: IObjectmapForEachFunction<T>): void;
/**
* gets an object in the Observablemap and removes it, so it can't be retrieved again
*/
getOneAndRemove(): T;
/**
* returns a cloned array of all the objects currently in the Objectmap
*/
getArray(): T[];
/**
* check if Objectmap ist empty
*/
isEmpty(): boolean;
/**
* remove object from Objectmap
*/
remove(objectArg: T): void;
/**
* wipe Objectmap
*/
wipe(): void;
}

106
dist/lik.objectmap.js vendored Normal file
View File

@ -0,0 +1,106 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const plugins = require("./lik.plugins");
/**
* allows keeping track of objects
*/
class Objectmap {
/**
* returns a new instance
*/
constructor() {
this.objectArray = [];
// nothing here
}
/**
* add object to Objectmap
*/
add(objectArg) {
this.objectArray.push(objectArg);
}
/**
* like .add but adds an whole array of objects
*/
addArray(objectArrayArg) {
for (let item of objectArrayArg) {
this.add(item);
}
}
/**
* check if object is in Objectmap
*/
checkForObject(objectArg) {
return this.objectArray.indexOf(objectArg) !== -1;
}
/**
* find object
*/
find(findFunction) {
let resultArray = this.objectArray.filter(findFunction);
if (resultArray.length > 0) {
return resultArray[0];
}
else {
return null;
}
}
/**
* finds a specific element and then removes it
*/
findOneAndRemove(findFunction) {
let foundElement = this.find(findFunction);
if (foundElement) {
this.remove(foundElement);
}
return foundElement;
}
/**
* run function for each item in Objectmap
*/
forEach(functionArg) {
return this.objectArray.forEach(functionArg);
}
/**
* gets an object in the Observablemap and removes it, so it can't be retrieved again
*/
getOneAndRemove() {
return this.objectArray.shift();
}
/**
* returns a cloned array of all the objects currently in the Objectmap
*/
getArray() {
return plugins.lodash.cloneDeep(this.objectArray);
}
/**
* check if Objectmap ist empty
*/
isEmpty() {
if (this.objectArray.length === 0) {
return true;
}
else {
return false;
}
}
/**
* remove object from Objectmap
*/
remove(objectArg) {
let replacementArray = [];
for (let item of this.objectArray) {
if (item !== objectArg) {
replacementArray.push(item);
}
}
this.objectArray = replacementArray;
}
/**
* wipe Objectmap
*/
wipe() {
this.objectArray = [];
}
}
exports.Objectmap = Objectmap;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlrLm9iamVjdG1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2xpay5vYmplY3RtYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5Q0FBd0M7QUFVeEM7O0dBRUc7QUFDSDtJQUdFOztPQUVHO0lBQ0g7UUFMUSxnQkFBVyxHQUFRLEVBQUUsQ0FBQTtRQU0zQixlQUFlO0lBQ2pCLENBQUM7SUFFRDs7T0FFRztJQUNILEdBQUcsQ0FBRSxTQUFZO1FBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUSxDQUFFLGNBQW1CO1FBQzNCLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNoQixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYyxDQUFFLFNBQVk7UUFDMUIsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQ25ELENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksQ0FBRSxZQUF1QztRQUMzQyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUN2RCxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsTUFBTSxDQUFDLFdBQVcsQ0FBRSxDQUFDLENBQUUsQ0FBQTtRQUN6QixDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixNQUFNLENBQUMsSUFBSSxDQUFBO1FBQ2IsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILGdCQUFnQixDQUFFLFlBQVk7UUFDNUIsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUMxQyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDM0IsQ0FBQztRQUNELE1BQU0sQ0FBQyxZQUFZLENBQUE7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTyxDQUFFLFdBQXlDO1FBQ2hELE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDakMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDbkQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTztRQUNMLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsTUFBTSxDQUFDLElBQUksQ0FBQTtRQUNiLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLE1BQU0sQ0FBQyxLQUFLLENBQUE7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFFLFNBQVk7UUFDbEIsSUFBSSxnQkFBZ0IsR0FBRyxFQUFFLENBQUE7UUFDekIsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDbEMsRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUM3QixDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsZ0JBQWdCLENBQUE7SUFDckMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSTtRQUNGLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFBO0lBQ3ZCLENBQUM7Q0FDRjtBQTNHRCw4QkEyR0MifQ==

23
dist/lik.observablemap.d.ts vendored Normal file
View File

@ -0,0 +1,23 @@
/// <reference types="node" />
import * as plugins from './lik.plugins';
import { Objectmap } from './lik.objectmap';
import { Observable } from 'rxjs/Rx';
/**
* bundles an observable with an emitter
*/
export interface ObservableEmitterBundle {
observable: plugins.rx.Observable<any>;
emitter: plugins.events.EventEmitter;
event: string;
}
/**
* manages observables by making sure that only one observable is regsitered per event
*/
export declare class Observablemap {
ObservableEmitterBundleObjectmap: Objectmap<ObservableEmitterBundle>;
/**
* creates a new observable if not yet registered for the same event.
* In case event has been registered before the same observable is returned.
*/
getObservableForEmitterEvent(emitterArg: plugins.events.EventEmitter, eventArg: string): Observable<any>;
}

35
dist/lik.observablemap.js vendored Normal file
View File

@ -0,0 +1,35 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const plugins = require("./lik.plugins");
const lik_objectmap_1 = require("./lik.objectmap");
/**
* manages observables by making sure that only one observable is regsitered per event
*/
class Observablemap {
constructor() {
this.ObservableEmitterBundleObjectmap = new lik_objectmap_1.Objectmap();
}
/**
* creates a new observable if not yet registered for the same event.
* In case event has been registered before the same observable is returned.
*/
getObservableForEmitterEvent(emitterArg, eventArg) {
let existingBundle = this.ObservableEmitterBundleObjectmap.find((bundleArg) => {
return (bundleArg.emitter === emitterArg && bundleArg.event === eventArg);
});
if (existingBundle) {
return existingBundle.observable;
}
else {
let emitterObservable = plugins.rx.Observable.fromEvent(emitterArg, eventArg);
this.ObservableEmitterBundleObjectmap.add({
observable: emitterObservable,
emitter: emitterArg,
event: eventArg
});
return emitterObservable;
}
}
}
exports.Observablemap = Observablemap;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlrLm9ic2VydmFibGVtYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9saWsub2JzZXJ2YWJsZW1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUF3QztBQUN4QyxtREFBMkM7QUFjM0M7O0dBRUc7QUFDSDtJQUFBO1FBQ0kscUNBQWdDLEdBQUcsSUFBSSx5QkFBUyxFQUEyQixDQUFBO0lBc0IvRSxDQUFDO0lBcEJHOzs7T0FHRztJQUNILDRCQUE0QixDQUFDLFVBQXVDLEVBQUUsUUFBZ0I7UUFDbEYsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVM7WUFDdEUsTUFBTSxDQUFBLENBQUMsU0FBUyxDQUFDLE9BQU8sS0FBSyxVQUFVLElBQUksU0FBUyxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQTtRQUM1RSxDQUFDLENBQUMsQ0FBQTtRQUNGLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDakIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUE7UUFDcEMsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ0osSUFBSSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1lBQzdFLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxHQUFHLENBQUM7Z0JBQ3RDLFVBQVUsRUFBRSxpQkFBaUI7Z0JBQzdCLE9BQU8sRUFBRSxVQUFVO2dCQUNuQixLQUFLLEVBQUUsUUFBUTthQUNsQixDQUFDLENBQUE7WUFDRixNQUFNLENBQUMsaUJBQWlCLENBQUE7UUFDNUIsQ0FBQztJQUNMLENBQUM7Q0FDSjtBQXZCRCxzQ0F1QkMifQ==

View File

@ -1,3 +1,6 @@
import "typings-global"; import 'typings-global';
export import q = require("q"); export import q = require('q');
export import minimatch = require("minimatch"); export import events = require('events');
export import lodash = require('lodash');
export import minimatch = require('minimatch');
export import rx = require('rxjs/Rx');

6
dist/lik.plugins.js vendored
View File

@ -1,5 +1,9 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true });
require("typings-global"); require("typings-global");
exports.q = require("q"); exports.q = require("q");
exports.events = require("events");
exports.lodash = require("lodash");
exports.minimatch = require("minimatch"); exports.minimatch = require("minimatch");
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlrLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9saWsucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsUUFBTyxnQkFBZ0IsQ0FBQyxDQUFBO0FBQ1YsU0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ2pCLGlCQUFTLFdBQVcsV0FBVyxDQUFDLENBQUMifQ== exports.rx = require("rxjs/Rx");
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlrLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9saWsucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF1QjtBQUN2Qix5QkFBOEI7QUFDOUIsbUNBQXdDO0FBQ3hDLG1DQUF3QztBQUN4Qyx5Q0FBOEM7QUFDOUMsZ0NBQXFDIn0=

View File

@ -1,7 +1,7 @@
/** /**
* allows you to easily keep track of a bunch of strings; * allows you to easily keep track of a bunch of strings
*/ */
export interface triggerFunction { export interface ITriggerFunction {
(): boolean; (): boolean;
} }
export declare class Stringmap { export declare class Stringmap {
@ -12,6 +12,10 @@ export declare class Stringmap {
* add a string to the Stringmap * add a string to the Stringmap
*/ */
addString(stringArg: string): void; addString(stringArg: string): void;
/**
* like addString, but accepts an array of strings
*/
addStringArray(stringArrayArg: string[]): void;
/** /**
* removes a string from Stringmap * removes a string from Stringmap
*/ */
@ -33,11 +37,15 @@ export declare class Stringmap {
*/ */
checkIsEmpty(): boolean; checkIsEmpty(): boolean;
/** /**
* notifies triggers * gets a cloned copy of the current string Array
*/ */
private notifyTrigger(); getStringArray(): string[];
/** /**
* register a new trigger * register a new trigger
*/ */
registerUntilTrue(functionArg: triggerFunction, doFunctionArg: any): void; registerUntilTrue(functionArg: ITriggerFunction, doFunctionArg: any): void;
/**
* notifies triggers
*/
private notifyTrigger();
} }

57
dist/lik.stringmap.js vendored
View File

@ -1,11 +1,11 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const plugins = require("./lik.plugins"); const plugins = require("./lik.plugins");
class Stringmap { class Stringmap {
constructor() { constructor() {
this._stringArray = []; this._stringArray = [];
this._triggerUntilTrueFunctionArray = []; this._triggerUntilTrueFunctionArray = [];
} }
;
/** /**
* add a string to the Stringmap * add a string to the Stringmap
*/ */
@ -13,18 +13,23 @@ class Stringmap {
this._stringArray.push(stringArg); this._stringArray.push(stringArg);
this.notifyTrigger(); this.notifyTrigger();
} }
; /**
* like addString, but accepts an array of strings
*/
addStringArray(stringArrayArg) {
for (let stringItem of stringArrayArg) {
this.addString(stringItem);
}
}
/** /**
* removes a string from Stringmap * removes a string from Stringmap
*/ */
removeString(stringArg) { removeString(stringArg) {
for (let keyArg in this._stringArray) { for (let keyArg in this._stringArray) {
if (this._stringArray[keyArg] == stringArg) { if (this._stringArray[keyArg] === stringArg) {
this._stringArray.splice(parseInt(keyArg), 1); this._stringArray.splice(parseInt(keyArg), 1);
} }
;
} }
;
this.notifyTrigger(); this.notifyTrigger();
} }
/** /**
@ -38,7 +43,7 @@ class Stringmap {
* check if string is in Stringmap * check if string is in Stringmap
*/ */
checkString(stringArg) { checkString(stringArg) {
return this._stringArray.indexOf(stringArg) != -1; return this._stringArray.indexOf(stringArg) !== -1;
} }
/** /**
* checks stringPresence with minimatch * checks stringPresence with minimatch
@ -49,19 +54,35 @@ class Stringmap {
if (plugins.minimatch(stringItem, miniMatchStringArg)) { if (plugins.minimatch(stringItem, miniMatchStringArg)) {
foundMatch = true; foundMatch = true;
} }
;
} }
;
return foundMatch; return foundMatch;
} }
;
/** /**
* checks if the Stringmap is empty * checks if the Stringmap is empty
*/ */
checkIsEmpty() { checkIsEmpty() {
return (this._stringArray.length == 0); return (this._stringArray.length === 0);
}
/**
* gets a cloned copy of the current string Array
*/
getStringArray() {
return plugins.lodash.cloneDeep(this._stringArray);
} }
// trigger registering // trigger registering
/**
* register a new trigger
*/
registerUntilTrue(functionArg, doFunctionArg) {
this._triggerUntilTrueFunctionArray.push(() => {
let result = functionArg();
if (result === true) {
doFunctionArg();
}
return result;
});
this.notifyTrigger();
}
/** /**
* notifies triggers * notifies triggers
*/ */
@ -71,20 +92,6 @@ class Stringmap {
}); });
this._triggerUntilTrueFunctionArray = filteredArray; this._triggerUntilTrueFunctionArray = filteredArray;
} }
;
/**
* register a new trigger
*/
registerUntilTrue(functionArg, doFunctionArg) {
this._triggerUntilTrueFunctionArray.push(() => {
let result = functionArg();
if (result == true) {
doFunctionArg();
}
return result;
});
this.notifyTrigger();
}
} }
exports.Stringmap = Stringmap; exports.Stringmap = Stringmap;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlrLnN0cmluZ21hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2xpay5zdHJpbmdtYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksT0FBTyxXQUFNLGVBQWUsQ0FBQyxDQUFBO0FBVXpDO0lBR0k7UUFGUSxpQkFBWSxHQUFZLEVBQUUsQ0FBQztRQUMzQixtQ0FBOEIsR0FBcUIsRUFBRSxDQUFDO0lBRzlELENBQUM7O0lBQ0Q7O09BRUc7SUFDSCxTQUFTLENBQUMsU0FBZ0I7UUFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7O0lBRUQ7O09BRUc7SUFDSCxZQUFZLENBQUMsU0FBZ0I7UUFDekIsR0FBRyxDQUFDLENBQUMsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBLENBQUM7WUFDbEMsRUFBRSxDQUFBLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQSxDQUFDO2dCQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakQsQ0FBQztZQUFBLENBQUM7UUFDTixDQUFDO1FBQUEsQ0FBQztRQUNGLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0EsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxTQUFnQjtRQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYyxDQUFDLGtCQUF5QjtRQUNwQyxJQUFJLFVBQVUsR0FBVyxLQUFLLENBQUM7UUFDL0IsR0FBRyxDQUFBLENBQUMsSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBLENBQUM7WUFDckMsRUFBRSxDQUFBLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFBLENBQUM7Z0JBQ2pELFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDdEIsQ0FBQztZQUFBLENBQUM7UUFDTixDQUFDO1FBQUEsQ0FBQztRQUNGLE1BQU0sQ0FBQyxVQUFVLENBQUM7SUFDdEIsQ0FBQzs7SUFFRDs7T0FFRztJQUNILFlBQVk7UUFDUixNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsc0JBQXNCO0lBRXRCOztPQUVHO0lBQ0ssYUFBYTtRQUNqQixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVztZQUN2RSxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyw4QkFBOEIsR0FBRyxhQUFhLENBQUM7SUFDeEQsQ0FBQzs7SUFFRDs7T0FFRztJQUNILGlCQUFpQixDQUFDLFdBQTJCLEVBQUMsYUFBYTtRQUN2RCxJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUNwQztZQUNJLElBQUksTUFBTSxHQUFHLFdBQVcsRUFBRSxDQUFDO1lBQzNCLEVBQUUsQ0FBQSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQSxDQUFDO2dCQUNmLGFBQWEsRUFBRSxDQUFDO1lBQ3BCLENBQUM7WUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ2xCLENBQUMsQ0FDSixDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7QUFDTCxDQUFDO0FBeEZZLGlCQUFTLFlBd0ZyQixDQUFBIn0= //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlrLnN0cmluZ21hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2xpay5zdHJpbmdtYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5Q0FBd0M7QUFVeEM7SUFHSTtRQUZRLGlCQUFZLEdBQWEsRUFBRSxDQUFBO1FBQzNCLG1DQUE4QixHQUF1QixFQUFFLENBQUE7SUFDaEQsQ0FBQztJQUNoQjs7T0FFRztJQUNILFNBQVMsQ0FBQyxTQUFpQjtRQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNqQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYyxDQUFDLGNBQXdCO1FBQ25DLEdBQUcsQ0FBQyxDQUFDLElBQUksVUFBVSxJQUFJLGNBQWMsQ0FBQyxDQUFBLENBQUM7WUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUM5QixDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWSxDQUFDLFNBQWlCO1FBQzFCLEdBQUcsQ0FBQyxDQUFDLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ25DLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2hELENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFBO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUk7UUFDQSxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQTtRQUN0QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLFNBQWlCO1FBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUN0RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjLENBQUMsa0JBQTBCO1FBQ3JDLElBQUksVUFBVSxHQUFZLEtBQUssQ0FBQTtRQUMvQixHQUFHLENBQUMsQ0FBQyxJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUEsQ0FBQztZQUN0QyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbkQsVUFBVSxHQUFHLElBQUksQ0FBQTtZQUNyQixDQUFDO1FBQ0wsQ0FBQztRQUNELE1BQU0sQ0FBQyxVQUFVLENBQUE7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWTtRQUNSLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDVixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQ3RELENBQUM7SUFFRCxzQkFBc0I7SUFFdEI7O09BRUc7SUFDSCxpQkFBaUIsQ0FBQyxXQUE2QixFQUFDLGFBQWE7UUFDekQsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FDcEM7WUFDSSxJQUFJLE1BQU0sR0FBRyxXQUFXLEVBQUUsQ0FBQTtZQUMxQixFQUFFLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDbEIsYUFBYSxFQUFFLENBQUE7WUFDbkIsQ0FBQztZQUNELE1BQU0sQ0FBQyxNQUFNLENBQUE7UUFDakIsQ0FBQyxDQUNKLENBQUE7UUFDRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssYUFBYTtRQUNqQixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVztZQUN2RSxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUN6QixDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyw4QkFBOEIsR0FBRyxhQUFhLENBQUE7SUFDdkQsQ0FBQztDQUVKO0FBdkdELDhCQXVHQyJ9

10
npmextra.json Normal file
View File

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

View File

@ -1,6 +1,6 @@
{ {
"name": "lik", "name": "lik",
"version": "1.0.3", "version": "1.0.31",
"description": "light little helpers for node", "description": "light little helpers for node",
"main": "dist/index.js", "main": "dist/index.js",
"typings": "dist/index.d.ts", "typings": "dist/index.d.ts",
@ -17,15 +17,17 @@
"url": "https://gitlab.com/pushrocks/lik/issues" "url": "https://gitlab.com/pushrocks/lik/issues"
}, },
"homepage": "https://gitlab.com/pushrocks/lik#README", "homepage": "https://gitlab.com/pushrocks/lik#README",
"devDependencies": { "devDependencies": {},
"npmts-g": "^5.2.6",
"should": "^10.0.0",
"typings-test": "^1.0.1"
},
"dependencies": { "dependencies": {
"@types/minimatch": "^2.0.28", "@types/lodash": "^4.14.62",
"@types/q": "^0.0.27", "@types/minimatch": "2.x.x",
"minimatch": "^3.0.2", "@types/q": "1.x.x",
"q": "^1.4.1" "lodash": "^4.17.4",
"minimatch": "^3.0.3",
"q": "^1.5.0",
"rxjs": "^5.3.0",
"smartq": "^1.1.1",
"tapbundle": "^1.0.14",
"typings-global": "^1.0.14"
} }
} }

2
test/test.d.ts vendored
View File

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

View File

@ -1,38 +0,0 @@
"use strict";
require("typings-test");
const lik = require("../dist/index");
require("should");
describe("lik", function () {
describe("Stringmap", function () {
let testStringmap;
let testString1 = "testString1";
let testString2 = "testString2";
let testString3 = "testString3";
it("should create an instance of Stringmap", function () {
testStringmap = new lik.Stringmap();
testStringmap.should.be.instanceof(lik.Stringmap);
});
it("should return false for an string not in Stringmap", function () {
testStringmap.checkString(testString1).should.be.false();
});
it("should add an string to Stringmap", function () {
testStringmap.addString(testString1);
testStringmap.addString(testString2);
testStringmap.addString(testString3);
testStringmap.checkString(testString1).should.be.true();
testStringmap.checkString(testString2).should.be.true();
testStringmap.checkString(testString3).should.be.true();
});
it("should remove a string from Stringmap", function () {
testStringmap.removeString(testString2);
testStringmap.checkString(testString2).should.be.false();
});
it("should register a function to trigger when empty", function () {
testStringmap.registerUntilTrue(() => { return testStringmap.checkIsEmpty(); }, () => { console.log("Stringmap now is empty"); });
});
it("should remove wipe and then notify", function () {
testStringmap.wipe();
});
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FBYyxDQUFDLENBQUE7QUFDdEIsTUFBTyxHQUFHLFdBQVcsZUFBZSxDQUFDLENBQUM7QUFDdEMsUUFBTyxRQUFRLENBQUMsQ0FBQTtBQUVoQixRQUFRLENBQUMsS0FBSyxFQUFDO0lBQ1gsUUFBUSxDQUFDLFdBQVcsRUFBQztRQUNqQixJQUFJLGFBQTJCLENBQUM7UUFDaEMsSUFBSSxXQUFXLEdBQUcsYUFBYSxDQUFDO1FBQ2hDLElBQUksV0FBVyxHQUFHLGFBQWEsQ0FBQztRQUNoQyxJQUFJLFdBQVcsR0FBRyxhQUFhLENBQUM7UUFDaEMsRUFBRSxDQUFDLHdDQUF3QyxFQUFDO1lBQ3hDLGFBQWEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLG9EQUFvRCxFQUFDO1lBQ3BELGFBQWEsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3RCxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxtQ0FBbUMsRUFBQztZQUNuQyxhQUFhLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3JDLGFBQWEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDckMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNyQyxhQUFhLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDeEQsYUFBYSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3hELGFBQWEsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM1RCxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyx1Q0FBdUMsRUFBQztZQUN2QyxhQUFhLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3hDLGFBQWEsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3RCxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxrREFBa0QsRUFBQztZQUNsRCxhQUFhLENBQUMsaUJBQWlCLENBQzNCLFFBQU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQSxDQUFBLENBQUMsRUFDM0MsUUFBTyxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUEsQ0FBQSxDQUFDLENBQ2hELENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxvQ0FBb0MsRUFBQztZQUNwQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQyxDQUFDIn0=

View File

@ -1,40 +1,151 @@
import "typings-test"; import { expect, tap } from 'tapbundle'
import lik = require("../dist/index"); import * as events from 'events'
import "should"; import * as rx from 'rxjs/Rx'
import * as smartq from 'smartq'
describe("lik",function(){ import lik = require('../dist/index')
describe("Stringmap",function(){ let testStringmap: lik.Stringmap
let testStringmap:lik.Stringmap; let testString1 = 'testString1'
let testString1 = "testString1"; let testString2 = 'testString2'
let testString2 = "testString2"; let testString3 = 'testString3'
let testString3 = "testString3"; let testString4 = 'testString4'
it("should create an instance of Stringmap",function(){ let testString5 = 'testString5'
testStringmap = new lik.Stringmap(); let testString6 = 'testString6'
testStringmap.should.be.instanceof(lik.Stringmap); tap.test('new lik.Objectmap() -> should create an instance of Stringmap', async () => {
}); testStringmap = new lik.Stringmap()
it("should return false for an string not in Stringmap",function(){ expect(testStringmap).be.instanceof(lik.Stringmap)
testStringmap.checkString(testString1).should.be.false(); })
}); tap.test('lik.Stringmap.checkString -> should return false for an string not in Stringmap', async () => {
it("should add an string to Stringmap",function(){ // tslint:disable-next-line:no-unused-expression
testStringmap.addString(testString1); expect(testStringmap.checkString(testString1)).be.false
testStringmap.addString(testString2); })
testStringmap.addString(testString3); tap.test('lik.Stringmap.addString -> should add an string to Stringmap', async () => {
testStringmap.checkString(testString1).should.be.true(); testStringmap.addString(testString1)
testStringmap.checkString(testString2).should.be.true(); testStringmap.addString(testString2)
testStringmap.checkString(testString3).should.be.true(); testStringmap.addString(testString3)
}); // tslint:disable-next-line:no-unused-expression
it("should remove a string from Stringmap",function(){ expect(testStringmap.checkString(testString1)).be.true
testStringmap.removeString(testString2); // tslint:disable-next-line:no-unused-expression
testStringmap.checkString(testString2).should.be.false(); expect(testStringmap.checkString(testString2)).be.true
}); // tslint:disable-next-line:no-unused-expression
it("should register a function to trigger when empty",function(){ expect(testStringmap.checkString(testString3)).be.true
testStringmap.registerUntilTrue( // tslint:disable-next-line:no-unused-expression
() => {return testStringmap.checkIsEmpty()}, expect(testStringmap.checkMinimatch('*String1')).be.true
() => {console.log("Stringmap now is empty")} // tslint:disable-next-line:no-unused-expression
); expect(testStringmap.checkMinimatch('*String2')).be.true
}); // tslint:disable-next-line:no-unused-expression
it("should remove wipe and then notify",function(){ expect(testStringmap.checkMinimatch('*String4')).be.false
testStringmap.wipe(); })
}) tap.test('lik.Stringmap.addStringArray -> should add an array of strings', async () => {
}) testStringmap.addStringArray([ testString4, testString5, testString6 ])
}); // tslint:disable-next-line:no-unused-expression
expect(testStringmap.checkMinimatch('*String4')).be.true
})
tap.test('lik.Stringmap.removeString -> should remove a string from Stringmap', async () => {
testStringmap.removeString(testString2)
// tslint:disable-next-line:no-unused-expression
expect(testStringmap.checkString(testString2)).be.false
})
tap.test('lik.Stringmap.getStringArray() -> should return a copy of stringArray', async () => {
let clonedArray = testStringmap.getStringArray()
// tslint:disable-next-line:no-unused-expression
expect(clonedArray[ 0 ] === 'testString1').be.true
// tslint:disable-next-line:no-unused-expression
expect(clonedArray[ 0 ] === testString1).be.true
})
tap.test('lik.Stringmap.checkIsEmpty() -> should register a function to trigger when empty', async () => {
testStringmap.registerUntilTrue(
() => { return testStringmap.checkIsEmpty() },
() => { console.log('Stringmap now is empty') }
)
})
tap.test('lik.Stringmap.empty() -> should remove wipe and then notify', async () => {
testStringmap.wipe()
})
// Objectmap
interface ITestObject {
propOne: string
propTwo: string
}
let testObjectmap: lik.Objectmap<ITestObject>
let testObject1: ITestObject = {
propOne: 'hello',
propTwo: 'hello2'
}
let testObject2: ITestObject = {
propOne: 'hello',
propTwo: 'hello2'
}
tap.test('new lik.Objectmap() -> should correctly instantiate an Objectmap', async () => {
testObjectmap = new lik.Objectmap<ITestObject>()
expect(testObjectmap).be.instanceof(lik.Objectmap)
})
tap.test('lik.Objectmap.add() -> should correctly add an object to Objectmap', async () => {
testObjectmap.add(testObject1)
// tslint:disable-next-line:no-unused-expression
expect(testObjectmap.checkForObject(testObject1)).be.true
// tslint:disable-next-line:no-unused-expression
expect(testObjectmap.checkForObject(testObject2)).be.false
})
tap.test('lik.Objectmap.remove() -> should correctly remove an object to Objectmap', async () => {
testObjectmap.add(testObject2)
testObjectmap.remove(testObject1)
// tslint:disable-next-line:no-unused-expression
expect(testObjectmap.checkForObject(testObject1)).be.false
// tslint:disable-next-line:no-unused-expression
expect(testObjectmap.checkForObject(testObject2)).be.true
})
tap.test('Objectmap.forEach -> should correctly run a function forEach map object', async () => {
testObjectmap.forEach(itemArg => {
expect(itemArg).have.ownProperty('propOne')
})
})
tap.test('lik.Objectmap.find() -> should correctly find an object', async () => {
let myObject = { propOne: 'helloThere', propTwo: 'helloAnyway' }
testObjectmap.add(myObject)
let referenceObject = testObjectmap.find((itemArg) => { return (itemArg.propOne === 'helloThere') })
// tslint:disable-next-line:no-unused-expression
expect(myObject === referenceObject).be.true
})
tap.test('lik.Objectmap.getArray() -> should return a cloned array', async () => {
let myObject = { propOne: 'test1', propTwo: 'wow, how awesome' }
testObjectmap.add(myObject)
let clonedArray = testObjectmap.getArray()
expect(clonedArray[ clonedArray.length - 1 ]).eql(myObject)
})
tap.test('should get one object and then remove it', async () => {
let originalLength = testObjectmap.getArray().length
let oneObject = testObjectmap.getOneAndRemove()
// tslint:disable-next-line:no-unused-expression
expect(oneObject).not.be.null
expect(testObjectmap.getArray().length).equal(originalLength - 1)
expect(testObjectmap.getArray()).to.not.contain(oneObject)
})
let testObservablemap: lik.Observablemap
let testObservable1: rx.Observable<any>
let testObservable2: rx.Observable<any>
let testObservable3: rx.Observable<any>
let testEmitter: events.EventEmitter
tap.test('should create an instance', async () => {
testObservablemap = new lik.Observablemap()
expect(testObservablemap).be.instanceof(lik.Observablemap)
})
tap.test('should accept a new emitter', async () => {
let done = smartq.defer()
testEmitter = new events.EventEmitter()
testObservable1 = testObservablemap.getObservableForEmitterEvent(testEmitter, 'event1')
testObservable1.subscribe(x => {
done.resolve()
})
testObservable2 = testObservablemap.getObservableForEmitterEvent(testEmitter, 'event1')
testObservable3 = testObservablemap.getObservableForEmitterEvent(testEmitter, 'event2')
// tslint:disable-next-line:no-unused-expression
expect(testObservable1 === testObservable2).be.true
// tslint:disable-next-line:no-unused-expression
expect(testObservable1 === testObservable3).be.false
testEmitter.emit('event1')
await done.promise
})
tap.start()

View File

@ -1,5 +1,7 @@
import * as plugins from "./lik.plugins"; import * as plugins from './lik.plugins'
// import modules // import modules
export * from "./lik.stringmap"; export * from './lik.stringmap'
export * from './lik.objectmap'
export * from './lik.observablemap'

121
ts/lik.objectmap.ts Normal file
View File

@ -0,0 +1,121 @@
import * as plugins from './lik.plugins'
export interface IObjectmapForEachFunction<T> {
(itemArg: T): void
}
export interface IObjectmapFindFunction<T> {
(itemArg: T): boolean
}
/**
* allows keeping track of objects
*/
export class Objectmap<T> {
private objectArray: T[] = []
/**
* returns a new instance
*/
constructor () {
// nothing here
}
/**
* add object to Objectmap
*/
add (objectArg: T) {
this.objectArray.push(objectArg)
}
/**
* like .add but adds an whole array of objects
*/
addArray (objectArrayArg: T[]) {
for (let item of objectArrayArg) {
this.add(item)
}
}
/**
* check if object is in Objectmap
*/
checkForObject (objectArg: T) {
return this.objectArray.indexOf(objectArg) !== -1
}
/**
* find object
*/
find (findFunction: IObjectmapFindFunction<T>) {
let resultArray = this.objectArray.filter(findFunction)
if (resultArray.length > 0) {
return resultArray[ 0 ]
} else {
return null
}
}
/**
* finds a specific element and then removes it
*/
findOneAndRemove (findFunction): T {
let foundElement = this.find(findFunction)
if (foundElement) {
this.remove(foundElement)
}
return foundElement
}
/**
* run function for each item in Objectmap
*/
forEach (functionArg: IObjectmapForEachFunction<T>) {
return this.objectArray.forEach(functionArg)
}
/**
* gets an object in the Observablemap and removes it, so it can't be retrieved again
*/
getOneAndRemove (): T {
return this.objectArray.shift()
}
/**
* returns a cloned array of all the objects currently in the Objectmap
*/
getArray () {
return plugins.lodash.cloneDeep(this.objectArray)
}
/**
* check if Objectmap ist empty
*/
isEmpty (): boolean {
if (this.objectArray.length === 0) {
return true
} else {
return false
}
}
/**
* remove object from Objectmap
*/
remove (objectArg: T) {
let replacementArray = []
for (let item of this.objectArray) {
if (item !== objectArg) {
replacementArray.push(item)
}
}
this.objectArray = replacementArray
}
/**
* wipe Objectmap
*/
wipe () {
this.objectArray = []
}
}

42
ts/lik.observablemap.ts Normal file
View File

@ -0,0 +1,42 @@
import * as plugins from './lik.plugins'
import { Objectmap } from './lik.objectmap'
import { Stringmap } from './lik.stringmap'
import { Observable } from 'rxjs/Rx'
/**
* bundles an observable with an emitter
*/
export interface ObservableEmitterBundle {
observable: plugins.rx.Observable<any>
emitter: plugins.events.EventEmitter
event: string
}
/**
* manages observables by making sure that only one observable is regsitered per event
*/
export class Observablemap {
ObservableEmitterBundleObjectmap = new Objectmap<ObservableEmitterBundle>()
/**
* creates a new observable if not yet registered for the same event.
* In case event has been registered before the same observable is returned.
*/
getObservableForEmitterEvent(emitterArg: plugins.events.EventEmitter, eventArg: string) {
let existingBundle = this.ObservableEmitterBundleObjectmap.find((bundleArg) => {
return(bundleArg.emitter === emitterArg && bundleArg.event === eventArg)
})
if (existingBundle) {
return existingBundle.observable
} else {
let emitterObservable = plugins.rx.Observable.fromEvent(emitterArg, eventArg)
this.ObservableEmitterBundleObjectmap.add({
observable: emitterObservable,
emitter: emitterArg,
event: eventArg
})
return emitterObservable
}
}
}

View File

@ -1,3 +1,6 @@
import "typings-global"; import 'typings-global'
export import q = require("q"); export import q = require('q')
export import minimatch = require("minimatch"); export import events = require('events')
export import lodash = require('lodash')
export import minimatch = require('minimatch')
export import rx = require('rxjs/Rx')

View File

@ -1,99 +1,114 @@
import * as plugins from "./lik.plugins"; import * as plugins from './lik.plugins'
/** /**
* allows you to easily keep track of a bunch of strings; * allows you to easily keep track of a bunch of strings
*/ */
export interface triggerFunction { export interface ITriggerFunction {
():boolean; (): boolean
} }
export class Stringmap { export class Stringmap {
private _stringArray:string[] = []; private _stringArray: string[] = []
private _triggerUntilTrueFunctionArray:triggerFunction[] = []; private _triggerUntilTrueFunctionArray: ITriggerFunction[] = []
constructor(){ constructor() {}
};
/** /**
* add a string to the Stringmap * add a string to the Stringmap
*/ */
addString(stringArg:string){ addString(stringArg: string) {
this._stringArray.push(stringArg); this._stringArray.push(stringArg)
this.notifyTrigger(); this.notifyTrigger()
}; }
/**
* like addString, but accepts an array of strings
*/
addStringArray(stringArrayArg: string[]) {
for (let stringItem of stringArrayArg){
this.addString(stringItem)
}
}
/** /**
* removes a string from Stringmap * removes a string from Stringmap
*/ */
removeString(stringArg:string){ removeString(stringArg: string) {
for (let keyArg in this._stringArray){ for (let keyArg in this._stringArray) {
if(this._stringArray[keyArg] == stringArg){ if (this._stringArray[keyArg] === stringArg) {
this._stringArray.splice(parseInt(keyArg),1); this._stringArray.splice(parseInt(keyArg),1)
}; }
}; }
this.notifyTrigger(); this.notifyTrigger()
} }
/** /**
* wipes the Stringmap * wipes the Stringmap
*/ */
wipe(){ wipe() {
this._stringArray = []; this._stringArray = []
this.notifyTrigger(); this.notifyTrigger()
} }
/** /**
* check if string is in Stringmap * check if string is in Stringmap
*/ */
checkString(stringArg:string):boolean { checkString(stringArg: string): boolean {
return this._stringArray.indexOf(stringArg) != -1; return this._stringArray.indexOf(stringArg) !== -1
} }
/** /**
* checks stringPresence with minimatch * checks stringPresence with minimatch
*/ */
checkMinimatch(miniMatchStringArg:string):boolean { checkMinimatch(miniMatchStringArg: string): boolean {
let foundMatch:boolean = false; let foundMatch: boolean = false
for(let stringItem of this._stringArray){ for (let stringItem of this._stringArray){
if(plugins.minimatch(stringItem,miniMatchStringArg)){ if (plugins.minimatch(stringItem,miniMatchStringArg)) {
foundMatch = true; foundMatch = true
}; }
}; }
return foundMatch; return foundMatch
}; }
/** /**
* checks if the Stringmap is empty * checks if the Stringmap is empty
*/ */
checkIsEmpty(){ checkIsEmpty() {
return (this._stringArray.length == 0); return (this._stringArray.length === 0)
}
/**
* gets a cloned copy of the current string Array
*/
getStringArray() {
return plugins.lodash.cloneDeep(this._stringArray)
} }
// trigger registering // trigger registering
/**
* notifies triggers
*/
private notifyTrigger(){
let filteredArray = this._triggerUntilTrueFunctionArray.filter((functionArg) => {
return !functionArg();
});
this._triggerUntilTrueFunctionArray = filteredArray;
};
/** /**
* register a new trigger * register a new trigger
*/ */
registerUntilTrue(functionArg:triggerFunction,doFunctionArg){ registerUntilTrue(functionArg: ITriggerFunction,doFunctionArg) {
this._triggerUntilTrueFunctionArray.push( this._triggerUntilTrueFunctionArray.push(
() => { () => {
let result = functionArg(); let result = functionArg()
if(result == true){ if (result === true) {
doFunctionArg(); doFunctionArg()
} }
return result; return result
} }
); )
this.notifyTrigger(); this.notifyTrigger()
} }
}
/**
* notifies triggers
*/
private notifyTrigger() {
let filteredArray = this._triggerUntilTrueFunctionArray.filter((functionArg) => {
return !functionArg()
})
this._triggerUntilTrueFunctionArray = filteredArray
}
}

3
tslint.json Normal file
View File

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

336
yarn.lock Normal file
View File

@ -0,0 +1,336 @@
# 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.2"
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-3.5.2.tgz#c11cd2817d3a401b7ba0f5a420f35c56139b1c1e"
"@types/lodash@^4.14.62":
version "4.14.62"
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.62.tgz#8674f9861582148a60b7a89cb260f11378d11683"
"@types/minimatch@2.x.x":
version "2.0.29"
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-2.0.29.tgz#5002e14f75e2d71e564281df0431c8c1b4a2a36a"
"@types/node@*", "@types/node@^7.0.29":
version "7.0.31"
resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.31.tgz#80ea4d175599b2a00149c29a10a4eb2dff592e86"
"@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"
"@types/q@1.x.x":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.0.0.tgz#57e5465d665b370d4217e69b344b20faa6b724f5"
"@types/shelljs@^0.6.0":
version "0.6.0"
resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.6.0.tgz#090b705c102ce7fc5c0c5ea9b524418ff15840df"
dependencies:
"@types/node" "*"
"@types/which@^1.0.28":
version "1.0.28"
resolved "https://registry.yarnpkg.com/@types/which/-/which-1.0.28.tgz#016e387629b8817bed653fe32eab5d11279c8df6"
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.4.0"
resolved "https://registry.yarnpkg.com/chai-string/-/chai-string-1.4.0.tgz#359140c051d36a4e4b1a5fc6b910152f438a8d49"
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"
early@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/early/-/early-2.1.1.tgz#841e23254ea5dc54d8afaeee82f5ab65c00ee23c"
dependencies:
beautycolor "^1.0.7"
smartq "^1.1.1"
typings-global "^1.0.16"
es6-error@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.0.2.tgz#eec5c726eacef51b7f6b73c20db6e1b13b069c98"
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.2"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.2.tgz#f4f623f0bb7122f15f5717c8e254b8161b5c5b2d"
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
leakage@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/leakage/-/leakage-0.3.0.tgz#15d698abdc76bbc6439601f4f3020e77e2d50c39"
dependencies:
es6-error "^4.0.2"
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"
lodash@^4.17.4:
version "4.17.4"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
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, minimatch@^3.0.3:
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"
q@^1.5.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1"
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.2"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235"
dependencies:
path-parse "^1.0.5"
rxjs@^5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.3.0.tgz#d88ccbdd46af290cbdb97d5d8055e52453fabe2d"
dependencies:
symbol-observable "^1.0.1"
semver@^5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
shelljs@^0.7.4, shelljs@^0.7.6:
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.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/smartdelay/-/smartdelay-1.0.3.tgz#5fd44dad77262d110702f0293efa80c072cfb579"
dependencies:
smartq "^1.1.1"
typings-global "^1.0.16"
smartq@^1.1.0, 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"
smartshell@^1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/smartshell/-/smartshell-1.0.6.tgz#27b1c79029784abe72ac7e91fe698b7ebecc6629"
dependencies:
"@types/shelljs" "^0.6.0"
"@types/which" "^1.0.28"
shelljs "^0.7.6"
smartq "^1.1.0"
which "^1.2.12"
symbol-observable@^1.0.1:
version "1.0.4"
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d"
tapbundle@^1.0.14:
version "1.0.14"
resolved "https://registry.yarnpkg.com/tapbundle/-/tapbundle-1.0.14.tgz#75827e335fcb02216f0267a26a26d702ddc02e3c"
dependencies:
early "^2.1.1"
leakage "^0.3.0"
smartchai "^1.0.3"
smartdelay "^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:
version "1.0.14"
resolved "https://registry.yarnpkg.com/typings-global/-/typings-global-1.0.14.tgz#ab682720a03d6b9278869fb5c30c30d7dc61d12c"
dependencies:
semver "^5.3.0"
shelljs "^0.7.4"
typings-global@^1.0.16:
version "1.0.17"
resolved "https://registry.yarnpkg.com/typings-global/-/typings-global-1.0.17.tgz#41edc331ccec3168289adc8849e1e255efbe7152"
dependencies:
"@types/node" "^7.0.29"
semver "^5.3.0"
smartshell "^1.0.6"
which@^1.2.12:
version "1.2.14"
resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5"
dependencies:
isexe "^2.0.0"
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"