update ci
This commit is contained in:
		| @@ -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 | ||||
|     - 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 | ||||
|   | ||||
							
								
								
									
										14
									
								
								dist/smartdata.classes.db.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								dist/smartdata.classes.db.d.ts
									
									
									
									
										vendored
									
									
								
							| @@ -1,33 +1,27 @@ | ||||
| /// <reference types="q" /> | ||||
| 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<DbCollection<any>>; | ||||
|     constructor(dbUrlArg: string, dbTypeArg?: TDbType); | ||||
|     constructor(dbUrlArg: string); | ||||
|     /** | ||||
|      * connects to the database that was specified during instance creation | ||||
|      */ | ||||
|     connect(): plugins.q.Promise<any>; | ||||
|     connect(): Promise<any>; | ||||
|     /** | ||||
|      * closes the connection to the databse | ||||
|      */ | ||||
|     close(): plugins.q.Promise<any>; | ||||
|     close(): Promise<any>; | ||||
|     /** | ||||
|      * gets a collection by name: string | ||||
|      */ | ||||
|     getCollectionByName<T>(nameArg: string): plugins.q.Promise<DbCollection<T>>; | ||||
|     getCollectionByName<T>(nameArg: string): Promise<DbCollection<T>>; | ||||
|     addCollection(dbCollectionArg: DbCollection<any>): void; | ||||
| } | ||||
|   | ||||
							
								
								
									
										39
									
								
								dist/smartdata.classes.db.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										39
									
								
								dist/smartdata.classes.db.js
									
									
									
									
										vendored
									
									
								
							| @@ -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= | ||||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRkYXRhLmNsYXNzZXMuZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGRhdGEuY2xhc3Nlcy5kYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLCtDQUE4QztBQUM5Qyw2QkFBK0I7QUFTL0I7SUFNRSxZQUFhLFFBQWdCO1FBRjdCLGdCQUFXLEdBQUcsSUFBSSxlQUFTLEVBQXFCLENBQUE7UUFHOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUE7SUFDdkIsQ0FBQztJQUVELHdFQUF3RTtJQUV4RTs7T0FFRztJQUNILE9BQU87UUFDTCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ2pDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDdEQsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQUMsQ0FBQztZQUM3QixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUE7WUFDL0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUE7WUFDWixPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUE7WUFDbkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDdkIsQ0FBQyxDQUFDLENBQUE7UUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUNqQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ2YsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsK0JBQStCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQ2pFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3JCLENBQUM7SUFFRCw0RUFBNEU7SUFFNUU7O09BRUc7SUFDSCxtQkFBbUIsQ0FBSSxPQUFlO1FBQ3BDLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFxQixDQUFBO1FBQ3BELElBQUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxlQUFlO1lBQzNELE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQTtRQUN6QyxDQUFDLENBQUMsQ0FBQTtRQUNGLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBQ2hDLENBQUM7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUNyQixDQUFDO0lBRUQsYUFBYSxDQUFFLGVBQWtDO1FBQy9DLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7Q0FFRjtBQTFERCxnQkEwREMifQ== | ||||
							
								
								
									
										13
									
								
								dist/smartdata.classes.dbcollection.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										13
									
								
								dist/smartdata.classes.dbcollection.d.ts
									
									
									
									
										vendored
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| /// <reference types="q" /> | ||||
| 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<T> { | ||||
|      * can be nedb datastore (sub api of mongodb) | ||||
|      */ | ||||
|     collection: plugins.mongodb.Collection; | ||||
|     collectedClass: T & DbDoc<T>; | ||||
|     objectValidation: IDocValidation<T>; | ||||
|     name: string; | ||||
|     db: Db; | ||||
|     objectValidation: IDocValidation<T>; | ||||
|     constructor(nameArg: string, dbArg: Db); | ||||
|     constructor(collectedClassArg: T & DbDoc<T>, dbArg: Db); | ||||
|     /** | ||||
|      * adds a validation function that all newly inserted and updated objects have to pass | ||||
|      */ | ||||
| @@ -25,15 +26,15 @@ export declare class DbCollection<T> { | ||||
|     /** | ||||
|      * finds an object in the DbCollection | ||||
|      */ | ||||
|     find(docMatchArg: T | any, optionsArg?: IFindOptions): plugins.q.Promise<T[]>; | ||||
|     find(docMatchArg: T | any, optionsArg?: IFindOptions): Promise<T[]>; | ||||
|     /** | ||||
|      * inserts object into the DbCollection | ||||
|      */ | ||||
|     insertOne(docArg: T): plugins.q.Promise<void>; | ||||
|     insertOne(docArg: T): Promise<void>; | ||||
|     /** | ||||
|      * inserts many objects at once into the DbCollection | ||||
|      */ | ||||
|     insertMany(docArrayArg: T[]): plugins.q.Promise<void>; | ||||
|     insertMany(docArrayArg: T[]): Promise<void>; | ||||
|     /** | ||||
|      * checks a Doc for constraints | ||||
|      */ | ||||
|   | ||||
							
								
								
									
										88
									
								
								dist/smartdata.classes.dbcollection.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										88
									
								
								dist/smartdata.classes.dbcollection.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										6
									
								
								dist/smartdata.classes.dbdoc.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								dist/smartdata.classes.dbdoc.d.ts
									
									
									
									
										vendored
									
									
								
							| @@ -18,10 +18,14 @@ export declare class DbDoc<T> { | ||||
|      * 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 | ||||
|   | ||||
							
								
								
									
										7
									
								
								dist/smartdata.classes.dbdoc.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								dist/smartdata.classes.dbdoc.js
									
									
									
									
										vendored
									
									
								
							| @@ -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= | ||||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRkYXRhLmNsYXNzZXMuZGJEb2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGRhdGEuY2xhc3Nlcy5kYkRvYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLDZCQUErQjtBQU8vQjs7R0FFRztBQUNIO0lBQ0UsTUFBTSxDQUFDLENBQUMsTUFBa0IsRUFBRSxHQUFXO1FBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDekIsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1lBQUMsTUFBTSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQTtRQUFDLENBQUM7UUFDbEUsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNyQyxDQUFDLENBQUE7QUFDSCxDQUFDO0FBTkQsb0JBTUM7QUFFRDtJQXNCRTs7T0FFRztJQUNILFlBQVksT0FBZTtRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUUsY0FBYyxDQUFFLENBQUE7UUFDcEQsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUE7SUFDckIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUk7UUFDRixJQUFJLGNBQWMsR0FBUSxFQUFFLENBQUEsQ0FBQywrQ0FBK0M7UUFDNUUsR0FBRyxDQUFDLENBQUMsSUFBSSxrQkFBa0IsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELGNBQWMsQ0FBRSxrQkFBa0IsQ0FBRSxHQUFHLElBQUksQ0FBRSxrQkFBa0IsQ0FBRSxDQUFBO1FBQ25FLENBQUM7UUFDRCxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUMxQixLQUFLLElBQUk7Z0JBQ1AsSUFBSSxDQUFDLFVBQVUsQ0FBQSxDQUFDLHFDQUFxQztnQkFDckQsS0FBSyxDQUFBO1lBQ1AsS0FBSyxLQUFLO2dCQUNSLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxDQUFDLGNBQXFDLElBQUk7UUFDaEQsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLFdBQVcsR0FBRyxJQUFJLGVBQVMsRUFBYyxDQUFBO1FBQzNDLENBQUM7UUFDRCxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNYLEdBQUcsQ0FBQyxDQUFDLElBQUksV0FBVyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDN0IsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFFLFdBQVcsQ0FBRSxDQUFBO1lBQ2xDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsWUFBWSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQTtZQUNoQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRjtBQWpFRCxzQkFpRUMifQ== | ||||
							
								
								
									
										5
									
								
								dist/smartdata.plugins.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								dist/smartdata.plugins.d.ts
									
									
									
									
										vendored
									
									
								
							| @@ -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 }; | ||||
|   | ||||
							
								
								
									
										8
									
								
								dist/smartdata.plugins.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								dist/smartdata.plugins.js
									
									
									
									
										vendored
									
									
								
							| @@ -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 | ||||
| const smartq = require("smartq"); | ||||
| exports.smartq = smartq; | ||||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRkYXRhLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGRhdGEucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF1QjtBQUN2QixpQ0FBZ0M7QUFPNUIsd0JBQU07QUFOVix1Q0FBc0M7QUFPbEMsOEJBQVM7QUFOYixpQ0FBZ0M7QUFPNUIsd0JBQU07QUFOVixtQ0FBa0M7QUFPOUIsMEJBQU87QUFOWCxpQ0FBZ0M7QUFPNUIsd0JBQU0ifQ== | ||||
							
								
								
									
										25
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								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" | ||||
|   } | ||||
| } | ||||
|   | ||||
							
								
								
									
										1
									
								
								test/test.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								test/test.d.ts
									
									
									
									
										vendored
									
									
								
							| @@ -1 +0,0 @@ | ||||
