From 2039f1c807c82ca6fcc9fceb2f1ef7603943feeb Mon Sep 17 00:00:00 2001 From: Phil Kunz Date: Sun, 18 Jun 2017 19:52:54 +0200 Subject: [PATCH] update ci --- .gitlab-ci.yml | 47 +- dist/smartdata.classes.db.d.ts | 14 +- dist/smartdata.classes.db.js | 39 +- dist/smartdata.classes.dbcollection.d.ts | 13 +- dist/smartdata.classes.dbcollection.js | 88 +--- dist/smartdata.classes.dbdoc.d.ts | 6 +- dist/smartdata.classes.dbdoc.js | 7 +- dist/smartdata.plugins.d.ts | 5 +- dist/smartdata.plugins.js | 8 +- package.json | 25 +- test/test.d.ts | 1 - test/test.js | 130 ----- test/test.ts | 160 +++---- ts/smartdata.classes.db.ts | 47 +- ts/smartdata.classes.dbcollection.ts | 219 ++++----- ts/smartdata.classes.dbdoc.ts | 10 +- ts/smartdata.plugins.ts | 6 +- tsconfig.json | 5 +- yarn.lock | 579 ++++++++++------------- 19 files changed, 554 insertions(+), 855 deletions(-) delete mode 100644 test/test.d.ts delete mode 100644 test/test.js diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 575384f..e6be27f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,19 +1,22 @@ -image: hosttoday/ht-docker-node:npmts +# gitzone standard +image: hosttoday/ht-docker-node:npmci + +cache: + paths: + - .yarn/ + key: "$CI_BUILD_STAGE" stages: - test - release - -before_script: - - apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927 - - echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-3.2.list - - apt-get update - - apt-get install -y mongodb-org +- trigger +- pages testLEGACY: stage: test script: - npmci test legacy + coverage: /\d+.?\d+?\%\s*coverage/ tags: - docker allow_failure: true @@ -22,6 +25,7 @@ testLTS: stage: test script: - npmci test lts + coverage: /\d+.?\d+?\%\s*coverage/ tags: - docker @@ -29,15 +33,40 @@ testSTABLE: stage: test script: - npmci test stable + coverage: /\d+.?\d+?\%\s*coverage/ tags: - docker release: stage: release - environment: npm_registry script: - npmci publish only: - tags tags: - - docker \ No newline at end of file + - 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 diff --git a/dist/smartdata.classes.db.d.ts b/dist/smartdata.classes.db.d.ts index cb596ac..e28055c 100644 --- a/dist/smartdata.classes.db.d.ts +++ b/dist/smartdata.classes.db.d.ts @@ -1,33 +1,27 @@ -/// import * as plugins from './smartdata.plugins'; import { Objectmap } from 'lik'; import { DbCollection } from './smartdata.classes.dbcollection'; -/** - * interface - indicates the database type - */ -export declare type TDbType = 'mongodb' | 'nedb'; /** * interface - indicates the connection status of the db */ export declare type TConnectionStatus = 'disconnected' | 'connected' | 'failed'; export declare class Db { - dbType: TDbType; dbUrl: string; db: plugins.mongodb.Db; status: TConnectionStatus; collections: Objectmap>; - constructor(dbUrlArg: string, dbTypeArg?: TDbType); + constructor(dbUrlArg: string); /** * connects to the database that was specified during instance creation */ - connect(): plugins.q.Promise; + connect(): Promise; /** * closes the connection to the databse */ - close(): plugins.q.Promise; + close(): Promise; /** * gets a collection by name: string */ - getCollectionByName(nameArg: string): plugins.q.Promise>; + getCollectionByName(nameArg: string): Promise>; addCollection(dbCollectionArg: DbCollection): void; } diff --git a/dist/smartdata.classes.db.js b/dist/smartdata.classes.db.js index d9d53cf..8cc66e2 100644 --- a/dist/smartdata.classes.db.js +++ b/dist/smartdata.classes.db.js @@ -3,9 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); const plugins = require("./smartdata.plugins"); const lik_1 = require("lik"); class Db { - constructor(dbUrlArg, dbTypeArg = 'mongodb') { + constructor(dbUrlArg) { this.collections = new lik_1.Objectmap(); - this.dbType = dbTypeArg; this.dbUrl = dbUrlArg; } // basic connection stuff ---------------------------------------------- @@ -13,31 +12,24 @@ class Db { * connects to the database that was specified during instance creation */ connect() { - let done = plugins.q.defer(); - if (this.dbType === 'mongodb') { - plugins.mongodb.MongoClient.connect(this.dbUrl, (err, db) => { - if (err) { - console.log(err); - } - plugins.assert.equal(null, err); - this.db = db; - plugins.beautylog.success(`connected to database at ${this.dbUrl}`); - done.resolve(this.db); - }); - } - else if (this.dbType === 'nedb') { - this.db = null; - } + let done = plugins.smartq.defer(); + plugins.mongodb.MongoClient.connect(this.dbUrl, (err, db) => { + if (err) { + console.log(err); + } + plugins.assert.equal(null, err); + this.db = db; + plugins.beautylog.success(`connected to database at ${this.dbUrl}`); + done.resolve(this.db); + }); return done.promise; } /** * closes the connection to the databse */ close() { - let done = plugins.q.defer(); - if (this.dbType === 'mongodb') { - this.db.close(); - } + let done = plugins.smartq.defer(); + this.db.close(); plugins.beautylog.ok(`disconnected to database at ${this.dbUrl}`); done.resolve(); return done.promise; @@ -47,7 +39,7 @@ class Db { * gets a collection by name: string */ getCollectionByName(nameArg) { - let done = plugins.q.defer(); + let done = plugins.smartq.defer(); let resultCollection = this.collections.find((dbCollectionArg) => { return dbCollectionArg.name === nameArg; }); @@ -56,10 +48,9 @@ class Db { } return done.promise; } - ; addCollection(dbCollectionArg) { this.collections.add(dbCollectionArg); } } exports.Db = Db; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRkYXRhLmNsYXNzZXMuZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGRhdGEuY2xhc3Nlcy5kYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLCtDQUE4QztBQUM5Qyw2QkFBK0I7QUFjL0I7SUFPRSxZQUFZLFFBQWdCLEVBQUUsWUFBcUIsU0FBUztRQUY1RCxnQkFBVyxHQUFHLElBQUksZUFBUyxFQUFxQixDQUFBO1FBRzlDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFBO0lBQ3ZCLENBQUM7SUFFRCx3RUFBd0U7SUFFeEU7O09BRUc7SUFDSCxPQUFPO1FBQ0wsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUM1QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDdEQsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUFDLENBQUM7Z0JBQzdCLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQTtnQkFDL0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUE7Z0JBQ1osT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsNEJBQTRCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO2dCQUNuRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUN2QixDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLENBQUM7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUM1QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUNqQixDQUFDO1FBQ0QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsK0JBQStCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQ2pFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3JCLENBQUM7SUFFRCw0RUFBNEU7SUFFNUU7O09BRUc7SUFDSCxtQkFBbUIsQ0FBSSxPQUFlO1FBQ3BDLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFxQixDQUFBO1FBQy9DLElBQUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxlQUFlO1lBQzNELE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQTtRQUN6QyxDQUFDLENBQUMsQ0FBQTtRQUNGLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBQ2hDLENBQUM7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUNyQixDQUFDO0lBQUEsQ0FBQztJQUVGLGFBQWEsQ0FBQyxlQUFrQztRQUM5QyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0NBRUY7QUFsRUQsZ0JBa0VDIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRkYXRhLmNsYXNzZXMuZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGRhdGEuY2xhc3Nlcy5kYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLCtDQUE4QztBQUM5Qyw2QkFBK0I7QUFTL0I7SUFNRSxZQUFhLFFBQWdCO1FBRjdCLGdCQUFXLEdBQUcsSUFBSSxlQUFTLEVBQXFCLENBQUE7UUFHOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUE7SUFDdkIsQ0FBQztJQUVELHdFQUF3RTtJQUV4RTs7T0FFRztJQUNILE9BQU87UUFDTCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ2pDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDdEQsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQUMsQ0FBQztZQUM3QixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUE7WUFDL0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUE7WUFDWixPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUE7WUFDbkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDdkIsQ0FBQyxDQUFDLENBQUE7UUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUNqQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ2YsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsK0JBQStCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQ2pFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3JCLENBQUM7SUFFRCw0RUFBNEU7SUFFNUU7O09BRUc7SUFDSCxtQkFBbUIsQ0FBSSxPQUFlO1FBQ3BDLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFxQixDQUFBO1FBQ3BELElBQUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxlQUFlO1lBQzNELE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQTtRQUN6QyxDQUFDLENBQUMsQ0FBQTtRQUNGLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBQ2hDLENBQUM7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUNyQixDQUFDO0lBRUQsYUFBYSxDQUFFLGVBQWtDO1FBQy9DLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7Q0FFRjtBQTFERCxnQkEwREMifQ== \ No newline at end of file diff --git a/dist/smartdata.classes.dbcollection.d.ts b/dist/smartdata.classes.dbcollection.d.ts index 5cfb383..c018b5d 100644 --- a/dist/smartdata.classes.dbcollection.d.ts +++ b/dist/smartdata.classes.dbcollection.d.ts @@ -1,6 +1,6 @@ -/// import * as plugins from './smartdata.plugins'; import { Db } from './smartdata.classes.db'; +import { DbDoc } from './smartdata.classes.dbDoc'; export interface IFindOptions { limit?: number; } @@ -14,10 +14,11 @@ export declare class DbCollection { * can be nedb datastore (sub api of mongodb) */ collection: plugins.mongodb.Collection; + collectedClass: T & DbDoc; + objectValidation: IDocValidation; name: string; db: Db; - objectValidation: IDocValidation; - constructor(nameArg: string, dbArg: Db); + constructor(collectedClassArg: T & DbDoc, dbArg: Db); /** * adds a validation function that all newly inserted and updated objects have to pass */ @@ -25,15 +26,15 @@ export declare class DbCollection { /** * finds an object in the DbCollection */ - find(docMatchArg: T | any, optionsArg?: IFindOptions): plugins.q.Promise; + find(docMatchArg: T | any, optionsArg?: IFindOptions): Promise; /** * inserts object into the DbCollection */ - insertOne(docArg: T): plugins.q.Promise; + insertOne(docArg: T): Promise; /** * inserts many objects at once into the DbCollection */ - insertMany(docArrayArg: T[]): plugins.q.Promise; + insertMany(docArrayArg: T[]): Promise; /** * checks a Doc for constraints */ diff --git a/dist/smartdata.classes.dbcollection.js b/dist/smartdata.classes.dbcollection.js index 139d990..3a65601 100644 --- a/dist/smartdata.classes.dbcollection.js +++ b/dist/smartdata.classes.dbcollection.js @@ -8,18 +8,14 @@ function Collection(db) { } exports.Collection = Collection; class DbCollection { - constructor(nameArg, dbArg) { + constructor(collectedClassArg, dbArg) { this.objectValidation = null; // tell the collection where it belongs - this.name = nameArg; + this.collectedClass = collectedClassArg; + this.name = collectedClassArg.name; this.db = dbArg; // make sure it actually exists - if (this.db.dbType === 'mongodb') { - this.collection = dbArg.db.collection(nameArg); - } - else { - this.collection = new plugins.nedb(); - } + this.collection = dbArg.db.collection(this.name); // tell the db class about it (important since Db uses different systems under the hood) this.db.addCollection(this); } @@ -33,52 +29,30 @@ class DbCollection { * finds an object in the DbCollection */ find(docMatchArg, optionsArg) { - let done = plugins.q.defer(); - if (this.db.dbType === 'mongodb') { - let findCursor = this.collection.find(docMatchArg); - if (optionsArg) { - if (optionsArg.limit) { - findCursor = findCursor.limit(1); - } + let done = plugins.smartq.defer(); + let findCursor = this.collection.find(docMatchArg); + if (optionsArg) { + if (optionsArg.limit) { + findCursor = findCursor.limit(1); } - findCursor.toArray((err, docs) => { - if (err) { - done.reject(err); - throw err; - } - done.resolve(docs); - }); - } - else if (this.db.dbType === 'nedb') { - this.collection.find(docMatchArg, (err, docs) => { - if (err) { - done.reject(err); - throw err; - } - done.resolve(docs); - }); } + findCursor.toArray((err, docs) => { + if (err) { + done.reject(err); + throw err; + } + done.resolve(docs); + }); return done.promise; } /** * inserts object into the DbCollection */ insertOne(docArg) { - let done = plugins.q.defer(); + let done = plugins.smartq.defer(); this.checkDoc(docArg).then(() => { - if (this.db.dbType === 'mongodb') { - this.collection.insertOne(docArg) - .then(() => { done.resolve(); }); - } - else if (this.db.dbType === 'nedb') { - this.collection.insert(docArg, (err, newDoc) => { - if (err) { - done.reject(err); - throw err; - } - done.resolve(); - }); - } + this.collection.insertOne(docArg) + .then(() => { done.resolve(); }); }, () => { done.reject(new Error('one the docs did not pass validation')); }); @@ -88,26 +62,14 @@ class DbCollection { * inserts many objects at once into the DbCollection */ insertMany(docArrayArg) { - let done = plugins.q.defer(); + let done = plugins.smartq.defer(); let checkDocPromiseArray = []; for (let docArg of docArrayArg) { checkDocPromiseArray.push(this.checkDoc(docArg)); } - plugins.q.all(checkDocPromiseArray).then(() => { - if (this.db.dbType === 'mongodb') { - this.collection.insertMany(docArrayArg) - .then(() => { done.resolve(); }); - } - else if (this.db.dbType === 'nedb') { - let paramArray = plugins.lodash.concat(docArrayArg, (err, newDoc) => { - if (err) { - done.reject(err); - throw err; - } - done.resolve(); - }); - this.collection.insert.apply(null, paramArray); - } + Promise.all(checkDocPromiseArray).then(() => { + this.collection.insertMany(docArrayArg) + .then(() => { done.resolve(); }); }); return done.promise; } @@ -115,7 +77,7 @@ class DbCollection { * checks a Doc for constraints */ checkDoc(docArg) { - let done = plugins.q.defer(); + let done = plugins.smartq.defer(); let validationResult = true; if (this.objectValidation) { validationResult = this.objectValidation(docArg); @@ -130,4 +92,4 @@ class DbCollection { } } exports.DbCollection = DbCollection; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRkYXRhLmNsYXNzZXMuZGJjb2xsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRkYXRhLmNsYXNzZXMuZGJjb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0NBQThDO0FBVzlDLG9CQUEyQixFQUFNO0lBQzdCLE1BQU0sQ0FBQyxVQUFVLFdBQVc7UUFDeEIsV0FBVyxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDeEUsQ0FBQyxDQUFBO0FBQ0wsQ0FBQztBQUpELGdDQUlDO0FBRUQ7SUFXSSxZQUFZLE9BQWUsRUFBRSxLQUFTO1FBSHRDLHFCQUFnQixHQUFzQixJQUFJLENBQUE7UUFJdEMsdUNBQXVDO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFBO1FBQ25CLElBQUksQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFBO1FBRWYsK0JBQStCO1FBQy9CLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNsRCxDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDSixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ3hDLENBQUM7UUFFRCx3RkFBd0Y7UUFDeEYsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCLENBQUMsT0FBMEI7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQTtJQUNuQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLENB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 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRkYXRhLmNsYXNzZXMuZGJjb2xsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRkYXRhLmNsYXNzZXMuZGJjb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0NBQThDO0FBWTlDLG9CQUE0QixFQUFNO0lBQ2hDLE1BQU0sQ0FBQyxVQUFVLFdBQVc7UUFDMUIsV0FBVyxDQUFFLGNBQWMsQ0FBRSxHQUFHLElBQUksWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDeEUsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUpELGdDQUlDO0FBRUQ7SUFXRSxZQUFhLGlCQUErQixFQUFFLEtBQVM7UUFKdkQscUJBQWdCLEdBQXNCLElBQUksQ0FBQTtRQUt4Qyx1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQTtRQUN2QyxJQUFJLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQTtRQUNsQyxJQUFJLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQTtRQUVmLCtCQUErQjtRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUVoRCx3RkFBd0Y7UUFDeEYsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCLENBQUUsT0FBMEI7UUFDMUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQTtJQUNqQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLENBQUUsV0FBb0IsRUFBRSxVQUF5QjtRQUNuRCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBTyxDQUFBO1FBQ3RDLElBQUksVUFBVSxHQUFHLElBQUksQ0FB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 \ No newline at end of file diff --git a/dist/smartdata.classes.dbdoc.d.ts b/dist/smartdata.classes.dbdoc.d.ts index c3305a9..41191ce 100644 --- a/dist/smartdata.classes.dbdoc.d.ts +++ b/dist/smartdata.classes.dbdoc.d.ts @@ -18,10 +18,14 @@ export declare class DbDoc { * an array of saveable properties of a doc */ saveableProperties: string[]; + /** + * name + */ + name: string; /** * class constructor */ - constructor(); + constructor(nameArg: string); /** * saves this instance but not any connected items * may lead to data inconsistencies, but is faster diff --git a/dist/smartdata.classes.dbdoc.js b/dist/smartdata.classes.dbdoc.js index 17dd368..1148424 100644 --- a/dist/smartdata.classes.dbdoc.js +++ b/dist/smartdata.classes.dbdoc.js @@ -18,15 +18,16 @@ class DbDoc { /** * class constructor */ - constructor() { + constructor(nameArg) { this.collection = this.constructor['dbCollection']; + this.name = nameArg; } /** * saves this instance but not any connected items * may lead to data inconsistencies, but is faster */ save() { - let saveableObject = {}; // isn not exposed to outside, so any is ok here + let saveableObject = {}; // is not exposed to outside, so any is ok here for (let propertyNameString of this.saveableProperties) { saveableObject[propertyNameString] = this[propertyNameString]; } @@ -57,4 +58,4 @@ class DbDoc { } } exports.DbDoc = DbDoc; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRkYXRhLmNsYXNzZXMuZGJkb2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGRhdGEuY2xhc3Nlcy5kYmRvYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLDZCQUErQjtBQU8vQjs7R0FFRztBQUNIO0lBQ0UsTUFBTSxDQUFDLENBQUMsTUFBa0IsRUFBRSxHQUFXO1FBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDekIsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1lBQUMsTUFBTSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQTtRQUFDLENBQUM7UUFDbEUsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNyQyxDQUFDLENBQUE7QUFDSCxDQUFDO0FBTkQsb0JBTUM7QUFFRDtJQWlCRTs7T0FFRztJQUNIO1FBQ0UsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFFLGNBQWMsQ0FBRSxDQUFBO0lBQ3RELENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJO1FBQ0YsSUFBSSxjQUFjLEdBQVEsRUFBRSxDQUFBLENBQUMsZ0RBQWdEO1FBQzdFLEdBQUcsQ0FBQyxDQUFDLElBQUksa0JBQWtCLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztZQUN2RCxjQUFjLENBQUUsa0JBQWtCLENBQUUsR0FBRyxJQUFJLENBQUUsa0JBQWtCLENBQUUsQ0FBQTtRQUNuRSxDQUFDO1FBQ0QsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDMUIsS0FBSyxJQUFJO2dCQUNQLElBQUksQ0FBQyxVQUFVLENBQUEsQ0FBQyxxQ0FBcUM7Z0JBQ3JELEtBQUssQ0FBQTtZQUNQLEtBQUssS0FBSztnQkFDUixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxjQUFxQyxJQUFJO1FBQ2hELEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNqQixXQUFXLEdBQUcsSUFBSSxlQUFTLEVBQWMsQ0FBQTtRQUMzQyxDQUFDO1FBQ0QsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDWCxHQUFHLENBQUMsQ0FBQyxJQUFJLFdBQVcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzdCLElBQUksUUFBUSxHQUFHLElBQUksQ0FBRSxXQUFXLENBQUUsQ0FBQTtZQUNsQyxFQUFFLENBQUMsQ0FBQyxRQUFRLFlBQVksS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZFLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUE7WUFDaEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUEzREQsc0JBMkRDIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRkYXRhLmNsYXNzZXMuZGJEb2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGRhdGEuY2xhc3Nlcy5kYkRvYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLDZCQUErQjtBQU8vQjs7R0FFRztBQUNIO0lBQ0UsTUFBTSxDQUFDLENBQUMsTUFBa0IsRUFBRSxHQUFXO1FBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDekIsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1lBQUMsTUFBTSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQTtRQUFDLENBQUM7UUFDbEUsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNyQyxDQUFDLENBQUE7QUFDSCxDQUFDO0FBTkQsb0JBTUM7QUFFRDtJQXNCRTs7T0FFRztJQUNILFlBQVksT0FBZTtRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUUsY0FBYyxDQUFFLENBQUE7UUFDcEQsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUE7SUFDckIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUk7UUFDRixJQUFJLGNBQWMsR0FBUSxFQUFFLENBQUEsQ0FBQywrQ0FBK0M7UUFDNUUsR0FBRyxDQUFDLENBQUMsSUFBSSxrQkFBa0IsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELGNBQWMsQ0FBRSxrQkFBa0IsQ0FBRSxHQUFHLElBQUksQ0FBRSxrQkFBa0IsQ0FBRSxDQUFBO1FBQ25FLENBQUM7UUFDRCxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUMxQixLQUFLLElBQUk7Z0JBQ1AsSUFBSSxDQUFDLFVBQVUsQ0FBQSxDQUFDLHFDQUFxQztnQkFDckQsS0FBSyxDQUFBO1lBQ1AsS0FBSyxLQUFLO2dCQUNSLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxDQUFDLGNBQXFDLElBQUk7UUFDaEQsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLFdBQVcsR0FBRyxJQUFJLGVBQVMsRUFBYyxDQUFBO1FBQzNDLENBQUM7UUFDRCxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNYLEdBQUcsQ0FBQyxDQUFDLElBQUksV0FBVyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDN0IsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFFLFdBQVcsQ0FBRSxDQUFBO1lBQ2xDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsWUFBWSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQTtZQUNoQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRjtBQWpFRCxzQkFpRUMifQ== \ No newline at end of file diff --git a/dist/smartdata.plugins.d.ts b/dist/smartdata.plugins.d.ts index fdb52e7..f232ef8 100644 --- a/dist/smartdata.plugins.d.ts +++ b/dist/smartdata.plugins.d.ts @@ -3,6 +3,5 @@ import * as assert from 'assert'; import * as beautylog from 'beautylog'; import * as lodash from 'lodash'; import * as mongodb from 'mongodb'; -import * as q from 'q'; -declare let nedb: any; -export { assert, beautylog, lodash, mongodb, q, nedb }; +import * as smartq from 'smartq'; +export { assert, beautylog, lodash, mongodb, smartq }; diff --git a/dist/smartdata.plugins.js b/dist/smartdata.plugins.js index 7cf5728..f62c96a 100644 --- a/dist/smartdata.plugins.js +++ b/dist/smartdata.plugins.js @@ -9,8 +9,6 @@ const lodash = require("lodash"); exports.lodash = lodash; const mongodb = require("mongodb"); exports.mongodb = mongodb; -const q = require("q"); -exports.q = q; -let nedb = require('nedb'); -exports.nedb = nedb; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRkYXRhLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGRhdGEucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF1QjtBQUN2QixpQ0FBZ0M7QUFRNUIsd0JBQU07QUFQVix1Q0FBc0M7QUFRbEMsOEJBQVM7QUFQYixpQ0FBZ0M7QUFRNUIsd0JBQU07QUFQVixtQ0FBa0M7QUFROUIsMEJBQU87QUFQWCx1QkFBc0I7QUFRbEIsY0FBQztBQVBMLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQVF0QixvQkFBSSJ9 \ No newline at end of file +const smartq = require("smartq"); +exports.smartq = smartq; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRkYXRhLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGRhdGEucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF1QjtBQUN2QixpQ0FBZ0M7QUFPNUIsd0JBQU07QUFOVix1Q0FBc0M7QUFPbEMsOEJBQVM7QUFOYixpQ0FBZ0M7QUFPNUIsd0JBQU07QUFOVixtQ0FBa0M7QUFPOUIsMEJBQU87QUFOWCxpQ0FBZ0M7QUFPNUIsd0JBQU0ifQ== \ No newline at end of file diff --git a/package.json b/package.json index f315b21..faaf854 100644 --- a/package.json +++ b/package.json @@ -20,25 +20,20 @@ }, "homepage": "https://gitlab.com/pushrocks/smartdata#README", "dependencies": { - "@types/lodash": "^4.14.53", - "@types/mongodb": "^2.1.41", - "@types/nedb": "0.0.31", - "@types/q": "0.0.32", - "beautylog": "^6.1.1", - "lik": "^1.0.27", + "@types/lodash": "^4.14.66", + "@types/mongodb": "^2.2.6", + "beautylog": "^6.1.10", + "lik": "^1.0.32", "lodash": "^4.17.4", - "mongodb": "^2.2.24", - "nedb": "^1.8.0", - "q": "^1.4.1", + "mongodb": "^2.2.28", "runtime-type-checks": "0.0.4", - "typings-global": "^1.0.14" + "smartq": "^1.1.1", + "typings-global": "^1.0.17" }, "devDependencies": { - "@types/shelljs": "^0.7.0", - "@types/should": "^8.1.30", - "shelljs": "^0.7.6", - "should": "^11.2.0", + "@types/shelljs": "^0.7.2", + "shelljs": "^0.7.8", "smartstring": "^2.0.24", - "typings-test": "^1.0.3" + "tapbundle": "^1.0.14" } } diff --git a/test/test.d.ts b/test/test.d.ts deleted file mode 100644 index 2fd432a..0000000 --- a/test/test.d.ts +++ /dev/null @@ -1 +0,0 @@ -import 'typings-test'; diff --git a/test/test.js b/test/test.js deleted file mode 100644 index e4b9345..0000000 --- a/test/test.js +++ /dev/null @@ -1,130 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -require("typings-test"); -const shelljs = require("shelljs"); -const should = require("should"); -const smartstring = require("smartstring"); -// the tested module -const smartdata = require("../dist/index"); -let mongoChildProcess; -let testDb; -let testDbCollection; -describe('mongodb', function () { - it('should start mongodb', function (done) { - this.timeout(30000); - mongoChildProcess = shelljs.exec('mongod --dbpath=./test/data --port 27017', { async: true, silent: true }); - let doneCalled = false; - mongoChildProcess.stdout.on('data', function (data) { - console.log(smartstring.indent.indentWithPrefix(data, '*** MongoDB Process *** : ')); - if (!doneCalled) { - if (/waiting for connections on port 27017/.test(data)) { - doneCalled = true; - done(); - } - } - }); - }); -}); -describe('smartdata', function () { - it('should establish a connection to mongodb', function (done) { - testDb = new smartdata.Db('mongodb://localhost:27017/smartdata'); - testDb.connect().then(() => { done(); }); - }); - it('should create a collection', function () { - testDbCollection = new smartdata.DbCollection('something', testDb); - }); - it('should insert a doc into the collection', function (done) { - testDbCollection.insertOne({ value1: 'test' }).then(() => { done(); }); - }); - it('should find all docs of testDbCollection', function (done) { - testDbCollection.find({}).then((resultArray) => { - console.log(resultArray); - should(resultArray[0].value1).equal('test'); - done(); - }); - }); - it('should insert many docs into the collection', function (done) { - testDbCollection.insertMany([ - { value1: 'test2' }, - { value1: 'test', value2: 3, value3: 'hi' } - ]).then(() => { done(); }); - }); - it('should find a specified doc', function (done) { - testDbCollection.find({ 'value3': { '$exists': true } }).then((resultArray) => { - console.log(resultArray); - should(resultArray[0].value3).equal('hi'); - done(); - }).catch(console.log); - }); - it('should close the db Connection', function () { - testDb.close(); - }); - it('should create an extended class', function () { - let TestCar = class TestCar extends smartdata.DbDoc { - constructor(optionsArg) { - super(); - this.color = optionsArg.color; - } - }; - __decorate([ - smartdata.svDb(), - __metadata("design:type", String) - ], TestCar.prototype, "color", void 0); - TestCar = __decorate([ - smartdata.Collection(testDb), - __metadata("design:paramtypes", [Object]) - ], TestCar); - ; - let testCarInstance = new TestCar({ - color: 'red', - property2: 2 - }); - should(testCarInstance.saveableProperties[0]).equal('color'); - console.log(TestCar); - should(testCarInstance.collection).be.instanceof(smartdata.DbCollection); - should(testCarInstance).be.instanceof(smartdata.DbDoc); - testCarInstance.save(); - it('should get a collection for testCar', function () { - }); - }); -}); -describe('mongodb', function () { - it('should kill mongodb', function (done) { - this.timeout(30000); - mongoChildProcess.stdout.on('data', function (data) { - if (/dbexit: rc: 0/.test(data)) { - done(); - } - }); - shelljs.exec('mongod --dbpath=./test/data --shutdown'); - mongoChildProcess.kill('SIGTERM'); - }); -}); -describe('smartdata with nedb', function () { - let testDb; - let testCollection; - it('should create a DB with nedb', function () { - testDb = new smartdata.Db('any', 'nedb'); - testDb.connect(); - testCollection = new smartdata.DbCollection('anyName', testDb); - }); - it('should insert a doc', function (done) { - testCollection.insertOne({ value1: 'hi' }).then(() => { done(); }); - }); - it('should find the inserted document', function (done) { - testCollection.find({ value1: 'hi' }).then(x => { - console.log(x); - done(); - }); - }); -}); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSx3QkFBcUI7QUFFckIsbUNBQWtDO0FBQ2xDLGlDQUFnQztBQUNoQywyQ0FBMEM7QUFFMUMsb0JBQW9CO0FBQ3BCLDJDQUEwQztBQUUxQyxJQUFJLGlCQUFpQixDQUFBO0FBQ3JCLElBQUksTUFBb0IsQ0FBQTtBQVF4QixJQUFJLGdCQUFzRCxDQUFBO0FBRTFELFFBQVEsQ0FBQyxTQUFTLEVBQUU7SUFDbEIsRUFBRSxDQUFDLHNCQUFzQixFQUFFLFVBQVUsSUFBSTtRQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ25CLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsMENBQTBDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQzNHLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQTtRQUN0QixpQkFBaUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFVLElBQUk7WUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSw0QkFBNEIsQ0FBQyxDQUFDLENBQUE7WUFDcEYsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUNoQixFQUFFLENBQUMsQ0FBQyx1Q0FBdUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN2RCxVQUFVLEdBQUcsSUFBSSxDQUFBO29CQUNqQixJQUFJLEVBQUUsQ0FBQTtnQkFDUixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQTtBQUVGLFFBQVEsQ0FBQyxXQUFX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 \ No newline at end of file diff --git a/test/test.ts b/test/test.ts index 3c3ed83..5dc8d37 100644 --- a/test/test.ts +++ b/test/test.ts @@ -1,8 +1,5 @@ -import 'typings-test' - -import * as shelljs from 'shelljs' -import * as should from 'should' -import * as smartstring from 'smartstring' +import { tap, expect } from 'tapbundle' +import * as smartq from 'smartq' // the tested module import * as smartdata from '../dist/index' @@ -18,116 +15,67 @@ interface ITestObject1 { let testDbCollection: smartdata.DbCollection -describe('mongodb', function () { - it('should start mongodb', function (done) { - this.timeout(30000) - mongoChildProcess = shelljs.exec('mongod --dbpath=./test/data --port 27017', { async: true, silent: true }) - let doneCalled = false - mongoChildProcess.stdout.on('data', function (data) { - console.log(smartstring.indent.indentWithPrefix(data, '*** MongoDB Process *** : ')) - if (!doneCalled) { - if (/waiting for connections on port 27017/.test(data)) { - doneCalled = true - done() - } - } - }) +tap.test('should establish a connection to mongodb', async () => { + testDb = new smartdata.Db('mongodb://localhost:27017/smartdata') + await testDb.connect() +}) + +tap.test('should insert a doc into the collection', async () => { + await testDbCollection.insertOne({ value1: 'test' }) +}) + +tap.test('should find all docs of testDbCollection', async () => { + await testDbCollection.find({}).then(async (resultArray) => { + console.log(resultArray) + expect(resultArray[ 0 ].value1).equal('test') }) }) -describe('smartdata', function () { - it('should establish a connection to mongodb', function (done) { - testDb = new smartdata.Db('mongodb://localhost:27017/smartdata') - testDb.connect().then(() => { done() }) - }) - it('should create a collection', function () { - testDbCollection = new smartdata.DbCollection('something', testDb) - }) - it('should insert a doc into the collection', function (done) { - testDbCollection.insertOne({ value1: 'test' }).then(() => { done() }) - }) - it('should find all docs of testDbCollection', function (done) { - testDbCollection.find({}).then((resultArray) => { - console.log(resultArray) - should(resultArray[ 0 ].value1).equal('test') - done() - }) - }) - it('should insert many docs into the collection', function (done) { - testDbCollection.insertMany([ - { value1: 'test2' }, - { value1: 'test', value2: 3, value3: 'hi' } - ]).then(() => { done() }) - }) - it('should find a specified doc', function (done) { - testDbCollection.find({ 'value3': { '$exists': true } }).then((resultArray) => { - console.log(resultArray) - should(resultArray[ 0 ].value3).equal('hi') - done() - }).catch(console.log) - }) - it('should close the db Connection', function () { - testDb.close() - }) - it('should create an extended class', function () { - @smartdata.Collection(testDb) - class TestCar extends smartdata.DbDoc { - @smartdata.svDb() - color: string - constructor(optionsArg: { - color: string, - property2: number - }) { - super() - this.color = optionsArg.color - } - }; - let testCarInstance = new TestCar({ - color: 'red', - property2: 2 - }) +tap.test('should insert many docs into the collection', async () => { + await testDbCollection.insertMany([ + { value1: 'test2' }, + { value1: 'test', value2: 3, value3: 'hi' } + ]) +}) - should(testCarInstance.saveableProperties[ 0 ]).equal('color') - console.log(TestCar) - should(testCarInstance.collection).be.instanceof(smartdata.DbCollection) - should(testCarInstance).be.instanceof(smartdata.DbDoc) - testCarInstance.save() - it('should get a collection for testCar', function () { - - }) +tap.test('should find a specified doc', async () => { + await testDbCollection.find({ 'value3': { '$exists': true } }).then((resultArray) => { + console.log(resultArray) + expect(resultArray[ 0 ].value3).equal('hi') }) }) -describe('mongodb', function () { - it('should kill mongodb', function (done) { - this.timeout(30000) - mongoChildProcess.stdout.on('data', function (data) { - if (/dbexit: rc: 0/.test(data)) { - done() - } - }) - shelljs.exec('mongod --dbpath=./test/data --shutdown') - mongoChildProcess.kill('SIGTERM') - }) +tap.test('should close the db Connection', async () => { + testDb.close() }) -describe('smartdata with nedb', function () { - let testDb: smartdata.Db - let testCollection: smartdata.DbCollection - it('should create a DB with nedb', function () { - testDb = new smartdata.Db('any', 'nedb') - testDb.connect() - testCollection = new smartdata.DbCollection('anyName', testDb) +tap.test('should create an extended class', async () => { + @smartdata.Collection(testDb) + class TestCar extends smartdata.DbDoc { + @smartdata.svDb() + color: string + constructor (optionsArg: { + color: string, + property2: number + }) { + super('TestCar') + this.color = optionsArg.color + } + } + let testCarInstance = new TestCar({ + color: 'red', + property2: 2 }) - it('should insert a doc', function (done) { - testCollection.insertOne({ value1: 'hi' }).then(() => { done() }) - }) - - it('should find the inserted document', function (done) { - testCollection.find({ value1: 'hi' }).then(x => { - console.log(x) - done() - }) - }) + expect(testCarInstance.saveableProperties[ 0 ]).equal('color') + console.log(TestCar) + expect(testCarInstance.collection).be.instanceof(smartdata.DbCollection) + expect(testCarInstance).be.instanceof(smartdata.DbDoc) + testCarInstance.save() }) + +tap.test('should get a collection for testCar', async () => { + // +}) + +tap.start() diff --git a/ts/smartdata.classes.db.ts b/ts/smartdata.classes.db.ts index 3f71241..07e734a 100644 --- a/ts/smartdata.classes.db.ts +++ b/ts/smartdata.classes.db.ts @@ -3,25 +3,18 @@ import { Objectmap } from 'lik' import { DbCollection } from './smartdata.classes.dbcollection' -/** - * interface - indicates the database type - */ -export type TDbType = 'mongodb' | 'nedb' - /** * interface - indicates the connection status of the db */ export type TConnectionStatus = 'disconnected' | 'connected' | 'failed' export class Db { - dbType: TDbType dbUrl: string db: plugins.mongodb.Db status: TConnectionStatus collections = new Objectmap>() - constructor(dbUrlArg: string, dbTypeArg: TDbType = 'mongodb') { - this.dbType = dbTypeArg + constructor (dbUrlArg: string) { this.dbUrl = dbUrlArg } @@ -30,30 +23,24 @@ export class Db { /** * connects to the database that was specified during instance creation */ - connect(): plugins.q.Promise { - let done = plugins.q.defer() - if (this.dbType === 'mongodb') { - plugins.mongodb.MongoClient.connect(this.dbUrl, (err, db) => { - if (err) { console.log(err) } - plugins.assert.equal(null, err) - this.db = db - plugins.beautylog.success(`connected to database at ${this.dbUrl}`) - done.resolve(this.db) - }) - } else if (this.dbType === 'nedb') { - this.db = null - } + connect (): Promise { + let done = plugins.smartq.defer() + plugins.mongodb.MongoClient.connect(this.dbUrl, (err, db) => { + if (err) { console.log(err) } + plugins.assert.equal(null, err) + this.db = db + plugins.beautylog.success(`connected to database at ${this.dbUrl}`) + done.resolve(this.db) + }) return done.promise } /** * closes the connection to the databse */ - close(): plugins.q.Promise { - let done = plugins.q.defer() - if (this.dbType === 'mongodb') { - this.db.close() - } + close (): Promise { + let done = plugins.smartq.defer() + this.db.close() plugins.beautylog.ok(`disconnected to database at ${this.dbUrl}`) done.resolve() return done.promise @@ -64,8 +51,8 @@ export class Db { /** * gets a collection by name: string */ - getCollectionByName(nameArg: string): plugins.q.Promise> { - let done = plugins.q.defer>() + getCollectionByName(nameArg: string): Promise> { + let done = plugins.smartq.defer>() let resultCollection = this.collections.find((dbCollectionArg) => { return dbCollectionArg.name === nameArg }) @@ -73,9 +60,9 @@ export class Db { done.resolve(resultCollection) } return done.promise - }; + } - addCollection(dbCollectionArg: DbCollection) { + addCollection (dbCollectionArg: DbCollection) { this.collections.add(dbCollectionArg) } diff --git a/ts/smartdata.classes.dbcollection.ts b/ts/smartdata.classes.dbcollection.ts index ee6890e..6da0654 100644 --- a/ts/smartdata.classes.dbcollection.ts +++ b/ts/smartdata.classes.dbcollection.ts @@ -1,150 +1,117 @@ import * as plugins from './smartdata.plugins' import { Db } from './smartdata.classes.db' +import { DbDoc } from './smartdata.classes.dbDoc' export interface IFindOptions { - limit?: number + limit?: number } export interface IDocValidation { - (doc: T): boolean + (doc: T): boolean } -export function Collection(db: Db) { - return function (constructor) { - constructor['dbCollection'] = new DbCollection(constructor.name, db) - } +export function Collection (db: Db) { + return function (constructor) { + constructor[ 'dbCollection' ] = new DbCollection(constructor.name, db) + } } export class DbCollection { - /** - * the collection that is used, defaults to mongodb collection, - * can be nedb datastore (sub api of mongodb) - */ - collection: plugins.mongodb.Collection - name: string - db: Db - objectValidation: IDocValidation = null + /** + * the collection that is used, defaults to mongodb collection, + * can be nedb datastore (sub api of mongodb) + */ + collection: plugins.mongodb.Collection + collectedClass: T & DbDoc + objectValidation: IDocValidation = null + name: string + db: Db + constructor (collectedClassArg: T & DbDoc, dbArg: Db) { + // tell the collection where it belongs + this.collectedClass = collectedClassArg + this.name = collectedClassArg.name + this.db = dbArg - constructor(nameArg: string, dbArg: Db) { - // tell the collection where it belongs - this.name = nameArg - this.db = dbArg + // make sure it actually exists + this.collection = dbArg.db.collection(this.name) - // make sure it actually exists - if (this.db.dbType === 'mongodb') { - this.collection = dbArg.db.collection(nameArg) - } else { - this.collection = new plugins.nedb() - } + // tell the db class about it (important since Db uses different systems under the hood) + this.db.addCollection(this) + } - // tell the db class about it (important since Db uses different systems under the hood) - this.db.addCollection(this) + /** + * adds a validation function that all newly inserted and updated objects have to pass + */ + addDocValidation (funcArg: IDocValidation) { + this.objectValidation = funcArg + } + + /** + * finds an object in the DbCollection + */ + find (docMatchArg: T | any, optionsArg?: IFindOptions): Promise { + let done = plugins.smartq.defer() + let findCursor = this.collection.find(docMatchArg) + if (optionsArg) { + if (optionsArg.limit) { findCursor = findCursor.limit(1) } } + findCursor.toArray((err, docs) => { + if (err) { + done.reject(err) + throw err + } + done.resolve(docs) + }) + return done.promise + } - /** - * adds a validation function that all newly inserted and updated objects have to pass - */ - addDocValidation(funcArg: IDocValidation) { - this.objectValidation = funcArg - } + /** + * inserts object into the DbCollection + */ + insertOne (docArg: T): Promise { + let done = plugins.smartq.defer() + this.checkDoc(docArg).then( + () => { + this.collection.insertOne(docArg) + .then(() => { done.resolve() }) + }, + () => { + done.reject(new Error('one the docs did not pass validation')) + }) + return done.promise + } - /** - * finds an object in the DbCollection - */ - find(docMatchArg: T | any, optionsArg?: IFindOptions): plugins.q.Promise { - let done = plugins.q.defer() - if (this.db.dbType === 'mongodb') { - let findCursor = this.collection.find(docMatchArg) - if (optionsArg) { - if (optionsArg.limit) { findCursor = findCursor.limit(1) } - } - findCursor.toArray((err, docs) => { - if (err) { - done.reject(err) - throw err - } - done.resolve(docs) - }) - } else if (this.db.dbType === 'nedb') { - this.collection.find(docMatchArg, (err, docs) => { - if (err) { - done.reject(err) - throw err - } - done.resolve(docs) - }) - } - return done.promise + /** + * inserts many objects at once into the DbCollection + */ + insertMany (docArrayArg: T[]): Promise { + let done = plugins.smartq.defer() + let checkDocPromiseArray: Promise[] = [] + for (let docArg of docArrayArg) { + checkDocPromiseArray.push(this.checkDoc(docArg)) } + Promise.all(checkDocPromiseArray).then(() => { + this.collection.insertMany(docArrayArg) + .then(() => { done.resolve() }) + }) + return done.promise + } - /** - * inserts object into the DbCollection - */ - insertOne(docArg: T): plugins.q.Promise { - let done = plugins.q.defer() - this.checkDoc(docArg).then( - () => { - if (this.db.dbType === 'mongodb') { - this.collection.insertOne(docArg) - .then(() => { done.resolve() }) - } else if (this.db.dbType === 'nedb') { - this.collection.insert(docArg, (err, newDoc) => { - if (err) { - done.reject(err) - throw err - } - done.resolve() - }) - } - }, - () => { - done.reject(new Error('one the docs did not pass validation')) - }) - return done.promise + /** + * checks a Doc for constraints + */ + private checkDoc (docArg: T): Promise { + let done = plugins.smartq.defer() + let validationResult = true + if (this.objectValidation) { + validationResult = this.objectValidation(docArg) } - - /** - * inserts many objects at once into the DbCollection - */ - insertMany(docArrayArg: T[]): plugins.q.Promise { - let done = plugins.q.defer() - let checkDocPromiseArray: plugins.q.Promise[] = [] - for (let docArg of docArrayArg) { - checkDocPromiseArray.push(this.checkDoc(docArg)) - } - plugins.q.all(checkDocPromiseArray).then(() => { - if (this.db.dbType === 'mongodb') { - this.collection.insertMany(docArrayArg) - .then(() => { done.resolve() }) - } else if (this.db.dbType === 'nedb') { - let paramArray = plugins.lodash.concat(docArrayArg, (err, newDoc) => { - if (err) { - done.reject(err) - throw err - } - done.resolve() - }) - this.collection.insert.apply(null, paramArray) - } - }) - return done.promise - } - - /** - * checks a Doc for constraints - */ - private checkDoc(docArg: T): plugins.q.Promise { - let done = plugins.q.defer() - let validationResult = true - if (this.objectValidation) { - validationResult = this.objectValidation(docArg) - } - if (validationResult) { - done.resolve() - } else { - done.reject('validation of object did not pass') - } - return done.promise + if (validationResult) { + done.resolve() + } else { + done.reject('validation of object did not pass') } + return done.promise + } } diff --git a/ts/smartdata.classes.dbdoc.ts b/ts/smartdata.classes.dbdoc.ts index 5651d98..76668dc 100644 --- a/ts/smartdata.classes.dbdoc.ts +++ b/ts/smartdata.classes.dbdoc.ts @@ -35,11 +35,17 @@ export class DbDoc { */ saveableProperties: string[] + /** + * name + */ + name: string + /** * class constructor */ - constructor() { + constructor(nameArg: string) { this.collection = this.constructor[ 'dbCollection' ] + this.name = nameArg } /** @@ -47,7 +53,7 @@ export class DbDoc { * may lead to data inconsistencies, but is faster */ save() { - let saveableObject: any = {} // isn not exposed to outside, so any is ok here + let saveableObject: any = {} // is not exposed to outside, so any is ok here for (let propertyNameString of this.saveableProperties) { saveableObject[ propertyNameString ] = this[ propertyNameString ] } diff --git a/ts/smartdata.plugins.ts b/ts/smartdata.plugins.ts index 6d983c0..b21e3f0 100644 --- a/ts/smartdata.plugins.ts +++ b/ts/smartdata.plugins.ts @@ -3,14 +3,12 @@ import * as assert from 'assert' import * as beautylog from 'beautylog' import * as lodash from 'lodash' import * as mongodb from 'mongodb' -import * as q from 'q' -let nedb = require('nedb') +import * as smartq from 'smartq' export { assert, beautylog, lodash, mongodb, - q, - nedb + smartq } diff --git a/tsconfig.json b/tsconfig.json index 90fbfaf..cc2bee1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,8 @@ { "compilerOptions": { - "experimentalDecorators": true + "experimentalDecorators": true, + "lib": [ + "es2015" + ] } } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 05149c8..8852508 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,53 +2,71 @@ # yarn lockfile v1 -"@types/lodash@4.x.x", "@types/lodash@^4.14.35", "@types/lodash@^4.14.53": - version "4.14.53" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.53.tgz#c81ee7f2a551f92fb8692a2f6766d0430ccce9eb" +"@types/bson@*": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@types/bson/-/bson-1.0.3.tgz#6c26f0876bf9d8cbb06edd4019e29354bf3a03e0" + dependencies: + "@types/node" "*" + +"@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.55", "@types/lodash@^4.14.62", "@types/lodash@^4.14.66": + version "4.14.66" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.66.tgz#3dbb83477becf130611f8fac82a8fdb199805981" "@types/minimatch@2.x.x": version "2.0.29" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-2.0.29.tgz#5002e14f75e2d71e564281df0431c8c1b4a2a36a" -"@types/mocha@^2.2.31": - version "2.2.39" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-2.2.39.tgz#f68d63db8b69c38e9558b4073525cf96c4f7a829" - -"@types/mongodb@^2.1.41": - version "2.1.41" - resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-2.1.41.tgz#92ea0f832b9e0269c7826fb7f899cf86fe5c4df5" +"@types/mongodb@^2.2.6": + version "2.2.6" + resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-2.2.6.tgz#cd7cb4c439219af1dfba5860d302eeaf2b0a13e4" dependencies: + "@types/bson" "*" "@types/node" "*" -"@types/nedb@0.0.31": - version "0.0.31" - resolved "https://registry.yarnpkg.com/@types/nedb/-/nedb-0.0.31.tgz#e556992cc4ac50e28eb926407fc6da008e3dcdd7" +"@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/node@*": - version "7.0.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.5.tgz#96a0f0a618b7b606f1ec547403c00650210bfbb7" +"@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@0.0.32", "@types/q@0.x.x": - version "0.0.32" - resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" - -"@types/shelljs@^0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.7.0.tgz#229c157c6bc1e67d6b990e6c5e18dbd2ff58cff0" - dependencies: - "@types/node" "*" - -"@types/should@^8.1.30": - version "8.1.30" - resolved "https://registry.yarnpkg.com/@types/should/-/should-8.1.30.tgz#e6b4f3ca4fb0799f6ce3303f3a8c003df6585aa3" - -acorn@^1.0.3: - version "1.2.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-1.2.2.tgz#c8ce27de0acc76d896d2b1fad3df588d9e82f014" - -amdefine@>=0.0.4: +"@types/q@1.x.x": version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.0.1.tgz#dbccb01bd8f0f801a12a4604c7d7af59bb02ae2f" + +"@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/shelljs@^0.7.2": + version "0.7.2" + resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.7.2.tgz#c2bdb3fe80cd7a3da08750ca898ae44c589671f3" + 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" @@ -62,63 +80,71 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -ast-types@0.8.15: - version "0.8.15" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.8.15.tgz#8eef0827f04dff0ec8857ba925abe3fea6194e52" +assertion-error@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" -async@0.2.10: - version "0.2.10" - resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" -balanced-match@^0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" - -base62@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/base62/-/base62-0.1.1.tgz#7b4174c2f94449753b11c2651c083da841a7b084" - -beautycolor@^1.0.5: +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" -beautylog@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/beautylog/-/beautylog-6.1.1.tgz#2a83603ad7e2a0a09701ac63d7d3064a588dc779" +beautylog@^6.1.10: + version "6.1.10" + resolved "https://registry.yarnpkg.com/beautylog/-/beautylog-6.1.10.tgz#9c27e566937684cb689f9372d98cfa5415d50b72" dependencies: - "@types/lodash" "4.x.x" - beautycolor "^1.0.5" + "@types/lodash" "^4.14.55" + beautycolor "^1.0.7" figlet "^1.2.0" lodash "^4.17.4" ora "^1.1.0" smartenv "^2.0.0" - smartq "^1.0.4" + smartq "^1.1.1" typings-global "^1.0.14" -binary-search-tree@0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/binary-search-tree/-/binary-search-tree-0.2.5.tgz#7dbb3b210fdca082450dad2334c304af39bdc784" - dependencies: - underscore "~1.4.4" +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.6" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" +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 "^0.4.1" + balanced-match "^1.0.0" concat-map "0.0.1" bson@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/bson/-/bson-1.0.4.tgz#93c10d39eaa5b58415cbc4052f3e53e562b0b72c" -buffer-shims@^1.0.0: +buffer-shims@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" +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" + chalk@^1.0.0, chalk@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -129,6 +155,10 @@ chalk@^1.0.0, chalk@^1.1.1: strip-ansi "^3.0.0" supports-color "^2.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" + cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -147,13 +177,23 @@ core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" -es3ify@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/es3ify/-/es3ify-0.1.4.tgz#ad9fa5df1ae34f3f31e1211b5818b2d51078dfd1" +deep-eql@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" dependencies: - esprima-fb "~3001.0001.0000-dev-harmony-fb" - jstransform "~3.0.0" - through "~2.3.4" + 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" es6-promise@3.2.1: version "3.2.1" @@ -163,47 +203,22 @@ escape-string-regexp@^1.0.2: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" -esmangle-evaluator@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/esmangle-evaluator/-/esmangle-evaluator-1.0.1.tgz#620d866ef4861b3311f75766d52a8572bb3c6336" - -esprima-fb@~15001.1001.0-dev-harmony-fb: - version "15001.1001.0-dev-harmony-fb" - resolved "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz#43beb57ec26e8cf237d3dd8b33e42533577f2659" - -esprima-fb@~3001.0001.0000-dev-harmony-fb, esprima-fb@~3001.1.0-dev-harmony-fb: - version "3001.1.0-dev-harmony-fb" - resolved "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz#b77d37abcd38ea0b77426bb8bc2922ce6b426411" - -falafel@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/falafel/-/falafel-1.2.0.tgz#c18d24ef5091174a497f318cd24b026a25cddab4" - dependencies: - acorn "^1.0.3" - foreach "^2.0.5" - isarray "0.0.1" - object-keys "^1.0.6" - figlet@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/figlet/-/figlet-1.2.0.tgz#6c46537378fab649146b5a6143dda019b430b410" -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" glob@^7.0.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" + 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.2" + minimatch "^3.0.4" once "^1.3.0" path-is-absolute "^1.0.0" @@ -213,10 +228,6 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -228,66 +239,52 @@ inherits@2, inherits@~2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" -inline-process-browser@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/inline-process-browser/-/inline-process-browser-1.0.0.tgz#46a61b153dd3c9b1624b1a00626edb4f7f414f22" - dependencies: - falafel "^1.0.1" - through2 "^0.6.5" - interpret@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c" - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + version "1.0.3" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + js-base64@^2.1.9: version "2.1.9" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" -jstransform@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/jstransform/-/jstransform-3.0.0.tgz#a2591ab6cee8d97bf3be830dbfa2313b87cd640b" +leakage@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/leakage/-/leakage-0.3.0.tgz#15d698abdc76bbc6439601f4f3020e77e2d50c39" dependencies: - base62 "0.1.1" - esprima-fb "~3001.1.0-dev-harmony-fb" - source-map "0.1.31" + es6-error "^4.0.2" + left-pad "^1.1.3" + memwatch-next "^0.3.0" + minimist "^1.2.0" + pretty-bytes "^4.0.2" -lie@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.0.2.tgz#ffda21d7bba26f377cad865d3649b2fc8ce39fea" - dependencies: - es3ify "^0.1.3" - immediate "~3.0.5" - inline-process-browser "^1.0.0" - unreachable-branch-transform "^0.3.0" +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.27: - version "1.0.27" - resolved "https://registry.yarnpkg.com/lik/-/lik-1.0.27.tgz#699a336225109c8b9ccb9d3dd32d7016d1532c8f" +lik@^1.0.32: + version "1.0.32" + resolved "https://registry.yarnpkg.com/lik/-/lik-1.0.32.tgz#41ee6c8edd483eaa11bd089775263955f5555060" dependencies: - "@types/lodash" "^4.14.35" + "@types/lodash" "^4.14.62" "@types/minimatch" "2.x.x" - "@types/q" "0.x.x" - lodash "^4.16.1" + "@types/q" "1.x.x" + lodash "^4.17.4" minimatch "^3.0.3" - q "^1.4.1" - rxjs "^5.0.0-beta.12" + q "^1.5.0" + rxjs "^5.3.0" + smartq "^1.1.1" + tapbundle "^1.0.14" typings-global "^1.0.14" -localforage@^1.3.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.5.0.tgz#6b994e19b56611fa85df3992df397ac4ab66e815" - dependencies: - lie "3.0.2" - -lodash@^4.16.1, lodash@^4.17.2, lodash@^4.17.4: +lodash@^4.17.4: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -297,54 +294,45 @@ log-symbols@^1.0.2: dependencies: chalk "^1.0.0" +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" + mimic-fn@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" -minimatch@^3.0.2, minimatch@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" +minimatch@^3.0.3, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: - brace-expansion "^1.0.0" + brace-expansion "^1.1.7" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" +minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -mkdirp@~0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - dependencies: - minimist "0.0.8" - -mongodb-core@2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-2.1.8.tgz#b33e0370d0a59d97b6cb1ec610527be9e95ca2c0" +mongodb-core@2.1.12: + version "2.1.12" + resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-2.1.12.tgz#1531192511bc16ef160ac6ae0cc46776ffd8451d" dependencies: bson "~1.0.4" require_optional "~1.0.0" -mongodb@^2.2.24: - version "2.2.24" - resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-2.2.24.tgz#80f40d6ec5bdec0ddecf0f9ce0144e794c46449a" +mongodb@^2.2.28: + version "2.2.28" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-2.2.28.tgz#d8ff45754366e03973fa259bf4f11447858da657" dependencies: es6-promise "3.2.1" - mongodb-core "2.1.8" - readable-stream "2.1.5" + mongodb-core "2.1.12" + readable-stream "2.2.7" -nedb@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/nedb/-/nedb-1.8.0.tgz#0e3502cd82c004d5355a43c9e55577bd7bd91d88" - dependencies: - async "0.2.10" - binary-search-tree "0.2.5" - localforage "^1.3.0" - mkdirp "~0.5.1" - underscore "~1.4.4" - -object-keys@^1.0.6: - version "1.0.11" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" +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" @@ -353,14 +341,14 @@ once@^1.3.0: wrappy "1" onetime@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.0.tgz#52aa8110e52fc5126ffc667bd8ec21c2ed209ce6" + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" dependencies: mimic-fn "^1.0.0" ora@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-1.1.0.tgz#69aaa4a209630e43b142c5f7ff41820da87e2faf" + version "1.3.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-1.3.0.tgz#80078dd2b92a934af66a3ad72a5b910694ede51a" dependencies: chalk "^1.1.1" cli-cursor "^2.1.0" @@ -375,48 +363,30 @@ path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" -private@~0.1.5: - version "0.1.7" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" +pretty-bytes@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" -q@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" +q@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" -readable-stream@2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" +readable-stream@2.2.7: + version "2.2.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.7.tgz#07057acbe2467b22042d36f98c5ad507054e95b1" dependencies: - buffer-shims "^1.0.0" + buffer-shims "~1.0.0" core-util-is "~1.0.0" inherits "~2.0.1" isarray "~1.0.0" process-nextick-args "~1.0.6" - string_decoder "~0.10.x" + string_decoder "~1.0.0" util-deprecate "~1.0.1" -"readable-stream@>=1.0.33-1 <1.1.0-0": - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -recast@^0.10.1: - version "0.10.43" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.10.43.tgz#b95d50f6d60761a5f6252e15d80678168491ce7f" - dependencies: - ast-types "0.8.15" - esprima-fb "~15001.1001.0-dev-harmony-fb" - private "~0.1.5" - source-map "~0.5.0" - rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -428,8 +398,8 @@ reflect-metadata@^0.1.2: resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.10.tgz#b4f83704416acad89988c9b15635d47e03b9344a" require_optional@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.0.tgz#52a86137a849728eb60a55533617f8f914f59abf" + version "1.0.1" + resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e" dependencies: resolve-from "^2.0.0" semver "^5.1.0" @@ -439,8 +409,8 @@ resolve-from@^2.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" resolve@^1.1.6: - version "1.3.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.1.tgz#5d0a1632609b6b00a22284293db1d5d973676314" + version "1.3.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" dependencies: path-parse "^1.0.5" @@ -457,82 +427,75 @@ runtime-type-checks@0.0.4: dependencies: reflect-metadata "^0.1.2" -rxjs@^5.0.0-beta.12: - version "5.2.0" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.2.0.tgz#db537de8767c05fa73721587a29e0085307d318b" +rxjs@^5.3.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.4.1.tgz#b62f757f279445d265a18a58fb0a70dc90e91626" dependencies: symbol-observable "^1.0.1" +safe-buffer@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" + semver@^5.1.0, 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.6" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.6.tgz#379cccfb56b91c8601e4793356eb5382924de9ad" +shelljs@^0.7.6, 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" -should-equal@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/should-equal/-/should-equal-1.0.1.tgz#0b6e9516f2601a9fb0bb2dcc369afa1c7e200af7" - dependencies: - should-type "^1.0.0" - -should-format@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/should-format/-/should-format-3.0.3.tgz#9bfc8f74fa39205c53d38c34d717303e277124f1" - dependencies: - should-type "^1.3.0" - should-type-adaptors "^1.0.1" - -should-type-adaptors@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/should-type-adaptors/-/should-type-adaptors-1.0.1.tgz#efe5553cdf68cff66e5c5f51b712dc351c77beaa" - dependencies: - should-type "^1.3.0" - should-util "^1.0.0" - -should-type@^1.0.0, should-type@^1.3.0, should-type@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/should-type/-/should-type-1.4.0.tgz#0756d8ce846dfd09843a6947719dfa0d4cff5cf3" - -should-util@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/should-util/-/should-util-1.0.0.tgz#c98cda374aa6b190df8ba87c9889c2b4db620063" - -should@^11.2.0: - version "11.2.0" - resolved "https://registry.yarnpkg.com/should/-/should-11.2.0.tgz#7afca3182c234781d786d2278a87805b5ecf0409" - dependencies: - should-equal "^1.0.0" - should-format "^3.0.2" - should-type "^1.4.0" - should-type-adaptors "^1.0.1" - should-util "^1.0.0" - signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" -smartenv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/smartenv/-/smartenv-2.0.0.tgz#ede4e2044efcf9bec318388bb1dab53024ee3d16" +smartchai@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/smartchai/-/smartchai-1.0.3.tgz#de6d010bb8b5aef24cb70b31a5f5334e8c41b72f" dependencies: - "@types/q" "0.x.x" - lodash "^4.17.2" - q "^1.4.1" + "@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" + +smartenv@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/smartenv/-/smartenv-2.0.6.tgz#b38c679b0c151b9af548f68c3a072c29d1417e8d" + dependencies: + lodash "^4.17.4" + smartq "^1.1.1" typings-global "^1.0.14" -smartq@^1.0.4: +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" + smartstring@^2.0.24: version "2.0.24" resolved "https://registry.yarnpkg.com/smartstring/-/smartstring-2.0.24.tgz#dc1c5efb738c10a2d7daeea3d800ad2ecc65a26c" @@ -540,19 +503,11 @@ smartstring@^2.0.24: js-base64 "^2.1.9" typings-global "^1.0.14" -source-map@0.1.31: - version "0.1.31" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.31.tgz#9f704d0d69d9e138a81badf6ebb4fde33d151c61" +string_decoder@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.2.tgz#b29e1f4e1125fa97a10382b8a533737b7491e179" dependencies: - amdefine ">=0.0.4" - -source-map@~0.5.0: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + safe-buffer "~5.0.1" strip-ansi@^3.0.0: version "3.0.1" @@ -568,55 +523,47 @@ symbol-observable@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" -through2@^0.6.2, through2@^0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" +tapbundle@^1.0.14: + version "1.0.14" + resolved "https://registry.yarnpkg.com/tapbundle/-/tapbundle-1.0.14.tgz#75827e335fcb02216f0267a26a26d702ddc02e3c" dependencies: - readable-stream ">=1.0.33-1 <1.1.0-0" - xtend ">=4.0.0 <4.1.0-0" + 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" -through@~2.3.4: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" +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@*, typings-global@^1.0.14: - version "1.0.14" - resolved "https://registry.yarnpkg.com/typings-global/-/typings-global-1.0.14.tgz#ab682720a03d6b9278869fb5c30c30d7dc61d12c" +typings-global@^1.0.14, typings-global@^1.0.16, typings-global@^1.0.17: + 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" - shelljs "^0.7.4" - -typings-test@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/typings-test/-/typings-test-1.0.3.tgz#fbab895eb3f0c44842e73db059f65946b971e369" - dependencies: - "@types/mocha" "^2.2.31" - typings-global "*" - -underscore@~1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604" - -unreachable-branch-transform@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/unreachable-branch-transform/-/unreachable-branch-transform-0.3.0.tgz#d99cc4c6e746d264928845b611db54b0f3474caa" - dependencies: - esmangle-evaluator "^1.0.0" - recast "^0.10.1" - through2 "^0.6.2" + smartshell "^1.0.6" util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" +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" - -"xtend@>=4.0.0 <4.1.0-0": - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"