diff --git a/lib/haro.js b/lib/haro.js index 525b30e..63bf25b 100644 --- a/lib/haro.js +++ b/lib/haro.js @@ -29,7 +29,6 @@ return b in a; } - function each (arg, fn) { const nth = arg.length; let i = -1; diff --git a/lib/haro.min.js.map b/lib/haro.min.js.map index 39bab49..9aa6563 100644 --- a/lib/haro.min.js.map +++ b/lib/haro.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["haro.js"],"names":["length","forEach","Array","from","isArray","add","Object","keys","set","type","JSON","parse","stringify","replace","querystring","endslash","indexOf","split","sort","localeCompare","map","toString","RegExp","toLowerCase","join","get","has","delete","size","push","call","concat","filter","reverse","data","cmd","records","index","key","delimiter","pattern","ids","on","postMessage","op","path","value","Math","random","substring","freeze","substr","floor","reindex","worker","URL","createObjectURL","Function","batch","process","nextTick","Promise","Map","Set","fetch","require","Blob","Worker","constructor","config","debounce","id","logging","patch","source","versioning","adapters","debounced","method","credentials","headers","accept","indexes","total","uri","versions","defineProperty","enumerable","beforeBatch","del","all","onbatch","log","onerror","beforeClear","beforeDelete","beforeRequest","beforeSet","beforeSync","clear","onclear","Error","apply","crawl","exec","ondelete","storage","then","message","stack","clearTimeout","setTimeout","transmit","dump","toArray","transform","entries","find","list","offload","arg","limit","registry","slice","load","console","useWorker","onrequest","onset","onsync","override","register","request","toUpperCase","body","ok","status","_headers","save","search","test","values","setUri","sync","sortBy","Allow","allow","includes","toObject","reduce","unload","unregister","terminate","onmessage","version","exports","define","amd","haro","module","window","global"],"mappings":"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","file":"unknown","sourcesContent":["/**\r\n * Harō is a modern immutable DataStore\r\n *\r\n * @author Jason Mulligan \r\n * @copyright 2018\r\n * @license BSD-3-Clause\r\n * @version 4.0.3\r\n */\r\n\r\n\r\n(function (global) {\r\n\tconst node = typeof process !== \"undefined\" && typeof process.nextTick === \"function\",\r\n\t\tPromise = global.Promise,\r\n\t\tMap = global.Map,\r\n\t\tSet = global.Set,\r\n\t\tfetch = global.fetch || (node ? require(\"node-fetch\") : undefined),\r\n\t\tBlob = global.Blob,\r\n\t\tWorker = global.Worker || (node ? require(\"tiny-worker\") : undefined),\r\n\t\tr = [8, 9, \"a\", \"b\"],\r\n\t\tregex = {\r\n\t\t\tquerystring: /\\?.*/,\r\n\t\t\tendslash: /\\/$/\r\n\t\t},\r\n\t\twebWorker = typeof Worker !== \"undefined\",\r\n\t\twebWorkerError = \"Web Worker not supported\",\r\n\t\tadapter = {};\r\n\r\n\tfunction has (a, b) {\r\n\t\treturn b in a;\r\n\t}\r\n\r\n\r\n\tfunction each (arg, fn) {\r\n\t\tconst nth = arg.length;\r\n\t\tlet i = -1;\r\n\r\n\t\twhile (++i < nth) {\r\n\t\t\tfn(arg[i], i);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction cast (input) {\r\n\t\tlet result;\r\n\r\n\t\tswitch (true) {\r\n\t\t\tcase input instanceof Map:\r\n\t\t\t\tresult = {};\r\n\t\t\t\tinput.forEach((value, key) => {\r\n\t\t\t\t\tresult[key] = cast(value);\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase input instanceof Set:\r\n\t\t\t\tresult = Array.from(input);\r\n\t\t\t\tbreak;\r\n\t\t\tcase Array.isArray(input):\r\n\t\t\t\tresult = new Set();\r\n\t\t\t\teach(input, i => result.add(cast(i)));\r\n\t\t\t\tbreak;\r\n\t\t\tcase input instanceof Object:\r\n\t\t\t\tresult = new Map();\r\n\t\t\t\teach(Object.keys(input), i => result.set(i, cast(input[i])));\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tresult = input;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tfunction blob (arg) {\r\n\t\treturn new Blob([arg], {type: \"application/javascript\"});\r\n\t}\r\n\r\n\tfunction clone (arg) {\r\n\t\treturn JSON.parse(JSON.stringify(arg, null, 0));\r\n\t}\r\n\r\n\tfunction concatURI (left, right) {\r\n\t\treturn left.replace(regex.querystring, \"\").replace(regex.endslash, \"\") + (right ? \"/\" + right : \"\");\r\n\t}\r\n\r\n\tfunction keyIndex (key, data, delimiter, pattern) {\r\n\t\tlet result;\r\n\r\n\t\tif (key.indexOf(delimiter) > -1) {\r\n\t\t\tresult = key.split(delimiter).sort((a, b) => a.localeCompare(b)).map(i => data[i].toString().replace(new RegExp(pattern, \"g\"), \"\").toLowerCase()).join(delimiter);\r\n\t\t} else {\r\n\t\t\tresult = data[key];\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tfunction delIndex (index, indexes, delimiter, key, data, pattern) {\r\n\t\tindex.forEach(i => {\r\n\t\t\tconst idx = indexes.get(i),\r\n\t\t\t\tvalue = keyIndex(i, data, delimiter, pattern);\r\n\r\n\t\t\tlet o;\r\n\r\n\t\t\tif (idx.has(value)) {\r\n\t\t\t\to = idx.get(value);\r\n\t\t\t\to.delete(key);\r\n\r\n\t\t\t\tif (o.size === 0) {\r\n\t\t\t\t\tidx.delete(value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction createIndexes (records, indexes, key, delimiter, pattern) {\r\n\t\tconst result = {};\r\n\r\n\t\teach(indexes, i => {\r\n\t\t\tresult[i] = {};\r\n\t\t});\r\n\r\n\t\teach(records, i => {\r\n\t\t\tconst lkey = i[key];\r\n\r\n\t\t\tif (lkey !== undefined) {\r\n\t\t\t\tindexes.forEach(index => {\r\n\t\t\t\t\tconst lindex = keyIndex(index, i, delimiter, pattern);\r\n\r\n\t\t\t\t\tif (!has(result[index], lindex)) {\r\n\t\t\t\t\t\tresult[index][lindex] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tresult[index][lindex].push(lkey);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tfunction iterate (obj, fn) {\r\n\t\tif (obj instanceof Object) {\r\n\t\t\teach(Object.keys(obj), i => fn.call(obj, obj[i], i));\r\n\t\t} else {\r\n\t\t\teach(obj, fn);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction merge (a, b) {\r\n\t\tif (a instanceof Object && b instanceof Object) {\r\n\t\t\teach(Object.keys(b), i => {\r\n\t\t\t\tif (a[i] instanceof Object && b[i] instanceof Object) {\r\n\t\t\t\t\ta[i] = merge(a[i], b[i]);\r\n\t\t\t\t} else if (Array.isArray(a[i]) && Array.isArray(b[i])) {\r\n\t\t\t\t\ta[i] = a[i].concat(b[i]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\ta[i] = b[i];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else if (Array.isArray(a) && Array.isArray(b)) {\r\n\t\t\ta = a.concat(b);\r\n\t\t} else {\r\n\t\t\ta = b;\r\n\t\t}\r\n\r\n\t\treturn a;\r\n\t}\r\n\r\n\tfunction joinData (id, a, b, key, on, type = \"inner\") {\r\n\t\tconst result = [];\r\n\r\n\t\tlet error = false,\r\n\t\t\terrorMsg = \"More than one record found on \";\r\n\r\n\t\tfunction join (left, right, ids, include = false, reverse = false) {\r\n\t\t\tconst keys = Object.keys(right[0]),\r\n\t\t\t\tfn = !reverse ? (x, i) => x[on] === i[key] : (x, i) => x[key] === i[on];\r\n\r\n\t\t\teach(left, i => {\r\n\t\t\t\tconst comp = {},\r\n\t\t\t\t\tc = right.filter(x => fn(x, i));\r\n\r\n\t\t\t\tlet valid = true;\r\n\r\n\t\t\t\tif (c.length > 1) {\r\n\t\t\t\t\terror = true;\r\n\t\t\t\t\terrorMsg += i[on];\r\n\t\t\t\t\tvalid = false;\r\n\t\t\t\t} else if (c.length === 1) {\r\n\t\t\t\t\teach([i, c[0]], (x, idx) => iterate(x, (v, k) => {\r\n\t\t\t\t\t\tcomp[ids[idx] + \"_\" + k] = v;\r\n\t\t\t\t\t}));\r\n\t\t\t\t} else if (include) {\r\n\t\t\t\t\titerate(i, (v, k) => {\r\n\t\t\t\t\t\tcomp[ids[0] + \"_\" + k] = v;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\teach(keys, k => {\r\n\t\t\t\t\t\tcomp[ids[1] + \"_\" + k] = null;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (valid && Object.keys(comp).length > 0) {\r\n\t\t\t\t\tresult.push(comp);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn valid;\r\n\t\t\t}, true);\r\n\t\t}\r\n\r\n\t\tif (type === \"inner\") {\r\n\t\t\tjoin(a, b, id);\r\n\t\t}\r\n\r\n\t\tif (type === \"left\") {\r\n\t\t\tjoin(a, b, id, true);\r\n\t\t}\r\n\r\n\t\tif (type === \"right\") {\r\n\t\t\tjoin(b, a, clone(id).reverse(), true, true);\r\n\t\t}\r\n\r\n\t\treturn !error ? result : errorMsg;\r\n\t}\r\n\r\n\tfunction onmessage (ev) {\r\n\t\tconst data = JSON.parse(ev.data),\r\n\t\t\tcmd = data.cmd;\r\n\r\n\t\tlet result;\r\n\r\n\t\tif (cmd === \"index\") {\r\n\t\t\tresult = createIndexes(data.records, data.index, data.key, data.delimiter, data.pattern);\r\n\t\t}\r\n\r\n\t\tif (cmd === \"join\") {\r\n\t\t\tresult = joinData(data.ids, data.records[0], data.records[1], data.key, data.on, data.type);\r\n\t\t}\r\n\r\n\t\tpostMessage(JSON.stringify(result));\r\n\t}\r\n\r\n\tfunction createPatch (ogdata = {}, data = {}, key = \"\", overwrite = false) {\r\n\t\tconst result = [];\r\n\r\n\t\tif (overwrite) {\r\n\t\t\titerate(ogdata, (v, k) => {\r\n\t\t\t\tif (k !== key && data[k] === undefined) {\r\n\t\t\t\t\tresult.push({op: \"remove\", path: \"/\" + k});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\titerate(data, (v, k) => {\r\n\t\t\tif (k !== key && ogdata[k] === undefined) {\r\n\t\t\t\tresult.push({op: \"add\", path: \"/\" + k, value: v});\r\n\t\t\t} else if (JSON.stringify(ogdata[k]) !== JSON.stringify(v)) {\r\n\t\t\t\tresult.push({op: \"replace\", path: \"/\" + k, value: v});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tfunction s () {\r\n\t\treturn ((Math.random() + 1) * 0x10000 | 0).toString(16).substring(1);\r\n\t}\r\n\r\n\tfunction setIndex (index, indexes, delimiter, key, data, indice, pattern) {\r\n\t\teach(!indice ? index : [indice], i => {\r\n\t\t\tlet lidx = keyIndex(i, data, delimiter, pattern),\r\n\t\t\t\tlindex;\r\n\r\n\t\t\tif (lidx !== undefined && lidx !== null) {\r\n\t\t\t\tlindex = indexes.get(i);\r\n\r\n\t\t\t\tif (!lindex.has(lidx)) {\r\n\t\t\t\t\tlindex.set(lidx, new Set());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlindex.get(lidx).add(key);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction toObjekt (arg, frozen = true) {\r\n\t\tconst result = {};\r\n\r\n\t\targ.forEach((value, key) => {\r\n\t\t\tconst obj = value;\r\n\r\n\t\t\tif (frozen) {\r\n\t\t\t\tObject.freeze(obj);\r\n\t\t\t}\r\n\r\n\t\t\tresult[clone(key)] = obj;\r\n\t\t});\r\n\r\n\t\tif (frozen) {\r\n\t\t\tObject.freeze(result);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tfunction uuid () {\r\n\t\treturn s() + s() + \"-\" + s() + \"-4\" + s().substr(0, 3) + \"-\" + r[Math.floor(Math.random() * 4)] + s().substr(0, 3) + \"-\" + s() + s() + s();\r\n\t}\r\n\r\n\tclass Haro {\r\n\t\tconstructor ({config = {}, debounce = 0, delimiter = \"|\", id = uuid(), index = [], key = \"\", logging = true, patch = false, pattern = \"\\\\s*|\\\\t*\", source = \"\", versioning = false} = {}) {\r\n\t\t\tthis.adapters = {};\r\n\t\t\tthis.data = new Map();\r\n\t\t\tthis.debounce = debounce;\r\n\t\t\tthis.debounced = new Map();\r\n\t\t\tthis.delimiter = delimiter;\r\n\t\t\tthis.config = {\r\n\t\t\t\tmethod: \"get\",\r\n\t\t\t\tcredentials: \"include\",\r\n\t\t\t\theaders: {\r\n\t\t\t\t\taccept: \"application/json\",\r\n\t\t\t\t\t\"content-type\": \"application/json\"\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tthis.id = id;\r\n\t\t\tthis.index = index;\r\n\t\t\tthis.indexes = new Map();\r\n\t\t\tthis.key = key;\r\n\t\t\tthis.logging = logging;\r\n\t\t\tthis.patch = patch;\r\n\t\t\tthis.pattern = pattern;\r\n\t\t\tthis.source = source;\r\n\t\t\tthis.total = 0;\r\n\t\t\tthis.uri = \"\";\r\n\t\t\tthis.worker = null;\r\n\t\t\tthis.versions = new Map();\r\n\t\t\tthis.versioning = versioning;\r\n\r\n\t\t\tObject.defineProperty(this, \"registry\", {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tget: () => Array.from(this.data.keys())\r\n\t\t\t});\r\n\r\n\t\t\tif (Object.keys(config).length > 1) {\r\n\t\t\t\tthis.config = merge(this.config, config);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tasync batch (args, type = \"set\", lazyLoad = false) {\r\n\t\t\tlet result;\r\n\r\n\t\t\tthis.beforeBatch(args, type);\r\n\r\n\t\t\ttry {\r\n\t\t\t\tconst fn = type === \"del\" ? i => this.del(i, true, lazyLoad) : i => this.set(null, i, true, true, lazyLoad);\r\n\r\n\t\t\t\tresult = await Promise.all(args.map(fn));\r\n\t\t\t\tthis.onbatch(type, result);\r\n\t\t\t\tthis.log(`Batch successful on ${this.id}`);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tthis.onerror(\"batch\", e);\r\n\t\t\t\tthis.log(`Batch failure on ${this.id}`);\r\n\t\t\t\tthrow e;\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tbeforeBatch () {}\r\n\r\n\t\tbeforeClear () {}\r\n\r\n\t\tbeforeDelete () {}\r\n\r\n\t\tbeforeRequest () {}\r\n\r\n\t\tbeforeSet () {}\r\n\r\n\t\tbeforeSync () {}\r\n\r\n\t\tclear () {\r\n\t\t\tthis.beforeClear();\r\n\t\t\tthis.total = 0;\r\n\t\t\tthis.data.clear();\r\n\t\t\tthis.indexes.clear();\r\n\t\t\tthis.versions.clear();\r\n\t\t\tthis.reindex().onclear();\r\n\t\t\tthis.log(`Cleared ${this.id}`);\r\n\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tasync cmd (type, ...args) {\r\n\t\t\tif (this.adapters[type] === void 0 || adapter[type] === void 0) {\r\n\t\t\t\tthrow new Error(`${type} not configured for persistent storage`);\r\n\t\t\t}\r\n\r\n\t\t\treturn await adapter[type].apply(this, [this, ...args]);\r\n\t\t}\r\n\r\n\t\tcrawl (arg) {\r\n\t\t\tlet result = clone(arg);\r\n\r\n\t\t\teach((this.source || \"\").split(\".\"), i => {\r\n\t\t\t\tresult = result[i];\r\n\t\t\t});\r\n\r\n\t\t\treturn result || arg;\r\n\t\t}\r\n\r\n\t\tdel (key, batch = false, lazyLoad = false, retry = false) {\r\n\t\t\tif (this.has(key) === false) {\r\n\t\t\t\tthrow new Error(\"Record not found\");\r\n\t\t\t}\r\n\r\n\t\t\tconst og = this.get(key, true);\r\n\r\n\t\t\treturn this.exec(async () => {\r\n\t\t\t\tthis.beforeDelete(key, batch, lazyLoad, retry);\r\n\t\t\t\tdelIndex(this.index, this.indexes, this.delimiter, key, og, this.pattern);\r\n\t\t\t\tthis.data.delete(key);\r\n\t\t\t\t--this.total;\r\n\t\t\t}, async () => {\r\n\t\t\t\tthis.ondelete(key, batch, retry, lazyLoad);\r\n\r\n\t\t\t\tif (this.versioning) {\r\n\t\t\t\t\tthis.versions.delete(key);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!lazyLoad) {\r\n\t\t\t\t\tthis.storage(\"remove\", key).then(success => {\r\n\t\t\t\t\t\tif (success) {\r\n\t\t\t\t\t\t\tthis.log(`Deleted ${key} from persistent storage`);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, e => this.log(`Error deleting ${key} from persistent storage: ${e.message || e.stack || e}`, \"error\"));\r\n\r\n\t\t\t\t\tif (!batch && !retry && this.uri) {\r\n\t\t\t\t\t\tif (this.debounced.has(key)) {\r\n\t\t\t\t\t\t\tclearTimeout(this.debounced.get(key));\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.debounced.set(key, setTimeout(async () => {\r\n\t\t\t\t\t\t\tthis.debounced.delete(key);\r\n\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\tawait this.transmit(key, null, og, false, \"delete\");\r\n\t\t\t\t\t\t\t} catch (err) {\r\n\t\t\t\t\t\t\t\tthis.log(err.stack || err.message || err, \"error\");\r\n\r\n\t\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\t\tawait this.set(key, og, true, true);\r\n\t\t\t\t\t\t\t\t\tthis.log(`Reverted ${key}`);\r\n\t\t\t\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\t\t\t\tthis.log(`Failed to revert ${key}`);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, this.debounce));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}, err => {\r\n\t\t\t\tthis.onerror(\"delete\", err);\r\n\t\t\t\tthrow err;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tdump (type = \"records\") {\r\n\t\t\treturn type === \"records\" ? this.toArray(null, false) : this.transform(this.indexes);\r\n\t\t}\r\n\r\n\t\tentries () {\r\n\t\t\treturn this.data.entries();\r\n\t\t}\r\n\r\n\t\tasync exec (first, second, handler) {\r\n\t\t\tlet result;\r\n\r\n\t\t\ttry {\r\n\t\t\t\tconst arg = await first();\r\n\t\t\t\tresult = await second(arg);\r\n\t\t\t} catch (err) {\r\n\t\t\t\thandler(err);\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tfind (where, raw = false) {\r\n\t\t\tconst key = Object.keys(where).sort((a, b) => a.localeCompare(b)).join(this.delimiter),\r\n\t\t\t\tvalue = keyIndex(key, where, this.delimiter, this.pattern),\r\n\t\t\t\tresult = [];\r\n\r\n\t\t\tif (this.indexes.has(key)) {\r\n\t\t\t\t(this.indexes.get(key).get(value) || new Set()).forEach(i => result.push(this.get(i, raw)));\r\n\t\t\t}\r\n\r\n\t\t\treturn raw ? result : this.list(...result);\r\n\t\t}\r\n\r\n\t\tfilter (fn, raw = false) {\r\n\t\t\tconst result = [];\r\n\r\n\t\t\tthis.forEach((value, key) => {\r\n\t\t\t\tif (fn(value, key) === true) {\r\n\t\t\t\t\tresult.push(this.get(key, raw));\r\n\t\t\t\t}\r\n\t\t\t}, this);\r\n\r\n\t\t\treturn raw ? result : this.list(...result);\r\n\t\t}\r\n\r\n\t\tforEach (fn, ctx) {\r\n\t\t\tthis.data.forEach((value, key) => fn(clone(value), clone(key)), ctx || this.data);\r\n\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tget (key, raw = false) {\r\n\t\t\tconst result = clone(this.data.get(key) || null);\r\n\r\n\t\t\treturn result && !raw ? this.list(key, result) : result;\r\n\t\t}\r\n\r\n\t\thas (key, map) {\r\n\t\t\treturn (map || this.data).has(key);\r\n\t\t}\r\n\r\n\t\tasync join (other, on, type = \"inner\", where = []) {\r\n\t\t\tlet result;\r\n\r\n\t\t\tif (other.total > 0) {\r\n\t\t\t\tif (where.length > 0) {\r\n\t\t\t\t\tresult = await this.offload([[this.id, other.id], this.find(where[0], true), !where[1] ? other.toArray(null, true) : other.find(where[1], true), this.key, on || this.key, type], \"join\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult = await this.offload([[this.id, other.id], this.toArray(null, true), other.toArray(null, true), this.key, on || this.key, type], \"join\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (typeof arg === \"string\") {\r\n\t\t\t\t\tthrow new Error(result);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult = [];\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tkeys () {\r\n\t\t\treturn this.data.keys();\r\n\t\t}\r\n\r\n\t\tlimit (offset = 0, max = 0, raw = false) {\r\n\t\t\tconst result = this.registry.slice(offset, offset + max).map(i => this.get(i, raw));\r\n\r\n\t\t\treturn raw ? result : this.list(...result);\r\n\t\t}\r\n\r\n\t\tlist (...args) {\r\n\t\t\treturn Object.freeze(args.map(i => Object.freeze(i)));\r\n\t\t}\r\n\r\n\t\tasync load (type = \"mongo\", key = undefined) {\r\n\t\t\tconst batch = key === undefined,\r\n\t\t\t\tid = !batch ? key : this.id;\r\n\t\t\tlet result;\r\n\r\n\t\t\tif (batch) {\r\n\t\t\t\tthis.clear();\r\n\t\t\t}\r\n\r\n\t\t\ttry {\r\n\t\t\t\tconst data = await this.cmd(type, \"get\", key);\r\n\r\n\t\t\t\tresult = batch ? this.batch(data, \"set\", true) : this.set(key, data, true, true, true);\r\n\t\t\t\tthis.log(`Loaded ${id} from ${type} persistent storage`);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tthis.log(`Error loading ${id} from ${type} persistent storage: ${e.message || e.stack || e}`, \"error\");\r\n\t\t\t\tthrow e;\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tlog (arg = \"\", type = \"log\") {\r\n\t\t\tif (this.logging) {\r\n\t\t\t\tconsole[type](`haro: ${arg}`);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tmap (fn, raw = false) {\r\n\t\t\tconst result = [];\r\n\r\n\t\t\tthis.forEach((value, key) => result.push(fn(value, key)));\r\n\r\n\t\t\treturn raw ? result : this.list(...result);\r\n\t\t}\r\n\r\n\t\tasync offload (data, cmd = \"index\", index = this.index) {\r\n\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\tif (this.worker) {\r\n\t\t\t\t\tconst obj = this.useWorker(resolve, reject);\r\n\t\t\t\t\tlet payload;\r\n\r\n\t\t\t\t\tif (cmd === \"index\") {\r\n\t\t\t\t\t\tpayload = {\r\n\t\t\t\t\t\t\tcmd: cmd,\r\n\t\t\t\t\t\t\tindex: index,\r\n\t\t\t\t\t\t\trecords: data,\r\n\t\t\t\t\t\t\tkey: this.key,\r\n\t\t\t\t\t\t\tdelimiter: this.delimiter,\r\n\t\t\t\t\t\t\tpattern: this.pattern\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t} else if (cmd === \"join\") {\r\n\t\t\t\t\t\tpayload = {\r\n\t\t\t\t\t\t\tcmd: cmd,\r\n\t\t\t\t\t\t\tids: data[0],\r\n\t\t\t\t\t\t\trecords: [data[1], data[2]],\r\n\t\t\t\t\t\t\tkey: data[3],\r\n\t\t\t\t\t\t\ton: data[4],\r\n\t\t\t\t\t\t\ttype: data[5]\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tobj.postMessage(JSON.stringify(payload, null, 0));\r\n\t\t\t\t} else {\r\n\t\t\t\t\treject(new Error(webWorkerError));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tonbatch () {}\r\n\r\n\t\tonclear () {}\r\n\r\n\t\tondelete () {}\r\n\r\n\t\tonerror () {}\r\n\r\n\t\tonrequest (arg) {\r\n\t\t\treturn arg;\r\n\t\t}\r\n\r\n\t\tonset () {}\r\n\r\n\t\tonsync () {}\r\n\r\n\t\tasync override (data, type = \"records\", fn = undefined) {\r\n\t\t\tconst result = true;\r\n\r\n\t\t\tif (type === \"indexes\") {\r\n\t\t\t\tthis.indexes = this.transform(data, fn);\r\n\t\t\t} else if (type === \"records\") {\r\n\t\t\t\tthis.data.clear();\r\n\t\t\t\tthis.indexes.clear();\r\n\t\t\t\teach(data, datum => this.data.set(this.key ? datum[this.key] : uuid() || uuid(), datum));\r\n\t\t\t\tthis.total = this.data.size;\r\n\t\t\t} else {\r\n\t\t\t\tthrow new Error(\"Invalid type\");\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tregister (key, fn) {\r\n\t\t\tadapter[key] = fn;\r\n\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\treindex (index) {\r\n\t\t\tconst indices = index ? [index] : this.index;\r\n\r\n\t\t\tif (index && this.index.indexOf(index) === -1) {\r\n\t\t\t\tthis.index.push(index);\r\n\t\t\t}\r\n\r\n\t\t\teach(indices, i => this.indexes.set(i, new Map()));\r\n\t\t\tthis.forEach((data, key) => each(indices, i => setIndex(this.index, this.indexes, this.delimiter, key, data, i, this.pattern)));\r\n\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tasync request (input, config = {}) {\r\n\t\t\treturn new Promise(async (resolve, reject) => {\r\n\t\t\t\tconst cfg = merge(clone(this.config), config),\r\n\t\t\t\t\tref = [input, cfg],\r\n\t\t\t\t\theaders = {};\r\n\r\n\t\t\t\tcfg.method = cfg.method.toUpperCase();\r\n\r\n\t\t\t\tif (cfg.method === \"DELETE\") {\r\n\t\t\t\t\tdelete cfg.body;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.beforeRequest(...ref);\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst res = await fetch(input, cfg),\r\n\t\t\t\t\t\tok = res.ok,\r\n\t\t\t\t\t\tstatus = res.status;\r\n\r\n\t\t\t\t\tif (res.headers._headers) {\r\n\t\t\t\t\t\teach(Object.keys(res.headers._headers), i => {\r\n\t\t\t\t\t\t\theaders[i] = res.headers._headers[i].join(\", \");\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tfor (const pair of res.headers.entries()) {\r\n\t\t\t\t\t\t\theaders[pair[0]] = pair[1];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst arg = await res[(headers[\"content-type\"] || \"\").indexOf(\"application/json\") > -1 ? \"json\" : \"text\"](),\r\n\t\t\t\t\t\tnext = ok ? resolve : reject;\r\n\r\n\t\t\t\t\tnext(this.list(this.onrequest(arg, status, headers), status, headers));\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\treject(this.list(e.message, 0, {}));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tasync save (type = \"mongo\") {\r\n\t\t\tlet result;\r\n\r\n\t\t\ttry {\r\n\t\t\t\tresult = await this.cmd(type, \"set\");\r\n\t\t\t\tthis.log(`Saved ${this.id} to ${type} persistent storage`);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tthis.log(`Error saving ${this.id} to ${type} persistent storage: ${e.message || e.stack || e}`, \"error\");\r\n\t\t\t\tthrow e;\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tsearch (value, index, raw = false) {\r\n\t\t\tconst result = new Map(),\r\n\t\t\t\tfn = typeof value === \"function\",\r\n\t\t\t\trgex = value && typeof value.test === \"function\";\r\n\r\n\t\t\tif (value) {\r\n\t\t\t\teach(index ? Array.isArray(index) ? index : [index] : this.index, i => {\r\n\t\t\t\t\tlet idx = this.indexes.get(i);\r\n\r\n\t\t\t\t\tif (idx) {\r\n\t\t\t\t\t\tidx.forEach((lset, lkey) => {\r\n\t\t\t\t\t\t\tswitch (true) {\r\n\t\t\t\t\t\t\t\tcase fn && value(lkey, i):\r\n\t\t\t\t\t\t\t\tcase rgex && value.test(Array.isArray(lkey) ? lkey.join(\", \") : lkey):\r\n\t\t\t\t\t\t\t\tcase lkey === value:\r\n\t\t\t\t\t\t\t\t\tlset.forEach(key => {\r\n\t\t\t\t\t\t\t\t\t\tif (!result.has(key) && this.has(key)) {\r\n\t\t\t\t\t\t\t\t\t\t\tresult.set(key, this.get(key, raw));\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\t\tvoid 0;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\treturn raw ? Array.from(result.values()) : this.list(...Array.from(result.values()));\r\n\t\t}\r\n\r\n\t\tasync set (key, data, batch = false, override = false, lazyLoad = false, retry = false) {\r\n\t\t\tlet x = clone(data),\r\n\t\t\t\tmethod, og;\r\n\r\n\t\t\treturn this.exec(async () => {\r\n\t\t\t\tif (key === undefined || key === null) {\r\n\t\t\t\t\tkey = this.key && x[this.key] !== undefined ? x[this.key] : uuid();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.beforeSet(key, data, batch, override, lazyLoad, retry);\r\n\r\n\t\t\t\tif (!this.data.has(key)) {\r\n\t\t\t\t\t++this.total;\r\n\t\t\t\t\tmethod = \"post\";\r\n\r\n\t\t\t\t\tif (this.versioning) {\r\n\t\t\t\t\t\tthis.versions.set(key, new Set());\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tog = this.get(key, true);\r\n\t\t\t\t\tdelIndex(this.index, this.indexes, this.delimiter, key, og, this.pattern);\r\n\t\t\t\t\tmethod = \"put\";\r\n\r\n\t\t\t\t\tif (this.versioning) {\r\n\t\t\t\t\t\tthis.versions.get(key).add(Object.freeze(clone(og)));\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (override === false) {\r\n\t\t\t\t\t\tx = merge(clone(og), x);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.data.set(key, x);\r\n\t\t\t\tsetIndex(this.index, this.indexes, this.delimiter, key, x, null, this.pattern);\r\n\r\n\t\t\t\treturn this.get(key);\r\n\t\t\t}, async arg => {\r\n\t\t\t\tthis.onset(arg, batch, retry, lazyLoad);\r\n\r\n\t\t\t\tif (!lazyLoad) {\r\n\t\t\t\t\tthis.storage(\"set\", key, x).then(success => {\r\n\t\t\t\t\t\tif (success) {\r\n\t\t\t\t\t\t\tthis.log(`Saved ${key} to persistent storage`);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, e => this.log(`Error saving ${key} to persistent storage: ${e.message || e.stack || e}`, \"error\"));\r\n\r\n\t\t\t\t\tif (!batch && !retry && this.uri) {\r\n\t\t\t\t\t\tif (this.debounced.has(key)) {\r\n\t\t\t\t\t\t\tclearTimeout(this.debounced.get(key));\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.debounced.set(key, setTimeout(async () => {\r\n\t\t\t\t\t\t\tthis.debounced.delete(key);\r\n\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\tawait this.transmit(key, x, og, override, method);\r\n\r\n\t\t\t\t\t\t\t\tif (og) {\r\n\t\t\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\t\t\tawait this.set(key, og, batch, true, lazyLoad, true);\r\n\t\t\t\t\t\t\t\t\t\tthis.log(`Reverted ${key}`);\r\n\t\t\t\t\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\t\t\t\t\tthis.log(`Failed to revert ${key}`);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\t\t\tawait this.del(key, true);\r\n\t\t\t\t\t\t\t\t\t\tthis.log(`Reverted ${key}`);\r\n\t\t\t\t\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\t\t\t\t\tthis.log(`Failed to revert ${key}`);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\t\t\tthis.log(e.stack || e.message || e, \"error\");\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, this.debounce));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn arg;\r\n\t\t\t}, err => {\r\n\t\t\t\tthis.onerror(\"set\", err);\r\n\t\t\t\tthrow err;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tasync setUri (uri, clear = false) {\r\n\t\t\tthis.uri = uri;\r\n\r\n\t\t\treturn this.uri !== \"\" ? await this.sync(clear) : [];\r\n\t\t}\r\n\r\n\t\tsort (fn, frozen = true) {\r\n\t\t\treturn frozen ? Object.freeze(this.limit(0, this.total, true).sort(fn).map(i => Object.freeze(i))) : this.limit(0, this.total, true).sort(fn);\r\n\t\t}\r\n\r\n\t\tsortBy (index, raw = false) {\r\n\t\t\tconst result = [],\r\n\t\t\t\tkeys = [];\r\n\r\n\t\t\tlet lindex;\r\n\r\n\t\t\tif (!this.indexes.has(index)) {\r\n\t\t\t\tthis.reindex(index);\r\n\t\t\t}\r\n\r\n\t\t\tlindex = this.indexes.get(index);\r\n\t\t\tlindex.forEach((idx, key) => keys.push(key));\r\n\t\t\teach(keys.sort(), i => lindex.get(i).forEach(key => result.push(this.get(key, raw))));\r\n\r\n\t\t\treturn raw ? result : this.list(...result);\r\n\t\t}\r\n\r\n\t\tasync storage (...args) {\r\n\t\t\tlet result;\r\n\r\n\t\t\ttry {\r\n\t\t\t\tconst deferreds = Object.keys(this.adapters).map(async i => await this.cmd.apply(this, [i, ...args]));\r\n\r\n\t\t\t\tif (deferreds.length > 0) {\r\n\t\t\t\t\tawait Promise.all(deferreds);\r\n\t\t\t\t\tresult = true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult = false;\r\n\t\t\t\t}\r\n\t\t\t} catch (e) {\r\n\t\t\t\tthis.log(e.stack || e.message || e, \"error\");\r\n\t\t\t\tthrow e;\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tasync sync (clear = false) {\r\n\t\t\tlet result;\r\n\r\n\t\t\tthis.beforeSync(this.uri, clear);\r\n\r\n\t\t\ttry {\r\n\t\t\t\tconst arg = await this.request(this.uri),\r\n\t\t\t\t\tdata = this.source ? this.crawl(arg[0]) : arg[0];\r\n\r\n\t\t\t\tthis.patch = (arg[2].Allow || arg[2].allow || \"\").includes(\"PATCH\");\r\n\r\n\t\t\t\tif (clear) {\r\n\t\t\t\t\tthis.clear();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresult = await this.batch(data, \"set\");\r\n\t\t\t\tthis.onsync(result);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tthis.onerror(\"sync\", e[0] || e);\r\n\t\t\t\tthrow e[0] || e;\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\ttoArray (data, frozen = true) {\r\n\t\t\tlet result;\r\n\r\n\t\t\tif (data) {\r\n\t\t\t\tresult = data.map(i => frozen ? i[1] : clone(i[1]));\r\n\t\t\t} else {\r\n\t\t\t\tresult = this.limit(0, this.total, true);\r\n\r\n\t\t\t\tif (frozen) {\r\n\t\t\t\t\teach(result, i => Object.freeze(i));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn frozen ? Object.freeze(result) : result;\r\n\t\t}\r\n\r\n\t\ttoObject (data, frozen = true) {\r\n\t\t\tconst result = !data ? toObjekt(this, frozen) : data.reduce((a, b) => {\r\n\t\t\t\tconst obj = clone(b[1]);\r\n\r\n\t\t\t\tif (frozen) {\r\n\t\t\t\t\tObject.freeze(obj);\r\n\t\t\t\t}\r\n\r\n\t\t\t\ta[b[0]] = obj;\r\n\r\n\t\t\t\treturn a;\r\n\t\t\t}, {});\r\n\r\n\t\t\treturn frozen ? Object.freeze(result) : result;\r\n\t\t}\r\n\r\n\t\ttransform (input, fn) {\r\n\t\t\treturn typeof fn === \"function\" ? fn(input) : cast(input);\r\n\t\t}\r\n\r\n\t\tasync transmit (key, data, og, override = false, method = \"post\") {\r\n\t\t\tconst uri = concatURI(this.uri, data ? key : null);\r\n\r\n\t\t\tlet body, result;\r\n\r\n\t\t\tif (this.patch) {\r\n\t\t\t\tif (data === void 0) {\r\n\t\t\t\t\tbody = [{op: \"remove\", path: \"/\", value: key}];\r\n\t\t\t\t} else if (og === void 0) {\r\n\t\t\t\t\tbody = [{op: \"add\", path: \"/\", value: data}];\r\n\t\t\t\t} else if (override) {\r\n\t\t\t\t\tbody = [{op: \"replace\", path: \"/\", value: data}];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbody = createPatch(og, data, this.key);\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tresult = await this.request(uri, {method: \"patch\", body: JSON.stringify(body, null, 0)});\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tif (e[1] === 405) {\r\n\t\t\t\t\t\tthis.patch = false;\r\n\t\t\t\t\t\tresult = await this.request(!data ? concatURI(this.uri, key) : uri, {\r\n\t\t\t\t\t\t\tmethod: method,\r\n\t\t\t\t\t\t\tbody: JSON.stringify(data, null, 0)\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow e;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult = await this.request(uri, {method: method, body: JSON.stringify(data, null, 0)});\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tasync unload (type = \"mongo\", key = undefined) {\r\n\t\t\tconst id = key !== undefined ? key : this.id;\r\n\t\t\tlet result;\r\n\r\n\t\t\ttry {\r\n\t\t\t\tresult = await this.cmd(type, \"remove\", key);\r\n\t\t\t\tthis.log(`Unloaded ${id} from ${type} persistent storage`);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tthis.log(`Error unloading ${id} from ${type} persistent storage: ${e.message || e.stack || e}`, \"error\");\r\n\t\t\t\tthrow e;\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tunregister (key) {\r\n\t\t\tdelete adapter[key];\r\n\t\t}\r\n\r\n\t\tvalues () {\r\n\t\t\treturn this.data.values();\r\n\t\t}\r\n\r\n\t\tuseWorker (resolve, reject) {\r\n\t\t\tlet obj;\r\n\r\n\t\t\tif (this.worker) {\r\n\t\t\t\tobj = new Worker(this.worker);\r\n\r\n\t\t\t\tobj.onerror = err => {\r\n\t\t\t\t\treject(err);\r\n\t\t\t\t\tobj.terminate();\r\n\t\t\t\t};\r\n\r\n\t\t\t\tobj.onmessage = ev => {\r\n\t\t\t\t\tresolve(JSON.parse(ev.data));\r\n\t\t\t\t\tobj.terminate();\r\n\t\t\t\t};\r\n\t\t\t} else {\r\n\t\t\t\treject(new Error(webWorkerError));\r\n\t\t\t}\r\n\r\n\t\t\treturn obj;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction factory (data = null, config = {}) {\r\n\t\tconst obj = new Haro(config).reindex();\r\n\r\n\t\tif (webWorker) {\r\n\t\t\tconst functions = [\r\n\t\t\t\tcast.toString(),\r\n\t\t\t\tclone.toString(),\r\n\t\t\t\tcreateIndexes.toString(),\r\n\t\t\t\teach.toString(),\r\n\t\t\t\thas.toString(),\r\n\t\t\t\titerate.toString(),\r\n\t\t\t\tjoinData.toString(),\r\n\t\t\t\tkeyIndex.toString(),\r\n\t\t\t\tsetIndex.toString(),\r\n\t\t\t\t(node === false ? \"\" : \"self.\") + \"onmessage = \" + onmessage.toString() + \";\"\r\n\t\t\t];\r\n\r\n\t\t\tobj.worker = node === false ? global.URL.createObjectURL(blob(functions.join(\"\\n\"))) : new Function(functions.join(\"\\n\"));\r\n\t\t}\r\n\r\n\t\tif (data) {\r\n\t\t\tobj.batch(data, \"set\");\r\n\t\t}\r\n\r\n\t\treturn obj;\r\n\t}\r\n\r\n\tfactory.transform = cast;\r\n\tfactory.version = \"4.0.3\";\r\n\r\n\t// Node, AMD & window supported\r\n\tif (typeof exports !== \"undefined\") {\r\n\t\tmodule.exports = factory;\r\n\t} else if (typeof define === \"function\" && define.amd !== void 0) {\r\n\t\tdefine(() => factory);\r\n\t} else {\r\n\t\tglobal.haro = factory;\r\n\t}\r\n}(typeof window !== \"undefined\" ? window : global));\r\n"]} \ No newline at end of file +{"version":3,"sources":["haro.js"],"names":["length","forEach","Array","from","isArray","add","Object","keys","set","type","JSON","parse","stringify","replace","querystring","endslash","indexOf","split","sort","localeCompare","map","toString","RegExp","toLowerCase","join","get","has","delete","size","push","call","concat","filter","reverse","data","cmd","records","index","key","delimiter","pattern","ids","on","postMessage","op","path","value","Math","random","substring","freeze","substr","floor","reindex","worker","URL","createObjectURL","Function","batch","process","nextTick","Promise","Map","Set","fetch","require","Blob","Worker","constructor","config","debounce","id","logging","patch","source","versioning","adapters","debounced","method","credentials","headers","accept","indexes","total","uri","versions","defineProperty","enumerable","beforeBatch","del","all","onbatch","log","onerror","beforeClear","beforeDelete","beforeRequest","beforeSet","beforeSync","clear","onclear","Error","apply","crawl","exec","ondelete","storage","then","message","stack","clearTimeout","setTimeout","transmit","dump","toArray","transform","entries","find","list","offload","arg","limit","registry","slice","load","console","useWorker","onrequest","onset","onsync","override","register","request","toUpperCase","body","ok","status","_headers","save","search","test","values","setUri","sync","sortBy","Allow","allow","includes","toObject","reduce","unload","unregister","terminate","onmessage","version","exports","define","amd","haro","module","window","global"],"mappings":"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","file":"unknown","sourcesContent":["/**\r\n * Harō is a modern immutable DataStore\r\n *\r\n * @author Jason Mulligan \r\n * @copyright 2018\r\n * @license BSD-3-Clause\r\n * @version 4.0.3\r\n */\r\n\r\n\r\n(function (global) {\r\n\tconst node = typeof process !== \"undefined\" && typeof process.nextTick === \"function\",\r\n\t\tPromise = global.Promise,\r\n\t\tMap = global.Map,\r\n\t\tSet = global.Set,\r\n\t\tfetch = global.fetch || (node ? require(\"node-fetch\") : undefined),\r\n\t\tBlob = global.Blob,\r\n\t\tWorker = global.Worker || (node ? require(\"tiny-worker\") : undefined),\r\n\t\tr = [8, 9, \"a\", \"b\"],\r\n\t\tregex = {\r\n\t\t\tquerystring: /\\?.*/,\r\n\t\t\tendslash: /\\/$/\r\n\t\t},\r\n\t\twebWorker = typeof Worker !== \"undefined\",\r\n\t\twebWorkerError = \"Web Worker not supported\",\r\n\t\tadapter = {};\r\n\r\n\tfunction has (a, b) {\r\n\t\treturn b in a;\r\n\t}\r\n\r\n\tfunction each (arg, fn) {\r\n\t\tconst nth = arg.length;\r\n\t\tlet i = -1;\r\n\r\n\t\twhile (++i < nth) {\r\n\t\t\tfn(arg[i], i);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction cast (input) {\r\n\t\tlet result;\r\n\r\n\t\tswitch (true) {\r\n\t\t\tcase input instanceof Map:\r\n\t\t\t\tresult = {};\r\n\t\t\t\tinput.forEach((value, key) => {\r\n\t\t\t\t\tresult[key] = cast(value);\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase input instanceof Set:\r\n\t\t\t\tresult = Array.from(input);\r\n\t\t\t\tbreak;\r\n\t\t\tcase Array.isArray(input):\r\n\t\t\t\tresult = new Set();\r\n\t\t\t\teach(input, i => result.add(cast(i)));\r\n\t\t\t\tbreak;\r\n\t\t\tcase input instanceof Object:\r\n\t\t\t\tresult = new Map();\r\n\t\t\t\teach(Object.keys(input), i => result.set(i, cast(input[i])));\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tresult = input;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tfunction blob (arg) {\r\n\t\treturn new Blob([arg], {type: \"application/javascript\"});\r\n\t}\r\n\r\n\tfunction clone (arg) {\r\n\t\treturn JSON.parse(JSON.stringify(arg, null, 0));\r\n\t}\r\n\r\n\tfunction concatURI (left, right) {\r\n\t\treturn left.replace(regex.querystring, \"\").replace(regex.endslash, \"\") + (right ? \"/\" + right : \"\");\r\n\t}\r\n\r\n\tfunction keyIndex (key, data, delimiter, pattern) {\r\n\t\tlet result;\r\n\r\n\t\tif (key.indexOf(delimiter) > -1) {\r\n\t\t\tresult = key.split(delimiter).sort((a, b) => a.localeCompare(b)).map(i => data[i].toString().replace(new RegExp(pattern, \"g\"), \"\").toLowerCase()).join(delimiter);\r\n\t\t} else {\r\n\t\t\tresult = data[key];\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tfunction delIndex (index, indexes, delimiter, key, data, pattern) {\r\n\t\tindex.forEach(i => {\r\n\t\t\tconst idx = indexes.get(i),\r\n\t\t\t\tvalue = keyIndex(i, data, delimiter, pattern);\r\n\r\n\t\t\tlet o;\r\n\r\n\t\t\tif (idx.has(value)) {\r\n\t\t\t\to = idx.get(value);\r\n\t\t\t\to.delete(key);\r\n\r\n\t\t\t\tif (o.size === 0) {\r\n\t\t\t\t\tidx.delete(value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction createIndexes (records, indexes, key, delimiter, pattern) {\r\n\t\tconst result = {};\r\n\r\n\t\teach(indexes, i => {\r\n\t\t\tresult[i] = {};\r\n\t\t});\r\n\r\n\t\teach(records, i => {\r\n\t\t\tconst lkey = i[key];\r\n\r\n\t\t\tif (lkey !== undefined) {\r\n\t\t\t\tindexes.forEach(index => {\r\n\t\t\t\t\tconst lindex = keyIndex(index, i, delimiter, pattern);\r\n\r\n\t\t\t\t\tif (!has(result[index], lindex)) {\r\n\t\t\t\t\t\tresult[index][lindex] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tresult[index][lindex].push(lkey);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tfunction iterate (obj, fn) {\r\n\t\tif (obj instanceof Object) {\r\n\t\t\teach(Object.keys(obj), i => fn.call(obj, obj[i], i));\r\n\t\t} else {\r\n\t\t\teach(obj, fn);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction merge (a, b) {\r\n\t\tif (a instanceof Object && b instanceof Object) {\r\n\t\t\teach(Object.keys(b), i => {\r\n\t\t\t\tif (a[i] instanceof Object && b[i] instanceof Object) {\r\n\t\t\t\t\ta[i] = merge(a[i], b[i]);\r\n\t\t\t\t} else if (Array.isArray(a[i]) && Array.isArray(b[i])) {\r\n\t\t\t\t\ta[i] = a[i].concat(b[i]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\ta[i] = b[i];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else if (Array.isArray(a) && Array.isArray(b)) {\r\n\t\t\ta = a.concat(b);\r\n\t\t} else {\r\n\t\t\ta = b;\r\n\t\t}\r\n\r\n\t\treturn a;\r\n\t}\r\n\r\n\tfunction joinData (id, a, b, key, on, type = \"inner\") {\r\n\t\tconst result = [];\r\n\r\n\t\tlet error = false,\r\n\t\t\terrorMsg = \"More than one record found on \";\r\n\r\n\t\tfunction join (left, right, ids, include = false, reverse = false) {\r\n\t\t\tconst keys = Object.keys(right[0]),\r\n\t\t\t\tfn = !reverse ? (x, i) => x[on] === i[key] : (x, i) => x[key] === i[on];\r\n\r\n\t\t\teach(left, i => {\r\n\t\t\t\tconst comp = {},\r\n\t\t\t\t\tc = right.filter(x => fn(x, i));\r\n\r\n\t\t\t\tlet valid = true;\r\n\r\n\t\t\t\tif (c.length > 1) {\r\n\t\t\t\t\terror = true;\r\n\t\t\t\t\terrorMsg += i[on];\r\n\t\t\t\t\tvalid = false;\r\n\t\t\t\t} else if (c.length === 1) {\r\n\t\t\t\t\teach([i, c[0]], (x, idx) => iterate(x, (v, k) => {\r\n\t\t\t\t\t\tcomp[ids[idx] + \"_\" + k] = v;\r\n\t\t\t\t\t}));\r\n\t\t\t\t} else if (include) {\r\n\t\t\t\t\titerate(i, (v, k) => {\r\n\t\t\t\t\t\tcomp[ids[0] + \"_\" + k] = v;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\teach(keys, k => {\r\n\t\t\t\t\t\tcomp[ids[1] + \"_\" + k] = null;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (valid && Object.keys(comp).length > 0) {\r\n\t\t\t\t\tresult.push(comp);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn valid;\r\n\t\t\t}, true);\r\n\t\t}\r\n\r\n\t\tif (type === \"inner\") {\r\n\t\t\tjoin(a, b, id);\r\n\t\t}\r\n\r\n\t\tif (type === \"left\") {\r\n\t\t\tjoin(a, b, id, true);\r\n\t\t}\r\n\r\n\t\tif (type === \"right\") {\r\n\t\t\tjoin(b, a, clone(id).reverse(), true, true);\r\n\t\t}\r\n\r\n\t\treturn !error ? result : errorMsg;\r\n\t}\r\n\r\n\tfunction onmessage (ev) {\r\n\t\tconst data = JSON.parse(ev.data),\r\n\t\t\tcmd = data.cmd;\r\n\r\n\t\tlet result;\r\n\r\n\t\tif (cmd === \"index\") {\r\n\t\t\tresult = createIndexes(data.records, data.index, data.key, data.delimiter, data.pattern);\r\n\t\t}\r\n\r\n\t\tif (cmd === \"join\") {\r\n\t\t\tresult = joinData(data.ids, data.records[0], data.records[1], data.key, data.on, data.type);\r\n\t\t}\r\n\r\n\t\tpostMessage(JSON.stringify(result));\r\n\t}\r\n\r\n\tfunction createPatch (ogdata = {}, data = {}, key = \"\", overwrite = false) {\r\n\t\tconst result = [];\r\n\r\n\t\tif (overwrite) {\r\n\t\t\titerate(ogdata, (v, k) => {\r\n\t\t\t\tif (k !== key && data[k] === undefined) {\r\n\t\t\t\t\tresult.push({op: \"remove\", path: \"/\" + k});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\titerate(data, (v, k) => {\r\n\t\t\tif (k !== key && ogdata[k] === undefined) {\r\n\t\t\t\tresult.push({op: \"add\", path: \"/\" + k, value: v});\r\n\t\t\t} else if (JSON.stringify(ogdata[k]) !== JSON.stringify(v)) {\r\n\t\t\t\tresult.push({op: \"replace\", path: \"/\" + k, value: v});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tfunction s () {\r\n\t\treturn ((Math.random() + 1) * 0x10000 | 0).toString(16).substring(1);\r\n\t}\r\n\r\n\tfunction setIndex (index, indexes, delimiter, key, data, indice, pattern) {\r\n\t\teach(!indice ? index : [indice], i => {\r\n\t\t\tlet lidx = keyIndex(i, data, delimiter, pattern),\r\n\t\t\t\tlindex;\r\n\r\n\t\t\tif (lidx !== undefined && lidx !== null) {\r\n\t\t\t\tlindex = indexes.get(i);\r\n\r\n\t\t\t\tif (!lindex.has(lidx)) {\r\n\t\t\t\t\tlindex.set(lidx, new Set());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlindex.get(lidx).add(key);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction toObjekt (arg, frozen = true) {\r\n\t\tconst result = {};\r\n\r\n\t\targ.forEach((value, key) => {\r\n\t\t\tconst obj = value;\r\n\r\n\t\t\tif (frozen) {\r\n\t\t\t\tObject.freeze(obj);\r\n\t\t\t}\r\n\r\n\t\t\tresult[clone(key)] = obj;\r\n\t\t});\r\n\r\n\t\tif (frozen) {\r\n\t\t\tObject.freeze(result);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tfunction uuid () {\r\n\t\treturn s() + s() + \"-\" + s() + \"-4\" + s().substr(0, 3) + \"-\" + r[Math.floor(Math.random() * 4)] + s().substr(0, 3) + \"-\" + s() + s() + s();\r\n\t}\r\n\r\n\tclass Haro {\r\n\t\tconstructor ({config = {}, debounce = 0, delimiter = \"|\", id = uuid(), index = [], key = \"\", logging = true, patch = false, pattern = \"\\\\s*|\\\\t*\", source = \"\", versioning = false} = {}) {\r\n\t\t\tthis.adapters = {};\r\n\t\t\tthis.data = new Map();\r\n\t\t\tthis.debounce = debounce;\r\n\t\t\tthis.debounced = new Map();\r\n\t\t\tthis.delimiter = delimiter;\r\n\t\t\tthis.config = {\r\n\t\t\t\tmethod: \"get\",\r\n\t\t\t\tcredentials: \"include\",\r\n\t\t\t\theaders: {\r\n\t\t\t\t\taccept: \"application/json\",\r\n\t\t\t\t\t\"content-type\": \"application/json\"\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tthis.id = id;\r\n\t\t\tthis.index = index;\r\n\t\t\tthis.indexes = new Map();\r\n\t\t\tthis.key = key;\r\n\t\t\tthis.logging = logging;\r\n\t\t\tthis.patch = patch;\r\n\t\t\tthis.pattern = pattern;\r\n\t\t\tthis.source = source;\r\n\t\t\tthis.total = 0;\r\n\t\t\tthis.uri = \"\";\r\n\t\t\tthis.worker = null;\r\n\t\t\tthis.versions = new Map();\r\n\t\t\tthis.versioning = versioning;\r\n\r\n\t\t\tObject.defineProperty(this, \"registry\", {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tget: () => Array.from(this.data.keys())\r\n\t\t\t});\r\n\r\n\t\t\tif (Object.keys(config).length > 1) {\r\n\t\t\t\tthis.config = merge(this.config, config);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tasync batch (args, type = \"set\", lazyLoad = false) {\r\n\t\t\tlet result;\r\n\r\n\t\t\tthis.beforeBatch(args, type);\r\n\r\n\t\t\ttry {\r\n\t\t\t\tconst fn = type === \"del\" ? i => this.del(i, true, lazyLoad) : i => this.set(null, i, true, true, lazyLoad);\r\n\r\n\t\t\t\tresult = await Promise.all(args.map(fn));\r\n\t\t\t\tthis.onbatch(type, result);\r\n\t\t\t\tthis.log(`Batch successful on ${this.id}`);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tthis.onerror(\"batch\", e);\r\n\t\t\t\tthis.log(`Batch failure on ${this.id}`);\r\n\t\t\t\tthrow e;\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tbeforeBatch () {}\r\n\r\n\t\tbeforeClear () {}\r\n\r\n\t\tbeforeDelete () {}\r\n\r\n\t\tbeforeRequest () {}\r\n\r\n\t\tbeforeSet () {}\r\n\r\n\t\tbeforeSync () {}\r\n\r\n\t\tclear () {\r\n\t\t\tthis.beforeClear();\r\n\t\t\tthis.total = 0;\r\n\t\t\tthis.data.clear();\r\n\t\t\tthis.indexes.clear();\r\n\t\t\tthis.versions.clear();\r\n\t\t\tthis.reindex().onclear();\r\n\t\t\tthis.log(`Cleared ${this.id}`);\r\n\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tasync cmd (type, ...args) {\r\n\t\t\tif (this.adapters[type] === void 0 || adapter[type] === void 0) {\r\n\t\t\t\tthrow new Error(`${type} not configured for persistent storage`);\r\n\t\t\t}\r\n\r\n\t\t\treturn await adapter[type].apply(this, [this, ...args]);\r\n\t\t}\r\n\r\n\t\tcrawl (arg) {\r\n\t\t\tlet result = clone(arg);\r\n\r\n\t\t\teach((this.source || \"\").split(\".\"), i => {\r\n\t\t\t\tresult = result[i];\r\n\t\t\t});\r\n\r\n\t\t\treturn result || arg;\r\n\t\t}\r\n\r\n\t\tdel (key, batch = false, lazyLoad = false, retry = false) {\r\n\t\t\tif (this.has(key) === false) {\r\n\t\t\t\tthrow new Error(\"Record not found\");\r\n\t\t\t}\r\n\r\n\t\t\tconst og = this.get(key, true);\r\n\r\n\t\t\treturn this.exec(async () => {\r\n\t\t\t\tthis.beforeDelete(key, batch, lazyLoad, retry);\r\n\t\t\t\tdelIndex(this.index, this.indexes, this.delimiter, key, og, this.pattern);\r\n\t\t\t\tthis.data.delete(key);\r\n\t\t\t\t--this.total;\r\n\t\t\t}, async () => {\r\n\t\t\t\tthis.ondelete(key, batch, retry, lazyLoad);\r\n\r\n\t\t\t\tif (this.versioning) {\r\n\t\t\t\t\tthis.versions.delete(key);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!lazyLoad) {\r\n\t\t\t\t\tthis.storage(\"remove\", key).then(success => {\r\n\t\t\t\t\t\tif (success) {\r\n\t\t\t\t\t\t\tthis.log(`Deleted ${key} from persistent storage`);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, e => this.log(`Error deleting ${key} from persistent storage: ${e.message || e.stack || e}`, \"error\"));\r\n\r\n\t\t\t\t\tif (!batch && !retry && this.uri) {\r\n\t\t\t\t\t\tif (this.debounced.has(key)) {\r\n\t\t\t\t\t\t\tclearTimeout(this.debounced.get(key));\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.debounced.set(key, setTimeout(async () => {\r\n\t\t\t\t\t\t\tthis.debounced.delete(key);\r\n\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\tawait this.transmit(key, null, og, false, \"delete\");\r\n\t\t\t\t\t\t\t} catch (err) {\r\n\t\t\t\t\t\t\t\tthis.log(err.stack || err.message || err, \"error\");\r\n\r\n\t\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\t\tawait this.set(key, og, true, true);\r\n\t\t\t\t\t\t\t\t\tthis.log(`Reverted ${key}`);\r\n\t\t\t\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\t\t\t\tthis.log(`Failed to revert ${key}`);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, this.debounce));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}, err => {\r\n\t\t\t\tthis.onerror(\"delete\", err);\r\n\t\t\t\tthrow err;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tdump (type = \"records\") {\r\n\t\t\treturn type === \"records\" ? this.toArray(null, false) : this.transform(this.indexes);\r\n\t\t}\r\n\r\n\t\tentries () {\r\n\t\t\treturn this.data.entries();\r\n\t\t}\r\n\r\n\t\tasync exec (first, second, handler) {\r\n\t\t\tlet result;\r\n\r\n\t\t\ttry {\r\n\t\t\t\tconst arg = await first();\r\n\t\t\t\tresult = await second(arg);\r\n\t\t\t} catch (err) {\r\n\t\t\t\thandler(err);\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tfind (where, raw = false) {\r\n\t\t\tconst key = Object.keys(where).sort((a, b) => a.localeCompare(b)).join(this.delimiter),\r\n\t\t\t\tvalue = keyIndex(key, where, this.delimiter, this.pattern),\r\n\t\t\t\tresult = [];\r\n\r\n\t\t\tif (this.indexes.has(key)) {\r\n\t\t\t\t(this.indexes.get(key).get(value) || new Set()).forEach(i => result.push(this.get(i, raw)));\r\n\t\t\t}\r\n\r\n\t\t\treturn raw ? result : this.list(...result);\r\n\t\t}\r\n\r\n\t\tfilter (fn, raw = false) {\r\n\t\t\tconst result = [];\r\n\r\n\t\t\tthis.forEach((value, key) => {\r\n\t\t\t\tif (fn(value, key) === true) {\r\n\t\t\t\t\tresult.push(this.get(key, raw));\r\n\t\t\t\t}\r\n\t\t\t}, this);\r\n\r\n\t\t\treturn raw ? result : this.list(...result);\r\n\t\t}\r\n\r\n\t\tforEach (fn, ctx) {\r\n\t\t\tthis.data.forEach((value, key) => fn(clone(value), clone(key)), ctx || this.data);\r\n\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tget (key, raw = false) {\r\n\t\t\tconst result = clone(this.data.get(key) || null);\r\n\r\n\t\t\treturn result && !raw ? this.list(key, result) : result;\r\n\t\t}\r\n\r\n\t\thas (key, map) {\r\n\t\t\treturn (map || this.data).has(key);\r\n\t\t}\r\n\r\n\t\tasync join (other, on, type = \"inner\", where = []) {\r\n\t\t\tlet result;\r\n\r\n\t\t\tif (other.total > 0) {\r\n\t\t\t\tif (where.length > 0) {\r\n\t\t\t\t\tresult = await this.offload([[this.id, other.id], this.find(where[0], true), !where[1] ? other.toArray(null, true) : other.find(where[1], true), this.key, on || this.key, type], \"join\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult = await this.offload([[this.id, other.id], this.toArray(null, true), other.toArray(null, true), this.key, on || this.key, type], \"join\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (typeof arg === \"string\") {\r\n\t\t\t\t\tthrow new Error(result);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult = [];\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tkeys () {\r\n\t\t\treturn this.data.keys();\r\n\t\t}\r\n\r\n\t\tlimit (offset = 0, max = 0, raw = false) {\r\n\t\t\tconst result = this.registry.slice(offset, offset + max).map(i => this.get(i, raw));\r\n\r\n\t\t\treturn raw ? result : this.list(...result);\r\n\t\t}\r\n\r\n\t\tlist (...args) {\r\n\t\t\treturn Object.freeze(args.map(i => Object.freeze(i)));\r\n\t\t}\r\n\r\n\t\tasync load (type = \"mongo\", key = undefined) {\r\n\t\t\tconst batch = key === undefined,\r\n\t\t\t\tid = !batch ? key : this.id;\r\n\t\t\tlet result;\r\n\r\n\t\t\tif (batch) {\r\n\t\t\t\tthis.clear();\r\n\t\t\t}\r\n\r\n\t\t\ttry {\r\n\t\t\t\tconst data = await this.cmd(type, \"get\", key);\r\n\r\n\t\t\t\tresult = batch ? this.batch(data, \"set\", true) : this.set(key, data, true, true, true);\r\n\t\t\t\tthis.log(`Loaded ${id} from ${type} persistent storage`);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tthis.log(`Error loading ${id} from ${type} persistent storage: ${e.message || e.stack || e}`, \"error\");\r\n\t\t\t\tthrow e;\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tlog (arg = \"\", type = \"log\") {\r\n\t\t\tif (this.logging) {\r\n\t\t\t\tconsole[type](`haro: ${arg}`);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tmap (fn, raw = false) {\r\n\t\t\tconst result = [];\r\n\r\n\t\t\tthis.forEach((value, key) => result.push(fn(value, key)));\r\n\r\n\t\t\treturn raw ? result : this.list(...result);\r\n\t\t}\r\n\r\n\t\tasync offload (data, cmd = \"index\", index = this.index) {\r\n\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\tif (this.worker) {\r\n\t\t\t\t\tconst obj = this.useWorker(resolve, reject);\r\n\t\t\t\t\tlet payload;\r\n\r\n\t\t\t\t\tif (cmd === \"index\") {\r\n\t\t\t\t\t\tpayload = {\r\n\t\t\t\t\t\t\tcmd: cmd,\r\n\t\t\t\t\t\t\tindex: index,\r\n\t\t\t\t\t\t\trecords: data,\r\n\t\t\t\t\t\t\tkey: this.key,\r\n\t\t\t\t\t\t\tdelimiter: this.delimiter,\r\n\t\t\t\t\t\t\tpattern: this.pattern\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t} else if (cmd === \"join\") {\r\n\t\t\t\t\t\tpayload = {\r\n\t\t\t\t\t\t\tcmd: cmd,\r\n\t\t\t\t\t\t\tids: data[0],\r\n\t\t\t\t\t\t\trecords: [data[1], data[2]],\r\n\t\t\t\t\t\t\tkey: data[3],\r\n\t\t\t\t\t\t\ton: data[4],\r\n\t\t\t\t\t\t\ttype: data[5]\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tobj.postMessage(JSON.stringify(payload, null, 0));\r\n\t\t\t\t} else {\r\n\t\t\t\t\treject(new Error(webWorkerError));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tonbatch () {}\r\n\r\n\t\tonclear () {}\r\n\r\n\t\tondelete () {}\r\n\r\n\t\tonerror () {}\r\n\r\n\t\tonrequest (arg) {\r\n\t\t\treturn arg;\r\n\t\t}\r\n\r\n\t\tonset () {}\r\n\r\n\t\tonsync () {}\r\n\r\n\t\tasync override (data, type = \"records\", fn = undefined) {\r\n\t\t\tconst result = true;\r\n\r\n\t\t\tif (type === \"indexes\") {\r\n\t\t\t\tthis.indexes = this.transform(data, fn);\r\n\t\t\t} else if (type === \"records\") {\r\n\t\t\t\tthis.data.clear();\r\n\t\t\t\tthis.indexes.clear();\r\n\t\t\t\teach(data, datum => this.data.set(this.key ? datum[this.key] : uuid() || uuid(), datum));\r\n\t\t\t\tthis.total = this.data.size;\r\n\t\t\t} else {\r\n\t\t\t\tthrow new Error(\"Invalid type\");\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tregister (key, fn) {\r\n\t\t\tadapter[key] = fn;\r\n\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\treindex (index) {\r\n\t\t\tconst indices = index ? [index] : this.index;\r\n\r\n\t\t\tif (index && this.index.indexOf(index) === -1) {\r\n\t\t\t\tthis.index.push(index);\r\n\t\t\t}\r\n\r\n\t\t\teach(indices, i => this.indexes.set(i, new Map()));\r\n\t\t\tthis.forEach((data, key) => each(indices, i => setIndex(this.index, this.indexes, this.delimiter, key, data, i, this.pattern)));\r\n\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tasync request (input, config = {}) {\r\n\t\t\treturn new Promise(async (resolve, reject) => {\r\n\t\t\t\tconst cfg = merge(clone(this.config), config),\r\n\t\t\t\t\tref = [input, cfg],\r\n\t\t\t\t\theaders = {};\r\n\r\n\t\t\t\tcfg.method = cfg.method.toUpperCase();\r\n\r\n\t\t\t\tif (cfg.method === \"DELETE\") {\r\n\t\t\t\t\tdelete cfg.body;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.beforeRequest(...ref);\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst res = await fetch(input, cfg),\r\n\t\t\t\t\t\tok = res.ok,\r\n\t\t\t\t\t\tstatus = res.status;\r\n\r\n\t\t\t\t\tif (res.headers._headers) {\r\n\t\t\t\t\t\teach(Object.keys(res.headers._headers), i => {\r\n\t\t\t\t\t\t\theaders[i] = res.headers._headers[i].join(\", \");\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tfor (const pair of res.headers.entries()) {\r\n\t\t\t\t\t\t\theaders[pair[0]] = pair[1];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst arg = await res[(headers[\"content-type\"] || \"\").indexOf(\"application/json\") > -1 ? \"json\" : \"text\"](),\r\n\t\t\t\t\t\tnext = ok ? resolve : reject;\r\n\r\n\t\t\t\t\tnext(this.list(this.onrequest(arg, status, headers), status, headers));\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\treject(this.list(e.message, 0, {}));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tasync save (type = \"mongo\") {\r\n\t\t\tlet result;\r\n\r\n\t\t\ttry {\r\n\t\t\t\tresult = await this.cmd(type, \"set\");\r\n\t\t\t\tthis.log(`Saved ${this.id} to ${type} persistent storage`);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tthis.log(`Error saving ${this.id} to ${type} persistent storage: ${e.message || e.stack || e}`, \"error\");\r\n\t\t\t\tthrow e;\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tsearch (value, index, raw = false) {\r\n\t\t\tconst result = new Map(),\r\n\t\t\t\tfn = typeof value === \"function\",\r\n\t\t\t\trgex = value && typeof value.test === \"function\";\r\n\r\n\t\t\tif (value) {\r\n\t\t\t\teach(index ? Array.isArray(index) ? index : [index] : this.index, i => {\r\n\t\t\t\t\tlet idx = this.indexes.get(i);\r\n\r\n\t\t\t\t\tif (idx) {\r\n\t\t\t\t\t\tidx.forEach((lset, lkey) => {\r\n\t\t\t\t\t\t\tswitch (true) {\r\n\t\t\t\t\t\t\t\tcase fn && value(lkey, i):\r\n\t\t\t\t\t\t\t\tcase rgex && value.test(Array.isArray(lkey) ? lkey.join(\", \") : lkey):\r\n\t\t\t\t\t\t\t\tcase lkey === value:\r\n\t\t\t\t\t\t\t\t\tlset.forEach(key => {\r\n\t\t\t\t\t\t\t\t\t\tif (!result.has(key) && this.has(key)) {\r\n\t\t\t\t\t\t\t\t\t\t\tresult.set(key, this.get(key, raw));\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\t\tvoid 0;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\treturn raw ? Array.from(result.values()) : this.list(...Array.from(result.values()));\r\n\t\t}\r\n\r\n\t\tasync set (key, data, batch = false, override = false, lazyLoad = false, retry = false) {\r\n\t\t\tlet x = clone(data),\r\n\t\t\t\tmethod, og;\r\n\r\n\t\t\treturn this.exec(async () => {\r\n\t\t\t\tif (key === undefined || key === null) {\r\n\t\t\t\t\tkey = this.key && x[this.key] !== undefined ? x[this.key] : uuid();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.beforeSet(key, data, batch, override, lazyLoad, retry);\r\n\r\n\t\t\t\tif (!this.data.has(key)) {\r\n\t\t\t\t\t++this.total;\r\n\t\t\t\t\tmethod = \"post\";\r\n\r\n\t\t\t\t\tif (this.versioning) {\r\n\t\t\t\t\t\tthis.versions.set(key, new Set());\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tog = this.get(key, true);\r\n\t\t\t\t\tdelIndex(this.index, this.indexes, this.delimiter, key, og, this.pattern);\r\n\t\t\t\t\tmethod = \"put\";\r\n\r\n\t\t\t\t\tif (this.versioning) {\r\n\t\t\t\t\t\tthis.versions.get(key).add(Object.freeze(clone(og)));\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (override === false) {\r\n\t\t\t\t\t\tx = merge(clone(og), x);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.data.set(key, x);\r\n\t\t\t\tsetIndex(this.index, this.indexes, this.delimiter, key, x, null, this.pattern);\r\n\r\n\t\t\t\treturn this.get(key);\r\n\t\t\t}, async arg => {\r\n\t\t\t\tthis.onset(arg, batch, retry, lazyLoad);\r\n\r\n\t\t\t\tif (!lazyLoad) {\r\n\t\t\t\t\tthis.storage(\"set\", key, x).then(success => {\r\n\t\t\t\t\t\tif (success) {\r\n\t\t\t\t\t\t\tthis.log(`Saved ${key} to persistent storage`);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, e => this.log(`Error saving ${key} to persistent storage: ${e.message || e.stack || e}`, \"error\"));\r\n\r\n\t\t\t\t\tif (!batch && !retry && this.uri) {\r\n\t\t\t\t\t\tif (this.debounced.has(key)) {\r\n\t\t\t\t\t\t\tclearTimeout(this.debounced.get(key));\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.debounced.set(key, setTimeout(async () => {\r\n\t\t\t\t\t\t\tthis.debounced.delete(key);\r\n\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\tawait this.transmit(key, x, og, override, method);\r\n\r\n\t\t\t\t\t\t\t\tif (og) {\r\n\t\t\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\t\t\tawait this.set(key, og, batch, true, lazyLoad, true);\r\n\t\t\t\t\t\t\t\t\t\tthis.log(`Reverted ${key}`);\r\n\t\t\t\t\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\t\t\t\t\tthis.log(`Failed to revert ${key}`);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\t\t\tawait this.del(key, true);\r\n\t\t\t\t\t\t\t\t\t\tthis.log(`Reverted ${key}`);\r\n\t\t\t\t\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\t\t\t\t\tthis.log(`Failed to revert ${key}`);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\t\t\tthis.log(e.stack || e.message || e, \"error\");\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, this.debounce));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn arg;\r\n\t\t\t}, err => {\r\n\t\t\t\tthis.onerror(\"set\", err);\r\n\t\t\t\tthrow err;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tasync setUri (uri, clear = false) {\r\n\t\t\tthis.uri = uri;\r\n\r\n\t\t\treturn this.uri !== \"\" ? await this.sync(clear) : [];\r\n\t\t}\r\n\r\n\t\tsort (fn, frozen = true) {\r\n\t\t\treturn frozen ? Object.freeze(this.limit(0, this.total, true).sort(fn).map(i => Object.freeze(i))) : this.limit(0, this.total, true).sort(fn);\r\n\t\t}\r\n\r\n\t\tsortBy (index, raw = false) {\r\n\t\t\tconst result = [],\r\n\t\t\t\tkeys = [];\r\n\r\n\t\t\tlet lindex;\r\n\r\n\t\t\tif (!this.indexes.has(index)) {\r\n\t\t\t\tthis.reindex(index);\r\n\t\t\t}\r\n\r\n\t\t\tlindex = this.indexes.get(index);\r\n\t\t\tlindex.forEach((idx, key) => keys.push(key));\r\n\t\t\teach(keys.sort(), i => lindex.get(i).forEach(key => result.push(this.get(key, raw))));\r\n\r\n\t\t\treturn raw ? result : this.list(...result);\r\n\t\t}\r\n\r\n\t\tasync storage (...args) {\r\n\t\t\tlet result;\r\n\r\n\t\t\ttry {\r\n\t\t\t\tconst deferreds = Object.keys(this.adapters).map(async i => await this.cmd.apply(this, [i, ...args]));\r\n\r\n\t\t\t\tif (deferreds.length > 0) {\r\n\t\t\t\t\tawait Promise.all(deferreds);\r\n\t\t\t\t\tresult = true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult = false;\r\n\t\t\t\t}\r\n\t\t\t} catch (e) {\r\n\t\t\t\tthis.log(e.stack || e.message || e, \"error\");\r\n\t\t\t\tthrow e;\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tasync sync (clear = false) {\r\n\t\t\tlet result;\r\n\r\n\t\t\tthis.beforeSync(this.uri, clear);\r\n\r\n\t\t\ttry {\r\n\t\t\t\tconst arg = await this.request(this.uri),\r\n\t\t\t\t\tdata = this.source ? this.crawl(arg[0]) : arg[0];\r\n\r\n\t\t\t\tthis.patch = (arg[2].Allow || arg[2].allow || \"\").includes(\"PATCH\");\r\n\r\n\t\t\t\tif (clear) {\r\n\t\t\t\t\tthis.clear();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresult = await this.batch(data, \"set\");\r\n\t\t\t\tthis.onsync(result);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tthis.onerror(\"sync\", e[0] || e);\r\n\t\t\t\tthrow e[0] || e;\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\ttoArray (data, frozen = true) {\r\n\t\t\tlet result;\r\n\r\n\t\t\tif (data) {\r\n\t\t\t\tresult = data.map(i => frozen ? i[1] : clone(i[1]));\r\n\t\t\t} else {\r\n\t\t\t\tresult = this.limit(0, this.total, true);\r\n\r\n\t\t\t\tif (frozen) {\r\n\t\t\t\t\teach(result, i => Object.freeze(i));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn frozen ? Object.freeze(result) : result;\r\n\t\t}\r\n\r\n\t\ttoObject (data, frozen = true) {\r\n\t\t\tconst result = !data ? toObjekt(this, frozen) : data.reduce((a, b) => {\r\n\t\t\t\tconst obj = clone(b[1]);\r\n\r\n\t\t\t\tif (frozen) {\r\n\t\t\t\t\tObject.freeze(obj);\r\n\t\t\t\t}\r\n\r\n\t\t\t\ta[b[0]] = obj;\r\n\r\n\t\t\t\treturn a;\r\n\t\t\t}, {});\r\n\r\n\t\t\treturn frozen ? Object.freeze(result) : result;\r\n\t\t}\r\n\r\n\t\ttransform (input, fn) {\r\n\t\t\treturn typeof fn === \"function\" ? fn(input) : cast(input);\r\n\t\t}\r\n\r\n\t\tasync transmit (key, data, og, override = false, method = \"post\") {\r\n\t\t\tconst uri = concatURI(this.uri, data ? key : null);\r\n\r\n\t\t\tlet body, result;\r\n\r\n\t\t\tif (this.patch) {\r\n\t\t\t\tif (data === void 0) {\r\n\t\t\t\t\tbody = [{op: \"remove\", path: \"/\", value: key}];\r\n\t\t\t\t} else if (og === void 0) {\r\n\t\t\t\t\tbody = [{op: \"add\", path: \"/\", value: data}];\r\n\t\t\t\t} else if (override) {\r\n\t\t\t\t\tbody = [{op: \"replace\", path: \"/\", value: data}];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbody = createPatch(og, data, this.key);\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tresult = await this.request(uri, {method: \"patch\", body: JSON.stringify(body, null, 0)});\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tif (e[1] === 405) {\r\n\t\t\t\t\t\tthis.patch = false;\r\n\t\t\t\t\t\tresult = await this.request(!data ? concatURI(this.uri, key) : uri, {\r\n\t\t\t\t\t\t\tmethod: method,\r\n\t\t\t\t\t\t\tbody: JSON.stringify(data, null, 0)\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow e;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult = await this.request(uri, {method: method, body: JSON.stringify(data, null, 0)});\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tasync unload (type = \"mongo\", key = undefined) {\r\n\t\t\tconst id = key !== undefined ? key : this.id;\r\n\t\t\tlet result;\r\n\r\n\t\t\ttry {\r\n\t\t\t\tresult = await this.cmd(type, \"remove\", key);\r\n\t\t\t\tthis.log(`Unloaded ${id} from ${type} persistent storage`);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tthis.log(`Error unloading ${id} from ${type} persistent storage: ${e.message || e.stack || e}`, \"error\");\r\n\t\t\t\tthrow e;\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tunregister (key) {\r\n\t\t\tdelete adapter[key];\r\n\t\t}\r\n\r\n\t\tvalues () {\r\n\t\t\treturn this.data.values();\r\n\t\t}\r\n\r\n\t\tuseWorker (resolve, reject) {\r\n\t\t\tlet obj;\r\n\r\n\t\t\tif (this.worker) {\r\n\t\t\t\tobj = new Worker(this.worker);\r\n\r\n\t\t\t\tobj.onerror = err => {\r\n\t\t\t\t\treject(err);\r\n\t\t\t\t\tobj.terminate();\r\n\t\t\t\t};\r\n\r\n\t\t\t\tobj.onmessage = ev => {\r\n\t\t\t\t\tresolve(JSON.parse(ev.data));\r\n\t\t\t\t\tobj.terminate();\r\n\t\t\t\t};\r\n\t\t\t} else {\r\n\t\t\t\treject(new Error(webWorkerError));\r\n\t\t\t}\r\n\r\n\t\t\treturn obj;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction factory (data = null, config = {}) {\r\n\t\tconst obj = new Haro(config).reindex();\r\n\r\n\t\tif (webWorker) {\r\n\t\t\tconst functions = [\r\n\t\t\t\tcast.toString(),\r\n\t\t\t\tclone.toString(),\r\n\t\t\t\tcreateIndexes.toString(),\r\n\t\t\t\teach.toString(),\r\n\t\t\t\thas.toString(),\r\n\t\t\t\titerate.toString(),\r\n\t\t\t\tjoinData.toString(),\r\n\t\t\t\tkeyIndex.toString(),\r\n\t\t\t\tsetIndex.toString(),\r\n\t\t\t\t(node === false ? \"\" : \"self.\") + \"onmessage = \" + onmessage.toString() + \";\"\r\n\t\t\t];\r\n\r\n\t\t\tobj.worker = node === false ? global.URL.createObjectURL(blob(functions.join(\"\\n\"))) : new Function(functions.join(\"\\n\"));\r\n\t\t}\r\n\r\n\t\tif (data) {\r\n\t\t\tobj.batch(data, \"set\");\r\n\t\t}\r\n\r\n\t\treturn obj;\r\n\t}\r\n\r\n\tfactory.transform = cast;\r\n\tfactory.version = \"4.0.3\";\r\n\r\n\t// Node, AMD & window supported\r\n\tif (typeof exports !== \"undefined\") {\r\n\t\tmodule.exports = factory;\r\n\t} else if (typeof define === \"function\" && define.amd !== void 0) {\r\n\t\tdefine(() => factory);\r\n\t} else {\r\n\t\tglobal.haro = factory;\r\n\t}\r\n}(typeof window !== \"undefined\" ? window : global));\r\n"]} \ No newline at end of file diff --git a/src/utility.js b/src/utility.js index 3bbaf13..9a9d5c6 100644 --- a/src/utility.js +++ b/src/utility.js @@ -2,7 +2,6 @@ return b in a; } - function each (arg, fn) { const nth = arg.length; let i = -1;