Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
a76832bedb | |||
3c229e8e26 | |||
29d6f2d7e0 | |||
2b5ff6a4ab | |||
c75437e73f | |||
61e4a62689 |
@ -7,53 +7,68 @@ cache:
|
|||||||
key: "$CI_BUILD_STAGE"
|
key: "$CI_BUILD_STAGE"
|
||||||
|
|
||||||
stages:
|
stages:
|
||||||
|
- mirror
|
||||||
- test
|
- test
|
||||||
- release
|
- release
|
||||||
- trigger
|
- trigger
|
||||||
- pages
|
- pages
|
||||||
|
|
||||||
|
mirror:
|
||||||
|
stage: mirror
|
||||||
|
script:
|
||||||
|
- npmci git mirror
|
||||||
|
tags:
|
||||||
|
- docker
|
||||||
|
|
||||||
testLEGACY:
|
testLEGACY:
|
||||||
stage: test
|
stage: test
|
||||||
script:
|
script:
|
||||||
- npmci test legacy
|
- npmci node install legacy
|
||||||
|
- npmci npm install
|
||||||
|
- npmci npm test
|
||||||
coverage: /\d+.?\d+?\%\s*coverage/
|
coverage: /\d+.?\d+?\%\s*coverage/
|
||||||
tags:
|
tags:
|
||||||
- docker
|
- docker
|
||||||
allow_failure: true
|
allow_failure: true
|
||||||
|
|
||||||
testLTS:
|
testLTS:
|
||||||
stage: test
|
stage: test
|
||||||
script:
|
script:
|
||||||
- npmci test lts
|
- npmci node install lts
|
||||||
|
- npmci npm install
|
||||||
|
- npmci npm test
|
||||||
coverage: /\d+.?\d+?\%\s*coverage/
|
coverage: /\d+.?\d+?\%\s*coverage/
|
||||||
tags:
|
tags:
|
||||||
- docker
|
- docker
|
||||||
|
|
||||||
testSTABLE:
|
testSTABLE:
|
||||||
stage: test
|
stage: test
|
||||||
script:
|
script:
|
||||||
- npmci test stable
|
- npmci node install stable
|
||||||
|
- npmci npm install
|
||||||
|
- npmci npm test
|
||||||
coverage: /\d+.?\d+?\%\s*coverage/
|
coverage: /\d+.?\d+?\%\s*coverage/
|
||||||
tags:
|
tags:
|
||||||
- docker
|
- docker
|
||||||
|
|
||||||
release:
|
release:
|
||||||
stage: release
|
stage: release
|
||||||
script:
|
script:
|
||||||
- npmci publish
|
- npmci npm prepare
|
||||||
|
- npmci npm publish
|
||||||
only:
|
only:
|
||||||
- tags
|
- tags
|
||||||
tags:
|
tags:
|
||||||
- docker
|
- docker
|
||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
stage: trigger
|
stage: trigger
|
||||||
script:
|
script:
|
||||||
- npmci trigger
|
- npmci trigger
|
||||||
only:
|
only:
|
||||||
- tags
|
- tags
|
||||||
tags:
|
tags:
|
||||||
- docker
|
- docker
|
||||||
|
|
||||||
pages:
|
pages:
|
||||||
image: hosttoday/ht-docker-node:npmci
|
image: hosttoday/ht-docker-node:npmci
|
||||||
@ -69,4 +84,3 @@ pages:
|
|||||||
expire_in: 1 week
|
expire_in: 1 week
|
||||||
paths:
|
paths:
|
||||||
- public
|
- public
|
||||||
allow_failure: true
|
|
||||||
|
1
dist/index.d.ts
vendored
1
dist/index.d.ts
vendored
@ -1,5 +1,4 @@
|
|||||||
export * from './lik.looptracker';
|
export * from './lik.looptracker';
|
||||||
export * from './lik.objectmap';
|
export * from './lik.objectmap';
|
||||||
export * from './lik.observablemap';
|
|
||||||
export * from './lik.stringmap';
|
export * from './lik.stringmap';
|
||||||
export * from './lik.limitedarray';
|
export * from './lik.limitedarray';
|
||||||
|
3
dist/index.js
vendored
3
dist/index.js
vendored
@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||||||
// import modules
|
// import modules
|
||||||
__export(require("./lik.looptracker"));
|
__export(require("./lik.looptracker"));
|
||||||
__export(require("./lik.objectmap"));
|
__export(require("./lik.objectmap"));
|
||||||
__export(require("./lik.observablemap"));
|
|
||||||
__export(require("./lik.stringmap"));
|
__export(require("./lik.stringmap"));
|
||||||
__export(require("./lik.limitedarray"));
|
__export(require("./lik.limitedarray"));
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLGlCQUFpQjtBQUVqQix1Q0FBaUM7QUFDakMscUNBQStCO0FBQy9CLHlDQUFtQztBQUNuQyxxQ0FBK0I7QUFDL0Isd0NBQWtDIn0=
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLGlCQUFpQjtBQUVqQix1Q0FBaUM7QUFDakMscUNBQStCO0FBQy9CLHFDQUErQjtBQUMvQix3Q0FBa0MifQ==
|
23
dist/lik.observablemap.d.ts
vendored
23
dist/lik.observablemap.d.ts
vendored
@ -1,23 +0,0 @@
|
|||||||
/// <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
35
dist/lik.observablemap.js
vendored
@ -1,35 +0,0 @@
|
|||||||
"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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlrLm9ic2VydmFibGVtYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9saWsub2JzZXJ2YWJsZW1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUF3QztBQUN4QyxtREFBMkM7QUFhM0M7O0dBRUc7QUFDSDtJQUFBO1FBQ0UscUNBQWdDLEdBQUcsSUFBSSx5QkFBUyxFQUEyQixDQUFBO0lBc0I3RSxDQUFDO0lBcEJDOzs7T0FHRztJQUNILDRCQUE0QixDQUFFLFVBQXVDLEVBQUUsUUFBZ0I7UUFDckYsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVM7WUFDeEUsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sS0FBSyxVQUFVLElBQUksU0FBUyxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQTtRQUMzRSxDQUFDLENBQUMsQ0FBQTtRQUNGLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUE7UUFDbEMsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sSUFBSSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1lBQzdFLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxHQUFHLENBQUM7Z0JBQ3hDLFVBQVUsRUFBRSxpQkFBaUI7Z0JBQzdCLE9BQU8sRUFBRSxVQUFVO2dCQUNuQixLQUFLLEVBQUUsUUFBUTthQUNoQixDQUFDLENBQUE7WUFDRixNQUFNLENBQUMsaUJBQWlCLENBQUE7UUFDMUIsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXZCRCxzQ0F1QkMifQ==
|
|
17
dist/lik.plugins.d.ts
vendored
17
dist/lik.plugins.d.ts
vendored
@ -1,13 +1,6 @@
|
|||||||
import 'typings-global';
|
import 'typings-global';
|
||||||
export import q = require('q');
|
import * as smartq from 'smartq';
|
||||||
export import events = require('events');
|
import * as events from 'events';
|
||||||
export import lodash = require('lodash');
|
import * as lodash from 'lodash';
|
||||||
export import minimatch = require('minimatch');
|
import * as minimatch from 'minimatch';
|
||||||
export import rx = require('rxjs/Rx');
|
export { smartq, events, lodash, minimatch };
|
||||||
import { Operator } from 'rxjs/Operator';
|
|
||||||
import { Observable } from 'rxjs/Observable';
|
|
||||||
declare module 'rxjs/Subject' {
|
|
||||||
interface Subject<T> {
|
|
||||||
lift<R>(operator: Operator<T, R>): Observable<R>;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
15
dist/lik.plugins.js
vendored
15
dist/lik.plugins.js
vendored
@ -1,9 +1,12 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
require("typings-global");
|
require("typings-global");
|
||||||
exports.q = require("q");
|
const smartq = require("smartq");
|
||||||
exports.events = require("events");
|
exports.smartq = smartq;
|
||||||
exports.lodash = require("lodash");
|
const events = require("events");
|
||||||
exports.minimatch = require("minimatch");
|
exports.events = events;
|
||||||
exports.rx = require("rxjs/Rx");
|
const lodash = require("lodash");
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlrLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9saWsucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF1QjtBQUN2Qix5QkFBOEI7QUFDOUIsbUNBQXdDO0FBQ3hDLG1DQUF3QztBQUN4Qyx5Q0FBOEM7QUFDOUMsZ0NBQXFDIn0=
|
exports.lodash = lodash;
|
||||||
|
const minimatch = require("minimatch");
|
||||||
|
exports.minimatch = minimatch;
|
||||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlrLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9saWsucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF1QjtBQUN2QixpQ0FBZ0M7QUFNOUIsd0JBQU07QUFMUixpQ0FBZ0M7QUFNOUIsd0JBQU07QUFMUixpQ0FBZ0M7QUFNOUIsd0JBQU07QUFMUix1Q0FBc0M7QUFNcEMsOEJBQVMifQ==
|
2
dist/lik.stringmap.js
vendored
2
dist/lik.stringmap.js
vendored
@ -94,4 +94,4 @@ class Stringmap {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.Stringmap = Stringmap;
|
exports.Stringmap = Stringmap;
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlrLnN0cmluZ21hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2xpay5zdHJpbmdtYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5Q0FBd0M7QUFVeEM7SUFHRTtRQUZRLGlCQUFZLEdBQWEsRUFBRSxDQUFBO1FBQzNCLG1DQUE4QixHQUF1QixFQUFFLENBQUE7SUFDL0MsQ0FBQztJQUNqQjs7T0FFRztJQUNILFNBQVMsQ0FBRSxTQUFpQjtRQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNqQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYyxDQUFFLGNBQXdCO1FBQ3RDLEdBQUcsQ0FBQyxDQUFDLElBQUksVUFBVSxJQUFJLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWSxDQUFFLFNBQWlCO1FBQzdCLEdBQUcsQ0FBQyxDQUFDLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUUsTUFBTSxDQUFFLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQy9DLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFBO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUk7UUFDRixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQTtRQUN0QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFFLFNBQWlCO1FBQzVCLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUNwRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjLENBQUUsa0JBQTBCO1FBQ3hDLElBQUksVUFBVSxHQUFZLEtBQUssQ0FBQTtRQUMvQixHQUFHLENBQUMsQ0FBQyxJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUN6QyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdEQsVUFBVSxHQUFHLElBQUksQ0FBQTtZQUNuQixDQUFDO1FBQ0gsQ0FBQztRQUNELE1BQU0sQ0FBQyxVQUFVLENBQUE7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWTtRQUNWLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDWixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQ3BELENBQUM7SUFFRCxzQkFBc0I7SUFFdEI7O09BRUc7SUFDSCxpQkFBaUIsQ0FBRSxXQUE2QixFQUFFLGFBQWE7UUFDN0QsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FDdEM7WUFDRSxJQUFJLE1BQU0sR0FBRyxXQUFXLEVBQUUsQ0FBQTtZQUMxQixFQUFFLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDcEIsYUFBYSxFQUFFLENBQUE7WUFDakIsQ0FBQztZQUNELE1BQU0sQ0FBQyxNQUFNLENBQUE7UUFDZixDQUFDLENBQ0YsQ0FBQTtRQUNELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDSyxhQUFhO1FBQ25CLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXO1lBQ3pFLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQ3ZCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLDhCQUE4QixHQUFHLGFBQWEsQ0FBQTtJQUNyRCxDQUFDO0NBRUY7QUF2R0QsOEJBdUdDIn0=
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlrLnN0cmluZ21hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2xpay5zdHJpbmdtYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5Q0FBd0M7QUFVeEM7SUFHRTtRQUZRLGlCQUFZLEdBQWEsRUFBRSxDQUFBO1FBQzNCLG1DQUE4QixHQUF1QixFQUFFLENBQUE7SUFDL0MsQ0FBQztJQUNqQjs7T0FFRztJQUNILFNBQVMsQ0FBRSxTQUFpQjtRQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNqQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYyxDQUFFLGNBQXdCO1FBQ3RDLEdBQUcsQ0FBQyxDQUFDLElBQUksVUFBVSxJQUFJLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWSxDQUFFLFNBQWlCO1FBQzdCLEdBQUcsQ0FBQyxDQUFDLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUUsTUFBTSxDQUFFLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQy9DLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFBO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUk7UUFDRixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQTtRQUN0QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFFLFNBQWlCO1FBQzVCLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUNwRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjLENBQUUsa0JBQTBCO1FBQ3hDLElBQUksVUFBVSxHQUFZLEtBQUssQ0FBQTtRQUMvQixHQUFHLENBQUMsQ0FBQyxJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUN6QyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdEQsVUFBVSxHQUFHLElBQUksQ0FBQTtZQUNuQixDQUFDO1FBQ0gsQ0FBQztRQUNELE1BQU0sQ0FBQyxVQUFVLENBQUE7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWTtRQUNWLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDWixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQ3BELENBQUM7SUFFRCxzQkFBc0I7SUFFdEI7O09BRUc7SUFDSCxpQkFBaUIsQ0FBRSxXQUE2QixFQUFFLGFBQWE7UUFDN0QsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FDdEMsR0FBRyxFQUFFO1lBQ0gsSUFBSSxNQUFNLEdBQUcsV0FBVyxFQUFFLENBQUE7WUFDMUIsRUFBRSxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLGFBQWEsRUFBRSxDQUFBO1lBQ2pCLENBQUM7WUFDRCxNQUFNLENBQUMsTUFBTSxDQUFBO1FBQ2YsQ0FBQyxDQUNGLENBQUE7UUFDRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssYUFBYTtRQUNuQixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDN0UsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDdkIsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsOEJBQThCLEdBQUcsYUFBYSxDQUFBO0lBQ3JELENBQUM7Q0FFRjtBQXZHRCw4QkF1R0MifQ==
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"npmci": {
|
"npmci": {
|
||||||
"globalNpmTools": [
|
"npmGlobalTools": [
|
||||||
"npmts"
|
"npmts"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "lik",
|
"name": "lik",
|
||||||
"version": "1.0.41",
|
"version": "2.0.0",
|
||||||
"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",
|
||||||
@ -23,11 +23,8 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/lodash": "^4.14.74",
|
"@types/lodash": "^4.14.74",
|
||||||
"@types/minimatch": "3.x.x",
|
"@types/minimatch": "3.x.x",
|
||||||
"@types/q": "1.x.x",
|
|
||||||
"lodash": "^4.17.4",
|
"lodash": "^4.17.4",
|
||||||
"minimatch": "^3.0.4",
|
"minimatch": "^3.0.4",
|
||||||
"q": "^1.5.0",
|
|
||||||
"rxjs": "^5.4.3",
|
|
||||||
"smartq": "^1.1.6",
|
"smartq": "^1.1.6",
|
||||||
"typings-global": "^1.0.20"
|
"typings-global": "^1.0.20"
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
// import test framework
|
// import test framework
|
||||||
import { expect, tap } from 'tapbundle'
|
import { expect, tap } from 'tapbundle'
|
||||||
import * as events from 'events'
|
import * as events from 'events'
|
||||||
import * as rx from 'rxjs/Rx'
|
|
||||||
import * as smartq from 'smartq'
|
import * as smartq from 'smartq'
|
||||||
|
|
||||||
// import the module
|
// import the module
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
// import test framework
|
// import test framework
|
||||||
import { expect, tap } from 'tapbundle'
|
import { expect, tap } from 'tapbundle'
|
||||||
import * as events from 'events'
|
import * as events from 'events'
|
||||||
import * as rx from 'rxjs/Rx'
|
|
||||||
import * as smartq from 'smartq'
|
import * as smartq from 'smartq'
|
||||||
|
|
||||||
// import the module
|
// import the module
|
||||||
|
@ -1,38 +0,0 @@
|
|||||||
// import test framework
|
|
||||||
import { expect, tap } from 'tapbundle'
|
|
||||||
import * as events from 'events'
|
|
||||||
import * as rx from 'rxjs/Rx'
|
|
||||||
import * as smartq from 'smartq'
|
|
||||||
|
|
||||||
// import the module
|
|
||||||
import * as lik from '../ts/index'
|
|
||||||
|
|
||||||
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()
|
|
@ -1,7 +1,6 @@
|
|||||||
// import test framework
|
// import test framework
|
||||||
import { expect, tap } from 'tapbundle'
|
import { expect, tap } from 'tapbundle'
|
||||||
import * as events from 'events'
|
import * as events from 'events'
|
||||||
import * as rx from 'rxjs/Rx'
|
|
||||||
import * as smartq from 'smartq'
|
import * as smartq from 'smartq'
|
||||||
|
|
||||||
// import the module
|
// import the module
|
||||||
|
@ -4,6 +4,5 @@ import * as plugins from './lik.plugins'
|
|||||||
|
|
||||||
export * from './lik.looptracker'
|
export * from './lik.looptracker'
|
||||||
export * from './lik.objectmap'
|
export * from './lik.objectmap'
|
||||||
export * from './lik.observablemap'
|
|
||||||
export * from './lik.stringmap'
|
export * from './lik.stringmap'
|
||||||
export * from './lik.limitedarray'
|
export * from './lik.limitedarray'
|
||||||
|
@ -1,41 +0,0 @@
|
|||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,15 +1,12 @@
|
|||||||
import 'typings-global'
|
import 'typings-global'
|
||||||
export import q = require('q')
|
import * as smartq from 'smartq'
|
||||||
export import events = require('events')
|
import * as events from 'events'
|
||||||
export import lodash = require('lodash')
|
import * as lodash from 'lodash'
|
||||||
export import minimatch = require('minimatch')
|
import * as minimatch from 'minimatch'
|
||||||
export import rx = require('rxjs/Rx')
|
|
||||||
|
|
||||||
// workaround
|
export {
|
||||||
import {Operator} from 'rxjs/Operator'
|
smartq,
|
||||||
import {Observable} from 'rxjs/Observable'
|
events,
|
||||||
declare module 'rxjs/Subject' {
|
lodash,
|
||||||
interface Subject<T> {
|
minimatch
|
||||||
lift<R>(operator: Operator<T, R>): Observable<R>
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
18
yarn.lock
18
yarn.lock
@ -46,10 +46,6 @@
|
|||||||
version "0.0.27"
|
version "0.0.27"
|
||||||
resolved "https://registry.yarnpkg.com/@types/promises-a-plus/-/promises-a-plus-0.0.27.tgz#c64651134614c84b8f5d7114ce8901d36a609780"
|
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.5"
|
|
||||||
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.0.5.tgz#02b9d43a1a8e7503d15ed2fecb15ebb18c519b1d"
|
|
||||||
|
|
||||||
"@types/shelljs@^0.7.4":
|
"@types/shelljs@^0.7.4":
|
||||||
version "0.7.4"
|
version "0.7.4"
|
||||||
resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.7.4.tgz#137b5f31306eaff4de120ffe5b9d74b297809cfc"
|
resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.7.4.tgz#137b5f31306eaff4de120ffe5b9d74b297809cfc"
|
||||||
@ -294,10 +290,6 @@ pretty-bytes@^4.0.2:
|
|||||||
version "4.0.2"
|
version "4.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
|
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:
|
rechoir@^0.6.2:
|
||||||
version "0.6.2"
|
version "0.6.2"
|
||||||
resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
|
resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
|
||||||
@ -310,12 +302,6 @@ resolve@^1.1.6:
|
|||||||
dependencies:
|
dependencies:
|
||||||
path-parse "^1.0.5"
|
path-parse "^1.0.5"
|
||||||
|
|
||||||
rxjs@^5.4.3:
|
|
||||||
version "5.4.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.4.3.tgz#0758cddee6033d68e0fd53676f0f3596ce3d483f"
|
|
||||||
dependencies:
|
|
||||||
symbol-observable "^1.0.1"
|
|
||||||
|
|
||||||
semver@^5.3.0:
|
semver@^5.3.0:
|
||||||
version "5.4.1"
|
version "5.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
|
||||||
@ -364,10 +350,6 @@ smartshell@^1.0.6:
|
|||||||
typings-global "^1.0.20"
|
typings-global "^1.0.20"
|
||||||
which "^1.3.0"
|
which "^1.3.0"
|
||||||
|
|
||||||
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.1.1:
|
tapbundle@^1.1.1:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/tapbundle/-/tapbundle-1.1.1.tgz#ec4172c0e82a77b1f6133fef2606311ede28a62d"
|
resolved "https://registry.yarnpkg.com/tapbundle/-/tapbundle-1.1.1.tgz#ec4172c0e82a77b1f6133fef2606311ede28a62d"
|
||||||
|
Reference in New Issue
Block a user