| import 'typings-test'; | ||||
							
								
								
									
										130
									
								
								test/test.js
									
									
									
									
									
								
							
							
						
						
									
										130
									
								
								test/test.js
									
									
									
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										160
									
								
								test/test.ts
									
									
									
									
									
								
							
							
						
						
									
										160
									
								
								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<ITestObject1> | ||||
|  | ||||
| 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<ITestObject1>('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<TestCar> { | ||||
|       @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<ITestObject1> | ||||
|   it('should create a DB with nedb', function () { | ||||
|     testDb = new smartdata.Db('any', 'nedb') | ||||
|     testDb.connect() | ||||
|     testCollection = new smartdata.DbCollection<ITestObject1>('anyName', testDb) | ||||
| tap.test('should create an extended class', async () => { | ||||
|   @smartdata.Collection(testDb) | ||||
|   class TestCar extends smartdata.DbDoc<TestCar> { | ||||
|     @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() | ||||
|   | ||||
| @@ -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<DbCollection<any>>() | ||||
|  | ||||
|   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<any> { | ||||
|     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<any> { | ||||
|     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<any> { | ||||
|     let done = plugins.q.defer() | ||||
|     if (this.dbType === 'mongodb') { | ||||
|       this.db.close() | ||||
|     } | ||||
|   close (): Promise<any> { | ||||
|     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<T>(nameArg: string): plugins.q.Promise<DbCollection<T>> { | ||||
|     let done = plugins.q.defer<DbCollection<any>>() | ||||
|   getCollectionByName<T>(nameArg: string): Promise<DbCollection<T>> { | ||||
|     let done = plugins.smartq.defer<DbCollection<any>>() | ||||
|     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<any>) { | ||||
|   addCollection (dbCollectionArg: DbCollection<any>) { | ||||
|     this.collections.add(dbCollectionArg) | ||||
|   } | ||||
|  | ||||
|   | ||||
| @@ -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<T> { | ||||
|     (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<T> { | ||||
|     /** | ||||
|      * 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<T> = 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<T> | ||||
|   objectValidation: IDocValidation<T> = null | ||||
|   name: string | ||||
|   db: Db | ||||
|  | ||||
|   constructor (collectedClassArg: T & DbDoc<T>, 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<T>) { | ||||
|     this.objectValidation = funcArg | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * finds an object in the DbCollection | ||||
|    */ | ||||
|   find (docMatchArg: T | any, optionsArg?: IFindOptions): Promise<T[]> { | ||||
|     let done = plugins.smartq.defer<T[]>() | ||||
|     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<T>) { | ||||
|         this.objectValidation = funcArg | ||||
|     } | ||||
|   /** | ||||
|    * inserts object into the DbCollection | ||||
|    */ | ||||
|   insertOne (docArg: T): Promise<void> { | ||||
|     let done = plugins.smartq.defer<void>() | ||||
|     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<T[]> { | ||||
|         let done = plugins.q.defer<T[]>() | ||||
|         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<void> { | ||||
|     let done = plugins.smartq.defer<void>() | ||||
|     let checkDocPromiseArray: Promise<void>[] = [] | ||||
|     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<void> { | ||||
|         let done = plugins.q.defer<void>() | ||||
|         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<void> { | ||||
|     let done = plugins.smartq.defer<void>() | ||||
|     let validationResult = true | ||||
|     if (this.objectValidation) { | ||||
|       validationResult = this.objectValidation(docArg) | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * inserts many objects at once into the DbCollection | ||||
|      */ | ||||
|     insertMany(docArrayArg: T[]): plugins.q.Promise<void> { | ||||
|         let done = plugins.q.defer<void>() | ||||
|         let checkDocPromiseArray: plugins.q.Promise<void>[] = [] | ||||
|         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<any>(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<void> { | ||||
|         let done = plugins.q.defer<void>() | ||||
|         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 | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -35,11 +35,17 @@ export class DbDoc<T> { | ||||
|    */ | ||||
|   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<T> { | ||||
|    * 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 ] | ||||
|     } | ||||
|   | ||||
| @@ -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 | ||||
| } | ||||
|   | ||||
| @@ -1,5 +1,8 @@ | ||||
| { | ||||
|     "compilerOptions": { | ||||
|         "experimentalDecorators": true | ||||
|         "experimentalDecorators": true, | ||||
|         "lib": [ | ||||
|             "es2015" | ||||
|         ] | ||||
|     } | ||||
| } | ||||
							
								
								
									
										579
									
								
								yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										579
									
								
								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" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user