diff --git a/dist/index.d.ts b/dist/index.d.ts new file mode 100644 index 0000000..3a7c31c --- /dev/null +++ b/dist/index.d.ts @@ -0,0 +1,3 @@ +export * from './smartdata.classes.db'; +export * from './smartdata.classes.dbcollection'; +export * from './smartdata.classes.dbdoc'; diff --git a/dist/index.js b/dist/index.js new file mode 100644 index 0000000..89f3fc4 --- /dev/null +++ b/dist/index.js @@ -0,0 +1,9 @@ +"use strict"; +function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; +} +Object.defineProperty(exports, "__esModule", { value: true }); +__export(require("./smartdata.classes.db")); +__export(require("./smartdata.classes.dbcollection")); +__export(require("./smartdata.classes.dbdoc")); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDRDQUFzQztBQUN0QyxzREFBZ0Q7QUFDaEQsK0NBQXlDIn0= \ No newline at end of file diff --git a/dist/smartdata.classes.db.d.ts b/dist/smartdata.classes.db.d.ts new file mode 100644 index 0000000..227ee87 --- /dev/null +++ b/dist/smartdata.classes.db.d.ts @@ -0,0 +1,32 @@ +import * as plugins from './smartdata.plugins'; +import { Objectmap } from 'lik'; +import { DbCollection } from './smartdata.classes.dbcollection'; +/** + * interface - indicates the connection status of the db + */ +export declare type TConnectionStatus = 'disconnected' | 'connected' | 'failed'; +export declare class Db { + dbUrl: string; + db: plugins.mongodb.Db; + status: TConnectionStatus; + classCollections: Objectmap>; + objectCollections: Objectmap>; + constructor(dbUrlArg: string); + /** + * connects to the database that was specified during instance creation + */ + connect(): Promise; + /** + * closes the connection to the databse + */ + close(): Promise; + /** + * gets a class based collection by name: string + */ + getClassCollectionByName(nameArg: string): Promise>; + /** + * gets an object collection by name + */ + getObjectCollectionByName(nameArg: string, dbArg: Db, makeNewArg?: boolean): Promise>; + addCollection(dbCollectionArg: DbCollection): void; +} diff --git a/dist/smartdata.classes.db.js b/dist/smartdata.classes.db.js new file mode 100644 index 0000000..e72b5f8 --- /dev/null +++ b/dist/smartdata.classes.db.js @@ -0,0 +1,81 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const plugins = require("./smartdata.plugins"); +const lik_1 = require("lik"); +const smartdata_classes_dbobjectdoc_1 = require("./smartdata.classes.dbobjectdoc"); +class Db { + constructor(dbUrlArg) { + this.classCollections = new lik_1.Objectmap(); + this.objectCollections = new lik_1.Objectmap(); + this.dbUrl = dbUrlArg; + } + // basic connection stuff ---------------------------------------------- + /** + * connects to the database that was specified during instance creation + */ + connect() { + 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.smartq.defer(); + this.db.close(); + plugins.beautylog.ok(`disconnected to database at ${this.dbUrl}`); + done.resolve(); + return done.promise; + } + // advanced communication with the database -------------------------------- + /** + * gets a class based collection by name: string + */ + getClassCollectionByName(nameArg) { + return __awaiter(this, void 0, void 0, function* () { + let resultCollection = this.classCollections.find((dbCollectionArg) => { + return dbCollectionArg.name === nameArg; + }); + return resultCollection; + }); + } + /** + * gets an object collection by name + */ + getObjectCollectionByName(nameArg, dbArg, makeNewArg = false) { + return __awaiter(this, void 0, void 0, function* () { + let resultCollection = this.objectCollections.find((dbCollectionArg) => { + return dbCollectionArg.name === nameArg; + }); + if (!resultCollection && makeNewArg) { + resultCollection = smartdata_classes_dbobjectdoc_1.getObjectDoc(nameArg, this).collection; + return resultCollection; + } + else { + return resultCollection; + } + }); + } + addCollection(dbCollectionArg) { + this.classCollections.add(dbCollectionArg); + } +} +exports.Db = Db; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRkYXRhLmNsYXNzZXMuZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGRhdGEuY2xhc3Nlcy5kYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsK0NBQThDO0FBQzlDLDZCQUErQjtBQUcvQixtRkFBOEQ7QUFPOUQ7SUFPRSxZQUFhLFFBQWdCO1FBSDdCLHFCQUFnQixHQUFHLElBQUksZUFBUyxFQUFxQixDQUFBO1FBQ3JELHNCQUFpQixHQUFHLElBQUksZUFBUyxFQUFxQixDQUFBO1FBR3BELElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFBO0lBQ3ZCLENBQUM7SUFFRCx3RUFBd0U7SUFFeEU7O09BRUc7SUFDSCxPQUFPO1FBQ0wsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUNqQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3RELEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUFDLENBQUM7WUFDN0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFBO1lBQy9CLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFBO1lBQ1osT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsNEJBQTRCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO1lBQ25FLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ3ZCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSztRQUNILElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDakMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUNmLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLCtCQUErQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQTtRQUNqRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDZCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUNyQixDQUFDO0lBRUQsNEVBQTRFO0lBRTVFOztPQUVHO0lBQ0csd0JBQXdCLENBQUssT0FBZTs7WUFDaEQsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsZUFBZTtnQkFDaEUsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFBO1lBQ3pDLENBQUMsQ0FBQyxDQUFBO1lBQ0YsTUFBTSxDQUFDLGdCQUFnQixDQUFBO1FBQ3pCLENBQUM7S0FBQTtJQUVEOztPQUVHO0lBQ0cseUJBQXlCLENBQUssT0FBZSxFQUFFLEtBQVMsRUFBRyxhQUFzQixLQUFLOztZQUMxRixJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxlQUFlO2dCQUNqRSxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUE7WUFDekMsQ0FBQyxDQUFDLENBQUE7WUFDRixFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BDLGdCQUFnQixHQUFHLDRDQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQTtnQkFDekQsTUFBTSxDQUFDLGdCQUFnQixDQUFBO1lBQ3pCLENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDTixNQUFNLENBQUMsZ0JBQWdCLENBQUE7WUFDekIsQ0FBQztRQUNILENBQUM7S0FBQTtJQUVELGFBQWEsQ0FBRSxlQUFrQztRQUMvQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFBO0lBQzVDLENBQUM7Q0FFRjtBQXRFRCxnQkFzRUMifQ== \ No newline at end of file diff --git a/dist/smartdata.classes.dbcollection.d.ts b/dist/smartdata.classes.dbcollection.d.ts new file mode 100644 index 0000000..fbd1e77 --- /dev/null +++ b/dist/smartdata.classes.dbcollection.d.ts @@ -0,0 +1,42 @@ +import * as plugins from './smartdata.plugins'; +import { Db } from './smartdata.classes.db'; +import { DbDoc } from './smartdata.classes.dbdoc'; +export interface IFindOptions { + limit?: number; +} +export interface IDocValidation { + (doc: T): boolean; +} +export declare function Collection(db: Db): (constructor: any) => void; +export declare class DbCollection { + /** + * 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; + name: string; + db: Db; + constructor(collectedClassArg: T & DbDoc, dbArg: Db); + /** + * adds a validation function that all newly inserted and updated objects have to pass + */ + addDocValidation(funcArg: IDocValidation): void; + /** + * finds an object in the DbCollection + */ + find(docMatchArg: T | any, optionsArg?: IFindOptions): Promise; + /** + * inserts object into the DbCollection + */ + insertOne(docArg: T): Promise; + /** + * inserts many objects at once into the DbCollection + */ + insertMany(docArrayArg: T[]): Promise; + /** + * checks a Doc for constraints + */ + private checkDoc(docArg); +} diff --git a/dist/smartdata.classes.dbcollection.js b/dist/smartdata.classes.dbcollection.js new file mode 100644 index 0000000..c38b6e8 --- /dev/null +++ b/dist/smartdata.classes.dbcollection.js @@ -0,0 +1,95 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const plugins = require("./smartdata.plugins"); +function Collection(db) { + return function (constructor) { + constructor['dbCollection'] = new DbCollection(constructor, db); + }; +} +exports.Collection = Collection; +class DbCollection { + constructor(collectedClassArg, dbArg) { + this.objectValidation = null; + // tell the collection where it belongs + this.collectedClass = collectedClassArg; + this.name = collectedClassArg.name; + this.db = dbArg; + // make sure it actually exists + 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); + } + /** + * adds a validation function that all newly inserted and updated objects have to pass + */ + addDocValidation(funcArg) { + this.objectValidation = funcArg; + } + /** + * finds an object in the DbCollection + */ + find(docMatchArg, optionsArg) { + 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; + } + /** + * inserts object into the DbCollection + */ + insertOne(docArg) { + 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; + } + /** + * inserts many objects at once into the DbCollection + */ + insertMany(docArrayArg) { + let done = plugins.smartq.defer(); + let checkDocPromiseArray = []; + for (let docArg of docArrayArg) { + checkDocPromiseArray.push(this.checkDoc(docArg)); + } + Promise.all(checkDocPromiseArray).then(() => { + this.collection.insertMany(docArrayArg) + .then(() => { done.resolve(); }); + }); + return done.promise; + } + /** + * checks a Doc for constraints + */ + checkDoc(docArg) { + let done = plugins.smartq.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; + } +} +exports.DbCollection = DbCollection; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRkYXRhLmNsYXNzZXMuZGJjb2xsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRkYXRhLmNsYXNzZXMuZGJjb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0NBQThDO0FBWTlDLG9CQUE0QixFQUFNO0lBQ2hDLE1BQU0sQ0FBQyxVQUFVLFdBQVc7UUFDMUIsV0FBVyxDQUFFLGNBQWMsQ0FBRSxHQUFHLElBQUksWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUNuRSxDQUFDLENBQUE7QUFDSCxDQUFDO0FBSkQsZ0NBSUM7QUFFRDtJQVdFLFlBQWEsaUJBQStCLEVBQUUsS0FBUztRQUp2RCxxQkFBZ0IsR0FBc0IsSUFBSSxDQUFBO1FBS3hDLHVDQUF1QztRQUN2QyxJQUFJLENBQUMsY0FBYyxHQUFHLGlCQUFpQixDQUFBO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFBO1FBQ2xDLElBQUksQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFBO1FBRWYsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRWhELHdGQUF3RjtRQUN4RixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0IsQ0FBRSxPQUEwQjtRQUMxQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFBO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksQ0FBRSxXQUFvQixFQUFFLFVBQXlCO1FBQ25ELElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFPLENBQUE7UUFDdEMsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FB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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 new file mode 100644 index 0000000..242d3f0 --- /dev/null +++ b/dist/smartdata.classes.dbdoc.d.ts @@ -0,0 +1,39 @@ +import { Objectmap } from 'lik'; +import { DbCollection } from './smartdata.classes.dbcollection'; +export declare type TDocCreation = 'db' | 'new' | 'mixed'; +/** + * saveable - saveable decorator to be used on class properties + */ +export declare function svDb(): (target: DbDoc, key: string) => void; +export declare class DbDoc { + /** + * the collection object an Doc belongs to + */ + collection: DbCollection; + /** + * how the Doc in memory was created, may prove useful later. + */ + creationType: TDocCreation; + /** + * an array of saveable properties of a doc + */ + saveableProperties: string[]; + /** + * name + */ + name: string; + /** + * class constructor + */ + constructor(); + /** + * saves this instance but not any connected items + * may lead to data inconsistencies, but is faster + */ + save(): void; + /** + * also store any referenced objects to DB + * better for data consistency + */ + saveDeep(savedMapArg?: Objectmap>): void; +} diff --git a/dist/smartdata.classes.dbdoc.js b/dist/smartdata.classes.dbdoc.js new file mode 100644 index 0000000..5e3bdaf --- /dev/null +++ b/dist/smartdata.classes.dbdoc.js @@ -0,0 +1,61 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const lik_1 = require("lik"); +/** + * saveable - saveable decorator to be used on class properties + */ +function svDb() { + return (target, key) => { + console.log('called sva'); + if (!target.saveableProperties) { + target.saveableProperties = []; + } + target.saveableProperties.push(key); + }; +} +exports.svDb = svDb; +class DbDoc { + /** + * class constructor + */ + constructor() { + this.name = this.constructor['name']; + this.collection = this.constructor['dbCollection']; + } + /** + * saves this instance but not any connected items + * may lead to data inconsistencies, but is faster + */ + save() { + let saveableObject = {}; // is not exposed to outside, so any is ok here + for (let propertyNameString of this.saveableProperties) { + saveableObject[propertyNameString] = this[propertyNameString]; + } + switch (this.creationType) { + case 'db': + this.collection; // TODO implement collection.update() + break; + case 'new': + this.collection.insertOne(saveableObject); + } + } + /** + * also store any referenced objects to DB + * better for data consistency + */ + saveDeep(savedMapArg = null) { + if (!savedMapArg) { + savedMapArg = new lik_1.Objectmap(); + } + savedMapArg.add(this); + this.save(); + for (let propertyKey in this) { + let property = this[propertyKey]; + if (property instanceof DbDoc && !savedMapArg.checkForObject(property)) { + property.saveDeep(savedMapArg); + } + } + } +} +exports.DbDoc = DbDoc; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRkYXRhLmNsYXNzZXMuZGJkb2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGRhdGEuY2xhc3Nlcy5kYmRvYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLDZCQUErQjtBQU8vQjs7R0FFRztBQUNIO0lBQ0UsTUFBTSxDQUFDLENBQUMsTUFBa0IsRUFBRSxHQUFXO1FBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDekIsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1lBQUMsTUFBTSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQTtRQUFDLENBQUM7UUFDbEUsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNyQyxDQUFDLENBQUE7QUFDSCxDQUFDO0FBTkQsb0JBTUM7QUFFRDtJQXNCRTs7T0FFRztJQUNIO1FBQ0UsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBRSxjQUFjLENBQUUsQ0FBQTtJQUN0RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSTtRQUNGLElBQUksY0FBYyxHQUFRLEVBQUUsQ0FBQSxDQUFDLCtDQUErQztRQUM1RSxHQUFHLENBQUMsQ0FBQyxJQUFJLGtCQUFrQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7WUFDdkQsY0FBYyxDQUFFLGtCQUFrQixDQUFFLEdBQUcsSUFBSSxDQUFFLGtCQUFrQixDQUFFLENBQUE7UUFDbkUsQ0FBQztRQUNELE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQzFCLEtBQUssSUFBSTtnQkFDUCxJQUFJLENBQUMsVUFBVSxDQUFBLENBQUMscUNBQXFDO2dCQUNyRCxLQUFLLENBQUE7WUFDUCxLQUFLLEtBQUs7Z0JBQ1IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDN0MsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRLENBQUMsY0FBcUMsSUFBSTtRQUNoRCxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDakIsV0FBVyxHQUFHLElBQUksZUFBUyxFQUFjLENBQUE7UUFDM0MsQ0FBQztRQUNELFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ1gsR0FBRyxDQUFDLENBQUMsSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM3QixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUUsV0FBVyxDQUFFLENBQUE7WUFDbEMsRUFBRSxDQUFDLENBQUMsUUFBUSxZQUFZLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2RSxRQUFRLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBQ2hDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBakVELHNCQWlFQyJ9 \ No newline at end of file diff --git a/dist/smartdata.classes.dbobjectdoc.d.ts b/dist/smartdata.classes.dbobjectdoc.d.ts new file mode 100644 index 0000000..4512a74 --- /dev/null +++ b/dist/smartdata.classes.dbobjectdoc.d.ts @@ -0,0 +1,3 @@ +import { Db } from './smartdata.classes.db'; +import { DbDoc } from './smartdata.classes.dbdoc'; +export declare let getObjectDoc: (nameArg: any, dbArg: Db) => DbDoc<{}>; diff --git a/dist/smartdata.classes.dbobjectdoc.js b/dist/smartdata.classes.dbobjectdoc.js new file mode 100644 index 0000000..3952bb4 --- /dev/null +++ b/dist/smartdata.classes.dbobjectdoc.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const smartdata_classes_dbdoc_1 = require("./smartdata.classes.dbdoc"); +const smartdata_classes_dbcollection_1 = require("./smartdata.classes.dbcollection"); +exports.getObjectDoc = (nameArg, dbArg) => { + let objectDoc = new smartdata_classes_dbdoc_1.DbDoc(); + objectDoc.name = nameArg; + objectDoc.collection = new smartdata_classes_dbcollection_1.DbCollection(objectDoc, dbArg); + return objectDoc; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRkYXRhLmNsYXNzZXMuZGJvYmplY3Rkb2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGRhdGEuY2xhc3Nlcy5kYm9iamVjdGRvYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBLHVFQUFpRDtBQUNqRCxxRkFBK0Q7QUFFcEQsUUFBQSxZQUFZLEdBQUcsQ0FBQyxPQUFPLEVBQUMsS0FBUztJQUMxQyxJQUFJLFNBQVMsR0FBRyxJQUFJLCtCQUFLLEVBQUUsQ0FBQTtJQUMzQixTQUFTLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQTtJQUN4QixTQUFTLENBQUMsVUFBVSxHQUFHLElBQUksNkNBQVksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDekQsTUFBTSxDQUFDLFNBQVMsQ0FBQTtBQUNsQixDQUFDLENBQUEifQ== \ No newline at end of file diff --git a/dist/smartdata.plugins.d.ts b/dist/smartdata.plugins.d.ts new file mode 100644 index 0000000..f232ef8 --- /dev/null +++ b/dist/smartdata.plugins.d.ts @@ -0,0 +1,7 @@ +import 'typings-global'; +import * as assert from 'assert'; +import * as beautylog from 'beautylog'; +import * as lodash from 'lodash'; +import * as mongodb from 'mongodb'; +import * as smartq from 'smartq'; +export { assert, beautylog, lodash, mongodb, smartq }; diff --git a/dist/smartdata.plugins.js b/dist/smartdata.plugins.js new file mode 100644 index 0000000..f62c96a --- /dev/null +++ b/dist/smartdata.plugins.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +require("typings-global"); +const assert = require("assert"); +exports.assert = assert; +const beautylog = require("beautylog"); +exports.beautylog = beautylog; +const lodash = require("lodash"); +exports.lodash = lodash; +const mongodb = require("mongodb"); +exports.mongodb = mongodb; +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 b06ff7a..1b54e8c 100644 --- a/package.json +++ b/package.json @@ -19,14 +19,14 @@ }, "homepage": "https://gitlab.com/pushrocks/smartdata#README", "dependencies": { - "@types/lodash": "^4.14.66", - "@types/mongodb": "^2.2.6", + "@types/lodash": "^4.14.69", + "@types/mongodb": "^2.2.7", "beautylog": "^6.1.10", - "lik": "^1.0.32", + "lik": "^1.0.38", "lodash": "^4.17.4", - "mongodb": "^2.2.29", + "mongodb": "^2.2.30", "runtime-type-checks": "0.0.4", - "smartq": "^1.1.1", + "smartq": "^1.1.6", "typings-global": "^1.0.19" }, "devDependencies": { @@ -34,6 +34,6 @@ "qenv": "^1.1.7", "shelljs": "^0.7.8", "smartstring": "^2.0.24", - "tapbundle": "^1.0.14" + "tapbundle": "^1.1.1" } } diff --git a/ts/smartdata.classes.dbdo.ts b/ts/smartdata.classes.dbdoc.ts similarity index 100% rename from ts/smartdata.classes.dbdo.ts rename to ts/smartdata.classes.dbdoc.ts diff --git a/yarn.lock b/yarn.lock index 55de63d..32cf49e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -21,7 +21,11 @@ dependencies: "@types/chai" "*" -"@types/chai@*", "@types/chai@^3.4.35": +"@types/chai@*": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.0.1.tgz#37fea779617cfec3fd2b19a0247e8bbdd5133bf6" + +"@types/chai@^3.4.35": version "3.5.2" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-3.5.2.tgz#c11cd2817d3a401b7ba0f5a420f35c56139b1c1e" @@ -31,38 +35,32 @@ dependencies: "@types/node" "*" -"@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/lodash@^4.14.55", "@types/lodash@^4.14.67", "@types/lodash@^4.14.69": + version "4.14.69" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.69.tgz#2bbd48c1565e02506f48ed8d1e8e53ea493fd0e6" "@types/minimatch@2.x.x": version "2.0.29" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-2.0.29.tgz#5002e14f75e2d71e564281df0431c8c1b4a2a36a" -"@types/mongodb@^2.2.6": - version "2.2.6" - resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-2.2.6.tgz#cd7cb4c439219af1dfba5860d302eeaf2b0a13e4" +"@types/mongodb@^2.2.7": + version "2.2.7" + resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-2.2.7.tgz#35c04cb60ff06d0c6ab71cc6561e41baf094fa70" dependencies: "@types/bson" "*" "@types/node" "*" "@types/node@*": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.1.tgz#89c271e0c3b9ebb6a3756dd601336970b6228b77" + version "8.0.13" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.13.tgz#530f0f9254209b0335bf5cc6387822594ef47093" "@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@1.x.x": - version "1.0.1" - 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" "*" + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.0.2.tgz#41f0b0f6ae0eeed3a51b003e2e08cba5525b74f6" "@types/shelljs@^0.7.2": version "0.7.2" @@ -195,9 +193,9 @@ clone-stats@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" -clone@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" +clone@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb" cloneable-readable@^1.0.0: version "1.0.0" @@ -221,6 +219,13 @@ deep-eql@^0.1.3: dependencies: type-detect "0.1.1" +define-properties@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + dependencies: + foreach "^2.0.5" + object-keys "^1.0.8" + early@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/early/-/early-2.1.1.tgz#841e23254ea5dc54d8afaeee82f5ab65c00ee23c" @@ -229,6 +234,23 @@ early@^2.1.1: smartq "^1.1.1" typings-global "^1.0.16" +es-abstract@^1.5.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.0" + is-callable "^1.1.3" + is-regex "^1.0.3" + +es-to-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + dependencies: + is-callable "^1.1.1" + is-date-object "^1.0.1" + is-symbol "^1.0.1" + es6-error@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.0.2.tgz#eec5c726eacef51b7f6b73c20db6e1b13b069c98" @@ -241,9 +263,9 @@ 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" -esprima@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" +esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" figlet@^1.2.0: version "1.2.0" @@ -255,6 +277,10 @@ first-chunk-stream@^2.0.0: dependencies: readable-stream "^2.0.2" +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + fs-extra@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" @@ -267,6 +293,10 @@ fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" +function-bind@^1.0.2, function-bind@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" + glob@^7.0.0, glob@^7.1.1: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -288,6 +318,12 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" +has@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + dependencies: + function-bind "^1.0.2" + home@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/home/-/home-1.0.1.tgz#96a423ceb49b98378ff5ef3ceae059a557f9dd35" @@ -301,7 +337,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@~2.0.1: +inherits@2, inherits@^2.0.1, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -309,9 +345,23 @@ interpret@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" +is-callable@^1.1.1, is-callable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + +is-regex@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + dependencies: + has "^1.0.1" + +is-symbol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" is-utf8@^0.2.0, is-utf8@^0.2.1: version "0.2.1" @@ -330,15 +380,15 @@ js-base64@^2.1.9: resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" js-yaml@^3.8.3: - version "3.8.4" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6" + version "3.9.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.0.tgz#4ffbbf25c2ac963b8299dc74da7e3740de1c18ce" dependencies: argparse "^1.0.7" - esprima "^3.1.1" + esprima "^4.0.0" jsonfile@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.0.tgz#92e7c7444e5ffd5fa32e6a9ae8b85034df8347d0" + version "3.0.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" optionalDependencies: graceful-fs "^4.1.6" @@ -356,20 +406,19 @@ 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.32: - version "1.0.32" - resolved "https://registry.yarnpkg.com/lik/-/lik-1.0.32.tgz#41ee6c8edd483eaa11bd089775263955f5555060" +lik@^1.0.38: + version "1.0.38" + resolved "https://registry.yarnpkg.com/lik/-/lik-1.0.38.tgz#ccff0abd3d9236a5e4b7d80d514c5c210f18469b" dependencies: - "@types/lodash" "^4.14.62" + "@types/lodash" "^4.14.67" "@types/minimatch" "2.x.x" "@types/q" "1.x.x" lodash "^4.17.4" - minimatch "^3.0.3" + minimatch "^3.0.4" q "^1.5.0" - rxjs "^5.3.0" + rxjs "^5.4.1" smartq "^1.1.1" - tapbundle "^1.0.14" - typings-global "^1.0.14" + typings-global "^1.0.19" lodash@^4.17.4: version "4.17.4" @@ -392,7 +441,7 @@ 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.3, minimatch@^3.0.4: +minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -402,25 +451,36 @@ minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -mongodb-core@2.1.13: - version "2.1.13" - resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-2.1.13.tgz#771ef638270ac993ab42984689ab824251b96a88" +mongodb-core@2.1.14: + version "2.1.14" + resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-2.1.14.tgz#13cba2764226b5be3d18992af0c963ce5ea0f0fd" dependencies: bson "~1.0.4" require_optional "~1.0.0" -mongodb@^2.2.29: - version "2.2.29" - resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-2.2.29.tgz#36b244126f26766c5ebd6465b8ab5b542d6833c5" +mongodb@^2.2.30: + version "2.2.30" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-2.2.30.tgz#8ccd801f676c8172040c2f2b47e9602a0d5634ab" dependencies: es6-promise "3.2.1" - mongodb-core "2.1.13" + mongodb-core "2.1.14" readable-stream "2.2.7" nan@^2.3.2: version "2.6.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" +object-keys@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + +object.getownpropertydescriptors@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -478,7 +538,7 @@ qenv@^1.1.7: smartfile "^4.2.11" typings-global "^1.0.16" -readable-stream@2.2.7, readable-stream@^2.0.2, readable-stream@^2.1.5: +readable-stream@2.2.7: version "2.2.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.7.tgz#07057acbe2467b22042d36f98c5ad507054e95b1" dependencies: @@ -490,6 +550,18 @@ readable-stream@2.2.7, readable-stream@^2.0.2, readable-stream@^2.1.5: string_decoder "~1.0.0" util-deprecate "~1.0.1" +readable-stream@^2.0.2, readable-stream@^2.1.5: + version "2.3.3" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -542,13 +614,13 @@ runtime-type-checks@0.0.4: dependencies: reflect-metadata "^0.1.2" -rxjs@^5.3.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.4.1.tgz#b62f757f279445d265a18a58fb0a70dc90e91626" +rxjs@^5.4.1: + version "5.4.2" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.4.2.tgz#2a3236fcbf03df57bae06fd6972fd99e5c08fcf7" dependencies: symbol-observable "^1.0.1" -safe-buffer@~5.1.0: +safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" @@ -556,7 +628,7 @@ 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.6, shelljs@^0.7.8: +shelljs@^0.7.8: version "0.7.8" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" dependencies: @@ -618,12 +690,12 @@ smartpath@^3.2.8: home "^1.0.1" typings-global "^1.0.14" -smartq@^1.1.0, smartq@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/smartq/-/smartq-1.1.1.tgz#efb358705260d41ae18aef7ffd815f7b6fe17dd3" +smartq@^1.1.1, smartq@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/smartq/-/smartq-1.1.6.tgz#0c1ff4336d95e95b4f1fdd8ccd7e2c5a323b8412" dependencies: - typed-promisify "^0.3.0" - typings-global "^1.0.14" + typings-global "^1.0.19" + util.promisify "^1.0.0" smartrequest@^1.0.4: version "1.0.6" @@ -633,14 +705,15 @@ smartrequest@^1.0.4: typings-global "^1.0.17" smartshell@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/smartshell/-/smartshell-1.0.6.tgz#27b1c79029784abe72ac7e91fe698b7ebecc6629" + version "1.0.8" + resolved "https://registry.yarnpkg.com/smartshell/-/smartshell-1.0.8.tgz#1535756c0fe8069f7e6da1e3f9cb6c8f77094e42" dependencies: - "@types/shelljs" "^0.6.0" + "@types/shelljs" "^0.7.2" "@types/which" "^1.0.28" - shelljs "^0.7.6" - smartq "^1.1.0" - which "^1.2.12" + shelljs "^0.7.8" + smartq "^1.1.1" + typings-global "^1.0.19" + which "^1.2.14" smartstring@^2.0.24: version "2.0.24" @@ -653,7 +726,7 @@ sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" -string_decoder@~1.0.0: +string_decoder@~1.0.0, string_decoder@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" dependencies: @@ -692,16 +765,16 @@ symbol-observable@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" -tapbundle@^1.0.14: - version "1.0.14" - resolved "https://registry.yarnpkg.com/tapbundle/-/tapbundle-1.0.14.tgz#75827e335fcb02216f0267a26a26d702ddc02e3c" +tapbundle@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/tapbundle/-/tapbundle-1.1.1.tgz#ec4172c0e82a77b1f6133fef2606311ede28a62d" dependencies: 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" + typings-global "^1.0.19" through2@^2.0.1: version "2.0.3" @@ -718,10 +791,6 @@ 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@^1.0.14, typings-global@^1.0.16, typings-global@^1.0.17, typings-global@^1.0.19: version "1.0.19" resolved "https://registry.yarnpkg.com/typings-global/-/typings-global-1.0.19.tgz#3376a72d4de1e5541bf5702248ff64c3e6ea316c" @@ -737,6 +806,13 @@ util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" +util.promisify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + vinyl-file@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-3.0.0.tgz#b104d9e4409ffa325faadd520642d0a3b488b365" @@ -748,18 +824,17 @@ vinyl-file@^3.0.0: vinyl "^2.0.1" vinyl@^2.0.1, vinyl@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.0.2.tgz#0a3713d8d4e9221c58f10ca16c0116c9e25eda7c" + version "2.1.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.1.0.tgz#021f9c2cf951d6b939943c89eb5ee5add4fd924c" dependencies: - clone "^1.0.0" + clone "^2.1.1" clone-buffer "^1.0.0" clone-stats "^1.0.0" cloneable-readable "^1.0.0" - is-stream "^1.1.0" remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" -which@^1.2.12: +which@^1.2.14: version "1.2.14" resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" dependencies: