From adda1c932a9d99fb4e559a5aaf3cbdbc81cf2987 Mon Sep 17 00:00:00 2001 From: Phil Kunz Date: Mon, 20 Nov 2017 09:26:13 +0100 Subject: [PATCH] add Tree class --- dist/index.d.ts | 1 + dist/index.js | 3 +- dist/lik.plugins.d.ts | 5 +- dist/lik.plugins.js | 8 ++- dist/lik.tree.d.ts | 34 ++++++++++ dist/lik.tree.js | 92 +++++++++++++++++++++++++ package.json | 1 + test/test.objectmap.ts | 4 +- test/test.tree.ts | 24 +++++++ ts/index.ts | 1 + ts/lik.plugins.ts | 8 ++- ts/lik.tree.ts | 116 +++++++++++++++++++++++++++++++ yarn.lock | 150 ++++++++++++----------------------------- 13 files changed, 329 insertions(+), 118 deletions(-) create mode 100644 dist/lik.tree.d.ts create mode 100644 dist/lik.tree.js create mode 100644 test/test.tree.ts create mode 100644 ts/lik.tree.ts diff --git a/dist/index.d.ts b/dist/index.d.ts index ef3dc3b..46cfba8 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -2,3 +2,4 @@ export * from './lik.looptracker'; export * from './lik.objectmap'; export * from './lik.stringmap'; export * from './lik.limitedarray'; +export * from './lik.tree'; diff --git a/dist/index.js b/dist/index.js index 3e7a51d..7068d45 100644 --- a/dist/index.js +++ b/dist/index.js @@ -8,4 +8,5 @@ __export(require("./lik.looptracker")); __export(require("./lik.objectmap")); __export(require("./lik.stringmap")); __export(require("./lik.limitedarray")); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLGlCQUFpQjtBQUVqQix1Q0FBaUM7QUFDakMscUNBQStCO0FBQy9CLHFDQUErQjtBQUMvQix3Q0FBa0MifQ== \ No newline at end of file +__export(require("./lik.tree")); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLGlCQUFpQjtBQUVqQix1Q0FBaUM7QUFDakMscUNBQStCO0FBQy9CLHFDQUErQjtBQUMvQix3Q0FBa0M7QUFDbEMsZ0NBQTBCIn0= \ No newline at end of file diff --git a/dist/lik.plugins.d.ts b/dist/lik.plugins.d.ts index 23e473c..9fa7c51 100644 --- a/dist/lik.plugins.d.ts +++ b/dist/lik.plugins.d.ts @@ -1,6 +1,7 @@ import 'typings-global'; -import * as smartq from 'smartq'; import * as events from 'events'; import * as lodash from 'lodash'; import * as minimatch from 'minimatch'; -export { smartq, events, lodash, minimatch }; +import * as smartq from 'smartq'; +declare const symbolTree: any; +export { events, lodash, minimatch, smartq, symbolTree }; diff --git a/dist/lik.plugins.js b/dist/lik.plugins.js index cd37aa0..27c808a 100644 --- a/dist/lik.plugins.js +++ b/dist/lik.plugins.js @@ -1,12 +1,14 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); require("typings-global"); -const smartq = require("smartq"); -exports.smartq = smartq; const events = require("events"); exports.events = events; const lodash = require("lodash"); exports.lodash = lodash; const minimatch = require("minimatch"); exports.minimatch = minimatch; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlrLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9saWsucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF1QjtBQUN2QixpQ0FBZ0M7QUFNOUIsd0JBQU07QUFMUixpQ0FBZ0M7QUFNOUIsd0JBQU07QUFMUixpQ0FBZ0M7QUFNOUIsd0JBQU07QUFMUix1Q0FBc0M7QUFNcEMsOEJBQVMifQ== \ No newline at end of file +const smartq = require("smartq"); +exports.smartq = smartq; +const symbolTree = require('symbol-tree'); +exports.symbolTree = symbolTree; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlrLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9saWsucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF1QjtBQUN2QixpQ0FBZ0M7QUFPOUIsd0JBQU07QUFOUixpQ0FBZ0M7QUFPOUIsd0JBQU07QUFOUix1Q0FBc0M7QUFPcEMsOEJBQVM7QUFOWCxpQ0FBZ0M7QUFPOUIsd0JBQU07QUFOUixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUE7QUFPdkMsZ0NBQVUifQ== \ No newline at end of file diff --git a/dist/lik.tree.d.ts b/dist/lik.tree.d.ts new file mode 100644 index 0000000..b8e7888 --- /dev/null +++ b/dist/lik.tree.d.ts @@ -0,0 +1,34 @@ +export declare class Tree { + symbolTree: any; + constructor(); + /** + * + * @param objectArg + */ + initialize(objectArg: T): T; + hasChildren(objectArg: T): boolean; + firstChild(objectArg: T): T; + lastChild(objectArg: T): T; + previousSibling(objectArg: T): T; + nextSibling(objectArg: T): T; + parent(objectArg: T): T; + lastInclusiveDescendant(objectArg: T): T; + preceding(objectArg: T, optionsArg?: any): T; + following(object: T, optionsArg: any): any; + childrenToArray(parentArg: T, optionsArg: any): T[]; + ancestorsToArray(objectArg: T, optionsArg: any): T[]; + treeToArray(rootArg: any, optionsArg: any): T[]; + childrenIterator(parentArg: T, optionsArg: any): T; + previousSiblingsIterator(objectArg: any): T; + nextSiblingsIterator(objectArg: T): any; + ancestorsIterator(objectArg: any): void; + treeIterator(rootArg: T, optionsArg: any): T; + index(childArg: T): number; + childrenCount(parentArg: T): number; + compareTreePosition(leftArg: T, rightArg: T): number; + remove(removeObjectArg: T): T; + insertBefore(referenceObjectArg: T, newObjectArg: T): T; + insertAfter(referenceObject: T, newObjectArg: T): any; + prependChild(referenceObjectArg: T, newObjectArg: T): T; + appendChild(referenceObjectArg: any, newObjectArg: any): any; +} diff --git a/dist/lik.tree.js b/dist/lik.tree.js new file mode 100644 index 0000000..178b212 --- /dev/null +++ b/dist/lik.tree.js @@ -0,0 +1,92 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const plugins = require("./lik.plugins"); +class Tree { + constructor() { + this.symbolTree = new plugins.symbolTree(); + } + /** + * + * @param objectArg + */ + initialize(objectArg) { + return this.symbolTree.initialize(objectArg); + } + hasChildren(objectArg) { + return this.symbolTree.hasChildren(objectArg); + } + firstChild(objectArg) { + return this.symbolTree.firstChild(objectArg); + } + lastChild(objectArg) { + return this.symbolTree.lastChild(objectArg); + } + previousSibling(objectArg) { + return this.symbolTree.previousSibling(objectArg); + } + nextSibling(objectArg) { + return this.symbolTree.nextSibling(objectArg); + } + parent(objectArg) { + return this.symbolTree.parent(objectArg); + } + lastInclusiveDescendant(objectArg) { + return this.symbolTree.lastInclusiveDescendant(objectArg); + } + preceding(objectArg, optionsArg) { + return this.symbolTree.preceding(objectArg, optionsArg); + } + following(object, optionsArg) { + return this.symbolTree.following(object, optionsArg); + } + childrenToArray(parentArg, optionsArg) { + return this.symbolTree.childrenToArray(parent, optionsArg); + } + ancestorsToArray(objectArg, optionsArg) { + return this.symbolTree.ancestorsToArray(objectArg, optionsArg); + } + treeToArray(rootArg, optionsArg) { + return this.symbolTree.treeToArray(rootArg, optionsArg); + } + childrenIterator(parentArg, optionsArg) { + return this.symbolTree.childrenIterator(parentArg, optionsArg); + } + previousSiblingsIterator(objectArg) { + return this.symbolTree.previousSiblingsIterator(objectArg); + } + nextSiblingsIterator(objectArg) { + return this.symbolTree.nextSiblingsIterator(); + } + ancestorsIterator(objectArg) { + this.symbolTree.ancestorsIterator(); + } + treeIterator(rootArg, optionsArg) { + return this.symbolTree.treeIterator(rootArg); + } + index(childArg) { + return this.symbolTree.index(childArg); + } + childrenCount(parentArg) { + return this.symbolTree.childrenCount(parentArg); + } + compareTreePosition(leftArg, rightArg) { + return this.compareTreePosition(leftArg, rightArg); + } + remove(removeObjectArg) { + return this.symbolTree.remove(removeObjectArg); + } + insertBefore(referenceObjectArg, newObjectArg) { + return this.symbolTree.insertBefore(referenceObjectArg, newObjectArg); + } + insertAfter(referenceObject, newObjectArg) { + return this.symbolTree.insertAfter(referenceObject, newObjectArg); + } + prependChild(referenceObjectArg, newObjectArg) { + return this.symbolTree.prependChild(referenceObjectArg, newObjectArg); + } + appendChild(referenceObjectArg, newObjectArg) { + return this.symbolTree.appendChild(referenceObjectArg, newObjectArg); + } +} +exports.Tree = Tree; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlrLnRyZWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9saWsudHJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUF3QztBQUV4QztJQUVFO1FBQ0UsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQTtJQUM1QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsVUFBVSxDQUFFLFNBQVk7UUFDdEIsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQzlDLENBQUM7SUFFRCxXQUFXLENBQUUsU0FBWTtRQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDL0MsQ0FBQztJQUVELFVBQVUsQ0FBRSxTQUFZO1FBQ3RCLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0lBRUQsU0FBUyxDQUFFLFNBQVk7UUFDckIsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQzdDLENBQUM7SUFFRCxlQUFlLENBQUUsU0FBWTtRQUMzQixNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDbkQsQ0FBQztJQUVELFdBQVcsQ0FBRSxTQUFZO1FBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0lBRUQsTUFBTSxDQUFFLFNBQVk7UUFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQzFDLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxTQUFZO1FBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQUMs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 \ No newline at end of file diff --git a/package.json b/package.json index 080b022..08b96a3 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "lodash": "^4.17.4", "minimatch": "^3.0.4", "smartq": "^1.1.6", + "symbol-tree": "^3.2.2", "typings-global": "^1.0.20" } } diff --git a/test/test.objectmap.ts b/test/test.objectmap.ts index f267547..e170a72 100644 --- a/test/test.objectmap.ts +++ b/test/test.objectmap.ts @@ -45,7 +45,7 @@ tap.test('lik.Objectmap.remove() -> should correctly remove an object to Objectm tap.test('Objectmap.forEach -> should correctly run a function forEach map object', async () => { testObjectmap.forEach(itemArg => { - expect(itemArg).have.ownProperty('propOne') + expect(itemArg).to.contain('propOne') }) }) @@ -61,7 +61,7 @@ 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) + expect(clonedArray[ clonedArray.length - 1 ]).to.equal(myObject) }) tap.test('should get one object and then remove it', async () => { diff --git a/test/test.tree.ts b/test/test.tree.ts new file mode 100644 index 0000000..7d81c23 --- /dev/null +++ b/test/test.tree.ts @@ -0,0 +1,24 @@ +import { tap, expect } from 'tapbundle' +import * as lik from '../ts/index' + +let testTree = new lik.Tree() + +class TestClass { + constructor (public hey: string) { + // nothing here + } +} +let testInstance = new TestClass('first') + +tap.test('create a valid tree instance', async () => { + testTree = new lik.Tree() + expect(testTree).to.be.instanceOf(lik.Tree) +}) + +tap.test('should insert an object', async () => { + testTree.initialize(testInstance) + let resultArray = testTree.treeToArray(testInstance, {}) + expect(resultArray).to.contain(testInstance) +}) + +tap.start() diff --git a/ts/index.ts b/ts/index.ts index 37d373a..940cfda 100644 --- a/ts/index.ts +++ b/ts/index.ts @@ -6,3 +6,4 @@ export * from './lik.looptracker' export * from './lik.objectmap' export * from './lik.stringmap' export * from './lik.limitedarray' +export * from './lik.tree' diff --git a/ts/lik.plugins.ts b/ts/lik.plugins.ts index 1d1b371..25dbf3a 100644 --- a/ts/lik.plugins.ts +++ b/ts/lik.plugins.ts @@ -1,12 +1,14 @@ import 'typings-global' -import * as smartq from 'smartq' import * as events from 'events' import * as lodash from 'lodash' import * as minimatch from 'minimatch' +import * as smartq from 'smartq' +const symbolTree = require('symbol-tree') export { - smartq, events, lodash, - minimatch + minimatch, + smartq, + symbolTree } diff --git a/ts/lik.tree.ts b/ts/lik.tree.ts new file mode 100644 index 0000000..dcf9008 --- /dev/null +++ b/ts/lik.tree.ts @@ -0,0 +1,116 @@ +import * as plugins from './lik.plugins' + +export class Tree { + symbolTree: any + constructor () { + this.symbolTree = new plugins.symbolTree() + } + + /** + * + * @param objectArg + */ + initialize (objectArg: T): T { + return this.symbolTree.initialize(objectArg) + } + + hasChildren (objectArg: T): boolean { + return this.symbolTree.hasChildren(objectArg) + } + + firstChild (objectArg: T): T { + return this.symbolTree.firstChild(objectArg) + } + + lastChild (objectArg: T): T { + return this.symbolTree.lastChild(objectArg) + } + + previousSibling (objectArg: T): T { + return this.symbolTree.previousSibling(objectArg) + } + + nextSibling (objectArg: T): T { + return this.symbolTree.nextSibling(objectArg) + } + + parent (objectArg: T): T { + return this.symbolTree.parent(objectArg) + } + + lastInclusiveDescendant(objectArg: T): T { + return this.symbolTree.lastInclusiveDescendant(objectArg) + } + + preceding(objectArg: T, optionsArg?: any): T { + return this.symbolTree.preceding(objectArg, optionsArg) + } + + following (object: T, optionsArg: any) { + return this.symbolTree.following(object, optionsArg) + } + + childrenToArray (parentArg: T, optionsArg: any): T[] { + return this.symbolTree.childrenToArray(parent, optionsArg) + } + + ancestorsToArray (objectArg: T, optionsArg: any): T[] { + return this.symbolTree.ancestorsToArray(objectArg, optionsArg) + } + + treeToArray (rootArg, optionsArg: any): T[] { + return this.symbolTree.treeToArray(rootArg, optionsArg) + } + + childrenIterator (parentArg: T, optionsArg): T { + return this.symbolTree.childrenIterator(parentArg, optionsArg) + } + + previousSiblingsIterator (objectArg): T { + return this.symbolTree.previousSiblingsIterator(objectArg) + } + + nextSiblingsIterator (objectArg: T) { + return this.symbolTree.nextSiblingsIterator() + } + + ancestorsIterator (objectArg) { + this.symbolTree.ancestorsIterator() + } + + treeIterator (rootArg: T, optionsArg): T { + return this.symbolTree.treeIterator(rootArg) + } + + index (childArg: T): number { + return this.symbolTree.index(childArg) + } + + childrenCount (parentArg: T): number { + return this.symbolTree.childrenCount(parentArg) + } + + compareTreePosition (leftArg: T, rightArg: T): number { + return this.compareTreePosition(leftArg, rightArg) + } + + remove (removeObjectArg: T): T { + return this.symbolTree.remove(removeObjectArg) + } + + insertBefore (referenceObjectArg: T, newObjectArg: T): T { + return this.symbolTree.insertBefore(referenceObjectArg, newObjectArg) + } + + insertAfter (referenceObject: T, newObjectArg: T) { + return this.symbolTree.insertAfter(referenceObject, newObjectArg) + } + + prependChild (referenceObjectArg: T, newObjectArg: T): T { + return this.symbolTree.prependChild(referenceObjectArg, newObjectArg) + } + + appendChild (referenceObjectArg, newObjectArg) { + return this.symbolTree.appendChild(referenceObjectArg, newObjectArg) + } +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index df42202..0db71c4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,56 +2,21 @@ # 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.31" - resolved "https://registry.yarnpkg.com/@types/chai-string/-/chai-string-1.1.31.tgz#a22f75d713f69da8c5cf34f8bc808a62cd249405" - dependencies: - "@types/chai" "*" - -"@types/chai@*": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.0.4.tgz#fe86315d9a66827feeb16f73bc954688ec950e18" - -"@types/chai@^3.4.35": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-3.5.2.tgz#c11cd2817d3a401b7ba0f5a420f35c56139b1c1e" - -"@types/glob@*": - version "5.0.32" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-5.0.32.tgz#aec5cfe987c72f099fdb1184452986aa506d5e8f" - dependencies: - "@types/minimatch" "*" - "@types/node" "*" +"@types/code@^4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/code/-/code-4.0.3.tgz#9c4de39f86eb3eba070146d2dab7dbc3f8eac35f" "@types/lodash@^4.14.74": - version "4.14.74" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.74.tgz#ac3bd8db988e7f7038e5d22bd76a7ba13f876168" + version "4.14.85" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.85.tgz#a16fbf942422f6eca5622b6910492c496c35069b" -"@types/minimatch@*", "@types/minimatch@3.x.x": +"@types/minimatch@3.x.x": version "3.0.1" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.1.tgz#b683eb60be358304ef146f5775db4c0e3696a550" -"@types/node@*": - version "8.0.29" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.29.tgz#4d6b33df66b15611b40452a581c40d9c94341ba1" - -"@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/shelljs@^0.7.4": - version "0.7.4" - resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.7.4.tgz#137b5f31306eaff4de120ffe5b9d74b297809cfc" - dependencies: - "@types/glob" "*" - "@types/node" "*" +"@types/node@^8.0.33": + version "8.0.53" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.53.tgz#396b35af826fa66aad472c8cb7b8d5e277f4e6d8" "@types/which@^1.0.28": version "1.0.28" @@ -61,10 +26,6 @@ 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@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -87,38 +48,16 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" 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" +code@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/code/-/code-5.1.2.tgz#e3310c2078ca7dc0b49b9c39a8b0a7b06bd75efe" 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" + hoek "5.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" -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" - define-properties@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" @@ -135,8 +74,8 @@ early@^2.1.1: typings-global "^1.0.16" es-abstract@^1.5.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.8.2.tgz#25103263dc4decbda60e0c737ca32313518027ee" + 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" @@ -185,6 +124,10 @@ has@^1.0.1: dependencies: function-bind "^1.0.2" +hoek@5.x.x: + version "5.0.2" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-5.0.2.tgz#d2f2c95d36fe7189cf8aa8c237abc1950eca1378" + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -258,8 +201,8 @@ minimist@^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" + version "2.8.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a" object-keys@^1.0.8: version "1.0.11" @@ -297,8 +240,8 @@ rechoir@^0.6.2: resolve "^1.1.6" resolve@^1.1.6: - version "1.4.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" + version "1.5.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" dependencies: path-parse "^1.0.5" @@ -315,19 +258,16 @@ shelljs@^0.7.8: rechoir "^0.6.2" smartchai@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/smartchai/-/smartchai-1.0.3.tgz#de6d010bb8b5aef24cb70b31a5f5334e8c41b72f" + version "1.0.8" + resolved "https://registry.yarnpkg.com/smartchai/-/smartchai-1.0.8.tgz#a074836f4ddd4b98c50f1e7ae9e8e8ad9f6f1902" 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" + "@types/code" "^4.0.3" + code "^5.1.0" + typings-global "^1.0.20" smartdelay@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/smartdelay/-/smartdelay-1.0.3.tgz#5fd44dad77262d110702f0293efa80c072cfb579" + 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" @@ -340,20 +280,24 @@ smartq@^1.1.1, smartq@^1.1.6: 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" + version "1.0.19" + resolved "https://registry.yarnpkg.com/smartshell/-/smartshell-1.0.19.tgz#459c7a9fab8a25007848ffc711b7a817dd6ffc00" dependencies: - "@types/shelljs" "^0.7.4" "@types/which" "^1.0.28" shelljs "^0.7.8" smartq "^1.1.6" - typings-global "^1.0.20" + typings-global "^1.0.23" which "^1.3.0" +symbol-tree@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" + tapbundle@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/tapbundle/-/tapbundle-1.1.1.tgz#ec4172c0e82a77b1f6133fef2606311ede28a62d" + 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" @@ -361,17 +305,9 @@ tapbundle@^1.1.1: smartq "^1.1.1" typings-global "^1.0.19" -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" - -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" +typings-global@^1.0.14, typings-global@^1.0.16, typings-global@^1.0.19, typings-global@^1.0.20, typings-global@^1.0.23: + version "1.0.23" + resolved "https://registry.yarnpkg.com/typings-global/-/typings-global-1.0.23.tgz#cdd085803049dd07d95b2e1475243c6b2db378ab" dependencies: semver "^5.3.0" smartshell "^1.0.6"