-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathSendBirdSyncManager.min.js
More file actions
10 lines (9 loc) · 146 KB
/
SendBirdSyncManager.min.js
File metadata and controls
10 lines (9 loc) · 146 KB
1
2
3
4
5
6
7
8
9
10
/**
* Copyright(c) 2016 SendBird, Inc.
* SendBird SyncManager JavaScript SDK v1.1.30
*/
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).SendBirdSyncManager=n()}(this,(function(){"use strict";function e(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function t(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}function r(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function a(e,n,t){return n&&r(e.prototype,n),t&&r(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function s(e){return(s=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function o(e,n){return(o=Object.setPrototypeOf||function(e,n){return e.__proto__=n,e})(e,n)}function u(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function c(e,n,t){return(c=u()?Reflect.construct:function(e,n,t){var r=[null];r.push.apply(r,n);var a=new(Function.bind.apply(e,r));return t&&o(a,t.prototype),a}).apply(null,arguments)}function l(e){var n="function"==typeof Map?new Map:void 0;return(l=function(e){if(null===e||(t=e,-1===Function.toString.call(t).indexOf("[native code]")))return e;var t;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==n){if(n.has(e))return n.get(e);n.set(e,r)}function r(){return c(e,arguments,s(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),o(r,e)})(e)}function f(e,n){if(n&&("object"==typeof n||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function h(e){return function(e){if(Array.isArray(e))return g(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||d(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,n){if(e){if("string"==typeof e)return g(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?g(e,n):void 0}}function g(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function v(e,n){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=d(e))||n&&e&&"number"==typeof e.length){t&&(e=t);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,o=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return s=e.done,e},e:function(e){o=!0,i=e},f:function(){try{s||null==t.return||t.return()}finally{if(o)throw i}}}}var y=null,m=function(){function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t(this,e),y||(y=this),this.batchSize=64,this.batchInterval=200,this.cachedBlockLimit=128,this.cachedBlockFlush=32,this.encryption={encrypt:function(e,n){return n(null,e)},decrypt:function(e,n){return n(null,e)}},"number"==typeof n.batchSize&&n.batchSize>1&&(this.batchSize=n.batchSize),"number"==typeof n.batchInterval&&n.batchInterval>10&&(this.batchInterval=n.batchInterval),"number"==typeof n.cachedBlockLimit&&n.cachedBlockLimit>0&&(this.cachedBlockLimit=n.cachedBlockLimit),"number"==typeof n.cachedBlockFlush&&n.cachedBlockFlush<this.cachedBlockLimit&&(this.cachedBlockFlush=n.cachedBlockFlush),n.encryption&&n.encryption.hasOwnProperty("encrypt")&&n.encryption.hasOwnProperty("decrypt")&&"function"==typeof n.encryption.encrypt&&"function"==typeof n.encryption.decrypt&&(this.encryption=n.encryption),y}return a(e,null,[{key:"getInstance",value:function(){return y}}]),e}(),p=0,k=1,I=2,b=function(){function e(n){var r=this;t(this,e),this.state=p,this._value=null,this._reason=null;if("function"!=typeof n)throw"Promise resolver ".concat(n," is not a function");n((function(e){r.state===p&&(r.state=k,r._value=e)}),(function(e){r.state===p&&(r.state=I,r._reason=e)}))}return a(e,[{key:"length",get:function(){return 1}},{key:"then",value:function(n,t){var r=this,a=this;switch(this.state){case p:setTimeout((function(){return r.then(n,t)}),100);break;case k:n&&"function"==typeof n&&(a=n(this._value));break;case I:t&&"function"==typeof t&&(a=t(this._reason))}return a instanceof e?a:this}},{key:"catch",value:function(n){var t=this,r=this;switch(this.state){case p:setTimeout((function(){return t.catch(n)}),100);break;case k:break;case I:r=n(this._reason)}return r instanceof e?r:this}},{key:"finally",value:function(n){var t=this,r=this;switch(this.state){case p:setTimeout((function(){return t.finally(n)}),100);break;case k:case I:r=n()}return r instanceof e?r:this}}],[{key:"all",value:function(t){return new e((function(r,a){if(Array.isArray(t)||"string"==typeof t)if(t.length>0){var i=[];for(var s in t)t[s]instanceof e?i.push(t[s]):i.push(e.resolve(t[s]));var o=new Array(i.length).fill(null),u=i.length,c=function(e,n,t){n?a(n):(u--,o[e]=t,u<=0&&r(o))};i.forEach((function(e,n){e.then((function(e){c(n,null,e)})).catch((function(e){c(n,e,null)}))}))}else r([]);else a(new Error("Uncaught (in promise) TypeError: ".concat(n(t)," ").concat(t," is not iterable")))}))}},{key:"resolve",value:function(n){return new e((function(e){e(n)}))}},{key:"reject",value:function(n){return new e((function(e,t){t(n)}))}}]),e}();"undefined"==typeof Promise&&(Promise=b);var w="undefined"!=typeof setImmediate?setImmediate:function(e){return setTimeout(e,1)};function C(e,t){var r=n(e),a=n(t);return!e||!t||"object"!==r||r!==a||e instanceof Date?e instanceof Date?e.getTime()===t.getTime():"function"===r&&"function"===a||e===t:Object.keys(e).length===Object.keys(t).length&&Object.keys(e).every((function(n){return C(e[n],t[n])}))}function E(e){return null!=e}function M(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(E(e)){if(!E(t))return r?-1:1;if(n(e)===n(t)&&e!==t){var a=n(e);if("boolean"===a)return e?1:-1;if("number"===a)return e>t?1:-1;if("string"===a)return e.localeCompare(t);if(e instanceof Date&&t instanceof Date&&e.getTime()!==t.getTime())return e.getTime()>t.getTime()?1:-1}}else if(E(t))return r?1:-1;return 0}function A(e,n,t){if(!n)return new Promise((function(n,r){e((function(e,a){t&&"function"==typeof t&&t(),e?r(e):n(a)}))}));e((function(e,r){t&&"function"==typeof t&&t(),n(e,r)}))}function S(e){if("object"===n(e)){if(Array.isArray(e))return e.map((function(e){return S(e)}));if(e instanceof RegExp)return new RegExp(e);if(e instanceof Date)return new Date(e);if(e){var t={};return Object.keys(e).forEach((function(n){return t[n]=S(e[n])})),t}return null}return e}var O=function e(t,r){var a=!0;if(t)for(var i in r){switch(i){case"/and":a=a&&r[i].reduce((function(n,r){return n&&e(t,r)}),!0);break;case"/or":a=a&&r[i].reduce((function(n,r){return n||e(t,r)}),!1);break;default:var s=r[i];if("object"===n(s))for(var o in s)switch(o){case">":a="number"==typeof t[i]&&"number"==typeof s[o]?a&&t[i]>s[o]:"string"==typeof t[i]&&"string"==typeof s[o]&&(a&&t[i].localeCompare(s[o])>0);break;case">=":a="number"==typeof t[i]&&"number"==typeof s[o]?a&&t[i]>=s[o]:"string"==typeof t[i]&&"string"==typeof s[o]&&(a&&t[i].localeCompare(s[o])>=0);break;case"<":a="number"==typeof t[i]&&"number"==typeof s[o]?a&&t[i]<s[o]:"string"==typeof t[i]&&"string"==typeof s[o]&&(a&&t[i].localeCompare(s[o])<0);break;case"<=":a="number"==typeof t[i]&&"number"==typeof s[o]?a&&t[i]<=s[o]:"string"==typeof t[i]&&"string"==typeof s[o]&&(a&&t[i].localeCompare(s[o])<=0);break;case"=":a=a&&t[i]===s[o];break;case"!=":a=a&&t[i]!==s[o];break;case"/in":a=a&&Array.isArray(s[o])&&s[o].indexOf(t[i])>=0;break;case"/nin":a=a&&Array.isArray(s[o])&&s[o].indexOf(t[i])<0;break;case"/like":a=a&&"string"==typeof s[o]&&"string"==typeof t[i]&&t[i].indexOf(s[o])>=0;break;case"/nlike":a=a&&"string"==typeof s[o]&&"string"==typeof t[i]&&t[i].indexOf(s[o])<0;break;case"/regex":a=a&&s[o]instanceof RegExp&&s[o].test(t[i]);break;case"/where":a=a&&s[o](t[i]);break;default:a=a&&C(t[i],s)}else a=a&&t[i]===s}if(!a)break}else a=!1;return a},_=function(){function e(n){t(this,e),this.condition=n,this.offset=0,this.limit=Infinity,this.index=null,this.desc=!1}return a(e,[{key:"match",value:function(e){return O(e,this.condition)}}],[{key:"and",value:function(){for(var n=arguments.length,t=new Array(n),r=0;r<n;r++)t[r]=arguments[r];return t.length>0?new e({"/and":t}):new e({})}},{key:"or",value:function(){for(var n=arguments.length,t=new Array(n),r=0;r<n;r++)t[r]=arguments[r];return t.length>0?new e({"/or":t}):new e({})}},{key:"Order",get:function(){return{ASC:1,DESC:-1}}}]),e}(),T=function(){function e(n){t(this,e),this.blockKey=n,this.data=[]}return a(e,[{key:"count",get:function(){return this.data.length}},{key:"get",value:function(e){var n=this.indexOf(e);return n>=0?this.data[n].value:null}},{key:"indexOf",value:function(e){for(var n in this.data)if(this.data[n].key===e)return parseInt(n);return-1}},{key:"add",value:function(e,n){var t=this.indexOf(e);t<0?this.data.push({key:e,value:n}):this.data[t]={key:e,value:n}}},{key:"remove",value:function(e){var n=this.indexOf(e);return n>=0&&(this.data.splice(n,1),!0)}},{key:"getSerializedData",value:function(){return JSON.stringify(this.data)}}],[{key:"createKey",value:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return"".concat(e.toLowerCase(),"-blk-").concat(n)}},{key:"buildFromSerializedData",value:function(n,t){var r=new e(n);try{return r.data=JSON.parse(t),r}catch(e){return null}}}]),e}(),R=function(){function e(){t(this,e),this._queue=[],this.locked=!1}return a(e,[{key:"lock",value:function(e){var n=this;this.locked?this._queue.push(e):(this.locked=!0,e((function(){return n.unlock()})))}},{key:"unlock",value:function(){if(this.locked=!1,this._queue.length>0){var e=this._queue.shift();this.lock(e)}}}]),e}();"undefined"==typeof Promise&&(Promise=b);var U="adb-trns-",x={},D=function(){function e(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t(this,e);var a=m.getInstance();this.name=n,this.initialized=!1,this.queue={},this.batchInterval=r.batchInterval||a.batchInterval,this.batchUpdateTimer=null,this.transactionMutex=new R,this.transactionState=e.State.IDLE,this.transactionCount=0,this.encryption=a.encryption,r.encryption&&r.encryption.hasOwnProperty("encrypt")&&r.encryption.hasOwnProperty("decrypt")&&"function"==typeof r.encryption.encrypt&&"function"==typeof r.encryption.decrypt&&(this.encryption=r.encryption),x[n]=this}return a(e,[{key:"init",value:function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){};this.initialized?n(null):(this.initialized=!0,0===Object.keys(this.queue).length?K.Storage.getItem(U+this.name,(function(t,r){r?e.encryption.decrypt(r,(function(t,r){t||(e.queue=JSON.parse(r)),n(t)})):n(null)})):n(null))}},{key:"flush",value:function(){var n=this;this.transactionMutex.lock((function(t){K.Storage.setItem(U+n.name,JSON.stringify(n.queue),(function(r){if(r)throw t(),r;var a=[],i=function(t){var r=n.queue[t];switch(r.action){case e.Action.SET:a.push(new Promise((function(e,a){n.encryption.encrypt(JSON.stringify(r.data),(function(n,r){n?a(n):K.Storage.setItem(t,r).then(e).catch(a)}))})));break;case e.Action.REMOVE:a.push(K.Storage.removeItem(t))}};for(var s in n.queue)i(s);n.batchUpdateTimer=null,Promise.all(a).then((function(){n.queue={},K.Storage.removeItem(U+n.name,(function(){t()}))})).catch((function(e){throw t(),e}))}))}))}},{key:"startTransaction",value:function(){this.transactionState=e.State.RUNNING,this.transactionCount++}},{key:"endTransaction",value:function(){this.transactionState===e.State.RUNNING&&(this.transactionCount--,0===this.transactionCount&&(this.flush(),this.transactionState=e.State.IDLE))}},{key:"addJob",value:function(n,t,r){var a=this;this.queue[t]={action:n,data:r},this.transactionState===e.State.IDLE&&(this.batchUpdateTimer||(this.batchUpdateTimer=setTimeout((function(){a.transactionState===e.State.IDLE&&a.flush(),a.batchUpdateTimer=null}),this.batchInterval)))}},{key:"drop",value:function(){this.batchUpdateTimer&&clearTimeout(this.batchUpdateTimer),this.transactionState=e.State.IDLE,this.transactionMutex.unlock(),this.transactionCount=0,this.queue={}}}],[{key:"Action",get:function(){return{SET:"set",REMOVE:"remove"}}},{key:"State",get:function(){return{IDLE:"idle",RUNNING:"running"}}},{key:"dropAll",value:function(){for(var e in x){x[e].drop()}x=[]}}]),e}(),N="adb-info-",F=function(){function e(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t(this,e);var a=m.getInstance();this.cachedBlockLimit=r.cachedBlockLimit||a.cachedBlockLimit,this.cachedBlockFlush=r.cachedBlockFlush||a.cachedBlockFlush,this.cacheMutex=new R,this.encryption=a.encryption,r.encryption&&r.encryption.hasOwnProperty("encrypt")&&r.encryption.hasOwnProperty("decrypt")&&"function"==typeof r.encryption.encrypt&&"function"==typeof r.encryption.decrypt&&(this.encryption=r.encryption),this.batchSize=r.batchSize||a.batchSize,this.batchQueue=r.sharedBatchQueue||new D(n,r),this.transaction=null,this.name=n,this.info={},this.blockCache={},this.blockCacheCursor=0,this.currentBlock=null}return a(e,[{key:"_findBlockKey",value:function(e){return this.info.blockMap[e]}},{key:"_getBlockFromCache",value:function(e){return this.blockCache[e]?this.blockCache[e].block:null}},{key:"_putBlockToCache",value:function(e){var n=this;this.blockCache[e.blockKey]={seq:this.blockCacheCursor++,block:e};var t=Object.keys(this.blockCache);if(t.length>=this.cachedBlockLimit)for(var r in t.sort((function(e,t){return n.blockCache[e].seq-n.blockCache[t].seq})),t)this._removeBlockFromCache(t[r])}},{key:"_removeBlockFromCache",value:function(e){this.blockCache.hasOwnProperty(e)&&delete this.blockCache[e]}},{key:"_getBlock",value:function(e,n){var t=this,r=this._getBlockFromCache(e);r?n(null,r):K.Storage.getItem(e).then((function(r){r?t.encryption.decrypt(r,(function(r,a){if(r)n(r);else{var i=T.buildFromSerializedData(e,a);t._putBlockToCache(i),n(null,i)}})):n(null)})).catch((function(e){return n(e)}))}},{key:"_assignNewBlock",value:function(e){this.info.cursor++;var n=T.createKey(this.name,this.info.cursor),t=new T(n);this._putBlockToCache(t),this.currentBlock=t,e&&e.key&&(t.add(e.key,e.value),this.info.blockMap[e.key]=n,this.info.count++),this.batchQueue.addJob(D.Action.SET,t.blockKey,t.data),this.batchQueue.addJob(D.Action.SET,N+this.name,this.info)}},{key:"init",value:function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){};this.batchQueue.init((function(t){t?n(t):K.Storage.getItem(N+e.name,(function(t,r){t?n(t):r?e.encryption.decrypt(r,(function(t,r){if(t)n(t);else{e.info=JSON.parse(r);var a=T.createKey(e.name,e.info.cursor);e._getBlock(a,(function(t,r){t||(e.currentBlock=r||new T(a)),n(t,e.info,!1)}))}})):(e.info={blockMap:{},cursor:0,count:0},e.info.cursor=-1,e._assignNewBlock(),n(null,e.info,!0))}))}))}},{key:"keys",get:function(){return Object.keys(this.info.blockMap)}},{key:"count",get:function(){return this.info.count}},{key:"startTransaction",value:function(){this.batchQueue.startTransaction()}},{key:"endTransaction",value:function(){this.batchQueue.endTransaction()}},{key:"getItem",value:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},t=this._findBlockKey(e);t?this._getBlock(t,(function(t,r){!t&&r?n(null,r.get(e)):n(t||new Error("Broken integrity - data not found."))})):n(null,null)}},{key:"setItem",value:function(e,n){var t=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},a=this._findBlockKey(e);if(a)this._getBlock(a,(function(a,i){!a&&i?(i.add(e,n),t.batchQueue.addJob(D.Action.SET,i.blockKey,i.data),r(null)):r(a||new Error("Broken integrity - data not found."))}));else{var i=this.currentBlock;i&&i.count<this.batchSize?(i.add(e,n),this.batchQueue.addJob(D.Action.SET,i.blockKey,i.data),this.info.count++,this.info.blockMap[e]=i.blockKey,this.batchQueue.addJob(D.Action.SET,N+this.name,this.info)):this._assignNewBlock({key:e,value:n}),r(null)}}},{key:"removeItem",value:function(e){var n=this,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},r=this._findBlockKey(e);r?this._getBlock(r,(function(a,i){a?t(a):i?(i.remove(e)&&(n.info.blockMap.hasOwnProperty(e)&&delete n.info.blockMap[e],n.info.count--),i.data.length>0?n.batchQueue.addJob(D.Action.SET,r,i.data):(n._removeBlockFromCache(r),n.batchQueue.addJob(D.Action.REMOVE,r)),n.batchQueue.addJob(D.Action.SET,N+n.name,n.info),t(null)):t(new Error("Failed to remove item - data not found."))})):t(new Error("Failed to remove item - data not found."))}},{key:"clear",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){},n=0;n<=this.info.cursor;n++)this.batchQueue.addJob(D.Action.REMOVE,T.createKey(this.name,n));this.blockCacheCursor=0,this.blockCache={},this.info={blockMap:{},cursor:-1,count:0},this._assignNewBlock(),e(null)}},{key:"drop",value:function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){};this.clear((function(){e.batchQueue.addJob(D.Action.REMOVE,N+e.name),n(null)}))}}]),e}();function P(e){var n=e.offset,t=e.condition,r=e.progress,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(e,n){return n(null,!0)},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},s=n;function o(){t(s)?w((function(){a(s,(function(e,n){e?i(e):n?(s=r(s),o()):i(null)}))})):i(null)}o()}var q="idx-",L=function(){function e(n){var r=n.collection,a=n.columns,i=void 0===a?{}:a,s=n.options,o=void 0===s?{}:s;for(var u in t(this,e),this.collection=r,this.columns=i,this.key=e.createKey(this.columns),this.mutex=new R,this.columns)this.columns[u]=1;this.store=new F(r.name+"-index-"+this.key,o),this.table=[]}return a(e,[{key:"columnNames",get:function(){return Object.keys(this.columns)}},{key:"columnValues",value:function(e){return this.columnNames.map((function(n){return e?e[n]:null}))}},{key:"compareColumnValues",value:function(e,n){for(var t=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=this.columnNames,a=0;a<r.length;a++){var i=r[a],s=this.columns[i],o=M(e[a],n[a],t);if(0!==o)return s*o}return 0}},{key:"init",value:function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){};this.store.init((function(t,r,a){t?n(t):a?e.save(n):e.store.getItem("".concat(q).concat(e.key),(function(t,r){r&&(e.table=r),n(t)}))}))}},{key:"each",value:function(e){var n=this,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=t>0,a=r?0:this.table.length-1,i=!0;P({offset:a,condition:function(e){return r?e<n.table.length:e>=0},progress:function(e){return r?e+1:e-1}},(function(t,a){var s=n.table[t];if(s){var o=s.key,u=s.value;P({offset:r?0:u.length-1,condition:function(e){return r?e<u.length:e>=0},progress:function(e){return r?e+1:e-1}},(function(n,t){e({key:o,value:u[n]},(function(e,n){t(e,i=e||n)}))}),(function(e){return a(e,i)}))}else a(null,!1)}),(function(){e(null,(function(){}))}))}},{key:"put",value:function(e,n,t){var r=this;this.mutex.lock((function(a){var i=!1,s=r.columnValues(n);P({offset:0,condition:function(e){return e<r.table.length},progress:function(e){return e+1}},(function(n,t){var a=r.table[n];if(a){var o=r.compareColumnValues(a.key,s);o>0?(r.table.splice(n,0,{key:s,value:[e]}),i=!0,r.save((function(e){return t(e,!1)}))):0===o?a.value.indexOf(e)<0?(a.value.push(e),i=!0,r.save((function(e){return t(e,!1)}))):t(null,!1):t(null,!0)}else t(null,!1)}),(function(){i||(r.table.push({key:s,value:[e]}),r.save()),a(),t()}))}))}},{key:"update",value:function(e,n,t,r){var a=this,i=this.columnValues(n),s=this.columnValues(t);0!==this.compareColumnValues(i,s)?this.remove(e,n,(function(){a.put(e,t,(function(){r()}))})):r()}},{key:"remove",value:function(e,n,t){var r=this;this.mutex.lock((function(a){var i=r.columnValues(n);P({offset:0,condition:function(e){return e<r.table.length},progress:function(e){return e+1}},(function(n,t){var a=r.table[n];if(a)if(0===r.compareColumnValues(a.key,i)){var s=a.value.indexOf(e);s>=0?(a.value.splice(s,1),0===a.value.length&&r.table.splice(n,1),r.save((function(e){return t(e,!1)}))):t(null,!1)}else t(null,!0);else t(null,!1)}),(function(){a(),t()}))}))}},{key:"save",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){};this.store.setItem("".concat(q).concat(this.key),this.table,e)}},{key:"clear",value:function(){this.table=[],this.store.clear()}},{key:"drop",value:function(){this.table=[],this.store.drop()}}],[{key:"createKey",value:function(e){return Object.keys(e).map((function(n){return"".concat(n,"_").concat(e[n])})).join("__")}}]),e}();"undefined"==typeof Promise&&(Promise=b);var B=new WeakMap,j=new WeakMap,V=function(){function r(e,n){t(this,r),this.name=e,this.pk=n,B.set(this,new F(e)),j.set(this,[])}return a(r,[{key:"init",value:function(e){var n=B.get(this);return A((function(e){n.init((function(n){e(n)}))}),e)}},{key:"_findProperIndexer",value:function(n){if(n.index){var t=function(n){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?e(Object(r),!0).forEach((function(e){i(n,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):e(Object(r)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))}))}return n}({},n.index);for(var r in t)t[r]=1;for(var a=j.get(this),s=0;s<a.length;s++)if(C(a[s].columns,t))return a[s]}return null}},{key:"_addItemToIndex",value:function(e,n){var t=this;return new Promise((function(r){var a=0,i=j.get(t);if(i.length>0)for(var s=0;s<i.length;s++)i[s].put(e,n,(function(){++a===i.length&&r()}));else r()}))}},{key:"_updateItemToIndex",value:function(e,n,t){var r=this;return new Promise((function(a){var i=0,s=j.get(r);if(s.length>0)for(var o=0;o<s.length;o++)s[o].update(e,n,t,(function(){++i===s.length&&a()}));else a()}))}},{key:"_removeItemFromIndex",value:function(e,n){var t=this;return new Promise((function(r){var a=0,i=j.get(t);if(i.length>0)for(var s=0;s<i.length;s++)i[s].remove(e,n,(function(){++a===i.length&&r()}));else r()}))}},{key:"ensureIndex",value:function(e,n){var t=this,r=B.get(this),a=j.get(this),i=L.createKey(e);return A((function(n){for(var s=0;s<a.length;s++)if(i===a[s].key)return void n(null);var o=new L({collection:t,columns:e,options:{sharedBatchQueue:r.batchQueue}});o.init((function(e,t,i){e?n(e):(a.push(o),i?function(){for(var e=r.keys,t=0,a=function(a){var i=e[a];r.getItem(i,(function(r,a){!r&&a?o.put(i,a,(function(){++t===e.length&&n(null)})):++t===e.length&&n(null)}))},i=0;i<e.length;i++)a(i)}():n(null))}))}),n)}},{key:"removeIndex",value:function(e,t){var r=j.get(this),a=L.createKey(e);return A((function(e){for(var t=function(n){if(a===r[n].key)return r[n].drop((function(t){t||r.splice(n,1),e(t)})),{v:void 0}},i=0;i<r.length;i++){var s=t(i);if("object"===n(s))return s.v}e(null)}),t)}},{key:"findById",value:function(e,n){var t=B.get(this);return A((function(n){e?("string"!=typeof e&&(e=JSON.stringify(e)),t.getItem(e,(function(e,t){n(e,t)}))):n(new Error("Invalid type: 'id' should not be empty."))}),n)}},{key:"findOne",value:function(e,n){return e.limit=1,this.find(e,(function(e,t){n(e,t.length>0?t[0]:null)}))}},{key:"find",value:function(e,t){var r=this,a=B.get(this);return A((function(t){if(e instanceof _){var i=[],s=r._findProperIndexer(e);if(s){for(var o=[],u=0;u<s.columnNames.length;u++){var c=s.columnNames[u];if(!e.condition[c])break;if("object"===n(e.condition[c])){if("break"===function(){var n=Object.keys(e.condition[c]),t=["="],r=n.filter((function(e){return t.includes(e)}));if(!(r.length>0))return"break";var a=n.indexOf(r[0]);o.push(e.condition[c][n[a]])}())break}else{if("function"==typeof e.condition[c]||void 0===e.condition[c]||Array.isArray(e.condition[c]))break;o.push(e.condition[c])}}var l=e.offset||0;s.each((function(n,r){n?a.getItem(n.value,(function(n,t){n?r(n):(e.match(t)&&(l<=0?i.push(t):l--),r(null,i.length<e.limit))})):t(null,i)}),o.length>0?o:null,e.desc?_.Order.DESC:_.Order.ASC)}else{var f=!e.desc,h=a.keys;P({offset:e.offset<h.length?f?e.offset:h.length-e.offset-1:f?h.length:-1,condition:function(n){return f?i.length<e.limit&&n<h.length:i.length<e.limit&&n>=0},progress:function(e){return f?e+1:e-1}},(function(n,t){a.getItem(h[n],(function(n,r){n?t(n):(e.match(r)&&i.push(r),w((function(){return t(null,!0)})))}))}),(function(e){t(e,i)}))}}else t(new Error("Invalid type: 'query' should be Query type."))}),t)}},{key:"count",value:function(e,n){var t=B.get(this);return A((function(n){if(!e||e instanceof _)if(e){var r=t.keys,a=0;P({offset:0,condition:function(e){return e<r.length},progress:function(e){return e+1}},(function(n,i){t.getItem(r[n],(function(n,t){n?i(n):(e.match(t)&&a++,w((function(){return i(null,!0)})))}))}),(function(e){n(e,a)}))}else n(null,t.count);else n(new Error("Invalid type: 'query' should be Query type."))}),n)}},{key:"insert",value:function(e,t){var r=this,a=B.get(this);return a.startTransaction(),A((function(t){if(Array.isArray(e)){for(var i=[],s=0;s<e.length;s++)e[s]&&"object"===n(e[s])&&i.push(r.insert(e[s]));e.length===i.length?Promise.all(i).then((function(){return t(null,e)})).catch((function(e){return t(e)})):t(new Error("Invalid type: 'item' should hold objects if it's an array."))}else if(e&&"object"===n(e))if(e[r.pk]){var o="".concat(e[r.pk]);a.getItem(o,(function(n,i){n?t(n):i?t(new Error("Duplicated item: item already exists.")):r._addItemToIndex(o,e).then((function(){a.setItem(o,e,(function(n){t(n,e)}))}))}))}else t(new Error("Invalid key: item should have key."));else t(new Error("Invalid type: 'item' should be an object or an object array."))}),t,(function(){return a.endTransaction()}))}},{key:"upsert",value:function(e,t){var r=this,a=B.get(this);return a.startTransaction(),A((function(t){if(Array.isArray(e)){for(var i=[],s=0;s<e.length;s++)e[s]&&"object"===n(e[s])&&i.push(r.upsert(e[s]));e.length===i.length?Promise.all(i).then((function(){return t(null,e)})).catch((function(e){return t(e)})):t(new Error("Invalid type: 'item' should hold objects if it's an array."))}else if(e&&"object"===n(e))if(e[r.pk]){var o="".concat(e[r.pk]);a.getItem(o,(function(n,i){n?t(n):i?r._updateItemToIndex(o,i,e).then((function(){a.setItem(o,e,(function(n){t(n,e)}))})):r._addItemToIndex(o,e).then((function(){a.setItem(o,e,(function(n){t(n,e)}))}))}))}else t(new Error("Invalid key: item should have key."));else t(new Error("Invalid type: 'item' should be an object or an object array."))}),t,(function(){return a.endTransaction()}))}},{key:"update",value:function(e,t){var r=this,a=B.get(this);return a.startTransaction(),A((function(t){if(Array.isArray(e)){for(var i=[],s=0;s<e.length;s++)e[s]&&"object"===n(e[s])&&i.push(r.update(e[s]));e.length===i.length?Promise.all(i).then((function(){return t(null,e)})).catch((function(e){return t(e)})):t(new Error("Invalid type: 'item' should hold objects if it's an array."))}else if(e&&"object"===n(e))if(e[r.pk]){var o="".concat(e[r.pk]);a.getItem(o,(function(n,i){n?t(n):i?r._updateItemToIndex(o,i,e).then((function(){a.setItem(o,e,(function(n){t(n,e)}))})):t(null)}))}else t(new Error("Invalid key: item should have key."));else t(new Error("Invalid type: 'item' should be an object or an object array."))}),t,(function(){return a.endTransaction()}))}},{key:"updateIf",value:function(e,n,t){var r=this,a=B.get(this);return a.startTransaction(),A((function(t){if(e instanceof _){var i=[],s=a.keys;P({offset:0,condition:function(e){return e<s.length},progress:function(e){return e+1}},(function(t,o){a.getItem(s[t],(function(t,s){if(t)o(t);else if(s&&e.match(s)){var u=S(s),c=!1;for(var l in n){var f=n[l];C(u[l],f)||(c=!0,u[l]=f)}if(c){Object.isFrozen(s)&&Object.freeze(u);var h="".concat(u[r.pk]);r._updateItemToIndex(h,s,u).then((function(){a.setItem(h,u,(function(e){e?o(e):(i.push(u),w((function(){return o(null,!0)})))}))}))}else w((function(){return o(null,!0)}))}else w((function(){return o(null,!0)}))}))}),(function(e){t(e,i)}))}else t(new Error("Invalid type: 'query' should be Query type."))}),t,(function(){return a.endTransaction()}))}},{key:"remove",value:function(e,n){var t=this,r=B.get(this);return r.startTransaction(),A((function(n){e?(e="".concat(e),r.getItem(e,(function(a,i){a?n(a):i?t._removeItemFromIndex(e,i).then((function(){r.removeItem(e,(function(e){n(e)}))})):n(null)}))):n(new Error("Invalid type: 'id' should be string type."))}),n,(function(){return r.endTransaction()}))}},{key:"removeIf",value:function(e,n){var t=this,r=B.get(this);return r.startTransaction(),A((function(n){if(e instanceof _){var a=[],i=r.keys;P({offset:0,condition:function(e){return e<i.length},progress:function(e){return e+1}},(function(n,s){r.getItem(i[n],(function(n,i){if(n)s(n);else if(i&&e.match(i)){var o="".concat(i[t.pk]);t._removeItemFromIndex(o,i).then((function(){r.removeItem(o,(function(e){e?s(e):(a.push(i),w((function(){return s(null,!0)})))}))}))}else w((function(){return s(null,!0)}))}))}),(function(e){n(e,a)}))}else n(new Error("Invalid type: 'query' should be Query type."))}),n,(function(){return r.endTransaction()}))}},{key:"clear",value:function(e){var n=j.get(this),t=B.get(this);return t.startTransaction(),A((function(e){for(var r=0;r<n.length;r++)n[r].clear();t.clear((function(n){e(n)}))}),e,(function(){return t.endTransaction()}))}}]),r}();"undefined"==typeof Promise&&(Promise=b);var G=null,Q=new WeakMap,H=new WeakMap,K=function(){function e(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t(this,e),this.name=n,this.config=new m(r),Q.set(this,{}),H.set(this,{})}return a(e,[{key:"schema",value:function(e,n){var t=Q.get(this);return t[e]=n,this}},{key:"build",value:function(){var e=Q.get(this),n=H.get(this);return new Promise((function(t,r){var a=[];for(var i in e)if(!n[i]){var s=e[i].key||"_id",o=n[i]=new V(i,s);a.push(o.init())}Promise.all(a).then((function(){var a=[];for(var i in n)if(e[i].index&&e[i].index.length>0){var s=n[i];for(var o in e[i].index)a.push(s.ensureIndex(e[i].index[o]))}a.length>0?Promise.all(a).then((function(){t()})).catch((function(e){return r(e)})):t()})).catch((function(e){return r(e)}))}))}},{key:"close",value:function(){}},{key:"drop",value:function(){var e=this,n=[],t=H.get(this);for(var r in t)n.push(t[r].clear());D.dropAll(),Promise.all(n).then((function(){Q.set(e,{}),H.set(e,{})})).catch((function(){}))}},{key:"collection",value:function(e){var n=H.get(this);return n[e]&&n[e]instanceof V?n[e]:null}}],[{key:"Query",get:function(){return _}},{key:"Storage",get:function(){return G},set:function(e){G=e}}]),e}();"undefined"==typeof Promise&&(Promise=b);var W=function(){var e=
/*@cc_on!@*/
!!document.documentMode,n=!e&&!!window.StyleMedia;return!e&&!n},z=function e(t,r){var a=n(t),i=n(r);return!t||!r||"object"!==a||a!==i||t instanceof Date?t instanceof Date?t.getTime()===r.getTime():"function"===a&&"function"===i||t===r:Object.keys(t).length===Object.keys(r).length&&Object.keys(t).every((function(n){return e(t[n],r[n])}))},J=function e(t){var r=null;return t&&(Array.isArray(t)?r=W()?t.join("_"):t[t.length-1]:"object"===n(t)?r=e(Object.keys(t)):"string"==typeof t&&(r=t)),r},X=function(e,n,t){if(!n)return new Promise((function(n,r){e((function(e,a){t&&"function"==typeof t&&t(),e?r(e):n(a)}))}));e(n)};function Y(){if("undefined"==typeof document&&"undefined"!=typeof navigator&&"ReactNative"==navigator.product)return Promise.resolve(!1);var e=window?window.indexedDB||window.webkitIndexedDB||window.mozIndexedDB||window.msIndexedDB:null,n="undefined"!=typeof InstallTrigger||window._isTestingFirefox,t=!
/*@cc_on!@*/
!!document.documentMode&&!!window.StyleMedia;return new Promise((function(r,a){try{if(n){if(!e)return void r(!0);var i=e.open("_testMozilla");i.onerror=function(){r(!0)},i.onsuccess=function(){r(!1)}}else t?window.indexedDB||!window.PointerEvent&&!window.MSPointerEvent?r(!1):r(!0):r(!1)}catch(e){a(e)}}))}function $(e){return"object"===n(e)&&!!e}var Z=function(){function e(){t(this,e),this._field={}}return a(e,[{key:"length",get:function(){return 0}},{key:"has",value:function(e){if($(e))return e.__wk&&"string"==typeof e.__wk&&this._field.hasOwnProperty(e.__wk);throw new Error("Invalid value used as weak map key")}},{key:"get",value:function(e){if($(e))return e.__wk&&"string"==typeof e.__wk?this._field[e.__wk]:null;throw new Error("Invalid value used as weak map key")}},{key:"set",value:function(e,n){if(!$(e))throw new Error("Invalid value used as weak map key");e.__wk&&"string"==typeof e.__wk||(e.__wk="__".concat((new Date).getTime(),"-").concat(parseInt(1e8*Math.random()))),this._field[e.__wk]=n}},{key:"delete",value:function(e){if(!$(e))throw new Error("Invalid value used as weak map key");this.has(e)&&delete this._field[e.__wk]}}]),e}(),ee=function(){try{return"undefined"!=typeof navigator&&"string"==typeof navigator.userAgent&&navigator.userAgent.indexOf("MSIE 10")>-1}catch(e){return!1}}()||function(){try{return document&&9===document.documentMode}catch(e){return!1}}()||function(){try{return document&&document.documentMode<=8}catch(e){return!1}}()||"undefined"==typeof window&&"undefined"!=typeof process?Z:WeakMap,ne=new ee,te=function(){function e(n,r,a){t(this,e),this.name=r,this.keyPath=a,ne.set(this,n)}return a(e,[{key:"findById",value:function(e,n){var t=this,r=ne.get(this);return X((function(n){var a=r.transaction(t.name,"readonly").objectStore(t.name).get(e);a.onsuccess=function(){return n(null,a.result||null)},a.onerror=function(){return n(a.error)}}),n)}},{key:"find",value:function(e,n){var t=this,r=ne.get(this);return X((function(n){if(e instanceof ce.Query){var a=J(e.index),i=[],s=r.transaction(t.name,"readonly").objectStore(t.name),o=a?s.index(a).openCursor(null,e.desc?"prev":"next"):s.openCursor(),u=e.offset;o.onsuccess=function(t){var r=t.target.result;if(r){var a=r.value;e.match(a)?!u||u<0?(i.push(a),i.length<e.limit?r.continue():n(null,i)):(u--,r.continue()):r.continue()}else n(null,i)},o.onerror=function(){n(o.error)}}else n(new Error("Invalid type: 'query' should be LocalDB.Query type."))}),n)}},{key:"count",value:function(e,n){var t=this,r=ne.get(this);return X((function(n){if(!e||e instanceof ce.Query){var a=r.transaction(t.name,"readonly").objectStore(t.name);if(e){var i=0,s=a.openCursor();s.onsuccess=function(){var t=s.result;t?(e.match(t.value)&&i++,t.continue()):n(null,i)},s.onerror=function(){n(s.error)}}else{var o=a.count();o.onsuccess=function(){return n(null,o.result)},o.onerror=function(){return n(o.error)}}}else n(new Error("Invalid type: 'query' should be LocalDB.Query type."))}),n)}},{key:"insert",value:function(e,t){var r=this,a=ne.get(this);return X((function(t){var i=a.transaction(r.name,"readwrite").objectStore(r.name);if(Array.isArray(e))!function(){var n=[],r=function(r){var a=e[r],s=i.add(a);s.onsuccess=function(){n.push(a),n.length===e.length&&t(null,n)},s.onerror=function(){t(s.error)}};for(var a in e)r(a)}();else if(e&&"object"===n(e)){var s=i.add(e);s.onsuccess=function(){return t(null,e)},s.onerror=function(){return t(s.error)}}else t(new Error("Invalid type: 'item' should be an object or an object array."))}),t)}},{key:"upsert",value:function(e,t){var r=this,a=ne.get(this);return X((function(t){var i=a.transaction(r.name,"readwrite").objectStore(r.name);if(e&&"object"===n(e)){var s=i.get(e[r.keyPath]);s.onsuccess=function(){if(s.result){var n=i.put(e);n.onsuccess=function(){return t(null,e)},n.onerror=function(){return t(n.error)}}else{var r=i.add(e);r.onsuccess=function(){return t(null,e)},r.onerror=function(){return t(r.error)}}},s.onerror=function(){t(s.error)}}else t(new Error("Invalid type: 'item' should be an object or an object array."))}),t)}},{key:"update",value:function(e,n){var t=this,r=ne.get(this);return X((function(n){var a=r.transaction(t.name,"readwrite").objectStore(t.name).put(e);a.onsuccess=function(){return n(null,e)},a.onerror=function(){return n(a.error)}}),n)}},{key:"updateIf",value:function(e,n,t){var r=this,a=ne.get(this);return X((function(t){if(e instanceof ce.Query){var i=[],s=a.transaction(r.name,"readwrite").objectStore(r.name),o=s.openCursor();o.onsuccess=function(r){var a=r.target.result;if(a){var o=a.value;if(e.match(o)){var u=!1;for(var c in n){var l=n[c];z(o[c],l)||(u=!0,o[c]=l)}if(u){var f=s.put(o);f.onsuccess=function(){i.push(o),a.continue()},f.onerror=function(){t(f.error)}}else a.continue()}else a.continue()}else t(null,i)},o.onerror=function(){t(o.error)}}else t(new Error("Invalid type: 'query' should be LocalDB.Query type."))}),t)}},{key:"remove",value:function(e,n){var t=this,r=ne.get(this);return X((function(n){var a=r.transaction(t.name,"readwrite").objectStore(t.name).delete(e);a.onsuccess=function(){return n(null)},a.onerror=function(){return n(a.error)}}),n)}},{key:"removeIf",value:function(e,n){var t=this,r=ne.get(this);return X((function(n){if(e instanceof ce.Query){var a=[],i=r.transaction(t.name,"readwrite").objectStore(t.name),s=i.openCursor();s.onsuccess=function(r){var s=r.target.result;if(s){var o=s.value;if(e.match(o)){var u=i.delete(o[t.keyPath]);u.onsuccess=function(){a.push(o),s.continue()},u.onerror=function(){n(u.error)}}else s.continue()}else n(null,a)},s.onerror=function(){n(s.error)}}else n(new Error("Invalid type: 'query' should be LocalDB.Query type."))}),n)}},{key:"clear",value:function(e){var n=this,t=ne.get(this);return X((function(e){var r=t.transaction(n.name,"readwrite").objectStore(n.name).clear();r.onsuccess=function(){return e(null)},r.onerror=function(){return e(r.error)}}),e)}}]),e}(),re=function e(t,r){var a=!0;for(var i in r){switch(i){case"/and":a=a&&r[i].reduce((function(n,r){return n&&e(t,r)}),!0);break;case"/or":a=a&&r[i].reduce((function(n,r){return n||e(t,r)}),!1);break;default:var s=r[i];if("object"===n(s))for(var o in s)switch(o){case">":a="number"==typeof t[i]&&"number"==typeof s[o]?a&&t[i]>s[o]:"string"==typeof t[i]&&"string"==typeof s[o]&&(a&&t[i].localeCompare(s[o])>0);break;case">=":a="number"==typeof t[i]&&"number"==typeof s[o]?a&&t[i]>=s[o]:"string"==typeof t[i]&&"string"==typeof s[o]&&(a&&t[i].localeCompare(s[o])>=0);break;case"<":a="number"==typeof t[i]&&"number"==typeof s[o]?a&&t[i]<s[o]:"string"==typeof t[i]&&"string"==typeof s[o]&&(a&&t[i].localeCompare(s[o])<0);break;case"<=":a="number"==typeof t[i]&&"number"==typeof s[o]?a&&t[i]<=s[o]:"string"==typeof t[i]&&"string"==typeof s[o]&&(a&&t[i].localeCompare(s[o])<=0);break;case"=":a=a&&t[i]===s[o];break;case"!=":a=a&&t[i]!==s[o];break;case"/in":a=a&&Array.isArray(s[o])&&s[o].indexOf(t[i])>=0;break;case"/nin":a=a&&Array.isArray(s[o])&&s[o].indexOf(t[i])<0;break;case"/like":a=a&&"string"==typeof s[o]&&"string"==typeof t[i]&&t[i].indexOf(s[o])>=0;break;case"/nlike":a=a&&"string"==typeof s[o]&&"string"==typeof t[i]&&t[i].indexOf(s[o])<0;break;case"/regex":a=a&&s[o]instanceof RegExp&&s[o].test(t[i]);break;case"/where":a=a&&s[o](t[i]);break;default:a=a&&z(t[i],s)}else a=a&&t[i]===s}if(!a)break}return a},ae=function(){function e(n){t(this,e),this.condition=n,this.offset=0,this.limit=Infinity,this.index=null,this.desc=!1}return a(e,[{key:"match",value:function(e){return re(e,this.condition)}}],[{key:"and",value:function(){for(var n=arguments.length,t=new Array(n),r=0;r<n;r++)t[r]=arguments[r];return t.length>0?new e({"/and":t}):new e({})}},{key:"or",value:function(){for(var n=arguments.length,t=new Array(n),r=0;r<n;r++)t[r]=arguments[r];return t.length>0?new e({"/or":t}):new e({})}},{key:"Order",get:function(){return{ASC:1,DESC:-1}}}]),e}();"undefined"==typeof Promise&&(Promise=b);var ie=new ee,se=new ee,oe=new ee,ue=window?window.indexedDB||window.webkitIndexedDB||window.mozIndexedDB||window.msIndexedDB:null,ce=function(){function e(n,r){if(t(this,e),!ue)throw new Error("IndexedDB is not supported in this environment. Check if you're in web browser which supports IndexedDB.");this.name=n,this.version=r,ie.set(this,{}),se.set(this,null),oe.set(this,{})}return a(e,[{key:"schema",value:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=ie.get(this);return t[e]=n,this}},{key:"build",value:function(){var e=this,n=ie.get(this),t=oe.get(this);return new Promise((function(r,a){var i=ue.open(e.name,e.version);i.onerror=function(e){a(new Error("IndexedDB is not available: ".concat(e.target.errorCode)))},i.onupgradeneeded=function(r){var a=r.target.result,i=r.target.transaction,s=a.objectStoreNames;for(var o in n){var u=n[o].key||"id",c=null;try{c=i.objectStore(o)}catch(e){"NotFoundError"===e.name&&(c=a.createObjectStore(o,{keyPath:u}))}if(c){for(var l=[],f=0;f<c.indexNames.length;f++)l.push(c.indexNames[f]);var h=new te(a,o,u);if(n[o].index&&n[o].index.length>0)for(var d in n[o].index){var g=J(n[o].index[d]);if(g){var v=!1;for(var y in l)if(l[y]===g){v=!0;break}if(!v){var m=Object.keys(n[o].index[d]);c.createIndex(g,W()?m:m[m.length-1],{unique:!1}),l.push(g)}}}var p=[];if(n[o].index)for(var k in n[o].index){var I=J(n[o].index[k]);I&&p.push(I)}for(var b=0;b<l.length;b++)p.indexOf(l[b])<0&&c.deleteIndex(l[b]);t[o]=h}}for(var w=0;w<s.length;w++)Object.keys(n).indexOf(s.item(w))<0&&a.deleteObjectStore(s.item(w));se.set(e,a)},i.onsuccess=function(a){var i=a.target.result;for(var s in n)if(!t[s]){var o=n[s].key||"id";t[s]=new te(i,s,o)}se.set(e,i),r()}}))}},{key:"close",value:function(){var e=se.get(this);e&&(e.close(),se.set(this,null))}},{key:"drop",value:function(){ue.deleteDatabase(this.name)}},{key:"collection",value:function(e){var n=oe.get(this);return n[e]&&n[e]instanceof te?n[e]:null}}],[{key:"Query",get:function(){return ae}}]),e}();function le(e,t){var r=n(e),a=n(t);return!e||!t||"object"!==r||r!==a||e instanceof Date?e instanceof Date?e.getTime()===t.getTime():"function"===r&&"function"===a||e===t:Object.keys(e).length===Object.keys(t).length&&Object.keys(e).every((function(n){return le(e[n],t[n])}))}function fe(e,n,t){if(!n)return new Promise((function(n,r){e((function(e,a){t&&"function"==typeof t&&t(),e?r(e):n(a)}))}));e((function(e,r){t&&"function"==typeof t&&t(),n(e,r)}))}"undefined"==typeof Promise&&(Promise=b);var he=function e(t,r){var a=!0;for(var i in r){switch(i){case"/and":a=a&&r[i].reduce((function(n,r){return n&&e(t,r)}),!0);break;case"/or":a=a&&r[i].reduce((function(n,r){return n||e(t,r)}),!1);break;default:var s=r[i];if("object"===n(s))for(var o in s)switch(o){case">":a="number"==typeof t[i]&&"number"==typeof s[o]?a&&t[i]>s[o]:"string"==typeof t[i]&&"string"==typeof s[o]&&(a&&t[i].localeCompare(s[o])>0);break;case">=":a="number"==typeof t[i]&&"number"==typeof s[o]?a&&t[i]>=s[o]:"string"==typeof t[i]&&"string"==typeof s[o]&&(a&&t[i].localeCompare(s[o])>=0);break;case"<":a="number"==typeof t[i]&&"number"==typeof s[o]?a&&t[i]<s[o]:"string"==typeof t[i]&&"string"==typeof s[o]&&(a&&t[i].localeCompare(s[o])<0);break;case"<=":a="number"==typeof t[i]&&"number"==typeof s[o]?a&&t[i]<=s[o]:"string"==typeof t[i]&&"string"==typeof s[o]&&(a&&t[i].localeCompare(s[o])<=0);break;case"=":a=a&&t[i]===s[o];break;case"!=":a=a&&t[i]!==s[o];break;case"/in":a=a&&Array.isArray(s[o])&&s[o].indexOf(t[i])>=0;break;case"/nin":a=a&&Array.isArray(s[o])&&s[o].indexOf(t[i])<0;break;case"/like":a=a&&"string"==typeof s[o]&&"string"==typeof t[i]&&t[i].indexOf(s[o])>=0;break;case"/nlike":a=a&&"string"==typeof s[o]&&"string"==typeof t[i]&&t[i].indexOf(s[o])<0;break;case"/regex":a=a&&s[o]instanceof RegExp&&s[o].test(t[i]);break;case"/where":a=a&&s[o](t[i]);break;default:a=a&&le(t[i],s)}else a=a&&t[i]===s}if(!a)break}return a},de=function(){function e(n){t(this,e),this.condition=n,this.offset=0,this.limit=Infinity,this.index=null,this.desc=!1}return a(e,[{key:"match",value:function(e){return he(e,this.condition)}}],[{key:"and",value:function(){for(var n=arguments.length,t=new Array(n),r=0;r<n;r++)t[r]=arguments[r];return t.length>0?new e({"/and":t}):new e({})}},{key:"or",value:function(){for(var n=arguments.length,t=new Array(n),r=0;r<n;r++)t[r]=arguments[r];return t.length>0?new e({"/or":t}):new e({})}},{key:"Order",get:function(){return{ASC:1,DESC:-1}}}]),e}();"undefined"==typeof Promise&&(Promise=b);var ge=null,ve=function(){function e(){if(t(this,e),ge)return ge;ge=this,this.queries=[],this.executing=!1,this.intervalID=null}return a(e,[{key:"addTask",value:function(e,n){var t=this;return new Promise((function(r,a){t.queries.push({task:e,cb:n,resolve:r,reject:a}),t._delay(),t.executeTask()}))}},{key:"executeTask",value:function(){var e=this;if(this.queries.length>0&&!this.executing){this.executing=!0;var n=this.queries[0].task,t=this.queries[0].cb,r=this.queries[0];return new Promise((function(e,t){n((function(n,r){n?t(n):e(r)}))})).then((function(e){r.resolve(e),t&&t(null,e)})).catch((function(e){r.reject(e),t&&t(e)})).finally((function(){e._executeNext()}))}return Promise.resolve(!0)}},{key:"_delay",value:function(){}},{key:"_executeNext",value:function(){var e=this;if(this.executing=!1,this.queries.length>0)return this.queries=this.queries.slice(1),new Promise((function(n,t){e._delay(),n(e.executeTask())}))}},{key:"start",value:function(){}},{key:"stop",value:function(){}}],[{key:"getInstance",value:function(){return new e}}]),e}();"undefined"==typeof Promise&&(Promise=b);var ye=function(){function e(n,r){t(this,e),this.name=n,this.pk=r,this.store={},this.columns=[],this.queue=ve.getInstance(),this.queue.start()}return a(e,[{key:"findById",value:function(e,n){var t=this;return this.queue.addTask((function(n){e?("string"!=typeof e&&(e=JSON.stringify(e)),t.store.hasOwnProperty(e)?n(null,t.store[e]):n(null,null)):n(new Error("Invalid type: 'id' should not be empty."))}),n)}},{key:"findOne",value:function(e,n){return e.limit=1,this.find(e,n)}},{key:"find",value:function(e,n){var t=this;return this.queue.addTask((function(n){if(e instanceof de){var r=[],a=Object.keys(t.store).map((function(e){return t.store[e]}));for(var i in a){var s=a[i];e.match(s)&&r.push(s)}e.index&&"Message"!==t.name&&r.sort((function(n,t){for(var r in e.index){if(n[r]>t[r])return e.index[r];if(n[r]<t[r])return-1*e.index[r]}return 0})),e.desc&&r.reverse();var o=e.offset||0;n(null,e.limit>=0&&r.length>=e.limit?r.slice(o,e.limit+o):r.slice(o))}else n(new Error("Invalid type: 'query' should be Query type."))}),n)}},{key:"count",value:function(e,n){var t=this;return this.queue.addTask((function(n){if(!e||e instanceof de)if(e){var r=0,a=e.offset||0;for(var i in t.store){if(r>=e.limit)break;var s=t.store[i];e.match(s)&&(a<=0?r+=1:a--)}n(null,r)}else n(null,Object.keys(t.store).length);else n(new Error("Invalid type: 'query' should be Query type."))}),n)}},{key:"_insertSingle",value:function(e,n){var t=this;return fe((function(n){if(e[t.pk]){var r="".concat(e[t.pk]);t.store.hasOwnProperty(r)?n(new Error("Duplicated item: item already exists.")):(t.store[r]=e,n(null,e))}else n(new Error("Invalid key: item should have key."))}),n)}},{key:"insert",value:function(e,t){var r=this;return this.queue.addTask((function(t){if(Array.isArray(e)){for(var a=[],i=0;i<e.length;i++)e[i]&&"object"===n(e[i])&&a.push(r._insertSingle(e[i]));e.length===a.length?Promise.all(a).then((function(){t(null,e)})).catch((function(e){t(e)})):t(new Error("Invalid type: 'item' should hold objects if it's an array."))}else e&&"object"===n(e)?r._insertSingle(e,(function(e,n){t(e,n)})):t(new Error("Invalid type: 'item' should be an object or an object array."))}),t)}},{key:"_upsertSingle",value:function(e,n){var t=this;return fe((function(n){if(e[t.pk]){var r="".concat(e[t.pk]);t.store[r]=e,n(null,e)}else n(new Error("Invalid key: item should have key."))}),n)}},{key:"upsert",value:function(e,t){var r=this;return this.queue.addTask((function(t){if(Array.isArray(e)){for(var a=[],i=0;i<e.length;i++)e[i]&&"object"===n(e[i])&&a.push(r._upsertSingle(e[i]));e.length===a.length?Promise.all(a).then((function(){t(null,e)})).catch((function(e){t(e)})):t(new Error("Invalid type: 'item' should hold objects if it's an array."))}else e&&"object"===n(e)?r._upsertSingle(e,(function(e,n){t(e,n)})):t(new Error("Invalid type: 'item' should be an object or an object array."))}),t)}},{key:"_updateSingle",value:function(e,n){var t=this;return fe((function(n){if(e[t.pk]){var r="".concat(e[t.pk]);t.store.hasOwnProperty(r)?(t.store[r]=e,n(null,e)):n(new Error("Invalid key: no item with such key was found"))}else n(new Error("Invalid key: item should have key."))}),n)}},{key:"update",value:function(e,t){var r=this;return this.queue.addTask((function(t){if(Array.isArray(e)){for(var a=[],i=0;i<e.length;i++)e[i]&&"object"===n(e[i])&&a.push(r._updateSingle(e[i]));e.length===a.length?Promise.all(a).then((function(){t(null,e)})).catch((function(e){t(e)})):t(new Error("Invalid type: 'item' should hold objects if it's an array."))}else e&&"object"===n(e)?r._updateSingle(e,(function(e,n){t(e,n)})):t(new Error("Invalid type: 'item' should be an object or an object array."))}),t)}},{key:"updateIf",value:function(e,n,t){var r=this;return this.queue.addTask((function(t){if(e instanceof de){var a=[];for(var i in r.store){var s=r.store[i];if(e.match(s))for(var o in n){var u=n[o];le(s[o],u)||(s[o]=u,a.push(s))}}t(null,a)}else t(new Error("Invalid type: 'query' should be Query type."))}),t)}},{key:"remove",value:function(e,n){var t=this;return this.queue.addTask((function(n){e?(e="".concat(e),t.store.hasOwnProperty(e)?(delete t.store[e],n(null)):n(new Error("Invalid key: no item with such key was found"))):n(new Error("Invalid type: 'id' should be string type."))}),n)}},{key:"removeIf",value:function(e,n){var t=this;return this.queue.addTask((function(n){if(e instanceof de){var r=[];for(var a in t.store){var i=t.store[a];e.match(i)&&(r.push(i),delete t.store[a])}n(null,r)}else n(new Error("Invalid type: 'query' should be Query type."))}),n)}},{key:"clear",value:function(e){var n=this;return this.queue.addTask((function(e){n.store={},e(null)}),e)}}]),e}();"undefined"==typeof Promise&&(Promise=b);var me=new ee,pe=new ee,ke=function(){function e(n,r){t(this,e),this.name=n,this.version=r,me.set(this,{}),pe.set(this,{}),ve.getInstance().start()}return a(e,[{key:"schema",value:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=me.get(this);return t[e]=n,this}},{key:"build",value:function(){var e=me.get(this),n=pe.get(this);return new Promise((function(t,r){for(var a in e)if(!n[a]){var i=e[a].key||"_id";n[a]=new ye(a,i)}t()}))}},{key:"close",value:function(){}},{key:"drop",value:function(){me.set(this,{});var e=pe.get(this);for(var n in e)e[n].clear();pe.set(this,{})}},{key:"collection",value:function(e){var n=pe.get(this);return n[e]&&n[e]instanceof ye?n[e]:null}}],[{key:"Query",get:function(){return de}}]),e}();"undefined"==typeof Promise&&(Promise=b);var Ie=null,be=!1,we=function(){function e(){t(this,e)}return a(e,null,[{key:"init",value:function(){Ie||(Ie=window?window.localStorage:null)}},{key:"useReactNative",value:function(e){Ie=e,be=!0}},{key:"getKeys",value:function(){return be?Ie.getAllKeys():new Promise((function(e){var n=[];for(var t in Ie)n.push(t);e(n)}))}},{key:"get",value:function(e){return be?Ie.getItem(e):new Promise((function(n){var t=Ie.getItem(e);n(void 0!==t?t:null)}))}},{key:"set",value:function(e,n){return be?Ie.setItem(e,n):new Promise((function(t){Ie.setItem(e,n),t()}))}},{key:"remove",value:function(e){return be?Ie.removeItem(e):new Promise((function(n){Ie.removeItem(e),n()}))}},{key:"clear",value:function(){return be?Ie.clear():new Promise((function(e){Ie.clear(),e()}))}}]),e}(),Ce=98765,Ee={NONE:0,ERROR:1,WARNING:2,INFO:3},Me=Ee.NONE,Ae="",Se=function(){function e(){t(this,e)}return a(e,null,[{key:"isValidLevel",value:function(e){return Object.keys(Ee).map((function(e){return Ee[e]})).indexOf(e)>-1}},{key:"level",get:function(){return Me},set:function(e){var n=Object.keys(Ee).map((function(e){return Ee[e]}));n.push(Ce),n.indexOf(e)>-1&&(Me=e)}},{key:"prefix",set:function(e){"string"==typeof e&&(Ae=e)}},{key:"_permit",value:function(e,n){if(Me>=e){var t="";switch(e){case Ee.ERROR:t="error";break;case Ee.WARNING:t="warning";break;case Ee.INFO:case Ce:t="log";break;default:t=""}if(console&&console[t]){for(var r,a,i="".concat(Ae," ").concat(n||""," "),s=arguments.length,o=new Array(s>2?s-2:0),u=2;u<s;u++)o[u-2]=arguments[u];if("string"==typeof o[0])o[0]=i+o[0],(r=console)[t].apply(r,o);else(a=console)[t].apply(a,[i].concat(o))}}}},{key:"error",value:function(){for(var n=arguments.length,t=new Array(n),r=0;r<n;r++)t[r]=arguments[r];e._permit.apply(e,[Ee.ERROR,"[ERROR]"].concat(t))}},{key:"warning",value:function(){for(var n=arguments.length,t=new Array(n),r=0;r<n;r++)t[r]=arguments[r];e._permit.apply(e,[Ee.WARNING,"[WARNING]"].concat(t))}},{key:"info",value:function(){for(var n=arguments.length,t=new Array(n),r=0;r<n;r++)t[r]=arguments[r];e._permit.apply(e,[Ee.INFO,"[INFO]"].concat(t))}},{key:"call",value:function(){for(var n=arguments.length,t=new Array(n),r=0;r<n;r++)t[r]=arguments[r];e._permit.apply(e,[Ce,"[CALL]"].concat(t))}},{key:"event",value:function(){for(var n=arguments.length,t=new Array(n),r=0;r<n;r++)t[r]=arguments[r];e._permit.apply(e,[Ce,"[EVENT]"].concat(t))}},{key:"view",value:function(){for(var n=arguments.length,t=new Array(n),r=0;r<n;r++)t[r]=arguments[r];e._permit.apply(e,[Ce,"[VIEW]"].concat(t))}},{key:"message",value:function(){for(var n=arguments.length,t=new Array(n),r=0;r<n;r++)t[r]=arguments[r];e._permit.apply(e,[Ce,"[MESSAGE]"].concat(t))}},{key:"cache",value:function(){for(var n=arguments.length,t=new Array(n),r=0;r<n;r++)t[r]=arguments[r];e._permit.apply(e,[Ce,"[CACHE]"].concat(t))}},{key:"sync",value:function(){for(var n=arguments.length,t=new Array(n),r=0;r<n;r++)t[r]=arguments[r];e._permit.apply(e,[Ce,"[SYNC]"].concat(t))}}]),e}(),Oe=function(e){!function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(n&&n.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),n&&o(e,n)}(c,e);var n,r,i=(n=c,r=u(),function(){var e,t=s(n);if(r){var a=s(this).constructor;e=Reflect.construct(t,arguments,a)}else e=t.apply(this,arguments);return f(this,e)});function c(e,n){var r;return t(this,c),(r=i.call(this,e)).name="SyncManagerException",r.code=n||0,r}return a(c,null,[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:c.Type.ERROR_UNKNOWN;return new c(e.message,e.code)}},{key:"Type",get:function(){return{ERROR_UNKNOWN:{code:81e4,message:"Unknown error occurred."},ERROR_DATABASE_IO:{code:810001,message:"Database I/O operation failed."},ERROR_SETUP_MISSING:{code:810100,message:"SendBirdSyncManager.setup() is not called."},ERROR_SENDBIRD_MISSING:{code:810101,message:"SendBird instance should be set before init()."},ERROR_DUPLICATED_FETCH:{code:810200,message:"Fetch is in progress."},ERROR_DUPLICATED_CHANGELOG_SYNC:{code:810210,message:"Sync is in progress."},ERROR_INVALID_PARAMETER:{code:810300,message:"Invalid parameter."}}}},{key:"throw",value:function(e){Se.error(e)}}]),c}(l(Error)),_e=function(e,n,t){var r=this,a=e.collection("GroupChannel"),i=new R,s=function(e,n){i.lock((function(t){var r=Hn.getInstance();r.currentUserId?(e.ownerUserId=r.currentUserId,e.lastMessageUpdatedAt=e.lastMessage?e.lastMessage.createdAt:e.createdAt,Se.cache("upsert channel",e),a.upsert(e.serialize(),(function(e,r){t(),n(e,r)}))):(t(),n(Oe.create(Oe.Type.ERROR_SETUP_MISSING)))}))},o=function(e){if(e){var t=n.GroupChannel.buildFromSerializedData(e);return t.lastMessageUpdatedAt=t.lastMessage?t.lastMessage.createdAt:t.createdAt,t}return null};return this.query=function(e,n,t){var r=Hn.getInstance();if(r.currentUserId){e.ownerUserId=r.currentUserId;var i=new Hn.LocalDB.Query(e);n&&(i.offset=n.offset||0,i.limit=n.limit||20,i.index=n.index,i.desc=n.desc),a.find(i,(function(e,n){if(e)t(e);else{for(var r=[],a=0;a<n.length;a++){var i=o(n[a]);r.push(i)}t(null,r)}}))}else t(Oe.create(Oe.Type.ERROR_SETUP_MISSING))},this.insert=function(e,n){r.getItem(e.url,(function(t,r){t?n(t):r?n(null,e):s(e,(function(t){t?n(t):n(null,e)}))}))},this.upsert=function(e,n){s(e,(function(t){t?n(t):n(null,e)}))},this.remove=function(n,t){!function(n,t){i.lock((function(r){var i=Hn.getInstance();i.currentUserId?(Se.cache("remove channel",n.url),a.remove(n.url,(function(a,s){if(a)r(),t(a);else{var o=new Hn.LocalDB.Query({ownerUserId:i.currentUserId,channelUrl:n.url});e.collection("MessageChunk").removeIf(o,(function(n){n?(r(),t(n)):e.collection("Message").removeIf(o,(function(e){r(),e?t(e):t(null,s)}))}))}}))):(r(),t(Oe.create(Oe.Type.ERROR_SETUP_MISSING)))}))}(n,(function(e){e?t(e):t(null,n)}))},this.getItem=function(e,n){a.findById(e,(function(e,t){e?n(e):n(null,o(t))}))},this.clear=function(n){return function(n){i.lock((function(t){Se.cache("clear channel"),a.clear((function(r){r?(t(),n(r)):e.collection("MessageChunk").clear((function(r){t(),r?n(r):e.collection("Message").clear(n)}))}))}))}(n)},this},Te={},Re=function(e,n){var t=this,r=e.collection("GroupChannelListQuery"),a=function(e){if(e){var t=n.GroupChannelListQuery.buildFromSerializedData(e);return t.filterKey=e.filterKey,t.ownerUserId=e.currentUserId,t.updatedAt=e.updatedAt,t.savepoint=e.savepoint,t}return null};return this.createFilterKey=function(e){var n=[];return n.push("order=".concat(e.order)),n.push("includeEmpty=".concat(e.includeEmpty)),n.push("customTypesFilter=".concat(e.customTypesFilter.sort().join(","))),n.join("&")},this.upsert=function(e,n){!function(e,n){e.filterKey=t.createFilterKey(e);var i=Hn.getInstance();if(i.currentUserId){Se.cache("upsert channel list query",e.filterKey),e.ownerUserId=i.currentUserId,e.updatedAt=(new Date).getTime(),e.savepoint||(e.savepoint="");var s=e.serialize();r.upsert(s,(function(t,r){if(t)n(t);else{if(Te[e.filterKey])for(var i in e)Te[e.filterKey].hasOwnProperty(i)&&(Te[e.filterKey][i]=e[i]);else Te[e.filterKey]=e;n(null,a(r))}}))}else n(Oe.create(Oe.Type.ERROR_SETUP_MISSING))}(e,(function(e,t){e?n(e):n(null,a(t))}))},this.remove=function(e,n){!function(e,n){Hn.getInstance().currentUserId?(Se.cache("remove channel list query",e.filterKey),r.remove(e.filterKey,(function(t,r){t?n(t):(Te[e.filterKey]&&delete Te[e.filterKey],n(null,r))}))):n(Oe.create(Oe.Type.ERROR_SETUP_MISSING))}(e,(function(e,t){e?n(e):n(null,a(t))}))},this.getItem=function(e,n){Te[e]?n(null,Te[e]):r.findById(e,(function(e,t){e?n(e):n(null,a(t))}))},this.clear=function(e){return function(e){Se.cache("clear channel list query"),Te={},r.clear((function(n){return e(n)}))}(e)},this};function Ue(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return n.map((function(e){return e.url})).indexOf(e.url)}function xe(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=null,a=function(e,n){return e>n};switch(n.order){case"latest_last_message":r="lastMessageUpdatedAt";break;case"chronological":r="createdAt";break;case"channel_name_alphabetical":r="name",a=function(e,n){return e.localeCompare(n)<0};break;default:r="lastMessageUpdatedAt"}var i=Ue(e,t);i<0&&(i=t.length);for(var s=0;s<t.length;s++){var o=t[s];if(e[r]===o[r]&&e.url===o.url){i=s;break}if(a(e[r],o[r])){i=s;break}}return i}function De(e){for(var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],t=0;t<n.length;t++)if(e.isIdentical(n[t]))return t;return-1}function Ne(e){for(var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],t=n.length,r=0;r<n.length;r++)if(n[r].createdAt>=e.createdAt){t=r;break}return t}"undefined"==typeof Promise&&(Promise=b);var Fe=function e(t,r){var a=n(t),i=n(r);return!t||!r||"object"!==a||a!==i||t instanceof Date?t instanceof Date?t.getTime()===r.getTime():"function"===a&&"function"===i||t===r:Object.keys(t).length===Object.keys(r).length&&Object.keys(t).every((function(n){return e(t[n],r[n])}))},Pe=function(){var e=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(n){var t=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"===n?t:3&t|8).toString(16)}))},qe=function(e,n){if(!n)return new Promise((function(n,t){e((function(e){return e?t(e):n()}))}));e(n)};function Le(e){return"".concat("unsent","-").concat(e)}function Be(e){if(e)if(e.sendingStatus&&"succeeded"!==e.sendingStatus){if(!e.reqId)throw Oe.throw(Oe.create(Oe.Type.ERROR_INVALID_PARAMETER));e.messageId=Le(e.reqId)}else e.messageId="".concat(e.messageId)}var je=function(e,n,t){var r=this,a=new R,i=e.collection("Message"),s=function(e,n){a.lock((function(r){var a=Hn.getInstance(),s=e.isDeleted?e:o(e.serialize());Be(s),s.messageId?a.currentUserId?(s.hasOwnProperty("isVisible")||(s.isVisible=!0),s.hasOwnProperty("isDeleted")||(s.isDeleted=!1),s.ownerUserId=a.currentUserId,Se.cache("upsert message","owner="+s.ownerUserId,"visible="+s.isVisible,"deleted="+s.isDeleted,s),i.findById(s.messageId,(function(e,a){e?(r(),n(e)):a?a.isDeleted?(r(),n(null,a)):"pending"!==s.sendingStatus||"pending"===a.sendingStatus?(s.isVisible=s.isVisible||a.isVisible,i.upsert(s.serialize(),(function(e,t){r(),e?n(e):n(null,t)}))):(r(),n(null,a)):i.upsert(s.serialize(),(function(e,a){e?(r(),n(e)):(t.messageCount[s.channelUrl]||(t.messageCount[s.channelUrl]=0),t.messageCount.all++,t.messageCount[s.channelUrl]++,r(),n(null,a))}))}))):(r(),n(Oe.create(Oe.Type.ERROR_SETUP_MISSING))):(r(),n(null,e))}))},o=function(e){var t=null;return e&&("user"===e.messageType?t=n.UserMessage.buildFromSerializedData(e):"file"===e.messageType?t=n.FileMessage.buildFromSerializedData(e):"admin"===e.messageType&&(t=n.AdminMessage.buildFromSerializedData(e)),t&&(!function(e){e&&(e.sendingStatus&&"succeeded"!==e.sendingStatus?e.messageId=0:e.messageId=parseInt(e.messageId))}(t),"pending"===t.sendingStatus&&(t.pendingResolveTop=e.pendingResolveTop,t.pendingResolveBottom=e.pendingResolveBottom))),t||e},u=function(e,n){return n.messageType&&(e.messageType=n.messageType),n.customType&&(e.customType=n.customType),n.senderUserIdsFilter&&n.senderUserIdsFilter.length>0&&(e["sender.userId"]={"/in":n.senderUserIdsFilter}),e};return this.query=function(e,n,t){e||(e={}),n||(n={}),n.includeInvisible||(e.isVisible=!0,e.isDeleted=!1);var r=Hn.getInstance();if(r.currentUserId){e.ownerUserId=r.currentUserId;var a=new Hn.LocalDB.Query(e);a.offset=n.offset||0,a.limit=n.limit||50,a.desc=n.desc,a.index=n.index||{ownerUserId:Hn.LocalDB.Query.Order.ASC,channelUrl:Hn.LocalDB.Query.Order.ASC,createdAt:Hn.LocalDB.Query.Order.DESC},i.find(a,(function(e,n){if(e)t(e);else{for(var r=[],a=0;a<n.length;a++){var i=o(n[a]);r.push(i)}t(null,r)}}))}else t(Oe.create(Oe.Type.ERROR_SETUP_MISSING))},this.find=function(e,n){i.find(e,n)},this.count=function(e,n){i.count(e,n)},this.upsert=function(e,n){e?s(e,(function(e,t){e?n(e):n(null,o(t))})):n(null)},this.remove=function(e,n,t){r.getItem(n,(function(r,a){var i=Hn.getInstance(),o={messageId:n,isDeleted:!0,serialize:function(){return{messageId:"".concat(n),ownerUserId:a?a.ownerUserId:i.currentUserId,channelUrl:e,createdAt:a?a.createdAt:0,sendingStatus:a?a.sendingStatus:"succeeded",isVisible:!1,isDeleted:!0}}};s(o,(function(e){e?t(e):t(null,n)}))}))},this.removeUnsent=function(e,n){var s=Le(e);r.getItem(s,(function(e,r){e?n(e):r?function(e,n){a.lock((function(r){Hn.getInstance().currentUserId?(Se.cache("remove message",e.messageId),Be(e),i.remove(e.messageId,(function(a,i){a||(t.messageCount.all--,t.messageCount[e.channelUrl]--),r(),n(a,i)}))):(r(),n(Oe.create(Oe.Type.ERROR_SETUP_MISSING)))}))}(r,n):n(null)}))},this.removeExpiredMessages=function(e,n){var t=(new Date).getTime()-864e5*e,r=new Hn.LocalDB.Query({ownerUserId:Hn.getInstance().currentUserId,sendingStatus:"failed",createdAt:{"<":t}});r.limit=Number.MAX_SAFE_INTEGER,r.index={ownerUserId:Hn.LocalDB.Query.Order.ASC,createdAt:Hn.LocalDB.Query.Order.ASC},i.removeIf(r,n)},this.loadMessagesByHistoryOffset=function(e,n,t){var a={channelUrl:n,createdAt:{"<":e},ownerUserId:Hn.getInstance().currentUserId},i={};i.limit=Number.MAX_SAFE_INTEGER,i.desc=!0,r.query(a,i,t)},this.clearMessagesByHistoryOffset=function(e,n,t){var r=new Hn.LocalDB.Query({channelUrl:n,ownerUserId:Hn.getInstance().currentUserId,createdAt:{"<":e}});r.limit=Number.MAX_SAFE_INTEGER,r.index={ownerUserId:Hn.LocalDB.Query.Order.ASC,channelUrl:Hn.LocalDB.Query.Order.ASC,createdAt:Hn.LocalDB.Query.Order.DESC},i.removeIf(r,t)},this.getItemWithVisibility=function(e,n){i.findById(e,(function(e,t){e?n(e):n(null,{item:o(t),isVisible:!!t&&t.isVisible})}))},this.getItem=function(e,n){i.findById(e,(function(e,t){e?n(e):n(null,o(t))}))},this.clear=function(e){return function(e){a.lock((function(n){Se.cache("clear messages"),i.clear((function(r){r||(t.messageCount={all:0}),n(),e(r)}))}))}(e)},this.loadPreviousSucceededMessages=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:(new Date).getTime(),a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=arguments.length>4?arguments[4]:void 0,s={channelUrl:e,sendingStatus:"succeeded",createdAt:{"<=":t}};u(s,n),a.desc=!0,r.query(s,a,i)},this.loadNextSucceededMessages=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=arguments.length>4?arguments[4]:void 0,s={channelUrl:e,sendingStatus:"succeeded",createdAt:{">=":t}};u(s,n),a.desc=!1,r.query(s,a,i)},this.loadFailedMessages=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0,i={channelUrl:e,sendingStatus:"failed"};u(i,n),t.limit=Number.MAX_SAFE_INTEGER,t.desc=!0,r.query(i,t,a)},this.loadOldestFailedMessages=function(e){var n={sendingStatus:"failed"};u(n,{});var t={limit:Number.MAX_SAFE_INTEGER,desc:!1};r.query(n,t,e)},this.loadPendingMessages=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0,i={channelUrl:e,sendingStatus:"pending"};u(i,n),t.limit=Number.MAX_SAFE_INTEGER,t.desc=!0,r.query(i,t,a)},this.resolvePendingMessagesAsFailed=function(e,n,t,r){var a=new Hn.LocalDB.Query({ownerUserId:Hn.getInstance().currentUserId,channelUrl:e,sendingStatus:"pending",pendingResolveTop:{">=":n},pendingResolveBottom:{"<=":t}});i.updateIf(a,{sendingStatus:"failed"},(function(e,n){r(e,n?n.map((function(e){return o(e)})):null)}))},this.pullPendingResolveTop=function(e,n,t){var r=new Hn.LocalDB.Query({ownerUserId:Hn.getInstance().currentUserId,channelUrl:e,sendingStatus:"pending",pendingResolveTop:{"<":n}});i.updateIf(r,{pendingResolveTop:n},(function(e,n){t(e,n?n.map((function(e){return o(e)})):null)}))},this.pullPendingResolveBottom=function(e,n,t){var r=new Hn.LocalDB.Query({ownerUserId:Hn.getInstance().currentUserId,channelUrl:e,sendingStatus:"pending",pendingResolveBottom:Number.MAX_SAFE_INTEGER});i.updateIf(r,{pendingResolveBottom:n},(function(e,n){t(e,n?n.map((function(e){return o(e)})):null)}))},this.shrinkMessageChunk=function(e,n,r){var a,s={top:Number.MAX_SAFE_INTEGER,bottom:0},o=v(n);try{for(o.s();!(a=o.n()).done;){var u=a.value;s.top=Math.min(s.top,u.createdAt),s.bottom=Math.max(s.bottom,u.createdAt)}}catch(e){o.e(e)}finally{o.f()}on.getInstance().chunkContainer.sliceRange(e,s.top,s.bottom,(function(a){if(a)r(a);else{var s=0;n.forEach((function(a){Be(a),i.remove(a.messageId,(function(a){a||(t.messageCount[e]--,t.messageCount.all--),++s>=n.length&&r(null)}))}))}}))},this},Ve={},Ge=function(e){var n=[];for(var t in e)n.push("".concat(t,"=").concat(e[t]));return n.join("&")},Qe=function(){function e(n,r){t(this,e),this.chunkId=Pe(),this.channelUrl=n,this.filterKey=Ge(r),this.filter=r,this.startAt=(new Date).getTime(),this.endAt=0}return a(e,[{key:"hasDefaultFilter",value:function(){var n=e.getDefaultFilter();return Fe(this.filter,n)}},{key:"hasVolume",value:function(){return this.endAt>this.startAt}},{key:"isOverlap",value:function(e){return e.startAt<=this.startAt&&this.startAt<=e.endAt||e.startAt<=this.endAt&&this.endAt<=e.endAt}},{key:"isSame",value:function(e){return!!e&&(e.startAt===this.startAt&&this.endAt===e.endAt)}},{key:"hasSameFilter",value:function(e){return!!e&&(e.channelUrl===this.channelUrl&&e.filterKey===this.filterKey)}},{key:"contains",value:function(e){return this.startAt<=e&&e<=this.endAt}},{key:"containsMessage",value:function(e){return this.contains(e.createdAt)}},{key:"serialize",value:function(){var e=JSON.parse(JSON.stringify(this));return Object.freeze(e)}},{key:"extendForward",value:function(e){this.endAt=Math.max(this.endAt,e)}},{key:"extendBackward",value:function(e){this.startAt=Math.min(this.startAt,e)}},{key:"extendWithChunk",value:function(e){return this.extendForwardWithChunk(e),this.extendBackwardWithChunk(e),this}},{key:"extendForwardWithChunk",value:function(e){return this.extendForward(e.endAt),this}},{key:"extendBackwardWithChunk",value:function(e){return this.extendBackward(e.startAt),this}},{key:"extendWithMessage",value:function(e){return this.extendForwardWithMessage(e),this.extendBackwardWithMessage(e),this}},{key:"extendForwardWithMessage",value:function(e){return this.extendForward(e.createdAt),this}},{key:"extendBackwardWithMessage",value:function(e){return this.extendBackward(e.createdAt),this}}],[{key:"createFromJson",value:function(n){var t=new e(n.channelUrl,n.filter);return t.chunkId=n.chunkId,t.startAt=n.startAt,t.endAt=n.endAt,t}},{key:"getDefaultFilter",value:function(){return{messageTypeFilter:null,customTypeFilter:null,senderUserIdsFilter:[],includeMetaArray:!0}}},{key:"MessageTypeFilterRealValue",get:function(){return["","user","file","admin"]}}]),e}(),He=function(e){var n=this,t=e.collection("MessageChunk"),r=new R;return this.reload=function(e,n){return t.findById(e.chunkId,n)},this.upsert=function(e,n){!function(e,n){r.lock((function(r){var a=Hn.getInstance();a.currentUserId?(e.ownerUserId=a.currentUserId,Ve[e.chunkId]=e,t.upsert(Ve[e.chunkId].serialize(),(function(e,t){r(),e?n(e):n(null,t)}))):(r(),n(Oe.create(Oe.Type.ERROR_SETUP_MISSING)))}))}(e,(function(e,t){e?n(e):n(null,Qe.createFromJson(t))}))},this.remove=function(e,n){!function(e,n){r.lock((function(r){Hn.getInstance().currentUserId?(Ve[e]&&delete Ve[e],t.remove(e,(function(e,t){r(),e?n(e):n(null,t)}))):(r(),n(Oe.create(Oe.Type.ERROR_SETUP_MISSING)))}))}(e,(function(t){t?n(t):n(null,e)}))},this.clear=function(e){return function(e){r.lock((function(n){Ve={},t.clear((function(t){n(),e(t)}))}))}(e)},this.getChunksByHistoryOffset=function(e,n,r){var a=Hn.getInstance(),i=Qe.getDefaultFilter();if(a.currentUserId){var s=new Hn.LocalDB.Query({ownerUserId:a.currentUserId,channelUrl:n,filterKey:Ge(i),endAt:{"<=":e}});s.limit=Number.MAX_SAFE_INTEGER,s.index={ownerUserId:Hn.LocalDB.Query.Order.ASC,channelUrl:Hn.LocalDB.Query.Order.ASC,filterKey:Hn.LocalDB.Query.Order.ASC,endAt:Hn.LocalDB.Query.Order.DESC},t.find(s,r)}},this.clearChunkByHistoryOffset=function(e,r,a){var i=Hn.getInstance(),s=Qe.getDefaultFilter();if(i.currentUserId){var o=new Promise((function(n,a){var o=new Hn.LocalDB.Query({ownerUserId:i.currentUserId,channelUrl:r,filterKey:Ge(s),endAt:{"<=":e}});o.limit=Number.MAX_SAFE_INTEGER,o.index={ownerUserId:Hn.LocalDB.Query.Order.ASC,channelUrl:Hn.LocalDB.Query.Order.ASC,filterKey:Hn.LocalDB.Query.Order.ASC,endAt:Hn.LocalDB.Query.Order.DESC},t.removeIf(o,(function(e,t){return e?a(e):n(t)}))})),u=new Promise((function(t,a){n.getChunkByTimestamp(r,s,e,(function(r,i){if(r)return a(r);i&&(i.extendBackward(e),n.upsert(i,(function(e,n){if(e)return a(e);t(n)}))),t(i)}))}));Promise.all([o,u]).then((function(e){a(null)})).catch((function(e){a(e)}))}},this.getChunkByTimestamp=function(e,r,a,i){var s=Hn.getInstance();if(s.currentUserId){var o=new Hn.LocalDB.Query({ownerUserId:s.currentUserId,channelUrl:e,filterKey:Ge(r),startAt:{"<=":a},endAt:{">=":a}});o.limit=1,o.index={ownerUserId:Hn.LocalDB.Query.Order.ASC,channelUrl:Hn.LocalDB.Query.Order.ASC,filterKey:Hn.LocalDB.Query.Order.ASC,endAt:Hn.LocalDB.Query.Order.DESC},t.find(o,(function(r,s){if(r)i(r);else{var o=s.length>0?Qe.createFromJson(s[0]):null;if(o)if(o.hasDefaultFilter())i(null,o);else{var u=new Hn.LocalDB.Query({channelUrl:e,filterKey:Ge(Qe.getDefaultFilter()),startAt:{"<=":a}});u.limit=1,u.index={ownerUserId:Hn.LocalDB.Query.Order.ASC,channelUrl:Hn.LocalDB.Query.Order.ASC,filterKey:Hn.LocalDB.Query.Order.ASC,endAt:Hn.LocalDB.Query.Order.DESC},t.find(u,(function(e,t){if(e)i(e);else{var r=t.length>0?Qe.createFromJson(t[0]):null;if(r)if(r.endAt>o.endAt)if(r.isOverlap(o))o.extendWithChunk(r),n.upsert(o,i);else{var a=new Qe(o.channelUrl,o.filter);a.startAt=r.startAt,a.endAt=r.endAt,n.upsert(a,i)}else i(null,o);else i(null,o)}}))}else i(null)}}))}else i(Oe.create(Oe.Type.ERROR_SETUP_MISSING))},this.mergePreviousChunkOverlap=function(e,r){var a=Hn.getInstance();if(a.currentUserId){var i=new Hn.LocalDB.Query({ownerUserId:a.currentUserId,chunkId:{"!=":e.chunkId},channelUrl:e.channelUrl,filterKey:e.filterKey,endAt:{">=":e.startAt}});i.limit=Number.MAX_SAFE_INTEGER,t.find(i,(function(a,i){if(a)r(a);else if(i.length>0){var s=new Hn.LocalDB.Query({chunkId:{"/in":i.map((function(e){return e.chunkId}))}});t.removeIf(s,(function(t){if(t)r(t);else{for(var a=0;a<i.length;a++)e.extendWithChunk(i[a]);n.upsert(e,r)}}))}else n.upsert(e,r)}))}else r(Oe.create(Oe.Type.ERROR_SETUP_MISSING))},this.sliceRange=function(e,r,a,i){var s=Hn.getInstance();if(s.currentUserId){var o=new Hn.LocalDB.Query({ownerUserId:s.currentUserId,channelUrl:e,filterKey:Ge(Qe.getDefaultFilter())});o.limit=Number.MAX_SAFE_INTEGER,t.find(o,(function(e,t){e||((t=t.map((function(e){return Qe.createFromJson(e)})).filter((function(e){return e.contains(r)||e.contains(a)}))).length>0?function(){var e,s=0,o=v(t);try{var u=function(){var o=e.value,u=new Qe(o.channelUrl,o.filter);u.extendBackward(o.startAt),u.extendForward(r);var c=new Qe(o.channelUrl,o.filter);c.extendBackward(a),c.extendForward(o.endAt),n.remove(o.chunkId,(function(e){e||(u.hasVolume()&&n.upsert(u,(function(e){e&&Se.error("Failed to write the partial chunk on chunk slice.")})),c.hasVolume()&&n.upsert(c,(function(e){e&&Se.error("Failed to write the partial chunk on chunk slice.")})),on.getInstance().applyTrimmedChunk(o,c)),++s>=t.length&&i(null)}))};for(o.s();!(e=o.n()).done;)u()}catch(e){o.e(e)}finally{o.f()}}():i(null))}))}else i(Oe.create(Oe.Type.ERROR_SETUP_MISSING))},this};function Ke(e,n,t){return t?n.channelUrl===e.url&&((!t.messageType||t.messageType===n.messageType)&&((!t.customType||t.customType===n.customType)&&!(Array.isArray(t.senderUserIdsFilter)&&t.senderUserIdsFilter.length>0&&n.sender&&t.senderUserIdsFilter.indexOf(n.sender.userId)<0))):n.channelUrl===e.url}var We=function(){var e={},n=[];return this.removeChannel=function(e){for(var t in n){var r=n[t];r.controller.channel.url===e.url&&r.view.channelWasRemoved(e)}},this.updateChannel=function(t){for(var r in n){var a=n[r];a.controller.channel.url===t.url&&a.view.channelWasUpdated(t)}(!e.hasOwnProperty(t.url)||t.messageOffsetTimestamp>e[t.url])&&(e[t.url]=t.messageOffsetTimestamp,e[t.url]&&(on.getInstance().chunkContainer.clearChunkByHistoryOffset(t.messageOffsetTimestamp,t.url,(function(e){e&&Se.error("Error while clearing message chunk history",e)})),on.getInstance().messageContainer.loadMessagesByHistoryOffset(t.messageOffsetTimestamp,t.url,(function(e,r){if(!e){on.getInstance().messageContainer.clearMessagesByHistoryOffset(t.messageOffsetTimestamp,t.url,(function(e,n){e&&Se.error("Error while clearing chat history",e)}));var a=r.filter((function(e){return e.hasOwnProperty("sendingStatus")&&"failed"===e.sendingStatus})).map((function(e){return e.reqId})),i=r.filter((function(e){return e.hasOwnProperty("sendingStatus")&&"succeeded"===e.sendingStatus})).map((function(e){return e.messageId}));if(i.length>0||a.length>0)for(var s in n){var o=n[s];o.controller.channel.url===t.url&&(i.length>0&&o.view.removeViewItems(i),a.length>0&&o.view.removeViewItems(a,{isRequestId:!0}))}}}))))},this.addCollection=function(t,r){n.push({controller:t,view:r}),t.hasOwnProperty("channel")&&t.channel.hasOwnProperty("url")&&(!e.hasOwnProperty(t.channel.url)||t.channel.messageOffsetTimestamp>e[t.channel.url])&&(e[t.channel.url]=t.channel.messageOffsetTimestamp)},this.removeCollection=function(e){var t=n.map((function(e){return e.controller})).indexOf(e);t>=0&&(n[t].controller._pause(),n.splice(t,1))},this.clearCollection=function(){for(var e in n)n[e].controller._pause();n=[]},this.pause=function(){for(var e in n)n[e].controller._pause()},this.resume=function(e){var t=n.length,r=null;for(var a in n)n[a].controller._resume((function(n){t--,r=n||r,t<=0&&e(r)}))},this.upsert=function(e,t){if(e.length>0)for(var r in n){var a=n[r];if(a.controller!==t){var i=[];for(var s in e){var o=e[s];Ke(a.controller.channel,o,a.controller.filter)&&i.push(o)}i.length>0&&a.view.addViewItems(i,{isEventMessage:!0,direction:"next"})}}},this.update=function(e,t){if(e.length>0)for(var r in n){var a=n[r];if(a.controller!==t){var i=[],s=[];for(var o in e){var u=e[o];a.view.messages.map((function(e){return e.messageId})).indexOf(u.messageId)>=0&&(Ke(a.controller.channel,u,a.controller.filter)?i.push(u):s.push(u))}i.length>0&&a.view.addViewItems(i,{isEventMessage:!0,direction:"next"}),s.length>0&&a.view.removeViewItems(s)}}},this.read=function(e,t){for(var r in n){var a=n[r];a.controller!==t&&a.controller.channel.url===e.url&&(a.controller.channel=e,a.view.addViewItems(a.view.messages))}},this.remove=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e.length>0)for(var a in n){var i=n[a];i.controller!==t&&i.view.removeViewItems(e,r)}},this.clear=function(){for(var t in e={},n){n[t].view.clearViewItem()}},this.updateCurrentChunk=function(e){for(var t in n){var r=n[t];r.view.currentChunk&&!r.view.currentChunk.hasSameFilter(e)||r.view.updateCurrentChunk(e)}},this.applyTrimmedChunk=function(e,t){for(var r in n){var a=n[r];a.view.currentChunk&&a.view.currentChunk.chunkId===e.chunkId&&(a.controller._chunkTrimmed=!0,a.view.updateCurrentChunk(t))}},this};function ze(){this.onChannelEvent=function(e,n){}}function Je(){this.onPendingMessageEvent=function(e,n){},this.onFailedMessageEvent=function(e,n,t){},this.onSucceededMessageEvent=function(e,n){},this.onNewMessage=function(e){},this.onMessageEvent=function(e,n){},this.onChannelRemoved=function(e){},this.onChannelUpdated=function(e){}}var Xe={INSERT:"insert",UPDATE:"update",MOVE:"move",REMOVE:"remove",CLEAR:"clear"},Ye={INSERT:"insert",UPDATE:"update",REMOVE:"remove",CLEAR:"clear"},$e={NONE:"none",UPDATE_RESEND_FAILED:"update_resend_failed",REMOVE_RESEND_SUCCEEDED:"remove_resend_succeeded",REMOVE_RETENTION_EXPIRED:"remove_retention_expired",REMOVE_EXCEEDED_MAX_COUNT:"remove_exceeded_max_count",REMOVE_MANUAL_ACTION:"remove_manual_action",REMOVE_UNKNOWN:"remove_unknown"},Ze=function(){function e(n){var r=this,a=n.channelUrl;t(this,e),this._resendingTimer=null;var i=!1;Object.defineProperty(this,"_isRunning",{get:function(){return i},set:function(e){var n=i;i=e,n!==e&&r._toggleResendingInterval()}}),this._clear(),this.collectionReferenceCount=1,this._channelUrl=a}return a(e,[{key:"_clear",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{noManualMessages:!1};this._retryCount=0,this._delayTime=0,this._isRunning=!1,e.noManualMessages||(this.manualMessages=[]),this.automaticMessages=[],clearTimeout(this._resendingTimer),this._resendingTimer=null}},{key:"_appendMessagesWithOrder",value:function(e){var n=this,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.hasOwnProperty("isAutomatic")?t.isAutomatic:Hn.syncManagerOptions.messageResendPolicy===Hn.Options.MessageResendPolicy.AUTOMATIC;e.forEach((function(e){for(var t=r?n.automaticMessages.length:n.manualMessages.length,a=t,i=0;i<t;i++){var s=r?n.automaticMessages[i]:n.manualMessages[i];if(e.createdAt<s.createdAt){a=i;break}}r?n.automaticMessages.splice(a,0,e):n.manualMessages.splice(a,0,e)}))}},{key:"appendMessages",value:function(e){for(var n=this,t=0===this.automaticMessages.length,r=Hn.syncManagerOptions.messageResendPolicy===Hn.Options.MessageResendPolicy.AUTOMATIC,a=e.length,i=[],s=function(t){var a=e[t];!1;var s=[];r&&(s=n.automaticMessages),[].concat(h(s),h(n.manualMessages)).filter((function(e){return e.reqId===a.reqId})).length>0||i.push(a)},o=0;o<a;o++)s(o);this._appendMessagesWithOrder(i),t&&this.automaticMessages.length>0&&this._resendUserMessage()}},{key:"removeMessages",value:function(e){for(var n=this,t=Hn.syncManagerOptions.messageResendPolicy===Hn.Options.MessageResendPolicy.AUTOMATIC,r=e.length,a=!1,i=function(r){var i=e[r];a=!1,t&&(n.automaticMessages=n.automaticMessages.filter((function(e){return e.reqId!==i.reqId||(a=!0,!1)}))),a||(n.manualMessages=n.manualMessages.filter((function(e){return e.reqId!==i.reqId})))},s=0;s<r;s++)i(s)}},{key:"_resendUserMessage",value:function(){var e=this;if(this._retryCount++,Hn.syncManagerOptions.automaticMessageResendRetryCount!==Hn.Options.INFINITY&&this._retryCount>Hn.syncManagerOptions.automaticMessageResendRetryCount)return this._appendMessagesWithOrder(this.automaticMessages,{isAutomatic:!1}),this.automaticMessages=[],tn.getInstance().upsertMessages(this._channelUrl,this.manualMessages),void this._clear({noManualMessages:!0});this._resendingTimer=setTimeout((function(){var n=e.automaticMessages[0];if(n&&e._isRunning){var t=on.getInstance(),r=t.sb,a=r.getErrorFirstCallback();r.GroupChannel.getChannel(e._channelUrl,(function(r,i){if(a){var s=i;i=r,r=s}i?(e._increaseDelayTime(),e._resendUserMessage()):r.resendUserMessage(n,(function(r,i){if(a){var s=i;i=r,r=s}if(i){if(800110===i.code){var o={reason:$e.REMOVE_UNKNOWN};tn.getInstance().removeMessages(e._channelUrl,[n],o),e.removeMessages([n])}else e._increaseDelayTime();e._resendUserMessage()}else{e.removeMessages([n]),e._retryCount=0,e._delayTime=0;var u={reason:$e.REMOVE_RESEND_SUCCEEDED};tn.getInstance().removeMessages(e._channelUrl,[n],u),t.messageContainer.upsert(r,(function(n,r){n||t.broadcast.upsert([r]),e._resendUserMessage()}))}}))}))}else e._retryCount=0,e._delayTime=0}),this._delayTime)}},{key:"_increaseDelayTime",value:function(){this._delayTime=1e4===this._delayTime?this._delayTime:this._delayTime+2e3}},{key:"_toggleResendingInterval",value:function(){this._isRunning?this._resendUserMessage():(clearTimeout(this._resendingTimer),this._resendingTimer=null,this._retryCount=0,this._delayTime=0)}},{key:"resumeResending",value:function(){Se.call("FailedMessageQueue resumeResending()"),this._retryCount=0,this._delayTime=0,this._isRunning=!0}},{key:"pauseResending",value:function(){Se.call("FailedMessageQueue pauseResending()"),this._isRunning=!1}},{key:"increaseCount",value:function(){++this.collectionReferenceCount}},{key:"decreaseCount",value:function(){--this.collectionReferenceCount,0===this.collectionReferenceCount&&this._clear()}}]),e}(),en=function(){function e(n){var r=n.msec,a=void 0===r?0:r,i=n.isEternal,s=void 0===i||i,o=n.timeoutFn,u=void 0===o?function(){}:o;t(this,e),this.time=a,this.isEternal=s,this.timeoutFn=u,this.checker=null}return a(e,[{key:"reset",value:function(){this.stop(),this.time=0,this.timeoutFn=function(){}}},{key:"start",value:function(){var e=this;if(null===this.checker){var n=(new Date).getTime();this.checker=setTimeout((function(){(new Date).getTime()-n>=e.time&&(e.isEternal?e.start():e.stop(),e.timeoutFn&&"function"==typeof e.timeoutFn&&e.timeoutFn())}),432e5)}}},{key:"stop",value:function(){clearTimeout(this.checker),this.checker=null}}]),e}(),nn=null,tn=function(){function e(){if(t(this,e),nn)return nn;this.queueMap={},this.expirationTimer=new en({msec:864e5*Hn.syncManagerOptions.failedMessageRetentionDays,isEternal:!0,timeoutFn:this.removeExpiredMessages}),this.oldestFailedMessageTs=0,nn=this}return a(e,[{key:"getMessages",value:function(e){return this.queueMap[e]?this.queueMap[e].messages:[]}},{key:"loadFailedMessages",value:function(e,n,t){var r=this;on.getInstance().messageContainer.loadFailedMessages(e,{},{},(function(a,i){var s=i;if(!a){Se.cache("fetch failed message",i.map((function(e){return e.reqId})));var o=r.queueMap[e];o&&(o.appendMessages(i),o.resumeResending()),s=i.filter((function(e){var t=!0,r=!0,a=!0;if(n.messageTypeFilter&&(t=e.messageType===Qe.MessageTypeFilterRealValue[n.messageTypeFilter]),n.customTypeFilter&&(r=e.customType===n.customTypeFilter),n.senderUserIdsFilter&&Array.isArray(n.senderUserIdsFilter)&&n.senderUserIdsFilter.length>0&&(a=e.sender&&n.senderUserIdsFilter.indexOf(e.sender.userId)>-1),t&&r&&a)return e}))}t(a,s)}))}},{key:"removeExpiredMessages",value:function(e){var n=this;this.expirationTimer.stop();var t=Math.floor(((new Date).getTime()-this.oldestFailedMessageTs)/864e5);if(0!==this.oldestFailedMessageTs&&t<Hn.syncManagerOptions.failedMessageRetentionDays)return this.expirationTimer.start(),void(e&&e());var r=on.getInstance(),a=Hn.syncManagerOptions.failedMessageRetentionDays;r.messageContainer.removeExpiredMessages(a,(function(t,a){if(t)return Se.error("Fail remove expired failedMessage by failedMessageRetentionDays:",t),n.expirationTimer.start(),void(e&&e());var i={};a.forEach((function(e){var n=e.channelUrl;i[n]&&Array.isArray(i[n])||(i[n]=[]),i[n].push(e)})),Object.keys(i).forEach((function(e){var t=i[e].map((function(e){return e.reqId})),a={isRequestId:!0,reason:$e.REMOVE_RETENTION_EXPIRED};r.broadcast.remove(t,{},a),n.queueMap.hasOwnProperty(e)&&n.queueMap[e].removeMessages(i[e])})),r.messageContainer.loadOldestFailedMessages((function(t,r){t?(Se.error("Fail get oldestFailedMessage from DB: ",t),n.oldestFailedMessageTs=0):n.oldestFailedMessageTs=r.length>0?r[0].createdAt:(new Date).getTime(),n.expirationTimer.start(),e&&e()}))}))}},{key:"removeExceedingMaxCount",value:function(e){var n=this,t=on.getInstance(),r=new Hn.LocalDB.Query({ownerUserId:Hn.getInstance().currentUserId,channelUrl:e,sendingStatus:"failed"});r.limit=Number.MAX_SAFE_INTEGER,r.index={ownerUserId:Hn.LocalDB.Query.Order.ASC,createdAt:Hn.LocalDB.Query.Order.ASC},t.messageContainer.count(r,(function(e,a){if(e)Se.error("Get count about failedMessage by maxFailedMessageCountPerChannel:",e);else{var i=Hn.syncManagerOptions.maxFailedMessageCountPerChannel;a>i&&(r.limit=a-i,t.messageContainer.find(r,(function(e,r){var a={isRequestId:!0,reason:$e.REMOVE_EXCEEDED_MAX_COUNT};r.forEach((function(e){var r=e.reqId;t.messageContainer.removeUnsent(r,(function(i){i&&Se.error("Fail remove count failedMessage by maxFailedMessageCountPerChannel:",i),t.broadcast.remove([r],{},a),n.queueMap[e.channelUrl].removeMessages([e])}))}))})))}}))}},{key:"upsertMessages",value:function(e,n){var t=this,r=on.getInstance(),a=this.queueMap[e],i=0;n.forEach((function(s){r.messageContainer.upsert(s,(function(s,o){s||r.broadcast.upsert([o]),++i===n.length&&(a&&a.appendMessages(n),t.removeExceedingMaxCount(e))}))}))}},{key:"removeMessages",value:function(e,n,t){var r=on.getInstance(),a=this.queueMap[e];n.forEach((function(e){e.reqId&&r.messageContainer.removeUnsent(e.reqId,(function(n){n?Se.error("deleteMessage()","Failed to delete message from cache: ".concat(e)):(t.isRequestId=!0,r.broadcast.remove([e.reqId],{},t),a&&a.removeMessages([e]))}))}))}},{key:"resume",value:function(){var e=this;Se.call("FailedMessageDispatcher resume()"),this.removeExpiredMessages((function(){e.resumeAllQueues()}))}},{key:"pause",value:function(){Se.call("FailedMessageDispatcher pause()"),this.pauseAllQueues(),this.expirationTimer.stop()}},{key:"resumeAllQueues",value:function(){var e=this;Object.keys(this.queueMap).forEach((function(n){var t=e.queueMap[n];t&&t.resumeResending()}))}},{key:"pauseAllQueues",value:function(){var e=this;Object.keys(this.queueMap).forEach((function(n){var t=e.queueMap[n];t&&t.pauseResending()}))}},{key:"createQueue",value:function(e){var n=this.queueMap[e];n?n.increaseCount():this.queueMap[e]=new Ze({channelUrl:e}),this.queueMap[e].resumeResending()}},{key:"removeQueue",value:function(e){var n=this.queueMap[e];n&&(n.decreaseCount(),0===n.collectionReferenceCount&&delete this.queueMap[e])}}],[{key:"getInstance",value:function(){return new e}}]),e}();"undefined"==typeof Promise&&(Promise=b);var rn="last-changeLog-token-",an="syncManager_messageManager_channelHandler_"+(new Date).getTime(),sn=null,on=function(){function e(n){var r=n.sendBird,a=n.db,i=n.cacheManager;if(t(this,e),!sn){Se.call("MessageManager()"),sn=this;var s=this.sb=r;this.cacheManager=i,this.messageContainer=new je(a,s,i),this.chunkContainer=new He(a),this.broadcast=new We,this.storeLimitOverflowMutex=new R,this.isFetchingChangeLogByChannelUrl={};var o=new s.ChannelHandler;Object.keys(o).forEach((function(e){o[e]=function(){for(var n=arguments.length,t=new Array(n),r=0;r<n;r++)t[r]=arguments[r];switch(e){case"onMessageReceived":Se.event(e,t[0].url,t[1].messageId,t[1].createdAt,t[1].message),t[1].isVisible=!0,sn.messageContainer.upsert(t[1],(function(e,n){e?Oe.throw(e):sn.broadcast.upsert([n])}));break;case"onReadReceiptUpdated":Se.event(e,t[0].url);var a=t[0];sn.broadcast.read(a);break;case"onMessageUpdated":Se.event(e,t[0].url,t[1].messageId,t[1].createdAt,t[1].message),t[1].isVisible=!1,sn.messageContainer.upsert(t[1],(function(e,n){e?Oe.throw(e):sn.broadcast.update([n])}));break;case"onMessageDeleted":var i=t[0],s=t[1];sn.messageContainer.getItem(s,(function(n,t){n?Oe.throw(n):(Se.event(e,i.url,s),sn.messageContainer.remove(i.url,s,(function(e,n){if(e)Oe.throw(e);else{if(t){var r=Qe.getDefaultFilter();sn.chunkContainer.getChunkByTimestamp(i.url,r,t.createdAt,(function(e,n){if(!e&&n){var r=new Hn.LocalDB.Query({ownerUserId:Hn.getInstance().currentUserId,channelUrl:i.url,sendingStatus:"succeeded",createdAt:{"<":t.createdAt}});r.index={ownerUserId:Hn.LocalDB.Query.Order.ASC,createdAt:Hn.LocalDB.Query.Order.ASC},r.desc=!0,r.limit=1,sn.messageContainer.find(r,(function(e,t){e||(t&&0!==t.length?(n.endAt=t[0].createdAt,sn.chunkContainer.upsert(n,(function(e,n){e||sn.broadcast.updateCurrentChunk(n)}))):sn.chunkContainer.remove(n.chunkId,(function(e){e||sn.broadcast.updateCurrentChunk(null)})))}))}}))}sn.broadcast.remove([parseInt(n)])}})))}))}}})),s.addChannelHandler(an,o)}return sn}return a(e,[{key:"resolveStoreLimitOverflow",value:function(e){var n=this,t=Hn.syncManagerOptions,r=t.messageStoreCapacity,a=t.messageStoreEjectionPriotizedLimit,i=t.messageStoreEjectionSize;this.storeLimitOverflowMutex.lock((function(t){if(n.cacheManager.messageCount.all>r){Se.cache("messages exceeds messageStoreCapacity.");var s=[];for(var o in n.cacheManager.messageCount)"all"!==o&&n.cacheManager.messageCount[o]>a&&s.push({channelUrl:o,count:n.cacheManager.messageCount[o]});if(s.length>0){s.sort((function(e,n){return n.count-e.count}));var u=s[0];Se.cache("old messages in a prioritized channel are going to get ejected."),n.messageContainer.query({channelUrl:u.channelUrl},{limit:i,desc:!1,includeInvisible:!0},(function(r,a){r?(Se.error("Failed to retrieve the messages to eject."),t(),e(null,!1)):(a=a.filter((function(e){return e&&e.channelUrl})),n.messageContainer.shrinkMessageChunk(u.channelUrl,a,(function(n){n&&Se.error("Failed to eject the messages on overflow for channel ".concat(u.channelUrl,".")),t(),e(null,!n)})))}))}else Se.cache("old messages in all channels are going to get ejected."),n.messageContainer.query(null,{limit:i,desc:!1,index:{ownerUserId:Hn.LocalDB.Query.Order.ASC,createdAt:Hn.LocalDB.Query.Order.ASC},includeInvisible:!0},(function(r,a){if(r)Se.error("Failed to retrieve the messages to eject."),t(),e(null,!1);else{a=a.filter((function(e){return e&&e.channelUrl}));var i,s={},o=v(a);try{for(o.s();!(i=o.n()).done;){var u=i.value;s[u.channelUrl]||(s[u.channelUrl]=[]),s[u.channelUrl].push(u)}}catch(r){o.e(r)}finally{o.f()}var c=0,l=Object.keys(s);l.forEach((function(r){n.messageContainer.shrinkMessageChunk(r,s[r],(function(n){n&&Se.error("Failed to eject the messages on overflow for channel ".concat(r,".")),++c>=l.length&&(t(),e(null,!n))}))}))}}))}else t(),e(null,!1)}))}},{key:"applyTrimmedChunk",value:function(e,n){this.broadcast.applyTrimmedChunk(e,n)}},{key:"syncChangeLog",value:function(e){var n=this,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};if(this.isFetchingChangeLogByChannelUrl[e.url])t(Oe.create(Oe.Type.ERROR_DUPLICATED_CHANGELOG_SYNC));else{this.isFetchingChangeLogByChannelUrl[e.url]=!0,Se.call("message syncChangeLog()",e.url);var r="".concat(rn).concat(e.url);we.get(r).then((function(a){var i="getMessageChangeLogsSinceToken",s=[],o=new n.sb.MessageChangeLogsParams;s.push(o),a?(i="getMessageChangeLogsSinceToken",s.unshift(a)):(i="getMessageChangeLogsSinceTimestamp",s.unshift((new Date).getTime()-100)),Se.call(i),e[i].apply(e,s.concat([function(a,i){if(n.sb.getErrorFirstCallback()){var s=a;a=i,i=s}i?n.isFetchingChangeLogByChannelUrl[e.url]=!1:(Se.sync("updated",a.updatedMessages.map((function(e){return e.messageId}))),Se.sync("deleted",a.deletedMessageIds),a.updatedMessages.forEach((function(e){sn.messageContainer.getItemWithVisibility(e.messageId,(function(n,t){if(!n){var r=t.item;e.isVisible=t.isVisible||!1,sn.messageContainer.upsert(e,(function(e,n){e?Oe.throw(e):(!r||!r.isEqual(n))&&sn.broadcast.update([n])}))}}))})),a.deletedMessageIds.forEach((function(n){sn.messageContainer.remove(e.url,n,(function(e){e?Oe.throw(e):sn.broadcast.remove([n])}))})),we.set(r,a.token).then((function(){a.hasMore?n.syncChangeLog(e,t):(n.isFetchingChangeLogByChannelUrl[e.url]=!1,t())})).catch((function(r){n.isFetchingChangeLogByChannelUrl[e.url]=!1,t(r)})))}]))})).catch((function(r){n.isFetchingChangeLogByChannelUrl[e.url]=!1,t(r)}))}}},{key:"start",value:function(){sn.broadcast.resume((function(e){e||tn.getInstance().resume()}))}},{key:"stop",value:function(){sn.broadcast.pause(),tn.getInstance().pause()}},{key:"clearCache",value:function(e){sn.messageContainer.clear((function(){sn.chunkContainer.clear((function(){we.getKeys().then((function(n){var t=[];n.forEach((function(e){e.startsWith(rn)&&t.push(we.remove(e))})),Promise.all(t).then((function(){return e()})).catch((function(n){Se.error(n),e(n)}))})).catch((function(n){return e(n)}))}))}))}},{key:"reset",value:function(e){sn?(sn.broadcast.clear(),sn.clearCache(e)):e(null)}}],[{key:"getInstance",value:function(){return sn}},{key:"clear",value:function(){sn&&sn.sb&&(Se.message("MessageManager is cleared"),sn.broadcast.clearCollection(),sn.sb.removeChannelHandler(an),sn=null)}}]),e}();function un(e,n){var t=dn.getInstance().sb,r=!0;if(e.isGroupChannel()&&!e.isSuper){if(!n.includeEmpty&&!e.lastMessage)return!1;if(n.nicknameContainsFilter){var a=!1;for(var i in e.members)if(e.members[i].nickname.indexOf(n.nicknameContainsFilter)>=0){a=!0;break}if(!a)return!1}if(n.userIdsFilter&&Array.isArray(n.userIdsFilter)&&n.userIdsFilter.length>0){var s=!1,o=e.members.map((function(e){return e.userId})),u=n.userIdsFilterExactMatch,c=n.queryType;if(u?s=o.length===n.userIdsFilter.length&&n.userIdsFilter.every((function(e){return o.indexOf(e)>=0})):"AND"===c?s=n.userIdsFilter.every((function(e){return o.indexOf(e)>=0})):"OR"===c&&(s=n.userIdsFilter.reduce((function(e,n){return e||o.indexOf(n)>=0}),!1)),!s)return!1}}if(n.channelNameContainsFilter&&(r=r&&e.name.indexOf(n.channelNameContainsFilter)>=0),n.channelUrlsFilter.length>0&&(r=r&&n.channelUrlsFilter.indexOf(e.url)>=0),n.memberStateFilter!==t.GroupChannel.MemberStateFilter.ALL)switch(n.memberStateFilter){case t.GroupChannel.MemberStateFilter.JOINED:r=r&&"joined"===e.myMemberState&&"joined_only"===t.GroupChannel.MemberStateFilter.JOINED;break;case t.GroupChannel.MemberStateFilter.INVITED:case t.GroupChannel.MemberStateFilter.INVITED_BY_FRIEND:case t.GroupChannel.MemberStateFilter.INVITED_BY_NON_FRIEND:r=r&&"invited"===e.myMemberState&&("invited_only"===t.GroupChannel.MemberStateFilter.INVITED||"invited_by_friend"===t.GroupChannel.MemberStateFilter.INVITED||"invited_by_non_friend"===t.GroupChannel.MemberStateFilter.INVITED)}if(n.customTypesFilter.length>0&&(r=r&&n.customTypesFilter.indexOf(e.customType)>=0),n.customTypeStartsWithFilter&&(r=r&&e.customType.startsWith(n.customTypeStartsWithFilter)),n.superChannelFilter!==t.GroupChannel.SuperChannelFilter.ALL)switch(n.superChannelFilter){case t.GroupChannel.SuperChannelFilter.SUPER:r=r&&e.isSuper;break;case t.GroupChannel.SuperChannelFilter.NONSUPER:r=r&&!e.isSuper}if(n.publicChannelFilter!==t.GroupChannel.PublicChannelFilter.ALL)switch(n.publicChannelFilter){case t.GroupChannel.PublicChannelFilter.PUBLIC:r=r&&e.isPublic;break;case t.GroupChannel.PublicChannelFilter.PRIVATE:r=r&&!e.isPublic}if(n.unreadChannelFilter!==t.GroupChannel.UnreadChannelFilter.ALL)switch(n.unreadChannelFilter){case t.GroupChannel.UnreadChannelFilter.UNREAD_MESSAGE:r=r&&e.unreadMessageCount>0}return r}var cn=function(){var e=[];return this.addCollection=function(n,t){e.indexOf(n)<0&&e.push({controller:n,view:t})},this.removeCollection=function(n){var t=e.map((function(e){return e.controller})).indexOf(n);t>=0&&(e[t].controller._pause(),e.splice(t,1))},this.clearCollection=function(){for(var n in e)e[n].controller._pause();e=[]},this.pause=function(){for(var n in e)e[n].controller._pause()},this.resume=function(){for(var n in e)e[n].controller._resume()},this.upsert=function(n,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(n.length>0)for(var a in e){var i=e[a];if(i.controller!==t){var s=[];for(var o in n){var u=n[o];un(u,i.controller.query)&&s.push(u)}s.length>0&&(r.isEventChannel=!0,i.view.addViewItems(s,r))}}},this.update=function(n,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(n.length>0){for(var a in n){var i=n[a];on.getInstance().broadcast.updateChannel(i)}for(var s in e){var o=e[s];if(o.controller!==t){var u=[],c=[];for(var l in n){var f=n[l];o.view.channels.map((function(e){return e.url})).includes(f.url)&&(un(f,o.controller.query)?u.push(f):c.push(f))}u.length>0&&(r.isEventChannel=!0,o.view.addViewItems(u,r)),c.length>0&&o.view.removeViewItems(c)}}}},this.remove=function(n,t){if(n.length>0){for(var r in n){var a=n[r];on.getInstance().broadcast.removeChannel(a)}for(var i in e){var s=e[i];if(s.controller!==t){var o=[];for(var u in n){var c=n[u];s.view.channels.map((function(e){return e.url})).indexOf(c.url)>=0&&o.push(c)}o.length>0&&s.view.removeViewItems(o)}}}},this.hide=function(n,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};for(var a in n){var i=n[a];on.getInstance().broadcast.updateChannel(i)}if(n.length>0){var s=dn.getInstance(),o=s.sb;for(var u in e){var c=e[u];if(c.controller!==t){var l=[];for(var f in n){var h=n[f];un(h,c.controller.query)&&l.push(h)}if(l.length>0)switch(c.controller.query.hiddenChannelFilter){case o.GroupChannel.HiddenChannelFilter.UNHIDDEN:c.view.removeViewItems(l);break;case o.GroupChannel.HiddenChannelFilter.HIDDEN:case o.GroupChannel.HiddenChannelFilter.HIDDEN_ALLOW_AUTO_UNHIDE:case o.GroupChannel.HiddenChannelFilter.HIDDEN_PREVENT_AUTO_UNHIDE:r.isEventChannel=!0,c.view.addViewItems(l,r)}}}}},this.unhide=function(n,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};for(var a in n){var i=n[a];on.getInstance().broadcast.updateChannel(i)}if(n.length>0){var s=dn.getInstance(),o=s.sb;for(var u in e){var c=e[u];if(c.controller!==t){var l=[];for(var f in n){var h=n[f];un(h,c.controller.query)&&l.push(h)}if(l.length>0)switch(c.controller.query.hiddenChannelFilter){case o.GroupChannel.HiddenChannelFilter.UNHIDDEN:r.isEventChannel=!0,c.view.addViewItems(l,r);break;case o.GroupChannel.HiddenChannelFilter.HIDDEN:case o.GroupChannel.HiddenChannelFilter.HIDDEN_ALLOW_AUTO_UNHIDE:case o.GroupChannel.HiddenChannelFilter.HIDDEN_PREVENT_AUTO_UNHIDE:c.view.removeViewItems(l)}}}}},this.clear=function(){for(var n in e){e[n].view.clearViewItem()}},this};"undefined"==typeof Promise&&(Promise=b);var ln="channel-changeLog-token",fn="syncManager_channelManager_channelHandler_"+(new Date).getTime(),hn=null,dn=function(){function e(n){var r=n.sendBird,a=n.db,i=n.cacheManager;if(t(this,e),!hn){Se.call("ChannelManager()"),hn=this;var s=this.sb=r,o=Hn.getInstance();this.cacheManager=i,this.channelContainer=new _e(a,s,i),this.queryContainer=new Re(a,s),this.broadcast=new cn,this.isFetchingChangeLog=!1,this.channelSyncByFilter={},this.changeLogSync=null;var u=new s.ChannelHandler;Object.keys(u).forEach((function(e){u[e]=function(){for(var n=arguments.length,t=new Array(n),r=0;r<n;r++)t[r]=arguments[r];switch(e){case"onChannelChanged":var a=t[0];Se.event(e,a.url),hn.channelContainer.getItem(a.url,(function(e,n){e?Oe.throw(e):hn.channelContainer.upsert(a,(function(e,t){e?Oe.throw(e):n?n.hiddenState!==s.GroupChannel.HiddenState.UNHIDDEN&&a.hiddenState===s.GroupChannel.HiddenState.UNHIDDEN?hn.broadcast.unhide([t]):hn.broadcast.update([t]):hn.broadcast.upsert([t])}))}));break;case"onMessageReceived":var i=t[0];hn.channelContainer.getItem(i.url,(function(e,n){if(e)Oe.throw(e);else{var t=n?n.unreadMessageCount:0;0===t&&i.unreadMessageCount>t&&hn.broadcast.upsert([i])}}));break;case"onUserMuted":case"onUserUnmuted":case"onUserUnbanned":case"onChannelFrozen":case"onChannelUnfrozen":case"onMetaDataCreated":case"onMetaDataUpdated":case"onMetaDataDeleted":case"onMetaCountersCreated":case"onMetaCountersUpdated":case"onMetaCountersDeleted":Se.event(e,t[0].url),hn.channelContainer.upsert(t[0],(function(e,n){e?Oe.throw(e):hn.broadcast.update([n])}));break;case"onUserReceivedInvitation":case"onUserJoined":Se.event(e,t[0].url),hn.channelContainer.upsert(t[0],(function(e,n){e?Oe.throw(e):t[1].userId===o.currentUserId?hn.broadcast.upsert([n]):hn.broadcast.update([n])}));break;case"onReadReceiptUpdated":hn.channelContainer.upsert(t[0],(function(e){e&&Oe.throw(e)}));break;case"onChannelHidden":Se.event(e,t[0].url);var u=t[0];hn.channelContainer.upsert(u,(function(e){e?Oe.throw(e):hn.broadcast.hide([u])}));break;case"onUserLeft":case"onUserBanned":Se.event(e,t[0].url);var c=t[0],l=t[1];l.userId===o.currentUserId?hn.channelContainer.remove(c,(function(e){e?Oe.throw(e):hn.broadcast.remove([c])})):hn.channelContainer.upsert(c,(function(e,n){e?Oe.throw(e):hn.broadcast.update([n])}));break;case"onUserDeclinedInvitation":Se.event(e,t[0].url);var f=t[0],h=t[2];h.userId===o.currentUserId?hn.channelContainer.remove(f,(function(e){e?Oe.throw(e):hn.broadcast.remove([f])})):hn.channelContainer.upsert(f,(function(e,n){e?Oe.throw(e):hn.broadcast.update([n])}));break;case"onChannelDeleted":Se.event(e,t[0]),hn.channelContainer.getItem(t[0],(function(e,n){e?Oe.throw(e):n&&hn.channelContainer.remove(n,(function(e){e?Oe.throw(e):hn.broadcast.remove([n])}))}))}}})),s.addChannelHandler(fn,u)}return hn}return a(e,[{key:"syncChangeLog",value:function(e,n){var t=this;if(this.isFetchingChangeLog)n(Oe.create(Oe.Type.ERROR_DUPLICATED_CHANGELOG_SYNC));else{this.isFetchingChangeLog=!0,Se.call("channel syncChangeLog()");var r="".concat(ln);we.get(r).then((function(a){var i,s="getMyGroupChannelChangeLogsByToken",o=[],u=new t.sb.GroupChannelChangeLogsParams;u.customTypes=[],u.includeEmpty=!0,u.includeFrozen=!0,o.push(u),a?(s="getMyGroupChannelChangeLogsByToken",o.unshift(a)):(s="getMyGroupChannelChangeLogsByTimestamp",o.unshift((new Date).getTime()-100)),Se.call(s),(i=t.sb)[s].apply(i,o.concat([function(a,i){if(t.sb.getErrorFirstCallback()){var s=a;a=i,i=s}if(i)t.isFetchingChangeLog=!1;else{Se.sync("updated",a.updatedChannels&&a.updatedChannels.length>0?"\n"+a.updatedChannels.map((function(e){return"\turl="+e.url+" name="+e.name+" createdAt="+e.createdAt+" lastMessageUpdatedAt="+e.lastMessageUpdatedAt})).join("\n"):[]),Se.sync("deleted",a.deletedChannelUrls);var o=[];a.updatedChannels.forEach((function(e){o.push(new Promise((function(n,r){hn.channelContainer.getItem(e.url,(function(a,i){a?r(a):hn.channelContainer.upsert(e,(function(e,a){if(e)r(e);else{var s=!i||!i.isEqual(a),o=(!i||i.hiddenState===t.sb.GroupChannel.HiddenState.UNHIDDEN)&&a.hiddenState!==t.sb.GroupChannel.HiddenState.UNHIDDEN,u=(!i||i.hiddenState!==t.sb.GroupChannel.HiddenState.UNHIDDEN)&&a.hiddenState===t.sb.GroupChannel.HiddenState.UNHIDDEN,c=s?"update":"noop";o?c="hide":u&&(c="unhide"),n({action:c,channel:a})}}))}))})))})),a.deletedChannelUrls.forEach((function(e){o.push(new Promise((function(n,t){hn.channelContainer.getItem(e,(function(e,r){e?t(e):r&&hn.channelContainer.remove(r,(function(e){if(e)t(e);else{n({action:"remove",channel:r})}}))}))})))})),Promise.all(o).then((function(i){for(var s=[],o=[],u=[],c=[],l=0;l<i.length;l++)switch(i[l].action){case"update":s.push(i[l].channel);break;case"remove":o.push(i[l].channel);break;case"hide":u.push(i[l].channel);break;case"unhide":c.push(i[l].channel)}s.length>0&&hn.broadcast.upsert(s,null,{isChangeLogChannel:!0}),o.length>0&&hn.broadcast.remove(o),u.length>0&&hn.broadcast.hide(u,null,{isChangeLogChannel:!0}),c.length>0&&hn.broadcast.unhide(c,null,{isChangeLogChannel:!0}),we.set(r,a.token).then((function(){a.hasMore?t.syncChangeLog(e,n):(t.isFetchingChangeLog=!1,n())})).catch((function(e){t.isFetchingChangeLog=!1,n(e)}))})).catch((function(e){return n(e)}))}}]))})).catch((function(e){t.isFetchingChangeLog=!1,n(e)}))}}},{key:"start",value:function(){hn.broadcast.resume()}},{key:"stop",value:function(){hn.broadcast.pause()}},{key:"clearCache",value:function(e){hn.channelSyncByFilter={},hn.changeLogSync=null,hn.channelContainer.clear((function(){hn.queryContainer.clear((function(){we.getKeys().then((function(n){var t=[];n.forEach((function(e){e.startsWith(ln)&&t.push(we.remove(e))})),Promise.all(t).then((function(){return e()})).catch((function(n){Se.error(n),e(n)}))})).catch((function(n){return e(n)}))}))}))}},{key:"reset",value:function(e){hn?(hn.broadcast.clear(),hn.clearCache(e)):e(null)}}],[{key:"getInstance",value:function(){return hn}},{key:"clear",value:function(){hn&&hn.sb&&(Se.message("ChannelManager is cleared"),hn.channelSyncByFilter={},hn.changeLogSync=null,hn.broadcast.clearCollection(),hn.sb.removeChannelHandler(fn),hn=null)}}]),e}(),gn=function(){function e(n){t(this,e),this.worker=n,this.state=e.State.PAUSED,this.mutex=new R,this.shared=0,this.retry=0,this.retryLimit=3,this.subscribes={},this.onend=null,this.onpause=null}return a(e,[{key:"isRunning",get:function(){return this.state===e.State.RUNNING}},{key:"isEnd",get:function(){return this.state===e.State.END}},{key:"start",value:function(n){var t=this,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];(r||this.state!==e.State.END)&&this.mutex.lock((function(r){t.state=e.State.RUNNING,n="function"==typeof n?n():n,t.worker(n,(function(e,a){Se.sync("background sync result: err=",e,"res=",a),t.isRunning&&(e?t.retry<t.retryLimit?(t.retry++,setTimeout((function(){return t.start(n)}),500)):t.pause():(t.retry=0,t.flush(e,a),a.hasMore?setTimeout((function(){t.isRunning&&t.start(a.nextTs)}),500):t.end())),r()}))}))}},{key:"pause",value:function(){this.mutex.unlock(),this.state===e.State.RUNNING&&(this.state=e.State.PAUSED,this.onpause&&this.onpause())}},{key:"end",value:function(){this.mutex.unlock(),this.state=e.State.END,this.onend&&this.onend()}},{key:"flush",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1?arguments[1]:void 0;for(var t in Se.sync("background sync flush: ".concat(Object.keys(this.subscribes).length," subscribes")),this.subscribes)this.subscribes[t](e,n);this.subscribes={}}},{key:"subscribe",value:function(e,n){return!this.subscribes[e]&&(this.subscribes[e]=n,!0)}},{key:"unsubscribeAll",value:function(){this.subscribes={}}}],[{key:"State",get:function(){return{RUNNING:"running",PAUSED:"paused",END:"end"}}}]),e}(),vn="channel-collection-handler",yn=new ee,mn=new ee,pn=function(e){var n=dn.getInstance();if(n){var t=e.query,r=t.filterKey;return n.channelSyncByFilter[r]||(n.channelSyncByFilter[r]=new gn((function(r,a){Se.call("channel syncChannel()",t.filterKey,t.hasNext,t._token),t.hasNext?(t.limit=100,t.next((function(r,i){if(n.sb.getErrorFirstCallback()){var s=[r,i];i=s[0],r=s[1]}Se.sync("channel",i,r&&r.length>0?"\n"+r.map((function(e){return"\turl="+e.url+" name="+e.name+" createdAt="+e.createdAt+" lastMessageUpdatedAt="+e.lastMessageUpdatedAt})).join("\n"):""),i?a(i):function(){for(var i=yn.get(e),s=0,o=null,u=0;u<r.length;u++)n.channelContainer.insert(r[u],(function(e){if(o=o||e,++s===r.length)if(o)a(o);else{var u=i.findChannelEdges(r);u.end&&(t.savepoint=u.end+""),n.queryContainer.upsert(t,(function(e){e?a(e):a(null,{count:r.length,nextTs:0,hasMore:t.hasNext})}))}}));0===r.length&&a(null,{count:0,nextTs:0,hasMore:!1})}()}))):a(null,{count:0,nextTs:0,hasMore:!1})}))),n.channelSyncByFilter[r]}return null},kn=function(e){var n=dn.getInstance();if(n){if(!n.changeLogSync){var t=e.query;n.changeLogSync=new gn((function(e,r){n.syncChangeLog(t,(function(e){r(e,{count:0,nextTs:0,hasMore:!1})}))}))}return n.changeLogSync}return null},In=function(){function e(){t(this,e),this.collection=null,this.channels=[],this.mutex=new R,this.viewOffset=null}return a(e,[{key:"attachCollection",value:function(e){this.collection=e}},{key:"compareWithChannel",value:function(e,n){var t="lastMessageUpdatedAt";switch(this.collection.query.order){case"chronological":t="createdAt";break;case"channel_name_alphabetical":t="name"}return this.compareWithOffset(e,n[t])}},{key:"compareWithOffset",value:function(e,n){switch(this.collection.query.order){case"latest_last_message":return e.lastMessageUpdatedAt-n;case"chronological":return e.createdAt-n;case"channel_name_alphabetical":return n.localeCompare(e.name);default:return e.lastMessageUpdatedAt-n}}},{key:"isAbove",value:function(e,n){return this.compareWithOffset(e,n)>0}},{key:"isBelow",value:function(e,n){return this.compareWithOffset(e,n)<0}},{key:"findChannelEdges",value:function(e){var n="lastMessageUpdatedAt";switch(this.collection.query.order){case"chronological":n="createdAt";break;case"channel_name_alphabetical":n="name"}var t={start:null,end:null};for(var r in e)t.start&&!this.isAbove(e[r],t.start)||(t.start=e[r][n]),t.end&&!this.isBelow(e[r],t.end)||(t.end=e[r][n]);return t}},{key:"refreshViewOffset",value:function(){var e=this.findChannelEdges(this.channels);this.viewOffset=e.end}},{key:"addViewItems",value:function(e){var n=this,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=[],a=[],i=[],s=[],o=mn.get(this.collection);this.mutex.lock((function(u){for(var c in e){var l=e[c],f=Ue(l,n.channels),h=xe(l,n.collection.query,n.channels),d=!1;if(t.isEventChannel)if(n.viewOffset)n.isBelow(l,n.viewOffset)&&(d=!0);else{var g=pn(n.collection),v=kn(n.collection);g.state!==gn.State.RUNNING&&v.state!==gn.State.RUNNING||!n.collection.query.hasNext||(d=!0)}var y=f<0?Xe.INSERT:Xe.UPDATE;switch(f<0?d||(h<n.channels.length?n.channels.splice(h,0,l):n.channels.push(l)):f!==h?h<n.channels.length?(y=Xe.MOVE,n.channels.splice(f,1),h>f?n.channels.splice(h-1,0,l):n.channels.splice(h,0,l)):(y=Xe.REMOVE,n.channels.splice(f,1)):n.channels[f]=l,y){case Xe.INSERT:d||r.push(l);break;case Xe.UPDATE:a.push(l);break;case Xe.MOVE:i.push(l);break;case Xe.REMOVE:s.push(l)}}if(n.refreshViewOffset(),r.length>0)for(var m in Se.view("channel",Xe.INSERT,"\n"+r.map((function(e){return"\turl=".concat(e.url," name=").concat(e.name," createdAt=").concat(e.createdAt," lastMessageUpdatedAt=").concat(e.lastMessageUpdatedAt)})).join("\n")),o)o[m].onChannelEvent(Xe.INSERT,r);if(a.length>0)for(var p in Se.view("channel",Xe.UPDATE,"\n"+a.map((function(e){return"\turl=".concat(e.url," name=").concat(e.name," createdAt=").concat(e.createdAt," lastMessageUpdatedAt=").concat(e.lastMessageUpdatedAt)})).join("\n")),o)o[p].onChannelEvent(Xe.UPDATE,a);if(i.length>0)for(var k in Se.view("channel",Xe.MOVE,"\n"+i.map((function(e){return"\turl=".concat(e.url," name=").concat(e.name," createdAt=").concat(e.createdAt," lastMessageUpdatedAt=").concat(e.lastMessageUpdatedAt)})).join("\n")),o)o[k].onChannelEvent(Xe.MOVE,i);if(s.length>0)for(var I in Se.view("channel",Xe.REMOVE,"\n"+s.map((function(e){return"\turl=".concat(e.url," name=").concat(e.name," createdAt=").concat(e.createdAt," lastMessageUpdatedAt=").concat(e.lastMessageUpdatedAt)})).join("\n")),o)o[I].onChannelEvent(Xe.REMOVE,s);u()}))}},{key:"removeViewItems",value:function(e){var n=this,t=mn.get(this.collection);this.mutex.lock((function(r){var a=[];for(var i in e){var s=e[i],o=n.channels.map((function(e){return e.url})).indexOf(s.url);o>=0&&(n.channels.splice(o,1),a.push(s))}if(a.length>0)for(var u in Se.view("channel",Xe.REMOVE,"\n"+a.map((function(e){return"\turl=".concat(e.url," name=").concat(e.name," createdAt=").concat(e.createdAt," lastMessageUpdatedAt=").concat(e.lastMessageUpdatedAt)})).join("\n")),t)t[u].onChannelEvent(Xe.REMOVE,a);r()}))}},{key:"clearViewItem",value:function(){this.channels=[];var e=mn.get(this.collection);this.mutex.lock((function(n){var t=Xe.CLEAR;for(var r in Se.view("channel",t),e)e[r].onChannelEvent(t);n()}))}}]),e}(),bn=function(){function e(n){var r=this;t(this,e);var a=new In,i=dn.getInstance();if(!i)return null;this.collectionId=Pe(),this.sendBird=i.sb,this.type="MyGroupChannelListQuery",this.limit=n.limit,this.query=n,this.query.filterKey=i.queryContainer.createFilterKey(this.query),this._isLoading=!1,a.attachCollection(this),i.broadcast.addCollection(this,a),yn.set(this,a),mn.set(this,{}),pn(this).shared++,kn(this).shared++,i.queryContainer.getItem(this.query.filterKey,(function(e,t){e?Oe.throw(e):(t&&(r.query._token=t._token,r.query.hasNext=t.hasNext,r.query.savepoint=t.savepoint,r.query.updatedAt=t.updatedAt),i.queryContainer.upsert(n,(function(e,n){e?Oe.throw(e):(r.query=n,r._resume(),Se.message("channel collection ".concat(r.collectionId," is created.")))})))}))}return a(e,[{key:"channels",get:function(){return yn.get(this).channels}},{key:"_pause",value:function(){Se.call("channel sync pause",this.collectionId);var e=pn(this),n=kn(this);e&&e.pause(),n&&n.pause()}},{key:"_resume",value:function(){Se.call("channel sync resume",this.collectionId);var e=pn(this),n=kn(this);e&&e.start(),n&&n.start()}},{key:"fetch",value:function(e){var n=this;if(!this._isLoading)return this._isLoading=!0,qe((function(e){Se.call("fetch()");var t=yn.get(n),r=n.sendBird,a=Hn.getInstance(),i=dn.getInstance(),s={ownerUserId:a.currentUserId};if(n.query.includeEmpty||(s.lastMessage={"!=":null}),n.query.nicknameContainsFilter&&(s.members={"/where":function(e){for(var t in e)if(e[t].nickname.indexOf(n.query.nicknameContainsFilter)>=0)return!0;return!1}}),n.query.userIdsFilter&&Array.isArray(n.query.userIdsFilter)&&n.query.userIdsFilter.length>0&&(s.members={"/where":function(e){var t=e.map((function(e){return e.userId}));return n.query.userIdsFilterExactMatch?t.length===n.query.userIdsFilter.length&&n.query.userIdsFilter.every((function(e){return t.indexOf(e)>=0})):"AND"===n.query.queryType?n.query.userIdsFilter.every((function(e){return t.indexOf(e)>=0})):"OR"===n.query.queryType&&n.query.userIdsFilter.reduce((function(e,n){return e||t.indexOf(n)>=0}),!1)}}),n.query.channelNameContainsFilter&&(s.name={"/regex":new RegExp(n.query.channelNameContainsFilter)}),n.query.channelUrlsFilter.length>0&&(s.url={"/in":n.query.channelUrlsFilter}),n.query.memberStateFilter!==r.GroupChannel.MemberStateFilter.ALL)switch(n.query.memberStateFilter){case r.GroupChannel.MemberStateFilter.JOINED:s.myMemberState="joined";break;case r.GroupChannel.MemberStateFilter.INVITED:case r.GroupChannel.MemberStateFilter.INVITED_BY_FRIEND:case r.GroupChannel.MemberStateFilter.INVITED_BY_NON_FRIEND:s.myMemberState="invited"}if("string"==typeof n.query.customTypeFilter&&n.query.customTypeFilter&&(s.customType=n.query.customTypeFilter),Array.isArray(n.query.customTypesFilter)&&n.query.customTypesFilter.length>0&&(s.customType={"/in":n.query.customTypesFilter}),"string"==typeof n.query.customTypeStartsWithFilter&&n.query.customTypeStartsWithFilter&&(s.customType={"/regex":new RegExp("^".concat(n.query.customTypeStartsWithFilter))}),n.query.superChannelFilter!==r.GroupChannel.SuperChannelFilter.ALL)switch(n.query.superChannelFilter){case r.GroupChannel.SuperChannelFilter.SUPER:s.isSuper=!0;break;case r.GroupChannel.SuperChannelFilter.NONSUPER:s.isSuper=!1}if(n.query.publicChannelFilter!==r.GroupChannel.PublicChannelFilter.ALL)switch(n.query.publicChannelFilter){case r.GroupChannel.PublicChannelFilter.PUBLIC:s.isPublic=!0;break;case r.GroupChannel.PublicChannelFilter.PRIVATE:s.isPublic=!1}if(n.query.unreadChannelFilter!==r.GroupChannel.UnreadChannelFilter.ALL)switch(n.query.unreadChannelFilter){case r.GroupChannel.UnreadChannelFilter.UNREAD_MESSAGE:s.unreadMessageCount={">":0}}if("all"!=n.query.hiddenChannelFilter)switch(n.query.hiddenChannelFilter){case r.GroupChannel.HiddenChannelFilter.UNHIDDEN:s.hiddenState=r.GroupChannel.HiddenState.UNHIDDEN;break;case r.GroupChannel.HiddenChannelFilter.HIDDEN:s.hiddenState={"/in":[r.GroupChannel.HiddenState.HIDDEN_ALLOW_AUTO_UNHIDE,r.GroupChannel.HiddenState.HIDDEN_PREVENT_AUTO_UNHIDE]};break;case r.GroupChannel.HiddenChannelFilter.HIDDEN_ALLOW_AUTO_UNHIDE:s.hiddenState=r.GroupChannel.HiddenState.HIDDEN_ALLOW_AUTO_UNHIDE;break;case r.GroupChannel.HiddenChannelFilter.HIDDEN_PREVENT_AUTO_UNHIDE:s.hiddenState=r.GroupChannel.HiddenState.HIDDEN_PREVENT_AUTO_UNHIDE}var o=null,u=!0;switch(n.query.order){case"latest_last_message":!n.query.hasNext&&n.query.savepoint&&(s.lastMessageUpdatedAt={">=":parseInt(n.query.savepoint)}),o={ownerUserId:1,lastMessageUpdatedAt:-1};break;case"chronological":!n.query.hasNext&&n.query.savepoint&&(s.createdAt={">=":parseInt(n.query.savepoint)}),o={ownerUserId:1,createdAt:-1};break;case"channel_name_alphabetical":!n.query.hasNext&&n.query.savepoint&&(s.name={"<=":n.query.savepoint}),o={ownerUserId:1,name:1},u=!1;break;default:!n.query.hasNext&&n.query.savepoint&&(s.lastMessageUpdatedAt={">=":parseInt(n.query.savepoint)}),o={ownerUserId:1,lastMessageUpdatedAt:-1}}var c=pn(n),l=function(e,r){i.channelContainer.query(s,{offset:t.channels.length,limit:e,index:o,desc:u},(function(a,i){a?(n._isLoading=!1,r(a)):(n._isLoading=!1,(i=i.map((function(e){return n.sendBird.GroupChannel.cachedChannels[e.url]||(n.sendBird.GroupChannel.cachedChannels[e.url]=e),n.sendBird.GroupChannel.cachedChannels[e.url]}))).sort((function(e,n){return t.compareWithChannel(e,n)>0})),i.length>0&&t.addViewItems(i),i.length<e&&f(e-i.length),r(null,i))}))},f=function(e){c.state!==gn.State.END&&(Se.sync("subscribe channel",n.collectionId),c.subscribe(n.collectionId,(function(n){n?Se.error(n):(Se.sync("flush channel"),l(e,(function(e){e&&Se.error(e)})))})))};l(n.limit,(function(n,t){Se.cache("fetch channel",n,t.map((function(e){return e.url}))),e(n)})),c.state===gn.State.PAUSED&&n._resume()}),e);Se.error("fetch() is loading"),e(Oe.create(Oe.Type.ERROR_DUPLICATED_FETCH))}},{key:"remove",value:function(){dn.getInstance().broadcast.removeCollection(this);var e=pn(this),n=kn(this);e&&(e.shared--,0===e.shared&&e.pause()),n&&(n.shared--,0===n.shared&&n.pause())}},{key:"setCollectionHandler",value:function(e){var n=mn.get(this);e instanceof ze&&(n[vn]=e)}},{key:"removeCollectionHandler",value:function(){var e=mn.get(this);e[vn]&&delete e[vn]}}],[{key:"CollectionHandler",get:function(){return ze}},{key:"Action",get:function(){return Xe}}]),e}();"undefined"==typeof Promise&&(Promise=b);var wn=new ee,Cn=new ee,En=new R,Mn=new ee,An=new ee,Sn=new ee,On=new ee,_n="message-collection-handler",Tn=50,Rn=100,Un=100,xn=function(){function e(){t(this,e),this.collection=null,this.messages=[],this.prevTempMessages=[],this.nextTempMessages=[],this.unsentMessages=[],this.nextSyncEnded=!1,this.newMessageQueue=[],wn.set(this,{}),this.mutex=new R,this.currentChunk=null,this.viewRange={start:0,end:0}}return a(e,[{key:"attachCollection",value:function(e){this.collection=e}},{key:"channelWasRemoved",value:function(e){var n=On.get(this.collection);for(var t in n)n[t].onChannelRemoved(e)}},{key:"channelWasUpdated",value:function(e){var n=On.get(this.collection);for(var t in n)n[t].onChannelUpdated(e)}},{key:"addViewItems",value:function(e){var n,t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(r.isEventMessage&&!this.nextSyncEnded&&e.some((function(e){return"succeeded"===e.sendingStatus})))return Se.view("new messages are queued for the next fetch is not processed yet."),void(n=this.newMessageQueue).push.apply(n,h(e));var a=On.get(this.collection),i=wn.get(this),s=Sn.get(this.collection),o=[],u=[],c=[],l=[],f=[],d=[],g=[],y=[],m=[];this.mutex.lock((function(n){for(var p in e){var k=e[p];if(k.messageId){var I=!0,b=!1;if(r.isEventMessage){var w=s.state===gn.State.END,C=!t.currentChunk||t.currentChunk.endAt<=t.viewRange.end,E=0===t.viewRange.end;b=!0,I=w&&C||!t.currentChunk||E,Se.event("event message status: nextSyncState=".concat(s.state,"\n chunkEnd=").concat(t.currentChunk?t.currentChunk.endAt:0,"\n viewEnd=").concat(t.viewRange.end))}var M=t.collection.sendBird.currentUser?t.collection.channel.getUnreadMemberCount(k):i[k.messageId]||0;if(i[k.messageId]||(i[k.messageId]=M),I){var A=De(k,t.messages),S=Ne(k,t.messages);if(A>=0&&t.messages[A].isEqual(k)&&i[k.messageId]===M)continue;if(i[k.messageId]=M,t.viewRange.start=t.viewRange.start>0?Math.min(t.viewRange.start,k.createdAt):k.createdAt,t.viewRange.end=t.viewRange.end>0?Math.max(t.viewRange.end,k.createdAt):k.createdAt,A<0){var O=De(k,t.unsentMessages);if(O>=0){var _=t.unsentMessages[O],T=!_.isUserMessage()||"pending"===_.sendingStatus;t.unsentMessages.splice(O,1),T?d.push(_):m.push(_)}t.messages.splice(S,0,k),b&&t.nextTempMessages.push(k),o.push(k)}else t.messages[A]=k,u.push(k)}r.isEventMessage&&k.sender&&k.sender.userId!==Hn.getInstance().currentUserId&&l.push(k);var R=t.messages.length,U=[];if(R>Hn.syncManagerOptions.messageCollectionCapacity){if("next"===r.direction){var x=R-Hn.syncManagerOptions.messageCollectionCapacity;U=t.messages.splice(0,x)}else U=t.messages.splice(Hn.syncManagerOptions.messageCollectionCapacity);c.push.apply(c,h(U))}}else{var D=!k.isUserMessage()||"pending"===k.sendingStatus,N=De(k,t.unsentMessages);if(N<0){De(k,t.messages)<0&&(D?f.push(k):g.push(k),t.unsentMessages.push(k))}else{var F=t.unsentMessages[N];F.isUserMessage()?"pending"===F.sendingStatus?D||(d.push(F),g.push(k),t.unsentMessages[N]=k):(y.push(k),t.unsentMessages[N]=k):t.unsentMessages[N]=k}}}if(c.length>0)for(var P in Se.view("message",Ye.REMOVE,c.map((function(e){return"".concat(e.message||e.fileUrl," ").concat(e.reqId," ").concat(e.messageId," ").concat(e.createdAt)}))),a)a[P].onSucceededMessageEvent(c,Ye.REMOVE),a[P].onMessageEvent(Ye.REMOVE,c);if(o.length>0)for(var q in Se.view("message",Ye.INSERT,o.map((function(e){return"".concat(e.message||e.fileUrl," ").concat(e.reqId," ").concat(e.messageId," ").concat(e.createdAt)}))),a)a[q].onSucceededMessageEvent(o,Ye.INSERT),a[q].onMessageEvent(Ye.INSERT,o);if(u.length>0)for(var L in Se.view("message",Ye.UPDATE,u.map((function(e){return"".concat(e.message||e.fileUrl," ").concat(e.reqId," ").concat(e.messageId," ").concat(e.createdAt)}))),a)a[L].onSucceededMessageEvent(u,Ye.UPDATE),a[L].onMessageEvent(Ye.UPDATE,u);if(d.length>0)for(var B in Se.view("pending message",Ye.REMOVE,d.map((function(e){return"".concat(e.message||e.fileUrl," ").concat(e.reqId," ").concat(e.messageId," ").concat(e.createdAt)}))),a)a[B].onPendingMessageEvent(d,Ye.REMOVE),a[B].onMessageEvent(Ye.REMOVE,d);if(f.length>0)for(var j in Se.view("pending message",Ye.INSERT,f.map((function(e){return"".concat(e.message||e.fileUrl," ").concat(e.reqId," ").concat(e.messageId," ").concat(e.createdAt)}))),a)a[j].onPendingMessageEvent(f,Ye.INSERT),a[j].onMessageEvent(Ye.INSERT,f);if(m.length>0){Se.view("failed message",Ye.REMOVE,m.map((function(e){return"".concat(e.message||e.fileUrl," ").concat(e.reqId," ").concat(e.messageId," ").concat(e.createdAt)})));var V=$e.REMOVE_RESEND_SUCCEEDED;for(var G in a)a[G].onFailedMessageEvent(m,Ye.REMOVE,V)}if(y.length>0){Se.view("failed message",Ye.UPDATE,y.map((function(e){return"".concat(e.message||e.fileUrl," ").concat(e.reqId," ").concat(e.messageId," ").concat(e.createdAt)})));var Q=$e.UPDATE_RESEND_FAILED;for(var H in a)a[H].onFailedMessageEvent(y,Ye.UPDATE,Q)}if(g.length>0){Se.view("failed message",Ye.INSERT,g.map((function(e){return"".concat(e.message||e.fileUrl," ").concat(e.reqId," ").concat(e.messageId," ").concat(e.createdAt)})));var K=$e.NONE;for(var W in a)a[W].onFailedMessageEvent(g,Ye.INSERT,K)}if(l.length>0){var z,J=v(l);try{for(J.s();!(z=J.n()).done;){var X=z.value;for(var Y in Se.view("new message","".concat(X.message||X.fileUrl," ").concat(X.reqId,", ").concat(X.messageId,", ").concat(X.createdAt)),a)a[Y].onNewMessage(X)}}catch(e){J.e(e)}finally{J.f()}}n()}))}},{key:"removeViewItems",value:function(e){var n=this,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{isRequestId:!1};this.mutex.lock((function(r){var a=!!t.hasOwnProperty("isRequestId")&&t.isRequestId,i=On.get(n.collection);if(a){for(var s=[],o=[],u=0;u<e.length;u++)for(var c=e[u],l=0;l<n.unsentMessages.length;l++)if(c===n.unsentMessages[l].reqId){var f=n.unsentMessages[l];if(f.isUserMessage())switch(f.sendingStatus){case"pending":s.push(f);break;case"failed":o.push(f)}else f.isFileMessage()&&s.push(f);n.unsentMessages.splice(l,1);break}if(s.length>0)for(var d in Se.view("pending message",Ye.REMOVE,s.map((function(e){return e.reqId}))),i)i[d].onPendingMessageEvent(s,Ye.REMOVE),i[d].onMessageEvent(Ye.REMOVE,s);if(o.length>0){Se.view("failed message",Ye.REMOVE,o.map((function(e){return e.reqId})));var g=t.hasOwnProperty("reason")?t.reason:$e.REMOVE_UNKNOWN;for(var v in i)i[v].onFailedMessageEvent(o,Ye.REMOVE,g)}}else{for(var y=wn.get(n),m=[],p=0;p<e.length;p++)for(var k=e[p],I=0;I<n.messages.length;I++)if(k===n.messages[I].messageId){"number"==typeof y[k]&&delete y[k];var b=n.messages.splice(I,1);m.push.apply(m,h(b));break}if(n.viewRange.start=n.messages.length>0?n.messages[0].createdAt:0,n.viewRange.end=n.messages.length>0?n.messages[n.messages.length-1].createdAt:0,m.length>0)for(var w in Se.view("message",Ye.REMOVE,m.map((function(e){return e.messageId}))),i)i[w].onSucceededMessageEvent(m,Ye.REMOVE),i[w].onMessageEvent(Ye.REMOVE,m)}r()}))}},{key:"clearUnsentMessages",value:function(){var e=this;this.mutex.lock((function(n){var t=e.unsentMessages,r=On.get(e.collection);for(var a in e.unsentMessages=[],Se.view("message",Ye.REMOVE,"unsent messages"),r){r[a].onPendingMessageEvent([],Ye.CLEAR);var i=$e.NONE;r[a].onFailedMessageEvent([],Ye.CLEAR,i),r[a].onMessageEvent(Ye.REMOVE,t)}n()}))}},{key:"clearViewItem",value:function(){var e=this;this.mutex.lock((function(n){e.currentChunk=null,e.messages=[],wn.set(e,{}),e.viewRange.start=0,e.viewRange.end=0,e.nextSyncEnded=!1,e.newMessageQueue=[];var t=On.get(e.collection);for(var r in Se.view("message",Ye.CLEAR),t)t[r].onSucceededMessageEvent([],Ye.CLEAR),t[r].onMessageEvent(Ye.CLEAR);n()}))}},{key:"updateCurrentChunk",value:function(e){e?e.isSame(this.currentChunk)||(this.currentChunk=Qe.createFromJson(e)):this.currentChunk=e}},{key:"flushNewMessageQueue",value:function(){this.nextSyncEnded=!0,this.newMessageQueue.length>0&&this.addViewItems(this.newMessageQueue),Se.view("flush new message queue."),this.newMessageQueue=[]}}]),e}(),Dn=function(){function e(r){var a=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:(new Date).getTime();t(this,e);var o=on.getInstance();if(!o)return null;if(this.collectionId=Pe(),this.sendBird=o.sb,this.channel=r,this.limit=50,this.filter=Qe.getDefaultFilter(),i&&"object"===n(i)&&Object.keys(i).length>0)for(var u in i)this.filter.hasOwnProperty(u)&&(this.filter[u]=i[u]);this.viewpoint=s,this._chunkTrimmed=!1,this._isLoading={prev:!1,next:!1};var c=tn.getInstance();c.createQueue(this.channel.url);var l=new xn;l.attachCollection(this),Cn.set(this,l),An.set(this,null),Sn.set(this,null),On.set(this,{}),o.broadcast.addCollection(this,l);var f=function(e,n,t){Se.sync("message synchronize() begin",e,n);var i=0,s=new o.sb.MessageListParams;switch(s.isInclusive=!0,s.reverse=!1,e){case"prev":i=Rn,s.prevResultSize=Rn;break;case"next":i=Un,s.nextResultSize=Un;break;case"prevnext":i=100,s.prevResultSize=Tn,s.nextResultSize=Tn}s.messageType=a.filter.messageType||"",s.customTypes=[a.filter.customType||"*"],s.senderUserIds=a.filter.senderUserIdsFilter||[],s.includeMetaArray=a.filter.includeMetaArray||!0,r.getMessagesByTimestamp(n,s,(function(r,s){if(o.sb.getErrorFirstCallback()){var u=[r,s];s=u[0],r=u[1]}s?(a._pause(),t(s)):En.lock((function(s){var u=[],c={startAt:Number.MAX_SAFE_INTEGER,endAt:0},f=r.length>=i;Se.sync("message synchronize() end",e,"ts=".concat(n),"hasMore=".concat(f),r.map((function(e){return"".concat(e.message," ").concat(e.messageId," ").concat(e.createdAt)})));var g,y=[],m=v(r);try{var p=function(){var e=g.value;e.isVisible=!0;var n,t=v(a.unsentMessages);try{for(t.s();!(n=t.n()).done;){var r=n.value;if("pending"===r.sendingStatus&&r.reqId===e.reqId){y.push(e);break}}}catch(e){t.e(e)}finally{t.f()}u.push(new Promise((function(n,t){o.messageContainer.upsert(e,(function(e){return e?t(e):n()}))}))),c.startAt=Math.min(c.startAt,e.createdAt),c.endAt=Math.max(c.endAt,e.createdAt)};for(m.s();!(g=m.n()).done;)p()}catch(e){m.e(e)}finally{m.f()}if(0===r.length&&(c.startAt=a.viewpoint,c.endAt=a.viewpoint),l.currentChunk&&l.currentChunk.isOverlap(c)||(l.currentChunk=new Qe(a.channel.url,a.filter),Se.message("chunk is created",l.currentChunk.startAt,l.currentChunk.endAt)),l.currentChunk.extendWithChunk(c),y.length>0){var k,I=v(y);try{var b=function(){var e=k.value;u.push(new Promise((function(n,t){o.messageContainer.removeUnsent(e.reqId,(function(e){e?t(e):n()}))})))};for(I.s();!(k=I.n()).done;)b()}catch(e){I.e(e)}finally{I.f()}l.addViewItems(y)}var w=l.currentChunk;Se.message("currentChunk is extended",w.startAt,w.endAt),o.chunkContainer.mergePreviousChunkOverlap(w,(function(n){n?(s(),t(n)):(Se.message("currentChunk merged previous chunks",w.startAt,w.endAt),Promise.all(u).then((function(){o.resolveStoreLimitOverflow((function(){var n={start:w.startAt,end:w.endAt};switch(e){case"prevnext":f||(n.start=0,n.end=Number.MAX_SAFE_INTEGER);break;case"prev":f||(n.start=0,d.isEnd&&(n.end=Number.MAX_SAFE_INTEGER));break;case"next":f||(n.end=Number.MAX_SAFE_INTEGER,h.isEnd&&(n.start=0))}o.messageContainer.resolvePendingMessagesAsFailed(a.channel.url,n.start,n.end,(function(n,a){n||a.length>0&&l.addViewItems(a),s(),t(null,{count:r.length,nextTs:"prev"===e?w.startAt:w.endAt,hasMore:f})}))}))})).catch((function(e){s(),t(e)})))}))}))}))};Mn.set(this,f);var h=new gn((function(e,n){return f("prev",e,n)}));h.shared++,An.set(this,h);var d=new gn((function(e,n){return f("next",e,n)}));d.shared++,d.onend=function(){l.flushNewMessageQueue()},Sn.set(this,d);var g=this.sendBird.getLastConnectedAt();g>0&&o.messageContainer.pullPendingResolveBottom(this.channel.url,g,(function(e){})),this.resetViewpointTimestamp(this.viewpoint)}return a(e,[{key:"messages",get:function(){return this.succeededMessages}},{key:"succeededMessages",get:function(){return Cn.get(this).messages}},{key:"unsentMessages",get:function(){return Cn.get(this).unsentMessages}},{key:"messageCount",get:function(){return Cn.get(this).messages.length}},{key:"_pause",value:function(){Se.call("message sync pause",this.collectionId);var e=An.get(this),n=Sn.get(this);e&&e.pause(),n&&n.pause()}},{key:"_resume",value:function(e){var n=this;Se.call("message sync resume",this.collectionId);var t=on.getInstance();if(t){var r=An.get(this),a=Sn.get(this);r&&r.isRunning&&(r.pause(),r.unsubscribeAll()),a&&a.isRunning&&(a.pause(),a.unsubscribeAll()),t.syncChangeLog(this.channel,(function(){var t=Cn.get(n);r&&r.start((function(){return t.currentChunk?t.currentChunk.startAt:n.viewpoint})),a&&(a.start((function(){return t.currentChunk?t.currentChunk.endAt:n.viewpoint}),!0),e&&a.subscribe(n.collectionId+"_autoresendqueue",e))}))}}},{key:"fetch",value:function(e,n){return this.fetchSucceededMessages(e,n)}},{key:"fetchSucceededMessages",value:function(e,n){var t=this,r=on.getInstance(),a=Cn.get(this);return this._isLoading[e]?qe((function(e){return e(Oe.create(Oe.Type.ERROR_DUPLICATED_FETCH))}),n):(this._isLoading[e]=!0,qe((function(n){Se.call("fetchSucceededMessages()",e),En.lock((function(i){var s=null,o=t.viewpoint,u=t.limit,c=!1,l=o;if(t._chunkTrimmed&&"prev"===e){t._isLoading[e]=!0;var f=new r.sb.MessageListParams;f.isInclusive=!0,f.reverse=!0,f.prevResultSize=t.limit,f.messageType=t.filter.messageType||"",f.customTypes=[t.filter.customType||"*"],f.senderUserIds=t.filter.senderUserIdsFilter||[],f.includeMetaArray=t.filter.includeMetaArray||!0,t.channel.getMessagesByTimestamp(a.messages.length>0?a.messages[0].createdAt:t.viewpoint,f,(function(r,s){if(!t.sendBird.getErrorFirstCallback()){var o=[s,r];r=o[0],s=o[1]}t._isLoading[e]=!1,r||s.length>0&&a.addViewItems(s,{direction:e}),i(),n(r)}))}else{var d=null,g=null;switch(e){case"prev":s=An.get(t),a.viewRange.start>0&&(o=a.viewRange.start),a.currentChunk&&(l=Math.max(a.currentChunk.startAt,o)),d=a.prevTempMessages,g=r.messageContainer.loadPreviousSucceededMessages,c=!0;break;case"next":s=Sn.get(t),a.viewRange.end>0&&(o=a.viewRange.end),a.currentChunk&&(l=Math.min(a.currentChunk.endAt,o)),d=a.nextTempMessages,g=r.messageContainer.loadNextSucceededMessages;break;default:return void n(Oe.create(Oe.Type.ERROR_INVALID_PARAMETER))}var v=function(n,i){Se.message("waiting for synchronization...");var o=!1;g(t.channel.url,t.filter,n,{limit:u,desc:c},(function(n,r){var u;n?(o=!0,t._isLoading[e]=!1,i(n)):(Se.cache("temp message",e,r.map((function(e){return e.messageId}))),(r.length>0||s.state===gn.State.END)&&(o=!0,(u=d).push.apply(u,h(r)),a.addViewItems(r,{direction:e}),t._isLoading[e]=!1,i(null)))}));var f=l;Se.sync("subscribe message",t.collectionId,e,n),s.subscribe(t.collectionId,(function(s){s?(Se.error(s),o||(t._isLoading[e]=!1,i(s))):(Se.sync("flush message",e,n),r.chunkContainer.getChunkByTimestamp(t.channel.url,t.filter,n,(function(n,s){if(n)Se.error(n),o||(t._isLoading[e]=!1,i(n));else if(s&&(a.currentChunk=s),a.currentChunk){var l=a.currentChunk;g(t.channel.url,t.filter,f,{limit:u,desc:c},(function(n,s){if(n)Se.error(n),o||(t._isLoading[e]=!1,i(n));else{Se.cache("flush message",e,f,s.map((function(e){return e.messageId})));var u=[],c=[];for(var h in s)if(l.containsMessage(s[h])){var g=a.messages.map((function(e){return e.messageId})).indexOf(s[h].messageId);(g<0||!a.messages[g].isEqual(s[h]))&&u.push(s[h])}for(var v in d)a.messages.map((function(e){return e.messageId})).indexOf(d[v].messageId)<0&&c.push(d[v]);for(;d.length>0;)d.pop();c.length>0&&a.removeViewItems(c.map((function(e){return e.messageId}))),u.length>0&&a.addViewItems(u,{direction:e}),o||r.resolveStoreLimitOverflow((function(){t._isLoading[e]=!1,i(null)}))}}))}else Se.error(n),o||(t._isLoading[e]=!1,i(n))})))}))};r.chunkContainer.getChunkByTimestamp(t.channel.url,t.filter,o,(function(r,s){if(r)t._isLoading[e]=!1,i(),n(r);else if(s&&(a.currentChunk=s),a.currentChunk){var l=a.currentChunk;Se.message("chunk is selected",l),g(t.channel.url,t.filter,o,{limit:u,desc:c},(function(r,s){if(r)t._isLoading[e]=!1,i(),n(r);else{var c=[],f=[];Se.cache("fetch message",e,o,s.map((function(e){return e.messageId})));var h=!1;for(var g in s)if(l.containsMessage(s[g])){h=!0;var y=a.messages.map((function(e){return e.messageId})).indexOf(s[g].messageId);(y<0||!a.messages[y].isEqual(s[g]))&&c.push(s[g])}if(!h){for(var m in d)a.messages.map((function(e){return e.messageId})).indexOf(d[m].messageId)<0&&f.push(d[m]);for(;d.length>0;)d.pop()}c.length>0&&a.addViewItems(c,{direction:e}),f.length>0&&a.removeViewItems(f.map((function(e){return e.messageId}))),s.length<u?(u-=s.length,i(),v(o,n)):(t._isLoading[e]=!1,i(),n(null))}}))}else i(),v(o,n)})),s.state===gn.State.PAUSED&&t._resume()}}))}),n))}},{key:"fetchFailedMessages",value:function(e){var n=this;return qe((function(e){Se.call("fetchFailedMessages()"),tn.getInstance().loadFailedMessages(n.channel.url,n.filter,(function(t,r){t||(Se.cache("fetch failed message",r.map((function(e){return e.reqId}))),Cn.get(n).addViewItems(r));e(t)}))}),e)}},{key:"fetchPendingMessages",value:function(e){var n=this,t=on.getInstance();return qe((function(e){Se.call("fetchPendingMessages()"),t.messageContainer.loadPendingMessages(n.channel.url,n.filter,{},(function(t,r){t||(Se.cache("fetch pending message",r.map((function(e){return e.reqId}))),Cn.get(n).addViewItems(r));e(t)}))}),e)}},{key:"resetViewpointTimestamp",value:function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:(new Date).getTime();if(Se.call("resetViewpointTimestamp()",n),"number"==typeof n&&n>=0){var t=An.get(this),r=Sn.get(this);t.pause(),r.pause();var a=Cn.get(this);a.currentChunk&&a.currentChunk.contains(n)||(a.currentChunk=null,a.clearViewItem()),this.viewpoint=n;var i=on.getInstance();i.chunkContainer.getChunkByTimestamp(this.channel.url,this.filter,this.viewpoint,(function(n,i){n||(i&&(a.currentChunk=i),a.currentChunk?e._resume():t.mutex.lock((function(n){r.mutex.lock((function(a){Mn.get(e)("prevnext",e.viewpoint,(function(i,s){i?(n(),a()):setTimeout((function(){t.flush(i,s),r.flush(i,s),n(),a(),s.count<Tn?(t.end(),r.end()):e._resume()}),300)}))}))})))}))}else Se.error("resetViewpointTimestamp()","ts should be number type and greater than or equal to 0."),Oe.throw(Oe.create(Oe.Type.ERROR_INVALID_PARAMETER))}},{key:"remove",value:function(){tn.getInstance().removeQueue(this.channel.url),on.getInstance().broadcast.removeCollection(this),Cn.get(this).currentChunk=null;var e=An.get(this),n=Sn.get(this);e&&(e.shared--,0===e.shared&&e.pause()),n&&(n.shared--,0===n.shared&&n.pause())}},{key:"handleSendMessageResponse",value:function(e,n){if(Se.call("handleSendMessageResponse()",e,n),e){if(n)switch(Hn.syncManagerOptions.messageResendPolicy){case Hn.Options.MessageResendPolicy.NONE:this.deleteMessage(n);break;case Hn.Options.MessageResendPolicy.MANUAL:case Hn.Options.MessageResendPolicy.AUTOMATIC:if(n.isUserMessage()&&800110!==e.code)this.appendMessage(n);else{var t={reason:$e.REMOVE_UNKNOWN};this.deleteMessage(n,t)}break;default:this.deleteMessage(n)}else this.deleteMessage(n),Se.error(e)}else{var r=Cn.get(this),a={reason:$e.REMOVE_RESEND_SUCCEEDED};for(var i in r.unsentMessages)if(r.unsentMessages[i].isIdentical(n)){this.deleteMessage(r.unsentMessages[i],a);break}this.appendMessage(n)}}},{key:"hasMessage",value:function(e){if(e)for(var n=Cn.get(this),t=0;t<n.succeededMessages.length;t++)if(n.succeededMessages[t].isIdentical(e))return!0;return!1}},{key:"appendMessage",value:function(e){if(e){Se.call("appendMessage()",e.messageId);var n=Hn.getInstance(),t=on.getInstance(),r=Cn.get(this);if(e.messageId)if(e.sender&&e.sender.userId===n.currentUserId){e.isVisible=!0,t.messageContainer.upsert(e,(function(e,n){e||t.broadcast.upsert([n])}));var a=dn.getInstance();a.channelContainer.getItem(e.channelUrl,(function(n,t){n?Oe.throw(n):t&&(!t.lastMessage||t.lastMessage.createdAt<=e.createdAt)&&(t.lastMessage=e,a.channelContainer.upsert(t,(function(e,n){e?Oe.throw(e):a.broadcast.upsert([n])})))}))}else Se.warning("Cannot append message sent by other member.");else{var i=Hn.syncManagerOptions;if("failed"===e.sendingStatus)i.messageResendPolicy!==Hn.Options.MessageResendPolicy.NONE?tn.getInstance().upsertMessages(this.channel.url,[e]):r.removeViewItems([e]);else if("pending"===e.sendingStatus){r.addViewItems([e]);var s=parseInt(this.sendBird.getLastConnectedAt()/1e3);e.pendingResolveTop=r.currentChunk?Math.max(r.currentChunk.endAt,s):s,e.pendingResolveBottom=Number.MAX_SAFE_INTEGER,t.messageContainer.upsert(e,(function(e,n){}))}}}else Se.error("appendMessage()","Message is expected but ".concat(e," is given.")),Oe.throw(Oe.create(Oe.Type.ERROR_INVALID_PARAMETER))}},{key:"updateMessage",value:function(e){if(e){Se.call("updateMessage()",e.messageId);var n=Hn.getInstance(),t=on.getInstance(),r=Cn.get(this);if(e.sender&&e.sender.userId===n.currentUserId)if(e.messageId){e.isVisible=!0,t.messageContainer.upsert(e,(function(e,n){e||t.broadcast.update([n])}));var a=dn.getInstance();a.channelContainer.getItem(e.channelUrl,(function(n,t){n?Oe.throw(n):t&&t.lastMessage&&t.lastMessage.messageId===e.messageId&&(t.lastMessage=e,a.channelContainer.upsert(t,(function(e,n){e?Oe.throw(e):a.broadcast.update([n])})))}))}else r.addViewItems([e])}else Se.error("updateMessage()","Message is expected but ".concat(e," is given.")),Oe.throw(Oe.create(Oe.Type.ERROR_INVALID_PARAMETER))}},{key:"deleteMessage",value:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e){Se.call("deleteMessage()",e.messageId);var t=Hn.getInstance();e.sender&&e.sender.userId===t.currentUserId&&(e.messageId||this.deleteMessageByRequestID(e.reqId,n))}else Se.error("deleteMessage()","Message is expected but ".concat(e," is given.")),Oe.throw(Oe.create(Oe.Type.ERROR_INVALID_PARAMETER))}},{key:"deleteMessageByRequestID",value:function(e){var n,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=Cn.get(this),a=v(r.unsentMessages);try{for(a.s();!(n=a.n()).done;){var i=n.value;if(i.reqId===e){switch(i.sendingStatus){case"pending":r.removeViewItems([i.reqId],{isRequestId:!0});break;case"failed":tn.getInstance().removeMessages(this.channel.url,[i],t)}break}}}catch(e){a.e(e)}finally{a.f()}}},{key:"setCollectionHandler",value:function(e){var n=On.get(this);e instanceof Je&&(n[_n]=e)}},{key:"removeCollectionHandler",value:function(){var e=On.get(this);e[_n]&&delete e[_n]}}],[{key:"CollectionHandler",get:function(){return Je}},{key:"Action",get:function(){return Ye}},{key:"FailedMessageEventActionReason",get:function(){return $e}},{key:"create",value:function(n,t,r,a){"function"==typeof r&&(a=r,r=(new Date).getTime());var i=dn.getInstance();return qe((function(a){i.channelContainer.getItem(n,(function(i,s){if(i)a(i);else if(s)a(null,new e(s,t,r));else{var o=dn.getInstance();o.sb.GroupChannel.getChannel(n,(function(n,i){if(o.sb.getErrorFirstCallback()){var s=[n,i];i=s[0],n=s[1]}i?a(i):a(null,new e(n,t,r))}))}}))}),a)}}]),e}(),Nn=a((function e(){t(this,e),this.messageCount={all:0}}));"undefined"==typeof Promise&&(Promise=b);var Fn="[SyncManager]",Pn=null,qn=null,Ln=null,Bn=ce,jn=null,Vn=null,Gn=null,Qn=null,Hn=function(){function e(){return t(this,e),qn||(qn=this),qn}return a(e,[{key:"currentUserId",get:function(){return Pn&&Pn.currentUser?Pn.currentUser.userId:Ln}},{key:"resumeSync",value:function(){Se.call("resumeSync()"),Vn&&Vn.start(),Gn&&Gn.start()}},{key:"pauseSync",value:function(){Se.call("pauseSync()"),Vn&&Vn.stop(),Gn&&Gn.stop()}},{key:"clearCache",value:function(e){return Se.call("clearCache()"),qe((function(e){var n=[];Vn&&n.push(new Promise((function(e,n){Vn.reset((function(t){return t?n(t):e()}))}))),Gn&&n.push(new Promise((function(e,n){Gn.reset((function(t){return t?n(t):e()}))}))),n.length>0?Promise.all(n).then((function(){return e(null)})).catch((function(n){return e(n)})):e(null)}),e)}},{key:"reset",value:function(e){var n=this;return Se.call("reset()"),qe((function(e){n.clearCache((function(n){n||(dn.clear((function(){Vn=null})),on.clear((function(){Gn=null}))),e(n)}))}),e)}}],[{key:"sendBird",get:function(){return Pn},set:function(e){(Pn=e)&&Pn.addExtension("sb_syncmanager","1.1.30")}},{key:"LocalDB",get:function(){return Bn}},{key:"_messageContainer",get:function(){return on.getInstance().messageContainer}},{key:"_chunkContainer",get:function(){return on.getInstance().chunkContainer}},{key:"setup",value:function(){Se.call("init()"),Qn=new e.Options;var n=arguments.length<=0?void 0:arguments[0],t=arguments.length<=1?void 0:arguments[1];return t&&"function"!=typeof t&&(t instanceof e.Options?(Qn=t,t=arguments.length<=2?void 0:arguments[2]):Se.error("Type of the second parameter is not valid: ",arguments.length<=1?void 0:arguments[1])),Se.prefix=Fn,qe((function(t){we.init(),Pn?(qn=new e,we.get("lastUserId").then((function(r){Ln=n,dn.clear(),Vn=null,on.clear(),Gn=null;var a=function(t){we.set("lastUserId",n).then((function(){var a=new Nn;Vn=new dn({sendBird:Pn,db:jn,cacheManager:a}),Gn=new on({sendBird:Pn,db:jn,cacheManager:a}),e.ChannelCollection=bn,e.MessageCollection=Dn,r&&r!==n&&(Se.warning("Different user ID: clear cache"),qn.clearCache((function(){}))),tn.getInstance().removeExpiredMessages((function(){Se.message("Expired messages are removed.")})),Gn.messageContainer.query({},{limit:Number.MAX_SAFE_INTEGER,desc:!0,includeInvisible:!0},(function(e,n){if(e)t(e);else{var r,i=v(n=n.filter((function(e){return e&&e.channelUrl})));try{for(i.s();!(r=i.n()).done;){var s=r.value;a.messageCount[s.channelUrl]||(a.messageCount[s.channelUrl]=0),a.messageCount[s.channelUrl]++,a.messageCount.all++}}catch(e){i.e(e)}finally{i.f()}t(null)}}))})).catch((function(e){t(e)}))};jn?(Se.cache("Database is open"),a(t)):Y().then((function(e){e&&(Se.info("IndexedDB is not supported in private browsing mode in Edge/Firefox. Using in-memory database."),Bn=ke);var n=new Bn("sbsync.db",5);n.schema("GroupChannel",{key:"url",index:[{ownerUserId:Bn.Query.Order.ASC,lastMessageUpdatedAt:Bn.Query.Order.DESC},{ownerUserId:Bn.Query.Order.ASC,createdAt:Bn.Query.Order.DESC},{ownerUserId:Bn.Query.Order.ASC,name:Bn.Query.Order.ASC}]}).schema("GroupChannelListQuery",{key:"filterKey",index:[{ownerUserId:Bn.Query.Order.ASC,updatedAt:Bn.Query.Order.DESC}]}).schema("MessageChunk",{key:"chunkId",index:[{ownerUserId:Bn.Query.Order.ASC,channelUrl:Bn.Query.Order.ASC,filterKey:Bn.Query.Order.ASC,endAt:Bn.Query.Order.DESC}]}).schema("Message",{key:"messageId",index:[{ownerUserId:Bn.Query.Order.ASC,channelUrl:Bn.Query.Order.ASC,createdAt:Bn.Query.Order.DESC},{ownerUserId:Bn.Query.Order.ASC,createdAt:Bn.Query.Order.ASC}]}).build().then((function(){Se.cache("Database is open"),jn=n,a(t)})).catch((function(e){return t(e)}))}))})).catch((function(e){t(e)}))):t(Oe.create(Oe.Type.ERROR_SETUP_MISSING))}),t)}},{key:"useReactNative",value:function(e){we.useReactNative(e),K.Storage=e,Bn=K}},{key:"syncManagerOptions",get:function(){return Qn||new e.Options}},{key:"LogLevel",get:function(){return Ee}},{key:"loggerLevel",get:function(){return Se.level},set:function(e){Se.level=e}},{key:"getInstance",value:function(){return qn}}]),e}();return Hn.Options=function(){return a((function e(){t(this,e);var n=1e4;Object.defineProperty(this,"messageStoreCapacity",{get:function(){return n},set:function(e){"number"==typeof e&&0<e&&(n=e)}});var r=2e3;Object.defineProperty(this,"messageStoreEjectionPriotizedLimit",{get:function(){return r},set:function(e){"number"==typeof e&&0<e&&(r=e)}});var a=500;Object.defineProperty(this,"messageStoreEjectionSize",{get:function(){return a},set:function(e){"number"==typeof e&&0<e&&e<=1e3&&(a=e)}});var i=1e3;Object.defineProperty(this,"messageCollectionCapacity",{get:function(){return i},set:function(e){"number"==typeof e&&e>=(Se.isValidLevel(Se.level)?200:0)&&e<=Number.MAX_SAFE_INTEGER&&(i=e)}});var s=Hn.Options.MessageResendPolicy.NONE;Object.defineProperty(this,"messageResendPolicy",{get:function(){return s},set:function(e){Object.keys(Hn.Options.MessageResendPolicy).map((function(e){return Hn.Options.MessageResendPolicy[e]})).indexOf(e)>-1&&(s=e)}});var o=10;Object.defineProperty(this,"automaticMessageResendRetryCount",{get:function(){return o},set:function(e){"number"==typeof e&&e>0&&e<=50&&(o=e)}});var u=20;Object.defineProperty(this,"maxFailedMessageCountPerChannel",{get:function(){return u},set:function(e){"number"==typeof e&&e>0&&e<=Number.MAX_SAFE_INTEGER&&(u=e)}});var c=7;Object.defineProperty(this,"failedMessageRetentionDays",{get:function(){return c},set:function(e){"number"==typeof e&&(e>(Se.isValidLevel(Se.level)?0:-2)&&e<=Number.MAX_SAFE_INTEGER||e===Hn.Options.INFINITY)&&(c=e)}})}))}(),Hn.Options.MessageResendPolicy={NONE:"none",MANUAL:"manual",AUTOMATIC:"automatic"},Hn.Options.INFINITY=Number.MAX_SAFE_INTEGER,Hn}));