(function(global){global.wrappers['/home/dev/Dropbox/www/browser-database/src/class/browser-database.ts']=[function(require,module,exports,__dirname,__filename){ "use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const index_1 = require("./index");
/*
* Main library class
*/
class BrowserDatabase {
/*
* Constructor
*
* @param options Options for storage
*/
constructor(options = {}) {
/*
* Database change subscriptions
*/
this.subscriptions = [];
/*
* Storage types
*/
this.storages = {
localStorage: index_1.LocalStorage
};
/*
* Storage reference
*/
this.storage = null;
if (BrowserDatabase.instance) {
return BrowserDatabase.instance;
}
this.storage = new this.storages[options.storageType || 'localStorage']({
storageKey: options.storageKey || 'browser-database'
});
BrowserDatabase.instance = this;
}
/*
* Get list of records
*
* @param modelName Name of model
*/
getAll(modelName) {
return this.storage.getAll(modelName);
}
/*
* Get single record by id
*
* @param modelName Name of model
* @param id ID of primary key
*/
getById(modelName, id) {
return this.storage.getById(modelName, id);
}
/*
* Insert new record
*
* @param modelName Name of model
* @param row Row data
*/
insert(modelName, row) {
return this.storage.insert(modelName, row)
.then((theRow) => this.notify(modelName, 'insert', theRow));
}
/*
* Update existing record
*
* @param modelName Name of model
* @param id ID of primary key
* @param row Row data
*/
update(modelName, id, row) {
return this.storage.update(modelName, id, row)
.then((theRow) => this.notify(modelName, 'update', theRow));
}
/*
* Remove existing record
*
* @param modelName Name of model
* @param id ID of primary key
*/
remove(modelName, id) {
return this.storage.remove(modelName, id)
.then((theRow) => this.notify(modelName, 'remove', theRow));
}
/*
* Notify subscribers about event
*
* @param modelName Name of model
* @param action Action name
* @param result Result row
*/
notify(modelName, action, result) {
this.subscriptions.forEach((subscription) => subscription(modelName, action, result));
return result;
}
/*
* Add subscription
*
* @param callback Subscription callback
*/
subscribe(callback) {
this.subscriptions.push(callback);
return () => this.subscriptions = this.subscriptions.filter((subscription) => subscription !== callback);
}
}
/*
* Existing instance for singleton
*/
BrowserDatabase.instance = null;
exports.BrowserDatabase = BrowserDatabase;
},'src/class/browser-database.ts',{"../interface":"/home/dev/Dropbox/www/browser-database/src/interface/index.ts","./index":"/home/dev/Dropbox/www/browser-database/src/class/index.ts"}];})(this);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci1kYXRhYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJyb3dzZXItZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxtQ0FBcUM7QUFFckM7O0dBRUc7QUFDSDtJQXdCRTs7OztPQUlHO0lBQ0gsWUFBWSxVQUFtQyxFQUFFO1FBdEJqRDs7V0FFRztRQUNILGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBRTFCOztXQUVHO1FBQ0gsYUFBUSxHQUF5QjtZQUMvQixZQUFZLEVBQUUsb0JBQVk7U0FDM0IsQ0FBQztRQUVGOztXQUVHO1FBQ0gsWUFBTyxHQUFvQixJQUFJLENBQUM7UUFTOUIsSUFBSSxlQUFlLENBQUMsUUFBUSxFQUFFO1lBQzVCLE9BQU8sZUFBZSxDQUFDLFFBQVEsQ0FBQztTQUNqQztRQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksY0FBYyxDQUFDLENBQUM7WUFDdEUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLElBQUksa0JBQWtCO1NBQ3JELENBQUMsQ0FBQztRQUVILGVBQWUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFNBQWlCO1FBRXRCLE9BQWtCLElBQUksQ0FBQyxPQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE9BQU8sQ0FBQyxTQUFpQixFQUFFLEVBQW1CO1FBRTVDLE9BQWtCLElBQUksQ0FBQyxPQUFRLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsU0FBaUIsRUFBRSxHQUFXO1FBRW5DLE9BQWtCLElBQUksQ0FBQyxPQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUM7YUFDbkQsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLFNBQWlCLEVBQUUsRUFBbUIsRUFBRSxHQUFXO1FBRXhELE9BQWtCLElBQUksQ0FBQyxPQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO2FBQ3ZELElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLFNBQWlCLEVBQUUsRUFBbUI7UUFFM0MsT0FBa0IsSUFBSSxDQUFDLE9BQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQzthQUNsRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsU0FBaUIsRUFBRSxNQUFjLEVBQUUsTUFBYztRQUV0RCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUV0RixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxRQUFhO1FBRXJCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWxDLE9BQU8sR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsWUFBWSxLQUFLLFFBQVEsQ0FBQyxDQUFDO0lBQzNHLENBQUM7O0FBMUhEOztHQUVHO0FBQ0ksd0JBQVEsR0FBUSxJQUFJLENBQUM7QUFMOUIsMENBNkhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJQnJvd3NlckRhdGFiYXNlT3B0aW9ucywgSVN0b3JhZ2V9IGZyb20gJy4uL2ludGVyZmFjZSc7XG5pbXBvcnQge0xvY2FsU3RvcmFnZX0gZnJvbSAnLi9pbmRleCc7XG5cbi8qXG4gKiBNYWluIGxpYnJhcnkgY2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIEJyb3dzZXJEYXRhYmFzZSB7XG5cbiAgLypcbiAgICogRXhpc3RpbmcgaW5zdGFuY2UgZm9yIHNpbmdsZXRvblxuICAgKi9cbiAgc3RhdGljIGluc3RhbmNlOiBhbnkgPSBudWxsO1xuXG4gIC8qXG4gICAqIERhdGFiYXNlIGNoYW5nZSBzdWJzY3JpcHRpb25zXG4gICAqL1xuICBzdWJzY3JpcHRpb25zOiBhbnlbXSA9IFtdO1xuXG4gIC8qXG4gICAqIFN0b3JhZ2UgdHlwZXNcbiAgICovXG4gIHN0b3JhZ2VzOiB7W2tleTogc3RyaW5nXTogYW55fSA9IHtcbiAgICBsb2NhbFN0b3JhZ2U6IExvY2FsU3RvcmFnZVxuICB9O1xuXG4gIC8qXG4gICAqIFN0b3JhZ2UgcmVmZXJlbmNlXG4gICAqL1xuICBzdG9yYWdlOiBJU3RvcmFnZSB8IG51bGwgPSBudWxsO1xuXG4gIC8qXG4gICAqIENvbnN0cnVjdG9yXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIHN0b3JhZ2VcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElCcm93c2VyRGF0YWJhc2VPcHRpb25zID0ge30pIHtcblxuICAgIGlmIChCcm93c2VyRGF0YWJhc2UuaW5zdGFuY2UpIHtcbiAgICAgIHJldHVybiBCcm93c2VyRGF0YWJhc2UuaW5zdGFuY2U7XG4gICAgfVxuXG4gICAgdGhpcy5zdG9yYWdlID0gbmV3IHRoaXMuc3RvcmFnZXNbb3B0aW9ucy5zdG9yYWdlVHlwZSB8fCAnbG9jYWxTdG9yYWdlJ10oe1xuICAgICAgc3RvcmFnZUtleTogb3B0aW9ucy5zdG9yYWdlS2V5IHx8ICdicm93c2VyLWRhdGFiYXNlJ1xuICAgIH0pO1xuXG4gICAgQnJvd3NlckRhdGFiYXNlLmluc3RhbmNlID0gdGhpcztcbiAgfVxuXG4gIC8qXG4gICAqIEdldCBsaXN0IG9mIHJlY29yZHNcbiAgICpcbiAgICogQHBhcmFtIG1vZGVsTmFtZSBOYW1lIG9mIG1vZGVsXG4gICAqL1xuICBnZXRBbGwobW9kZWxOYW1lOiBzdHJpbmcpOiBQcm9taXNlPG9iamVjdD4ge1xuXG4gICAgcmV0dXJuICg8SVN0b3JhZ2U+dGhpcy5zdG9yYWdlKS5nZXRBbGwobW9kZWxOYW1lKTtcbiAgfVxuXG4gIC8qXG4gICAqIEdldCBzaW5nbGUgcmVjb3JkIGJ5IGlkXG4gICAqXG4gICAqIEBwYXJhbSBtb2RlbE5hbWUgTmFtZSBvZiBtb2RlbFxuICAgKiBAcGFyYW0gaWQgSUQgb2YgcHJpbWFyeSBrZXlcbiAgICovXG4gIGdldEJ5SWQobW9kZWxOYW1lOiBzdHJpbmcsIGlkOiBudW1iZXIgfCBzdHJpbmcpOiBQcm9taXNlPG9iamVjdD4ge1xuXG4gICAgcmV0dXJuICg8SVN0b3JhZ2U+dGhpcy5zdG9yYWdlKS5nZXRCeUlkKG1vZGVsTmFtZSwgaWQpO1xuICB9XG5cbiAgLypcbiAgICogSW5zZXJ0IG5ldyByZWNvcmRcbiAgICpcbiAgICogQHBhcmFtIG1vZGVsTmFtZSBOYW1lIG9mIG1vZGVsXG4gICAqIEBwYXJhbSByb3cgUm93IGRhdGFcbiAgICovXG4gIGluc2VydChtb2RlbE5hbWU6IHN0cmluZywgcm93OiBvYmplY3QpOiBQcm9taXNlPG9iamVjdD4ge1xuXG4gICAgcmV0dXJuICg8SVN0b3JhZ2U+dGhpcy5zdG9yYWdlKS5pbnNlcnQobW9kZWxOYW1lLCByb3cpXG4gICAgICAudGhlbigodGhlUm93KSA9PiB0aGlzLm5vdGlmeShtb2RlbE5hbWUsICdpbnNlcnQnLCB0aGVSb3cpKTtcbiAgfVxuXG4gIC8qXG4gICAqIFVwZGF0ZSBleGlzdGluZyByZWNvcmRcbiAgICpcbiAgICogQHBhcmFtIG1vZGVsTmFtZSBOYW1lIG9mIG1vZGVsXG4gICAqIEBwYXJhbSBpZCBJRCBvZiBwcmltYXJ5IGtleVxuICAgKiBAcGFyYW0gcm93IFJvdyBkYXRhXG4gICAqL1xuICB1cGRhdGUobW9kZWxOYW1lOiBzdHJpbmcsIGlkOiBudW1iZXIgfCBzdHJpbmcsIHJvdzogb2JqZWN0KTogUHJvbWlzZTxvYmplY3Q+IHtcblxuICAgIHJldHVybiAoPElTdG9yYWdlPnRoaXMuc3RvcmFnZSkudXBkYXRlKG1vZGVsTmFtZSwgaWQsIHJvdylcbiAgICAgIC50aGVuKCh0aGVSb3cpID0+IHRoaXMubm90aWZ5KG1vZGVsTmFtZSwgJ3VwZGF0ZScsIHRoZVJvdykpO1xuICB9XG5cbiAgLypcbiAgICogUmVtb3ZlIGV4aXN0aW5nIHJlY29yZFxuICAgKlxuICAgKiBAcGFyYW0gbW9kZWxOYW1lIE5hbWUgb2YgbW9kZWxcbiAgICogQHBhcmFtIGlkIElEIG9mIHByaW1hcnkga2V5XG4gICAqL1xuICByZW1vdmUobW9kZWxOYW1lOiBzdHJpbmcsIGlkOiBudW1iZXIgfCBzdHJpbmcpOiBQcm9taXNlPG9iamVjdD4ge1xuXG4gICAgcmV0dXJuICg8SVN0b3JhZ2U+dGhpcy5zdG9yYWdlKS5yZW1vdmUobW9kZWxOYW1lLCBpZClcbiAgICAgIC50aGVuKCh0aGVSb3cpID0+IHRoaXMubm90aWZ5KG1vZGVsTmFtZSwgJ3JlbW92ZScsIHRoZVJvdykpO1xuICB9XG5cbiAgLypcbiAgICogTm90aWZ5IHN1YnNjcmliZXJzIGFib3V0IGV2ZW50XG4gICAqXG4gICAqIEBwYXJhbSBtb2RlbE5hbWUgTmFtZSBvZiBtb2RlbFxuICAgKiBAcGFyYW0gYWN0aW9uIEFjdGlvbiBuYW1lXG4gICAqIEBwYXJhbSByZXN1bHQgUmVzdWx0IHJvd1xuICAgKi9cbiAgbm90aWZ5KG1vZGVsTmFtZTogc3RyaW5nLCBhY3Rpb246IHN0cmluZywgcmVzdWx0OiBvYmplY3QpOiBvYmplY3Qge1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHN1YnNjcmlwdGlvbikgPT4gc3Vic2NyaXB0aW9uKG1vZGVsTmFtZSwgYWN0aW9uLCByZXN1bHQpKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKlxuICAgKiBBZGQgc3Vic2NyaXB0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFjayBTdWJzY3JpcHRpb24gY2FsbGJhY2tcbiAgICovXG4gIHN1YnNjcmliZShjYWxsYmFjazogYW55KTogYW55IHtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGNhbGxiYWNrKTtcblxuICAgIHJldHVybiAoKSA9PiB0aGlzLnN1YnNjcmlwdGlvbnMgPSB0aGlzLnN1YnNjcmlwdGlvbnMuZmlsdGVyKChzdWJzY3JpcHRpb24pID0+IHN1YnNjcmlwdGlvbiAhPT0gY2FsbGJhY2spO1xuICB9XG59XG4iXX0=
|