{"version":3,"sources":["webpack://JsStore/webpack/bootstrap","webpack://JsStore/./src/main/log_helper.ts","webpack://JsStore/./src/common/enums.ts","webpack://JsStore/./src/common/utils/promise.ts","webpack://JsStore/./src/common/utils/promise_resolve.ts","webpack://JsStore/./src/main/event_bus.ts","webpack://JsStore/./src/main/connection_helper.ts","webpack://JsStore/./src/main/connection.ts","webpack://JsStore/./src/common/utils/promise_all.ts","webpack://JsStore/./src/common/utils/for_obj.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","ERROR_TYPE","WORKER_STATUS","DATA_TYPE","API","EVENT","QUERY_OPTION","IDB_MODE","OCCURENCE","CONNECTION_STATUS","type","info","this","_info","message","getMsg","throw","log","msg","status","console","logError","error","logWarning","warn","promise","cb","Promise","promiseResolve","resolve","ctx","_events","_ctx","on","event","push","off","index","indexOf","splice","emit","events","length","results","callMethod","eventCb","result","args","then","res","checkAndCall","destroy","worker","isConOpened_","isDbIdle_","requestQueue_","isCodeExecuting_","inactivityTimer_","middlewares","eventBus_","EventBus","whiteListApi_","InitDb","OpenDb","Get","Set","ChangeLogStatus","Terminate","DropDb","isRuningInWorker","logger","LogHelper","worker_","onmessage","onMessageFromWorker_","initQueryManager_","$worker","self","workerRef","jsstoreWorker","queryManager","QueryManager","processFinishedQuery_","data","finishedRequest","shift","onError","terminate","CloseDb","openDb_","RequestQueueEmpty","onSuccess","executeQry_","prcoessExecutionOfQry_","query","database","version","err","executeMiddleware_","input","lastIndex","callNextMiddleware","promiseResult","_","callResultMiddleware","modifiedResult","pushApi","request","reject","onResult","catch","RequestQueueFilled","clearTimeout","requestQueueLength","sendRequestToWorker_","allowedQueryIndex","findIndex","item","setTimeout","requestForWorker","postMessage","run","Connection","initDb","dataBase","promiseObj","db","isCreated","oldVersion","Upgrade","newVersion","Create","Open","dropDb","select","Select","count","Count","insert","Insert","update","Update","remove","Remove","clear","tableName","Clear","openDb","dbName","getDbList","indexedDB","databases","set","transaction","Transaction","eventCallBack","union","Union","intersect","Intersect","addPlugin","plugin","params","setup","addMiddleware","middleware","forWorker","Middleware","importScripts","ImportScripts","urls","promiseAll","promises","all","forObj","obj"],"mappings":"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","file":"jsstore.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","\nimport { ERROR_TYPE, IError } from \"../common/index\";\n\nexport class LogHelper implements IError {\n type: ERROR_TYPE;\n message: string;\n private _info: any;\n status: boolean;\n\n constructor(type: ERROR_TYPE, info?) {\n this.type = type;\n this._info = info;\n this.message = this.getMsg();\n }\n\n throw() {\n throw this.get();\n }\n\n log(msg) {\n if (this.status) {\n console.log(msg);\n }\n }\n\n logError() {\n console.error(this.get());\n }\n\n logWarning() {\n console.warn(this.get());\n }\n\n get() {\n return {\n message: this.message,\n type: this.type\n } as IError;\n }\n\n private getMsg() {\n let errMsg: string;\n switch (this.type) {\n default:\n errMsg = this.message;\n break;\n }\n return errMsg;\n }\n}","export enum ERROR_TYPE {\n UndefinedColumn = \"undefined_column\",\n UndefinedValue = \"undefined_value\",\n UndefinedColumnName = \"undefined_column_name\",\n UndefinedDbName = \"undefined_database_name\",\n UndefinedColumnValue = \"undefined_column_value\",\n NotArray = \"not_array\",\n NoValueSupplied = \"no_value_supplied\",\n ColumnNotExist = \"column_not_exist\",\n EnableSearchOff = \"enable_search_off\",\n InvalidOp = \"invalid_operator\",\n NullValue = \"null_value\",\n WrongDataType = \"wrong_data_type\",\n TableNotExist = \"table_not_exist\",\n DbNotExist = \"db_not_exist\",\n ConnectionAborted = \"connection_aborted\",\n ConnectionClosed = \"connection_closed\",\n NotObject = \"not_object\",\n InvalidConfig = \"invalid_config\",\n DbBlocked = \"Db_blocked\",\n IndexedDbNotSupported = \"indexeddb_not_supported\",\n NullValueInWhere = \"null_value_in_where\",\n InvalidJoinQuery = 'invalid_join_query',\n InvalidOrderQuery = 'invalid_order_query',\n InvalidQuery = 'invalid_query',\n InvalidGroupQuery = 'invalid_group_query',\n ImportScriptsFailed = 'import_scripts_failed',\n MethodNotExist = 'method_not_exist',\n Unknown = \"unknown\",\n InvalidMiddleware = \"invalid_middleware\"\n}\n\nexport enum WORKER_STATUS {\n Registered = \"registerd\",\n Failed = \"failed\",\n NotStarted = \"not_started\"\n}\n\nexport enum DATA_TYPE {\n String = \"string\",\n Object = \"object\",\n Array = \"array\",\n Number = \"number\",\n Boolean = \"boolean\",\n Null = \"null\",\n DateTime = \"date_time\"\n}\n\nexport enum API {\n InitDb = \"init_db\",\n Get = \"get\",\n Set = \"set\",\n Select = \"select\",\n Insert = \"insert\",\n Update = \"update\",\n Remove = \"remove\",\n OpenDb = \"open_db\",\n Clear = \"clear\",\n DropDb = \"drop_db\",\n Count = \"count\",\n ChangeLogStatus = \"change_log_status\",\n Terminate = \"terminate\",\n Transaction = \"transaction\",\n CloseDb = \"close_db\",\n Union = \"union\",\n Intersect = \"intersect\",\n ImportScripts = \"import_scripts\",\n Middleware = \"middleware\"\n}\n\nexport enum EVENT {\n RequestQueueEmpty = \"requestQueueEmpty\",\n RequestQueueFilled = \"requestQueueFilled\",\n Upgrade = \"upgrade\",\n Create = \"create\",\n Open = \"open\"\n}\n\nexport enum QUERY_OPTION {\n Where = \"where\",\n Like = 'like',\n Regex = 'regex',\n In = 'in',\n Equal = \"=\",\n Between = '-',\n GreaterThan = '>',\n LessThan = '<',\n GreaterThanEqualTo = \">=\",\n LessThanEqualTo = \"<=\",\n NotEqualTo = \"!=\",\n Aggregate = \"aggregate\",\n Max = \"max\",\n Min = \"min\",\n Avg = \"avg\",\n Count = \"count\",\n Sum = \"sum\",\n Or = \"or\",\n Skip = \"skip\",\n Limit = \"limit\",\n And = \"and\",\n IgnoreCase = \"ignoreCase\",\n Then = \"then\"\n}\n\nexport enum IDB_MODE {\n ReadOnly = \"readonly\",\n ReadWrite = \"readwrite\"\n}\n\nexport enum OCCURENCE {\n First = 'f',\n Last = 'l',\n Any = 'a'\n}\n\nexport enum CONNECTION_STATUS {\n Connected = \"connected\",\n Closed = \"closed\",\n NotStarted = \"not_started\",\n UnableToStart = \"unable_to_start\",\n ClosedByJsStore = \"closed_by_jsstore\"\n}","export const promise = (cb: (res, rej?) => any) => {\n return new Promise(cb);\n}","export const promiseResolve = (value?) => {\n return Promise.resolve(value);\n}","export class EventBus {\n\n constructor(ctx?) {\n this._ctx = ctx;\n }\n\n private _ctx;\n\n private _events: {\n [key: string]: Function[]\n } = {};\n\n on(event: string, cb: Function) {\n if (this._events[event] == null) {\n this._events[event] = [];\n }\n this._events[event].push(cb);\n return this;\n }\n\n off(event: string, cb: Function) {\n if (this._events[event]) {\n if (cb) {\n const index = this._events[event].indexOf(cb);\n this._events[event].splice(index, 1);\n }\n else {\n this._events[event] = [];\n }\n }\n }\n\n emit(event: string, ...args) {\n const events = this._events[event] || [];\n let index = 0;\n const length = events.length;\n const results = [];\n const callMethod = () => {\n const eventCb = events[index++];\n if (eventCb) {\n const result = eventCb.call(this._ctx, ...args);\n return result && result.then ? result : Promise.resolve(result);\n }\n };\n\n return new Promise((res) => {\n const checkAndCall = () => {\n if (index < length) {\n callMethod().then(result => {\n results.push(result);\n checkAndCall();\n });\n }\n else {\n res(results);\n }\n };\n checkAndCall();\n });\n\n }\n\n destroy() {\n this._events = null;\n this._ctx = null;\n }\n}","import { LogHelper } from \"./log_helper\";\nimport {\n WebWorkerRequest, EventQueue, API, WebWorkerResult,\n EVENT, promise, IDataBase, IDbInfo, TMiddleware,\n promiseResolve\n} from \"../common\";\nimport { EventBus } from \"./event_bus\";\n\ndeclare var JsStoreWorker;\nexport class ConnectionHelper {\n protected database: IDataBase;\n private worker_: Worker;\n private isConOpened_ = false;\n private isDbIdle_ = true;\n private requestQueue_: WebWorkerRequest[] = [];\n private isCodeExecuting_ = false;\n\n private inactivityTimer_ = -1000;\n\n protected middlewares: TMiddleware[] = [];\n\n protected eventBus_: EventBus = new EventBus(this);\n\n // these apis have special permissions. These apis dont wait for database open.\n private whiteListApi_ = [\n API.InitDb,\n API.OpenDb,\n API.Get,\n API.Set,\n API.ChangeLogStatus,\n API.Terminate,\n API.DropDb\n ];\n\n private queryManager;\n\n isRuningInWorker = true;\n\n protected logger = new LogHelper(null);\n\n private $worker;\n\n private get jsstoreWorker() {\n return this.$worker || self['JsStoreWorker'];\n }\n\n constructor(worker?: Worker) {\n if (worker) {\n this.worker_ = worker;\n this.worker_.onmessage = this.onMessageFromWorker_.bind(this);\n } else {\n this.isRuningInWorker = false;\n this.initQueryManager_();\n }\n }\n\n private initQueryManager_() {\n const workerRef = this.jsstoreWorker;\n if (workerRef) {\n this.queryManager = new workerRef.QueryManager(this.processFinishedQuery_.bind(this));\n }\n }\n\n private onMessageFromWorker_(msg) {\n this.processFinishedQuery_(msg.data);\n }\n\n private processFinishedQuery_(message: WebWorkerResult) {\n\n const finishedRequest: WebWorkerRequest = this.requestQueue_.shift();\n if (finishedRequest) {\n this.logger.log(`request ${finishedRequest.name} finished`);\n if (message.error) {\n finishedRequest.onError(message.error);\n } else {\n switch (finishedRequest.name) {\n case API.OpenDb:\n case API.InitDb:\n this.isConOpened_ = true; break;\n case API.Terminate:\n this.isConOpened_ = false;\n if (this.isRuningInWorker === true) {\n this.worker_.terminate();\n }\n case API.DropDb:\n this.isConOpened_ = false;\n this.requestQueue_ = [];\n this.isDbIdle_ = true;\n break;\n case API.CloseDb:\n if (this.requestQueue_.length > 0) {\n this.openDb_();\n }\n else {\n this.isDbIdle_ = true;\n this.eventBus_.emit(EVENT.RequestQueueEmpty, []);\n }\n break;\n }\n finishedRequest.onSuccess(message.result);\n }\n this.isCodeExecuting_ = false;\n this.executeQry_();\n }\n }\n\n private openDb_() {\n this.prcoessExecutionOfQry_({\n name: API.OpenDb,\n query: {\n name: this.database.name,\n version: this.database.version\n } as IDbInfo,\n onSuccess: function () {\n\n },\n onError: function (err) {\n console.error(err);\n }\n }, 0);\n }\n\n private executeMiddleware_(input: WebWorkerRequest) {\n return promise((res) => {\n let index = 0;\n const lastIndex = this.middlewares.length - 1;\n const callNextMiddleware = () => {\n if (index <= lastIndex) {\n let promiseResult = this.middlewares[index++](input);\n if (!promiseResult || !promiseResult.then) {\n promiseResult = promiseResolve(promiseResult);\n }\n promiseResult.then(_ => {\n callNextMiddleware();\n });\n }\n else {\n res();\n }\n };\n callNextMiddleware();\n });\n }\n\n private callResultMiddleware(middlewares: any[], result) {\n return promise((res) => {\n let index = 0;\n const lastIndex = middlewares.length - 1;\n const callNextMiddleware = () => {\n if (index <= lastIndex) {\n let promiseResult = middlewares[index++](result);\n if (!promiseResult.then) {\n promiseResult = promiseResolve(promiseResult);\n }\n promiseResult.then(modifiedResult => {\n result = modifiedResult;\n callNextMiddleware();\n });\n }\n else {\n res(result);\n }\n };\n callNextMiddleware();\n });\n }\n\n protected pushApi(request: WebWorkerRequest): Promise {\n return new Promise((resolve, reject) => {\n let middlewares = [];\n request.onResult = (cb) => {\n middlewares.push((result) => {\n return cb(result);\n });\n };\n this.executeMiddleware_(request).then(() => {\n request.onSuccess = (result) => {\n this.callResultMiddleware(middlewares, result).then(modifiedResult => {\n resolve(modifiedResult);\n }).catch(err => {\n request.onError(err);\n });\n };\n request.onError = (err) => {\n middlewares = [];\n reject(err);\n };\n if (this.requestQueue_.length === 0) {\n this.eventBus_.emit(EVENT.RequestQueueFilled, []);\n const isConnectionApi = [API.CloseDb, API.DropDb, API.OpenDb, API.Terminate].indexOf(request.name) >= 0;\n if (!isConnectionApi && this.isDbIdle_ && this.isConOpened_) {\n this.openDb_();\n }\n else {\n clearTimeout(this.inactivityTimer_);\n }\n }\n this.prcoessExecutionOfQry_(request);\n }).catch(reject);\n });\n }\n\n private prcoessExecutionOfQry_(request: WebWorkerRequest, index?: number) {\n this.isDbIdle_ = false;\n if (index != null) {\n this.requestQueue_.splice(index, 0, request);\n }\n else {\n this.requestQueue_.push(request);\n }\n this.logger.log(\"request pushed: \" + request.name);\n this.executeQry_();\n }\n\n private executeQry_() {\n const requestQueueLength = this.requestQueue_.length;\n if (!this.isCodeExecuting_ && requestQueueLength > 0) {\n if (this.isConOpened_ === true) {\n this.sendRequestToWorker_(this.requestQueue_[0]);\n return;\n }\n\n const allowedQueryIndex = this.requestQueue_.findIndex(\n item => this.whiteListApi_.indexOf(item.name) >= 0\n );\n\n // shift allowed query to zeroth index\n if (allowedQueryIndex >= 0) {\n this.requestQueue_.splice(\n 0,\n 0,\n this.requestQueue_.splice(allowedQueryIndex, 1)[0]\n );\n this.sendRequestToWorker_(this.requestQueue_[0]);\n }\n }\n else if (requestQueueLength === 0 && this.isDbIdle_ === false && this.isConOpened_) {\n this.inactivityTimer_ = setTimeout(() => {\n this.prcoessExecutionOfQry_({\n name: API.CloseDb,\n onSuccess: function () {\n\n },\n onError: function (err) {\n console.error(err);\n }\n });\n }, 100) as any;\n }\n }\n\n private sendRequestToWorker_(request: WebWorkerRequest) {\n this.isCodeExecuting_ = true;\n this.logger.log(\"request executing: \" + request.name);\n const requestForWorker = {\n name: request.name,\n query: request.query\n } as WebWorkerRequest;\n if (this.isRuningInWorker === true) {\n this.worker_.postMessage(requestForWorker);\n }\n else {\n this.queryManager.run(requestForWorker);\n }\n }\n}\n","import { ConnectionHelper } from \"./connection_helper\";\nimport {\n ISelectQuery, ICountQuery, IInsertQuery, SetQuery,\n IUpdateQuery, IRemoveQuery, ITranscationQuery,\n API, IDataBase, EVENT, IPlugin, IIntersectQuery, IDbInfo, TMiddleware, promiseResolve, InitDbResult\n} from \"../common\";\n\nexport class Connection extends ConnectionHelper {\n\n constructor(worker?: Worker) {\n super(worker);\n }\n\n /**\n * initiate DataBase\n *\n * @param {IDataBase} dataBase\n * @returns\n * @memberof Connection\n */\n initDb(dataBase: IDataBase) {\n this.database = dataBase;\n return this.pushApi({\n name: API.InitDb,\n query: dataBase\n }).then((result: InitDbResult) => {\n let promiseObj: Promise;\n const db = result.database;\n if (result.isCreated) {\n if (result.oldVersion) {\n promiseObj = this.eventBus_.emit(EVENT.Upgrade, db, result.oldVersion, result.newVersion);\n }\n else {\n promiseObj = this.eventBus_.emit(EVENT.Create, db);\n }\n }\n return (promiseObj || promiseResolve()).then(_ => {\n return this.eventBus_.emit(EVENT.Open, db);\n }).then(_ => {\n return result.isCreated;\n });\n });\n }\n\n /**\n * drop dataBase\n *\n * @returns\n * @memberof Connection\n */\n dropDb() {\n return this.pushApi({\n name: API.DropDb\n });\n }\n\n /**\n * select data from table\n *\n * @template T\n * @param {ISelectQuery} query\n * @returns\n * @memberof Connection\n */\n select(query: ISelectQuery) {\n return this.pushApi({\n name: API.Select,\n query: query\n });\n }\n\n /**\n * get no of record from table\n *\n * @param {ICountQuery} query\n * @returns\n * @memberof Connection\n */\n count(query: ICountQuery) {\n return this.pushApi({\n name: API.Count,\n query: query\n });\n }\n\n /**\n * insert data into table\n *\n * @template T\n * @param {IInsertQuery} query\n * @returns\n * @memberof Connection\n */\n insert(query: IInsertQuery) {\n return this.pushApi({\n name: API.Insert,\n query: query\n });\n }\n\n /**\n * update data into table\n *\n * @param {IUpdateQuery} query\n * @returns\n * @memberof Connection\n */\n update(query: IUpdateQuery) {\n return this.pushApi({\n name: API.Update,\n query: query\n });\n }\n\n /**\n * remove data from table\n *\n * @param {IRemoveQuery} query\n * @returns\n * @memberof Connection\n */\n remove(query: IRemoveQuery) {\n return this.pushApi({\n name: API.Remove,\n query: query\n });\n }\n\n /**\n * delete all data from table\n *\n * @param {string} tableName\n * @returns\n * @memberof Connection\n */\n clear(tableName: string) {\n return this.pushApi({\n name: API.Clear,\n query: tableName\n });\n }\n\n /**\n * set log status\n *\n * @param {boolean} status\n * @memberof Connection\n */\n set logStatus(status: boolean) {\n this.logger.status = status;\n this.pushApi({\n name: API.ChangeLogStatus,\n query: status\n });\n }\n\n /**\n * open database\n *\n * @param {string} dbName\n * @returns\n * @memberof Connection\n */\n openDb(dbName: string, version?) {\n return this.pushApi({\n name: API.OpenDb,\n query: {\n version: version,\n name: dbName\n } as IDbInfo\n }).then((dataBase) => {\n this.database = dataBase;\n return dataBase;\n });\n }\n\n /**\n * returns list of database created\n *\n * @returns\n * @memberof Connection\n */\n getDbList(): Promise<[IDbInfo]> {\n console.warn(\"Api getDbList is recommended to use for debugging only. Do not use in code.\");\n return (indexedDB as any).databases();\n }\n\n /**\n * get the value from keystore table\n *\n * @template T\n * @param {string} key\n * @returns\n * @memberof Connection\n */\n get(key: string) {\n return this.pushApi({\n name: API.Get,\n query: key\n });\n }\n\n /**\n * set the value in keystore table \n *\n * @param {string} key\n * @param {*} value\n * @returns\n * @memberof Connection\n */\n set(key: string, value: any) {\n return this.pushApi({\n name: API.Set,\n query: {\n key: key, value: value\n } as SetQuery\n });\n }\n\n /**\n * terminate the connection\n *\n * @returns\n * @memberof Connection\n */\n terminate() {\n return this.pushApi({\n name: API.Terminate\n });\n }\n\n /**\n * execute transaction\n *\n * @template T\n * @param {ITranscationQuery} query\n * @returns\n * @memberof Connection\n */\n transaction(query: ITranscationQuery) {\n return this.pushApi({\n name: API.Transaction,\n query: query\n });\n }\n\n on(event: EVENT, eventCallBack: Function) {\n this.eventBus_.on(event, eventCallBack);\n }\n\n off(event: EVENT, eventCallBack: Function) {\n this.eventBus_.off(event, eventCallBack);\n }\n\n union(query: ISelectQuery[]) {\n return this.pushApi({\n name: API.Union,\n query\n });\n }\n\n intersect(query: IIntersectQuery) {\n return this.pushApi({\n name: API.Intersect,\n query\n });\n }\n\n addPlugin(plugin: IPlugin, params?) {\n return plugin.setup(this, params);\n }\n\n addMiddleware(middleware: TMiddleware | string, forWorker: boolean) {\n if (forWorker) {\n return this.pushApi({\n name: API.Middleware,\n query: middleware\n });\n }\n this.middlewares.push(middleware as TMiddleware);\n return Promise.resolve();\n }\n\n /**\n * import scripts in jsstore web worker. \n * Scripts method can be called using transaction api.\n * \n * @param {...string[]} urls\n * @returns\n * @memberof Connection\n */\n importScripts(...urls: string[]) {\n return this.pushApi({\n name: API.ImportScripts,\n query: urls\n });\n }\n}","export const promiseAll = (promises: any) => {\n return Promise.all(promises);\n};","export const forObj = (obj: object, cb: (key, value) => void) => {\n for (const key in obj) {\n cb(key, obj[key]);\n }\n}"],"sourceRoot":""}