From 9f1f006dd93b65599d0c37f1b6204adc40ab3f5f Mon Sep 17 00:00:00 2001 From: Phil Kunz Date: Thu, 26 Oct 2017 22:56:01 +0200 Subject: [PATCH] add observable --- dist/index.d.ts | 3 + dist/index.js | 9 + dist/smartrx.classes.observable.d.ts | 5 + dist/smartrx.classes.observable.js | 9 + dist/smartrx.classes.observablemap.d.ts | 23 ++ dist/smartrx.classes.observablemap.js | 35 +++ dist/smartrx.plugins.d.ts | 5 + dist/smartrx.plugins.js | 10 + npmextra.json | 3 + package.json | 5 +- test/test.observablemap.ts | 38 +++ ts/index.ts | 2 + ts/smartrx.classes.observable.ts | 8 + ts/smartrx.classes.observablemap.ts | 42 +++ ts/smartrx.plugins.ts | 9 + yarn.lock | 363 ++++++++++++++++++++++++ 16 files changed, 568 insertions(+), 1 deletion(-) create mode 100644 dist/index.d.ts create mode 100644 dist/index.js create mode 100644 dist/smartrx.classes.observable.d.ts create mode 100644 dist/smartrx.classes.observable.js create mode 100644 dist/smartrx.classes.observablemap.d.ts create mode 100644 dist/smartrx.classes.observablemap.js create mode 100644 dist/smartrx.plugins.d.ts create mode 100644 dist/smartrx.plugins.js create mode 100644 test/test.observablemap.ts create mode 100644 ts/smartrx.classes.observable.ts create mode 100644 ts/smartrx.classes.observablemap.ts create mode 100644 yarn.lock diff --git a/dist/index.d.ts b/dist/index.d.ts new file mode 100644 index 0000000..5fbf311 --- /dev/null +++ b/dist/index.d.ts @@ -0,0 +1,3 @@ +export declare let standardExport: string; +export * from './smartrx.classes.observablemap'; +export * from './smartrx.classes.observable'; diff --git a/dist/index.js b/dist/index.js new file mode 100644 index 0000000..b57bddc --- /dev/null +++ b/dist/index.js @@ -0,0 +1,9 @@ +"use strict"; +function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; +} +Object.defineProperty(exports, "__esModule", { value: true }); +exports.standardExport = 'Hi there! :) This is a exported string'; +__export(require("./smartrx.classes.observablemap")); +__export(require("./smartrx.classes.observable")); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVXLFFBQUEsY0FBYyxHQUFHLHdDQUF3QyxDQUFBO0FBQ3BFLHFEQUErQztBQUMvQyxrREFBNEMifQ== \ No newline at end of file diff --git a/dist/smartrx.classes.observable.d.ts b/dist/smartrx.classes.observable.d.ts new file mode 100644 index 0000000..de6c76c --- /dev/null +++ b/dist/smartrx.classes.observable.d.ts @@ -0,0 +1,5 @@ +import { Observable as rxjsObservable } from 'rxjs'; +export { rxjsObservable }; +export declare class Observable extends rxjsObservable { + static fromIntake(): void; +} diff --git a/dist/smartrx.classes.observable.js b/dist/smartrx.classes.observable.js new file mode 100644 index 0000000..8b1e448 --- /dev/null +++ b/dist/smartrx.classes.observable.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const rxjs_1 = require("rxjs"); +exports.rxjsObservable = rxjs_1.Observable; +class Observable extends rxjs_1.Observable { + static fromIntake() { } +} +exports.Observable = Observable; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRyeC5jbGFzc2VzLm9ic2VydmFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydHJ4LmNsYXNzZXMub2JzZXJ2YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLCtCQUFtRDtBQUVqRCx5QkFGcUIsaUJBQWMsQ0FFckI7QUFHaEIsZ0JBQTJCLFNBQVEsaUJBQWlCO0lBQ2xELE1BQU0sQ0FBQyxVQUFVLEtBQUssQ0FBQztDQUN4QjtBQUZELGdDQUVDIn0= \ No newline at end of file diff --git a/dist/smartrx.classes.observablemap.d.ts b/dist/smartrx.classes.observablemap.d.ts new file mode 100644 index 0000000..986019f --- /dev/null +++ b/dist/smartrx.classes.observablemap.d.ts @@ -0,0 +1,23 @@ +/// +import * as plugins from './smartrx.plugins'; +import { rxjsObservable } from './smartrx.classes.observable'; +import { Objectmap } from 'lik'; +/** + * bundles an observable with an emitter + */ +export interface ObservableEmitterBundle { + observable: plugins.rxjs.Observable; + 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; + /** + * 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): rxjsObservable; +} diff --git a/dist/smartrx.classes.observablemap.js b/dist/smartrx.classes.observablemap.js new file mode 100644 index 0000000..e1094ba --- /dev/null +++ b/dist/smartrx.classes.observablemap.js @@ -0,0 +1,35 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const plugins = require("./smartrx.plugins"); +const lik_1 = require("lik"); +/** + * manages observables by making sure that only one observable is regsitered per event + */ +class Observablemap { + constructor() { + this.ObservableEmitterBundleObjectmap = new lik_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.rxjs.Observable.fromEvent(emitterArg, eventArg); + this.ObservableEmitterBundleObjectmap.add({ + observable: emitterObservable, + emitter: emitterArg, + event: eventArg + }); + return emitterObservable; + } + } +} +exports.Observablemap = Observablemap; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRyeC5jbGFzc2VzLm9ic2VydmFibGVtYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydHJ4LmNsYXNzZXMub2JzZXJ2YWJsZW1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZDQUE0QztBQUc1Qyw2QkFBK0I7QUFZL0I7O0dBRUc7QUFDSDtJQUFBO1FBQ0UscUNBQWdDLEdBQUcsSUFBSSxlQUFTLEVBQTJCLENBQUE7SUFzQjdFLENBQUM7SUFwQkM7OztPQUdHO0lBQ0gsNEJBQTRCLENBQUUsVUFBdUMsRUFBRSxRQUFnQjtRQUNyRixJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDNUUsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sS0FBSyxVQUFVLElBQUksU0FBUyxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQTtRQUMzRSxDQUFDLENBQUMsQ0FBQTtRQUNGLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUE7UUFDbEMsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sSUFBSSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1lBQy9FLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxHQUFHLENBQUM7Z0JBQ3hDLFVBQVUsRUFBRSxpQkFBaUI7Z0JBQzdCLE9BQU8sRUFBRSxVQUFVO2dCQUNuQixLQUFLLEVBQUUsUUFBUTthQUNoQixDQUFDLENBQUE7WUFDRixNQUFNLENBQUMsaUJBQWlCLENBQUE7UUFDMUIsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXZCRCxzQ0F1QkMifQ== \ No newline at end of file diff --git a/dist/smartrx.plugins.d.ts b/dist/smartrx.plugins.d.ts new file mode 100644 index 0000000..734e9ba --- /dev/null +++ b/dist/smartrx.plugins.d.ts @@ -0,0 +1,5 @@ +import 'typings-global'; +import * as events from 'events'; +import * as lik from 'lik'; +import * as rxjs from 'rxjs'; +export { events, lik, rxjs }; diff --git a/dist/smartrx.plugins.js b/dist/smartrx.plugins.js new file mode 100644 index 0000000..de9f870 --- /dev/null +++ b/dist/smartrx.plugins.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +require("typings-global"); +const events = require("events"); +exports.events = events; +const lik = require("lik"); +exports.lik = lik; +const rxjs = require("rxjs"); +exports.rxjs = rxjs; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRyeC5wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRyeC5wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMEJBQXVCO0FBQ3ZCLGlDQUFnQztBQUs5Qix3QkFBTTtBQUpSLDJCQUEwQjtBQUt4QixrQkFBRztBQUpMLDZCQUE0QjtBQUsxQixvQkFBSSJ9 \ No newline at end of file diff --git a/npmextra.json b/npmextra.json index 654a32a..c78175b 100644 --- a/npmextra.json +++ b/npmextra.json @@ -3,5 +3,8 @@ "npmGlobalTools": [ "npmts" ] + }, + "npmdocker": { + "command": "rm -r node_modules && yarn install && yarn test" } } diff --git a/package.json b/package.json index 69adbeb..ceaf6b8 100644 --- a/package.json +++ b/package.json @@ -9,10 +9,13 @@ "scripts": { "test": "(npmts)" }, - "devDependencies": { + "devDependencies": { "tapbundle": "^1.0.13" }, "dependencies": { + "lik": "^1.0.43", + "rxjs": "^5.5.2", + "smartq": "^1.1.6", "typings-global": "^1.0.16" } } diff --git a/test/test.observablemap.ts b/test/test.observablemap.ts new file mode 100644 index 0000000..dcdd19f --- /dev/null +++ b/test/test.observablemap.ts @@ -0,0 +1,38 @@ +// 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 smartrx from '../ts/index' + +let testObservablemap: smartrx.Observablemap +let testObservable1: rx.Observable +let testObservable2: rx.Observable +let testObservable3: rx.Observable +let testEmitter: events.EventEmitter + +tap.test('should create an instance', async () => { + testObservablemap = new smartrx.Observablemap() + expect(testObservablemap).be.instanceof(smartrx.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() diff --git a/ts/index.ts b/ts/index.ts index aae034c..de0c510 100644 --- a/ts/index.ts +++ b/ts/index.ts @@ -1,3 +1,5 @@ import * as plugins from './smartrx.plugins' export let standardExport = 'Hi there! :) This is a exported string' +export * from './smartrx.classes.observablemap' +export * from './smartrx.classes.observable' diff --git a/ts/smartrx.classes.observable.ts b/ts/smartrx.classes.observable.ts new file mode 100644 index 0000000..15a6519 --- /dev/null +++ b/ts/smartrx.classes.observable.ts @@ -0,0 +1,8 @@ +import { Observable as rxjsObservable } from 'rxjs' +export { + rxjsObservable +} + +export class Observable extends rxjsObservable { + static fromIntake () {} +} diff --git a/ts/smartrx.classes.observablemap.ts b/ts/smartrx.classes.observablemap.ts new file mode 100644 index 0000000..ad934c1 --- /dev/null +++ b/ts/smartrx.classes.observablemap.ts @@ -0,0 +1,42 @@ +import * as plugins from './smartrx.plugins' +import { Observable, rxjsObservable } from './smartrx.classes.observable' + +import { Objectmap } from 'lik' +import { Stringmap } from 'lik' + +/** + * bundles an observable with an emitter + */ +export interface ObservableEmitterBundle { + observable: plugins.rxjs.Observable + 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() + + /** + * 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.rxjs.Observable.fromEvent(emitterArg, eventArg) + this.ObservableEmitterBundleObjectmap.add({ + observable: emitterObservable, + emitter: emitterArg, + event: eventArg + }) + return emitterObservable + } + } +} diff --git a/ts/smartrx.plugins.ts b/ts/smartrx.plugins.ts index 97b63a3..b7ae1bb 100644 --- a/ts/smartrx.plugins.ts +++ b/ts/smartrx.plugins.ts @@ -1 +1,10 @@ import 'typings-global' +import * as events from 'events' +import * as lik from 'lik' +import * as rxjs from 'rxjs' + +export { + events, + lik, + rxjs +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..eef413f --- /dev/null +++ b/yarn.lock @@ -0,0 +1,363 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@types/code@^4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/code/-/code-4.0.3.tgz#9c4de39f86eb3eba070146d2dab7dbc3f8eac35f" + +"@types/glob@*": + version "5.0.33" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-5.0.33.tgz#3dff7c6ce09d65abe919c7961dc3dee016f36ad7" + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/lodash@^4.14.74": + version "4.14.80" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.80.tgz#a6b8b7900e6a7dcbc2e90d9b6dfbe3f6a7f69951" + +"@types/minimatch@*", "@types/minimatch@3.x.x": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.1.tgz#b683eb60be358304ef146f5775db4c0e3696a550" + +"@types/node@*", "@types/node@^8.0.33": + version "8.0.47" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.47.tgz#968e596f91acd59069054558a00708c445ca30c2" + +"@types/shelljs@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.7.5.tgz#5834fb7385d1137bd2be5842f2c278ac36a117f4" + dependencies: + "@types/glob" "*" + "@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" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +beautycolor@^1.0.7: + version "1.0.11" + resolved "https://registry.yarnpkg.com/beautycolor/-/beautycolor-1.0.11.tgz#71c5568d5a7ed5c144d3a54f753ad1b08862aea5" + dependencies: + ansi-256-colors "^1.1.0" + typings-global "^1.0.14" + +bindings@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.0.tgz#b346f6ecf6a95f5a815c5839fc7cdb22502f1ed7" + +brace-expansion@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +code@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/code/-/code-5.1.0.tgz#205e4213536c3cf21b12194384901fadcd81bc1a" + dependencies: + hoek "4.x.x" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +define-properties@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + dependencies: + foreach "^2.0.5" + object-keys "^1.0.8" + +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" + +es-abstract@^1.5.1: + version "1.9.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.9.0.tgz#690829a07cae36b222e7fd9b75c0d0573eb25227" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.1" + has "^1.0.1" + is-callable "^1.1.3" + is-regex "^1.0.4" + +es-to-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + dependencies: + is-callable "^1.1.1" + is-date-object "^1.0.1" + is-symbol "^1.0.1" + +es6-error@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.0.2.tgz#eec5c726eacef51b7f6b73c20db6e1b13b069c98" + +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +function-bind@^1.0.2, function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + +glob@^7.0.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +has@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + dependencies: + function-bind "^1.0.2" + +hoek@4.x.x: + version "4.2.0" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" + +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.4" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.4.tgz#820cdd588b868ffb191a809506d6c9c8f212b1b0" + +is-callable@^1.1.1, is-callable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + dependencies: + has "^1.0.1" + +is-symbol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" + +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" + +lik@^1.0.43: + version "1.0.43" + resolved "https://registry.yarnpkg.com/lik/-/lik-1.0.43.tgz#e81709290fb85ff61dabfa008791ba9ffed0c666" + dependencies: + "@types/lodash" "^4.14.74" + "@types/minimatch" "3.x.x" + lodash "^4.17.4" + minimatch "^3.0.4" + rxjs "^5.4.3" + smartq "^1.1.6" + typings-global "^1.0.20" + +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.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +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.7.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" + +object-keys@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + +object.getownpropertydescriptors@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + +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.5.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" + dependencies: + path-parse "^1.0.5" + +rxjs@^5.4.3, rxjs@^5.5.2: + version "5.5.2" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.2.tgz#28d403f0071121967f18ad665563255d54236ac3" + dependencies: + symbol-observable "^1.0.1" + +semver@^5.3.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" + +shelljs@^0.7.8: + version "0.7.8" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +smartchai@^1.0.3: + version "1.0.8" + resolved "https://registry.yarnpkg.com/smartchai/-/smartchai-1.0.8.tgz#a074836f4ddd4b98c50f1e7ae9e8e8ad9f6f1902" + dependencies: + "@types/code" "^4.0.3" + code "^5.1.0" + typings-global "^1.0.20" + +smartdelay@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/smartdelay/-/smartdelay-1.0.4.tgz#791c1a4ee6770494064c10b1d2d2b8e6f3105b82" + dependencies: + smartq "^1.1.1" + typings-global "^1.0.16" + +smartq@^1.1.1, smartq@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/smartq/-/smartq-1.1.6.tgz#0c1ff4336d95e95b4f1fdd8ccd7e2c5a323b8412" + dependencies: + typings-global "^1.0.19" + util.promisify "^1.0.0" + +smartshell@^1.0.6: + version "1.0.18" + resolved "https://registry.yarnpkg.com/smartshell/-/smartshell-1.0.18.tgz#b84ccc65cedf3a875bf676cec78ee07f4b4aa9e5" + dependencies: + "@types/shelljs" "^0.7.4" + "@types/which" "^1.0.28" + shelljs "^0.7.8" + smartq "^1.1.6" + typings-global "^1.0.20" + 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.0.13: + version "1.1.8" + resolved "https://registry.yarnpkg.com/tapbundle/-/tapbundle-1.1.8.tgz#e08aee0e100a830d8a26a583a85d37ce53312e02" + dependencies: + "@types/node" "^8.0.33" + early "^2.1.1" + leakage "^0.3.0" + smartchai "^1.0.3" + smartdelay "^1.0.3" + smartq "^1.1.1" + typings-global "^1.0.19" + +typings-global@^1.0.14, typings-global@^1.0.16, typings-global@^1.0.19, typings-global@^1.0.20: + version "1.0.20" + resolved "https://registry.yarnpkg.com/typings-global/-/typings-global-1.0.20.tgz#3da769c54db538247c5d877d1d9e97eb2ec981ff" + dependencies: + semver "^5.3.0" + smartshell "^1.0.6" + +util.promisify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +which@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"