react-native-onyx 1.0.130 → 1.0.131
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -8
- package/dist/web.development.js +2 -287
- package/dist/web.development.js.map +1 -1
- package/dist/web.min.js +1 -1
- package/dist/web.min.js.map +1 -1
- package/lib/Onyx.d.ts +0 -10
- package/lib/Onyx.js +1 -106
- package/lib/Str.js +1 -16
- package/lib/utils.d.ts +2 -2
- package/package.json +8 -12
- package/lib/ActiveClientManager/index.d.ts +0 -22
- package/lib/ActiveClientManager/index.native.js +0 -18
- package/lib/ActiveClientManager/index.web.js +0 -94
- package/lib/broadcast/index.d.ts +0 -17
- package/lib/broadcast/index.native.js +0 -12
- package/lib/broadcast/index.web.js +0 -33
package/dist/web.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("fast-equals"),require("underscore"),require("react-dom"),require("idb-keyval"),require("lodash/transform"),require("react")):"function"==typeof define&&define.amd?define(["fast-equals","underscore","react-dom","idb-keyval","lodash/transform","react"],t):"object"==typeof exports?exports["react-native-onyx/web"]=t(require("fast-equals"),require("underscore"),require("react-dom"),require("idb-keyval"),require("lodash/transform"),require("react")):e["react-native-onyx/web"]=t(e["fast-equals"],e.underscore,e["react-dom"],e["idb-keyval"],e["lodash/transform"],e.react)}(self,((e,t,n,r,s,i)=>(()=>{var o={378:(e,t,n)=>{"use strict";function r(e){return e}function s(){}function i(){}function o(){}n.r(t),n.d(t,{decorateWithMetrics:()=>r,getMetrics:()=>s,printMetrics:()=>i,resetMetrics:()=>o})},703:(e,t,n)=>{"use strict";var r=n(414);function s(){}function i(){}i.resetWarningCache=s,e.exports=function(){function e(e,t,n,s,i,o){if(o!==r){var a=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:s};return n.PropTypes=n,n}},697:(e,t,n)=>{e.exports=n(703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},746:t=>{"use strict";t.exports=e},802:e=>{"use strict";e.exports=r},407:e=>{"use strict";e.exports=s},156:e=>{"use strict";e.exports=i},111:e=>{"use strict";e.exports=n},952:e=>{"use strict";e.exports=t}},a={};function c(e){var t=a[e];if(void 0!==t)return t.exports;var n=a[e]={exports:{}};return o[e](n,n.exports,c),n.exports}c.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return c.d(t,{a:t}),t},c.d=(e,t)=>{for(var n in t)c.o(t,n)&&!c.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},c.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),c.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),c.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var l={};return(()=>{"use strict";c.r(l),c.d(l,{default:()=>Ze,withOnyx:()=>Je});var e=c(746),t=c(952),n=c.n(t);let r=()=>{};function s(e){r({message:`[Onyx] ${e}`,level:"alert"})}function i(e){r({message:`[Onyx] ${e}`,level:"info"})}function o(e){return null!=e&&"object"==typeof e&&"[object RegExp]"!==Object.prototype.toString.call(e)&&"[object Date]"!==Object.prototype.toString.call(e)&&!Array.isArray(e)}function a(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return n().isArray(t)||null==t?t:function(e,t){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const r={};if(o(e)){const s=Object.keys(e);for(let i=0;i<s.length;++i){const o=s[i],a=null===e[o]||null===t[o];n&&a||(r[o]=e[o])}}const s=Object.keys(t);for(let i=0;i<s.length;++i){const c=s[i],l=n&&null===t[c];if(void 0!==t[c]&&!l){const s=o(t[c]);s&&e[c]?n&&!s||(r[c]=a(e[c],t[c],n)):n&&null===t[c]||(r[c]=t[c])}}return r}(e,t,r)}const u={areObjectsEmpty:function(e,t){return"object"==typeof e&&"object"==typeof t&&n().isEmpty(e)&&n().isEmpty(t)},fastMerge:a,formatActionName:function(e,t){return t?`${e.toUpperCase()}/${t}`:e.toUpperCase()},removeNestedNullValues:function(e){return"object"!=typeof e||n().isArray(e)?e:a(e,e)}},h=n().negate(n().isUndefined),y=new class{constructor(){this.storageKeys=new Set,this.recentKeys=new Set,this.storageMap={},this.pendingPromises=new Map,n().bindAll(this,"getAllKeys","getValue","hasCacheForKey","addKey","set","drop","merge","hasPendingTask","getTaskPromise","captureTask","removeLeastRecentlyUsedKeys","setRecentKeysLimit")}getAllKeys(){return Array.from(this.storageKeys)}getValue(e){return this.addToAccessedKeys(e),this.storageMap[e]}hasCacheForKey(e){return h(this.storageMap[e])}addKey(e){this.storageKeys.add(e)}set(e,t){return this.addKey(e),this.addToAccessedKeys(e),this.storageMap[e]=t,t}drop(e){delete this.storageMap[e],this.storageKeys.delete(e),this.recentKeys.delete(e)}merge(e){if(!n().isObject(e)||n().isArray(e))throw new Error("data passed to cache.merge() must be an Object of onyx key/value pairs");this.storageMap=Object.assign({},u.fastMerge(this.storageMap,e,!1));const t=this.getAllKeys(),r=n().keys(e);this.storageKeys=new Set([...t,...r]),n().each(r,(e=>this.addToAccessedKeys(e)))}hasPendingTask(e){return h(this.pendingPromises.get(e))}getTaskPromise(e){return this.pendingPromises.get(e)}captureTask(e,t){const n=t.finally((()=>{this.pendingPromises.delete(e)}));return this.pendingPromises.set(e,n),n}addToAccessedKeys(e){this.recentKeys.delete(e),this.recentKeys.add(e)}removeLeastRecentlyUsedKeys(){let e=this.recentKeys.size-this.maxRecentKeysSize;if(e<=0)return;const t=this.recentKeys.values(),n=[];for(;e>0;){const r=t.next().value;n.push(r),e--}for(let e=0;e<n.length;++e)delete this.storageMap[n[e]],this.recentKeys.delete(n[e])}setRecentKeysLimit(e){this.maxRecentKeysSize=e}hasValueChanged(t,n){return!(0,e.deepEqual)(this.storageMap[t],n)}};function d(e,t){return n().isString(e)&&n().isString(t)&&e.startsWith(t)}function f(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),s=1;s<t;s++)r[s-1]=arguments[s];return n().isFunction(e)?e(...r):e}var p=c(407),m=c.n(p);let g=!1;function v(e){g=e}function k(e,t,r,s,i){if(!g)return;const o={};i&&(o.keyThatChanged=i),n().isObject(r)&&n().isObject(t)?o.difference=function e(t,r){return m()(t,((t,s,i)=>{n().isEqual(s,r[i])||(t[i]=n().isObject(s)&&n().isObject(r[i])?e(s,r[i]):s)}))}(t,r):(o.previousValue=t,o.newValue=r),console.debug(`[Onyx-Debug] ${e.displayName} setState() called. Subscribed to key '${e.key}' (${s})`,o)}var b=c(802);let O;const E=()=>(O||(O=(0,b.createStore)("OnyxDB","keyvaluepairs")),O),S={setItem:(e,t)=>(0,b.set)(e,t,E()),multiGet:e=>(0,b.getMany)(e,E()).then((t=>n().map(t,((t,n)=>[e[n],t])))),multiMerge:e=>E()("readwrite",(t=>Promise.all(n().map(e,(e=>{let[n]=e;return(0,b.promisifyRequest)(t.get(n))}))).then((r=>{const s=n().map(e,((e,n)=>{let[s,i]=e;const o=r[n],a=u.fastMerge(o,i);return(0,b.promisifyRequest)(t.put(a,s))}));return Promise.all(s)})))),mergeItem:(e,t,n)=>S.setItem(e,n),multiSet:e=>(0,b.setMany)(e,E()),clear:()=>(0,b.clear)(E()),setMemoryOnlyKeys:()=>{},getAllKeys:()=>(0,b.keys)(E()),getItem:e=>(0,b.get)(e,E()).then((e=>void 0===e?null:e)),removeItem:e=>(0,b.del)(e,E()),removeItems:e=>(0,b.delMany)(e,E()),getDatabaseSize(){if(!window.navigator||!window.navigator.storage)throw new Error("StorageManager browser API unavailable");return window.navigator.storage.estimate().then((e=>({bytesUsed:e.usage,bytesRemaining:e.quota-e.usage}))).catch((e=>{throw new Error(`Unable to estimate web storage quota. Original error: ${e}`)}))}},w=S,x="SYNC_ONYX";function P(e){c.g.localStorage.setItem(x,e),c.g.localStorage.removeItem(x,e)}const I={...w,keepInstancesSync(e){this.setItem=(e,t)=>w.setItem(e,t).then((()=>P(e))),this.removeItem=e=>w.removeItem(e).then((()=>P(e))),this.removeItems=e=>w.removeItems(e).then((()=>{return t=e,void n().each(t,(e=>{P(e)}));var t})),this.mergeItem=(e,t,n)=>w.mergeItem(e,t,n).then((()=>P(e))),this.clear=()=>{let e;return w.getAllKeys().then((t=>{e=t})).then((()=>w.clear())).then((()=>{n().each(e,P)}))},c.g.addEventListener("storage",(t=>{if(t.key!==x||!t.newValue)return;const n=t.newValue;w.getItem(n).then((t=>e(n,t)))}))}},M=[],T=new BroadcastChannel("BROADCAST_ONYX");function C(e){T.postMessage(e)}function K(e){M.push(e),T.onmessage=e=>{M.forEach((t=>t(e)))}}const R="NEW_LEADER",A="REMOVE_LEADER",N=function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return`${arguments.length>0&&void 0!==arguments[0]?arguments[0]:""}${e()}${e()}-${e()}-${e()}-${e()}-${e()}${e()}${e()}`}(),j=[];let D=null,L=null,_=()=>{};const $=new Promise((e=>{_=e}));function U(){return $}function V(){return L===N}const W=c(111).unstable_batchedUpdates,q="Onyx DevTools - Error: ",F=new class{constructor(){this.remoteDev=this.connectViaExtension(),this.state={},this.defaultState={}}connectViaExtension(e){try{if(e&&e.remote||"undefined"==typeof window||!window.__REDUX_DEVTOOLS_EXTENSION__)return;return window.__REDUX_DEVTOOLS_EXTENSION__.connect(e)}catch(e){console.error(q,e)}}registerAction(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};try{if(!this.remoteDev)return;const r={...this.state,...n};this.remoteDev.send({type:e,payload:t},r),this.state=r}catch(e){console.error(q,e)}}initState(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{if(!this.remoteDev)return;this.remoteDev.init(e),this.state=e,this.defaultState=e}catch(e){console.error(q,e)}}clearState(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const t=n().mapObject(this.state,((t,n)=>e.includes(n)?t:this.defaultState[n]));this.registerAction("CLEAR",void 0,t)}},G={SET:"set",MERGE:"merge",MERGE_COLLECTION:"mergecollection",MULTI_SET:"multiset",CLEAR:"clear"},B="on_clear",z={},X={};let Y=0;const H={};let Q=new Map,J=[],Z=[];const ee={};let te={};const ne=function(){const e={};return e.promise=new Promise((t=>{e.resolve=t})),e}();let re=!1,se=null,ie=null,oe=[];function ae(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0;F.registerAction(u.formatActionName(e,t),n,t?{[t]:r||n}:n)}function ce(){return ie||(ie=new Promise((e=>{setTimeout((()=>{const t=oe;oe=[],ie=null,W((()=>{t.forEach((e=>{e()}))})),e()}),0)})),ie)}function le(e){return oe.push(e),ce()}const ue=(e,t,n)=>t(e,n),he=(e,t,r)=>n().reduce(e,((e,n,s)=>(e[s]=ue(n,t,r),e)),{});function ye(e){if(y.hasCacheForKey(e))return Promise.resolve(y.getValue(e));const t=`get:${e}`;if(y.hasPendingTask(t))return y.getTaskPromise(t);const n=I.getItem(e).then((t=>(y.set(e,t),t))).catch((t=>i(`Unable to get item from persistent storage. Key: ${e} Error: ${t}`)));return y.captureTask(t,n)}function de(){const e=y.getAllKeys();if(e.length>0)return Promise.resolve(e);const t="getAllKeys";if(y.hasPendingTask(t))return y.getTaskPromise(t);const r=I.getAllKeys().then((e=>(n().each(e,(e=>y.addKey(e))),e)));return y.captureTask(t,r)}function fe(e){return Q.has(e)}function pe(e,t){return d(t,e)&&t.length>e.length}function me(e,t){return fe(e)?d(t,e):e===t}function ge(e){return n().some(Z,(t=>me(t,e)))}function ve(e){J=n().without(J,e)}function ke(e){!fe(e)&&ge(e)&&(ve(e),J.push(e))}function be(e,t){ee[e]=n().without(ee[e]||[],t),0===ee[e].length&&delete ee[e]}function Oe(e){const t=n().filter(y.getAllKeys(),(t=>pe(e,t)));return n().reduce(t,((e,t)=>{const n=y.getValue(t);return n?(e[t]=n,e):e}),{})}function Ee(t,r){let s=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];const o=n().keys(H);for(let a=0;a<o.length;a++){const c=H[o[a]];if(!c)continue;if(!d(c.key,t))continue;const l=c.key===t,h=pe(t,c.key),y=Oe(t);if(n().isFunction(c.callback)){if(!s)continue;if(l){if(c.waitForCollectionCallback){c.callback(y);continue}const e=n().keys(r);for(let t=0;t<e.length;t++){const n=e[t];c.callback(y[n],n)}continue}if(h){c.callback(y[c.key],c.key);continue}}else if(c.withOnyxInstance){if(!i)continue;if(l){if(c.selector){c.withOnyxInstance.setStateProxy((t=>{const n=t[c.statePropertyName],r=he(y,c.selector,c.withOnyxInstance.state);return(0,e.deepEqual)(n,r)?null:{[c.statePropertyName]:r}}));continue}c.withOnyxInstance.setStateProxy((e=>{const s=n().clone(e[c.statePropertyName]||{}),i=n().keys(r);for(let e=0;e<i.length;e++){const t=i[e];s[t]=y[t]}return k(c,e[c.statePropertyName],s,"keysChanged",t),{[c.statePropertyName]:s}}));continue}if(h){const s=r[c.key];if(n().isUndefined(s))continue;if(c.selector){c.withOnyxInstance.setStateProxy((n=>{const r=n[c.statePropertyName],s=ue(y[c.key],c.selector,c.withOnyxInstance.state);return(0,e.deepEqual)(r,s)?null:(k(c,r,s,"keysChanged",t),{[c.statePropertyName]:s})}));continue}c.withOnyxInstance.setStateProxy((e=>{const n=y[c.key],r=e[c.statePropertyName];return u.areObjectsEmpty(n,r)||n===r?null:(k(c,r,n,"keysChanged",t),{[c.statePropertyName]:n})}))}}}}function Se(t,r,s){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];n().isNull(r)?ve(t):ke(t);const a=n().keys(H);for(let c=0;c<a.length;c++){const l=H[a[c]];if(l&&me(l.key,t)&&(!n().isFunction(s)||s(l)))if(n().isFunction(l.callback)){if(!i)continue;if(fe(l.key)&&l.waitForCollectionCallback){const e=Oe(l.key);e[t]=r,l.callback(e);continue}l.callback(r,t)}else if(l.withOnyxInstance){if(!o)continue;if(fe(l.key)){if(l.selector){l.withOnyxInstance.setStateProxy((n=>{const s=n[l.statePropertyName],i={[t]:ue(r,l.selector,l.withOnyxInstance.state)},o={...s,...i};return(0,e.deepEqual)(s,o)?null:(k(l,s,i,"keyChanged",t),{[l.statePropertyName]:o})}));continue}l.withOnyxInstance.setStateProxy((e=>{const n=e[l.statePropertyName]||{},s={...n,[t]:r};return k(l,n,s,"keyChanged",t),{[l.statePropertyName]:s}}));continue}if(l.selector){l.withOnyxInstance.setStateProxy((t=>{const n=ue(t[l.statePropertyName],l.selector,l.withOnyxInstance.state),s=ue(r,l.selector,l.withOnyxInstance.state);return(0,e.deepEqual)(n,s)?null:{[l.statePropertyName]:s}}));continue}l.withOnyxInstance.setStateProxy((e=>{const n=e[l.statePropertyName];return u.areObjectsEmpty(r,n)||n===r?null:(k(l,n,r,"keyChanged",t),{[l.statePropertyName]:r})}))}else console.error("Warning: Found a matching subscriber to a key that changed, but no callback or withOnyxInstance could be found.")}}function we(e,t,r,s){if(H[e.connectionID]){if(e.withOnyxInstance){let n=t;return e.selector&&(n=fe(e.key)?he(t,e.selector,e.withOnyxInstance.state):ue(t,e.selector,e.withOnyxInstance.state)),k(e,null,n,"sendDataToConnection"),void(s?le((()=>{e.withOnyxInstance.setWithOnyxState(e.statePropertyName,n)})):e.withOnyxInstance.setWithOnyxState(e.statePropertyName,n))}n().isFunction(e.callback)&&e.callback(t,r)}}function xe(e,t){Promise.all(n().map(e,(e=>ye(e)))).then((t=>n().reduce(t,((t,n,r)=>(t[e[r]]=n,t)),{}))).then((e=>we(t,e,void 0,!0)))}function Pe(e,t,n){const r=Promise.resolve().then((()=>Se(e,t,n,!0,!1)));return le((()=>Se(e,t,n,!1,!0))),Promise.all([ce(),r])}function Ie(e,t){const n=Promise.resolve().then((()=>Ee(e,t,!0,!1)));return le((()=>Ee(e,t,!1,!0))),Promise.all([ce(),n])}function Me(e){return y.drop(e),Pe(e,null),I.removeItem(e)}function Te(){return I.getDatabaseSize().then((e=>{let{bytesUsed:t,bytesRemaining:n}=e;i(`Storage Quota Check -- bytesUsed: ${t} bytesRemaining: ${n}`)})).catch((e=>{s(`Unable to get database size. Error: ${e}`)}))}function Ce(e,t){for(var r=arguments.length,o=new Array(r>2?r-2:0),a=2;a<r;a++)o[a-2]=arguments[a];if(i(`Failed to save to storage. Error: ${e}. onyxMethod: ${t.name}`),e&&d(e.message,"Failed to execute 'put' on 'IDBObjectStore'"))throw s("Attempted to set invalid data set in Onyx. Please ensure all data is serializable."),e;const c=n().find(J,(e=>!ee[e]));return c?(i(`Out of storage. Evicting least recently accessed key (${c}) and retrying.`),Te(),Me(c).then((()=>t(...o)))):(s("Out of storage. But found no acceptable keys to remove."),Te())}function Ke(e,t,r,s){let o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return i(`${r}() called for key: ${e}${n().isObject(t)?` properties: ${n().keys(t).join(",")}`:""}`),s&&!o?y.set(e,t):y.addToAccessedKeys(e),Pe(e,t,(e=>s||!1===e.initWithStoredValues))}function Re(e){return Boolean(z[e])}function Ae(e,t){return n().isNull(t)?(Me(e),{value:t,wasRemoved:!0}):{value:u.removeNestedNullValues(t),wasRemoved:!1}}function Ne(e,t){if(!V())return C({type:G.SET,key:e,value:t}),Promise.resolve();if(re)return Promise.resolve();const{value:n,wasRemoved:r}=Ae(e,t);Re(e)&&delete z[e];const s=y.hasValueChanged(e,n),i=Ke(e,n,"set",s,r);return!s||r?i:I.setItem(e,n).catch((t=>Ce(t,Ne,e,n))).then((()=>(ae(G.SET,e,n),i)))}function je(e){const t=[];return n().forEach(e,((e,n)=>{const{value:r,wasRemoved:s}=Ae(n,e);s||t.push([n,r])})),t}function De(e){if(!V())return C({type:G.MULTI_SET,data:e}),Promise.resolve();if(re)return Promise.resolve();const t=je(e),r=n().map(t,(e=>{let[t,n]=e;return y.set(t,n),Pe(t,n)}));return I.multiSet(t).catch((t=>Ce(t,De,e))).then((()=>(ae(G.MULTI_SET,void 0,e),Promise.all(r))))}function Le(e,t,r){const s=n().last(t);return n().isArray(s)?s:n().some(t,n().isObject)?n().reduce(t,((e,t)=>u.fastMerge(e,t,r)),e||{}):s}function _e(e,t){return V()?re?Promise.resolve():n().isUndefined(t)?z[e]?X[e]:Promise.resolve():z[e]?(z[e].push(t),X[e]):(z[e]=[t],X[e]=ye(e).then((r=>{if(null!=z[e])try{let s=Le(void 0,z[e],!1);const i=n().includes(z[e],null);delete z[e],delete X[e];const{wasRemoved:o}=Ae(e,s),a=i?s:Le(r,[s],!0);r||(s=Le(void 0,[s],!0));const c=y.hasValueChanged(e,a),l=Ke(e,a,"merge",c,o);return!c||re||o?l:I.mergeItem(e,s,a).then((()=>(ae(G.MERGE,e,t,a),l)))}catch(t){return s(`An error occurred while applying merge for key: ${e}, Error: ${t}`),Promise.resolve()}})),X[e]):(C({type:G.MERGE,key:e,changes:t}),Promise.resolve())}function $e(){return I.multiGet(n().keys(te)).then((e=>{const t=n().object(e),r=u.fastMerge(t,te);y.merge(r),n().each(r,((e,t)=>Se(t,e)))}))}function Ue(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return V()?re?Promise.resolve():(re=!0,de().then((t=>{const r=[],s={},i={};n().each(t,(t=>{const o=n().contains(e,t),a=n().has(te,t);if(!o){const e=y.getValue(t),r=n().get(te,t,null);if(r!==e){y.set(t,r);const e=t.substring(0,t.indexOf("_")+1);e?(s[e]||(s[e]={}),s[e][t]=r):i[t]=r}}o||a||r.push(t)}));const o=[];n().each(i,((e,t)=>{o.push(Pe(t,e))})),n().each(s,((e,t)=>{o.push(Ie(t,e))}));const a=n().pairs(n().omit(te,e));return n().each(r,(e=>y.drop(e))),I.removeItems(r).then((()=>I.multiSet(a))).then((()=>(re=!1,C({type:G.CLEAR,keysToPreserve:e}),F.clearState(e),Promise.all(o))))}))):(C({type:G.CLEAR,keysToPreserve:e}),Promise.resolve())}function Ve(e,t){if(!n().isObject(t)||n().isArray(t)||n().isEmpty(t))return i("mergeCollection() called with invalid or empty value. Skipping this update."),Promise.resolve();let r=!1;return n().each(t,((t,n)=>{me(e,n)||(r=!0,s(`Provided collection doesn't have all its data belonging to the same parent. CollectionKey: ${e}, DataKey: ${n}`))})),r?Promise.resolve():de().then((r=>{const[s,i]=n().chain(t).pick(((e,t)=>!n().isNull(e)||(Me(t),!1))).keys().partition((e=>r.includes(e))).value(),o=n().pick(t,s),a=n().pick(t,i),c=je(o),l=je(a),u=[];c.length>0&&u.push(I.multiMerge(c)),l.length>0&&u.push(I.multiSet(l));const h=Promise.all(n().map(s,ye)).then((()=>(y.merge(t),Ie(e,t))));return Promise.all(u).catch((e=>Ce(e,Ve,t))).then((()=>(ae(G.MERGE_COLLECTION,void 0,t),h)))}))}function We(e){n().each(e,(e=>{let{onyxMethod:t,key:r,value:s}=e;if(!n().contains([G.CLEAR,G.SET,G.MERGE,G.MERGE_COLLECTION,G.MULTI_SET],t))throw new Error(`Invalid onyxMethod ${t} in Onyx update.`);if(t===G.MULTI_SET){if(!n().isObject(s)||n().isArray(s)||n().isFunction(s))throw new Error("Invalid value provided in Onyx multiSet. Onyx multiSet value must be of type object.")}else if(t!==G.CLEAR&&!n().isString(r))throw new Error(`Invalid ${typeof r} key provided in Onyx update. Onyx key must be of type string.`)}));const t=[];let r=Promise.resolve();return n().each(e,(e=>{let{onyxMethod:n,key:s,value:i}=e;switch(n){case G.SET:t.push((()=>Ne(s,i)));break;case G.MERGE:t.push((()=>_e(s,i)));break;case G.MERGE_COLLECTION:t.push((()=>Ve(s,i)));break;case G.MULTI_SET:t.push((()=>De(i)));break;case G.CLEAR:r=Ue()}})),r.then((()=>Promise.all(n().map(t,(e=>e())))))}const qe={connect:function(e){const t=Y++;return H[t]=e,H[t].connectionID=t,!1===e.initWithStoredValues||ne.promise.then((()=>function(e){if(ge(e.key)&&(y.removeLeastRecentlyUsedKeys(),e.withOnyxInstance&&!fe(e.key))){if(n().isUndefined(e.canEvict))throw new Error(`Cannot subscribe to safe eviction key '${e.key}' without providing a canEvict value.`);ke(e.key)}}(e))).then((()=>Boolean(e.key)&&"string"==typeof e.key&&!e.key.endsWith("_")&&y.storageKeys.has(e.key)?[e.key]:de())).then((t=>{const r=n().filter(t,(t=>me(e.key,t)));if(0===r.length)return e.key&&!fe(e.key)&&y.set(e.key,null),void we(e,null,void 0,!1);if(n().isFunction(e.callback)){if(fe(e.key)){if(e.waitForCollectionCallback)return void xe(r,e);for(let t=0;t<r.length;t++)ye(r[t]).then((n=>we(e,n,r[t],!0)));return}ye(e.key).then((t=>we(e,t,e.key,!0)))}else{if(e.withOnyxInstance)return fe(e.key)?void xe(r,e):void ye(e.key).then((t=>we(e,t,e.key,!0)));console.error("Warning: Onyx.connect() was found without a callback or withOnyxInstance")}})),t},disconnect:function(e,t){H[e]&&(t&&be(t,e),delete H[e])},set:Ne,multiSet:De,merge:_e,mergeCollection:Ve,update:We,clear:Ue,getAllKeys:de,init:function(){let{keys:e={},initialKeyStates:t={},safeEvictionKeys:r=[],maxCachedKeysCount:s=1e3,captureMetrics:i=!1,shouldSyncMultipleInstances:o=Boolean(c.g.localStorage),debugSetState:a=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};K((e=>{switch(e.data.type){case R:{const t=D===e.data.timestamp,n=D>e.data.timestamp;if(V()&&(n||t&&N>e.data.clientID))return;L=e.data.clientID,j.forEach((e=>e()));break}case A:L=N,D=Date.now(),C({type:R,clientID:N,timestamp:D}),j.forEach((e=>e()))}})),L=N,D=Date.now(),C({type:R,clientID:N,timestamp:D}),_(),window.addEventListener("beforeunload",(()=>{V()&&C({type:A,clientID:N})})),U().then((()=>{V()&&K((e=>{let{data:t}=e;if(V())switch(t.type){case G.CLEAR:Ue(t.keysToPreserve);break;case G.SET:Ne(t.key,t.value);break;case G.MULTI_SET:De(t.key,t.value);break;case G.MERGE:_e(t.key,t.changes);break;case B:if(!se)break;se()}}))})),i&&function(){const e=c(378);ye=e.decorateWithMetrics(ye,"Onyx:get"),Ne=e.decorateWithMetrics(Ne,"Onyx:set"),De=e.decorateWithMetrics(De,"Onyx:multiSet"),Ue=e.decorateWithMetrics(Ue,"Onyx:clear"),_e=e.decorateWithMetrics(_e,"Onyx:merge"),Ve=e.decorateWithMetrics(Ve,"Onyx:mergeCollection"),de=e.decorateWithMetrics(de,"Onyx:getAllKeys"),$e=e.decorateWithMetrics($e,"Onyx:defaults"),We=e.decorateWithMetrics(We,"Onyx:update"),qe.set=Ne,qe.multiSet=De,qe.clear=Ue,qe.merge=_e,qe.mergeCollection=Ve,qe.update=We,qe.getMetrics=e.getMetrics,qe.resetMetrics=e.resetMetrics,qe.printMetrics=e.printMetrics}(),a&&v(!0),s>0&&y.setRecentKeysLimit(s);const l=n().values(e.COLLECTION);Q=n().reduce(l,((e,t)=>(e.set(t,!0),e)),new Map),te=t,F.initState(t),Z=r,Promise.all([de().then((e=>{n().each(Z,(t=>{n().each(e,(e=>{me(t,e)&&ke(e)}))}))})),$e()]).then(ne.resolve),o&&n().isFunction(I.keepInstancesSync)&&I.keepInstancesSync(((e,t)=>{y.set(e,t),Se(e,t)}))},registerLogger:function(e){r=e},addToEvictionBlockList:function(e,t){be(e,t),ee[e]||(ee[e]=[]),ee[e].push(t)},removeFromEvictionBlockList:be,isSafeEvictionKey:ge,METHOD:G,setMemoryOnlyKeys:function(e){I.setMemoryOnlyKeys(e),y.setRecentKeysLimit(1/0)},tryGetCachedValue:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=y.getValue(e);if(fe(e)){const t=y.getAllKeys();if(0===t.length)return;const s=n().filter(t,(t=>t.startsWith(e)));r=n().reduce(s,((e,t)=>{const n=y.getValue(t);return n&&(e[t]=n),e}),{})}if(t.selector){const n=t.withOnyxInstance?t.withOnyxInstance.state:void 0;return fe(e)?he(r,t.selector,n):ue(r,t.selector,n)}return r},hasPendingMergeForKey:Re,onClear:function(e){se=e},isClientManagerReady:U,isClientTheLeader:V,subscribeToClientChange:function(e){j.push(e)}},Fe=qe;var Ge=c(697),Be=c.n(Ge),ze=c(156),Xe=c.n(ze);function Ye(){return Ye=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ye.apply(this,arguments)}const He=["initialValue","allowStaleData"],Qe=(e,t)=>n().pick(e,n().keys(t));function Je(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const r=n().chain(e).omit((e=>!1===e.initWithStoredValues)).keys().value();return s=>{const i=(o=s).displayName||o.name||"Component";var o;class a extends Xe().Component{constructor(s){var i,o,a;super(s),i=this,a=[],(o=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(o="pendingSetStates"))in i?Object.defineProperty(i,o,{value:a,enumerable:!0,configurable:!0,writable:!0}):i[o]=a,this.shouldDelayUpdates=t,this.setWithOnyxState=this.setWithOnyxState.bind(this),this.flushPendingSetStates=this.flushPendingSetStates.bind(this),this.activeConnectionIDs={};const c=n().reduce(e,((e,t,n)=>{const r=f(t.key,s);let i=Fe.tryGetCachedValue(r,t);return!i&&t.initialValue&&(i=t.initialValue),(void 0!==i&&!Fe.hasPendingMergeForKey(r)||t.allowStaleData)&&(e[n]=i),e}),{});c.loading=n().size(c)<r.length,this.tempState=c,this.state=c}componentDidMount(){const t=Qe(this.state,e);n().each(e,((e,r)=>{if(n().includes(He,r))return;const s=f(e.key,{...this.props,...t});this.connectMappingToOnyx(e,r,s)})),this.checkEvictableKeys()}componentDidUpdate(t,r){const s=r.loading&&!this.state.loading,i=Qe(this.state,e),o=Qe(r,e);n().each(e,((e,r)=>{if(n().includes(He,r))return;const a=s?e.previousKey:f(e.key,{...t,...o}),c=f(e.key,{...this.props,...i});a!==c&&(Fe.disconnect(this.activeConnectionIDs[a],a),delete this.activeConnectionIDs[a],this.connectMappingToOnyx(e,r,c))})),this.checkEvictableKeys()}componentWillUnmount(){n().each(e,(t=>{const n=f(t.key,{...this.props,...Qe(this.state,e)});Fe.disconnect(this.activeConnectionIDs[n],n)}))}setStateProxy(e){this.shouldDelayUpdates?this.pendingSetStates.push(e):this.setState(e)}setWithOnyxState(t,s){const i=this.state[t];if(!this.state.loading||!this.tempState){if(i===s||u.areObjectsEmpty(i,s))return;return void this.setStateProxy({[t]:s})}if(this.tempState[t]=s,n().some(r,(e=>n().isUndefined(this.tempState[e]))))return;const o={...this.tempState};delete this.tempState,this.setState((t=>{const r=n().reduce(o,((r,s,i)=>{if("loading"===i)return r;const o=e[i].initialValue;return(n().isUndefined(o)||n().isUndefined(t[i])||t[i]===o)&&n().isUndefined(t[i])?r[i]=s:r[i]=t[i],r}),{});return r.loading=!1,r}))}checkEvictableKeys(){n().each(e,(e=>{if(n().isUndefined(e.canEvict))return;const t=f(e.canEvict,this.props),r=f(e.key,this.props);if(!Fe.isSafeEvictionKey(r))throw new Error(`canEvict can't be used on key '${r}'. This key must explicitly be flagged as safe for removal by adding it to Onyx.init({safeEvictionKeys: []}).`);t?Fe.removeFromEvictionBlockList(r,e.connectionID):Fe.addToEvictionBlockList(r,e.connectionID)}))}connectMappingToOnyx(t,n,r){e[n].previousKey=r,this.activeConnectionIDs[r]=Fe.connect({...t,key:r,statePropertyName:n,withOnyxInstance:this,displayName:i})}flushPendingSetStates(){this.shouldDelayUpdates&&(this.shouldDelayUpdates=!1,this.pendingSetStates.forEach((e=>{this.setState(e)})),this.pendingSetStates=[])}render(){const e=n().omit(this.props,n().isNull);if(this.state.loading)return null;let t=n().omit(this.state,"loading");return t=n().omit(t,n().isNull),Xe().createElement(s,Ye({markReadyForHydration:this.flushPendingSetStates},e,t,{ref:this.props.forwardedRef}))}}return a.propTypes={forwardedRef:Be().oneOfType([Be().func,Be().shape({current:Be().object})])},a.defaultProps={forwardedRef:void 0},a.displayName=`withOnyx(${i})`,Xe().forwardRef(((e,t)=>{const n=a;return Xe().createElement(n,Ye({},e,{forwardedRef:t}))}))}}const Ze=Fe})(),l})()));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("fast-equals"),require("underscore"),require("react-dom"),require("idb-keyval"),require("lodash/transform"),require("react")):"function"==typeof define&&define.amd?define(["fast-equals","underscore","react-dom","idb-keyval","lodash/transform","react"],t):"object"==typeof exports?exports["react-native-onyx/web"]=t(require("fast-equals"),require("underscore"),require("react-dom"),require("idb-keyval"),require("lodash/transform"),require("react")):e["react-native-onyx/web"]=t(e["fast-equals"],e.underscore,e["react-dom"],e["idb-keyval"],e["lodash/transform"],e.react)}(self,((e,t,n,s,r,i)=>(()=>{var o={378:(e,t,n)=>{"use strict";function s(e){return e}function r(){}function i(){}function o(){}n.r(t),n.d(t,{decorateWithMetrics:()=>s,getMetrics:()=>r,printMetrics:()=>i,resetMetrics:()=>o})},703:(e,t,n)=>{"use strict";var s=n(414);function r(){}function i(){}i.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,i,o){if(o!==s){var a=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:r};return n.PropTypes=n,n}},697:(e,t,n)=>{e.exports=n(703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},746:t=>{"use strict";t.exports=e},802:e=>{"use strict";e.exports=s},407:e=>{"use strict";e.exports=r},156:e=>{"use strict";e.exports=i},111:e=>{"use strict";e.exports=n},952:e=>{"use strict";e.exports=t}},a={};function c(e){var t=a[e];if(void 0!==t)return t.exports;var n=a[e]={exports:{}};return o[e](n,n.exports,c),n.exports}c.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return c.d(t,{a:t}),t},c.d=(e,t)=>{for(var n in t)c.o(t,n)&&!c.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},c.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),c.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),c.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var l={};return(()=>{"use strict";c.r(l),c.d(l,{default:()=>De,withOnyx:()=>Ae});var e=c(746),t=c(952),n=c.n(t);let s=()=>{};function r(e){s({message:`[Onyx] ${e}`,level:"alert"})}function i(e){s({message:`[Onyx] ${e}`,level:"info"})}function o(e){return null!=e&&"object"==typeof e&&"[object RegExp]"!==Object.prototype.toString.call(e)&&"[object Date]"!==Object.prototype.toString.call(e)&&!Array.isArray(e)}function a(e,t){let s=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return n().isArray(t)||null==t?t:function(e,t){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const s={};if(o(e)){const r=Object.keys(e);for(let i=0;i<r.length;++i){const o=r[i],a=null===e[o]||null===t[o];n&&a||(s[o]=e[o])}}const r=Object.keys(t);for(let i=0;i<r.length;++i){const c=r[i],l=n&&null===t[c];if(void 0!==t[c]&&!l){const r=o(t[c]);r&&e[c]?n&&!r||(s[c]=a(e[c],t[c],n)):n&&null===t[c]||(s[c]=t[c])}}return s}(e,t,s)}const u={areObjectsEmpty:function(e,t){return"object"==typeof e&&"object"==typeof t&&n().isEmpty(e)&&n().isEmpty(t)},fastMerge:a,formatActionName:function(e,t){return t?`${e.toUpperCase()}/${t}`:e.toUpperCase()},removeNestedNullValues:function(e){return"object"!=typeof e||n().isArray(e)?e:a(e,e)}},h=n().negate(n().isUndefined),y=new class{constructor(){this.storageKeys=new Set,this.recentKeys=new Set,this.storageMap={},this.pendingPromises=new Map,n().bindAll(this,"getAllKeys","getValue","hasCacheForKey","addKey","set","drop","merge","hasPendingTask","getTaskPromise","captureTask","removeLeastRecentlyUsedKeys","setRecentKeysLimit")}getAllKeys(){return Array.from(this.storageKeys)}getValue(e){return this.addToAccessedKeys(e),this.storageMap[e]}hasCacheForKey(e){return h(this.storageMap[e])}addKey(e){this.storageKeys.add(e)}set(e,t){return this.addKey(e),this.addToAccessedKeys(e),this.storageMap[e]=t,t}drop(e){delete this.storageMap[e],this.storageKeys.delete(e),this.recentKeys.delete(e)}merge(e){if(!n().isObject(e)||n().isArray(e))throw new Error("data passed to cache.merge() must be an Object of onyx key/value pairs");this.storageMap=Object.assign({},u.fastMerge(this.storageMap,e,!1));const t=this.getAllKeys(),s=n().keys(e);this.storageKeys=new Set([...t,...s]),n().each(s,(e=>this.addToAccessedKeys(e)))}hasPendingTask(e){return h(this.pendingPromises.get(e))}getTaskPromise(e){return this.pendingPromises.get(e)}captureTask(e,t){const n=t.finally((()=>{this.pendingPromises.delete(e)}));return this.pendingPromises.set(e,n),n}addToAccessedKeys(e){this.recentKeys.delete(e),this.recentKeys.add(e)}removeLeastRecentlyUsedKeys(){let e=this.recentKeys.size-this.maxRecentKeysSize;if(e<=0)return;const t=this.recentKeys.values(),n=[];for(;e>0;){const s=t.next().value;n.push(s),e--}for(let e=0;e<n.length;++e)delete this.storageMap[n[e]],this.recentKeys.delete(n[e])}setRecentKeysLimit(e){this.maxRecentKeysSize=e}hasValueChanged(t,n){return!(0,e.deepEqual)(this.storageMap[t],n)}};function d(e,t){return n().isString(e)&&n().isString(t)&&e.startsWith(t)}function f(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),r=1;r<t;r++)s[r-1]=arguments[r];return n().isFunction(e)?e(...s):e}var p=c(407),m=c.n(p);let g=!1;function v(e){g=e}function b(e,t,s,r,i){if(!g)return;const o={};i&&(o.keyThatChanged=i),n().isObject(s)&&n().isObject(t)?o.difference=function e(t,s){return m()(t,((t,r,i)=>{n().isEqual(r,s[i])||(t[i]=n().isObject(r)&&n().isObject(s[i])?e(r,s[i]):r)}))}(t,s):(o.previousValue=t,o.newValue=s),console.debug(`[Onyx-Debug] ${e.displayName} setState() called. Subscribed to key '${e.key}' (${r})`,o)}var k=c(802);let O;const S=()=>(O||(O=(0,k.createStore)("OnyxDB","keyvaluepairs")),O),w={setItem:(e,t)=>(0,k.set)(e,t,S()),multiGet:e=>(0,k.getMany)(e,S()).then((t=>n().map(t,((t,n)=>[e[n],t])))),multiMerge:e=>S()("readwrite",(t=>Promise.all(n().map(e,(e=>{let[n]=e;return(0,k.promisifyRequest)(t.get(n))}))).then((s=>{const r=n().map(e,((e,n)=>{let[r,i]=e;const o=s[n],a=u.fastMerge(o,i);return(0,k.promisifyRequest)(t.put(a,r))}));return Promise.all(r)})))),mergeItem:(e,t,n)=>w.setItem(e,n),multiSet:e=>(0,k.setMany)(e,S()),clear:()=>(0,k.clear)(S()),setMemoryOnlyKeys:()=>{},getAllKeys:()=>(0,k.keys)(S()),getItem:e=>(0,k.get)(e,S()).then((e=>void 0===e?null:e)),removeItem:e=>(0,k.del)(e,S()),removeItems:e=>(0,k.delMany)(e,S()),getDatabaseSize(){if(!window.navigator||!window.navigator.storage)throw new Error("StorageManager browser API unavailable");return window.navigator.storage.estimate().then((e=>({bytesUsed:e.usage,bytesRemaining:e.quota-e.usage}))).catch((e=>{throw new Error(`Unable to estimate web storage quota. Original error: ${e}`)}))}},x=w,E="SYNC_ONYX";function P(e){c.g.localStorage.setItem(E,e),c.g.localStorage.removeItem(E,e)}const I={...x,keepInstancesSync(e){this.setItem=(e,t)=>x.setItem(e,t).then((()=>P(e))),this.removeItem=e=>x.removeItem(e).then((()=>P(e))),this.removeItems=e=>x.removeItems(e).then((()=>{return t=e,void n().each(t,(e=>{P(e)}));var t})),this.mergeItem=(e,t,n)=>x.mergeItem(e,t,n).then((()=>P(e))),this.clear=()=>{let e;return x.getAllKeys().then((t=>{e=t})).then((()=>x.clear())).then((()=>{n().each(e,P)}))},c.g.addEventListener("storage",(t=>{if(t.key!==E||!t.newValue)return;const n=t.newValue;x.getItem(n).then((t=>e(n,t)))}))}},M=c(111).unstable_batchedUpdates,T="Onyx DevTools - Error: ",K=new class{constructor(){this.remoteDev=this.connectViaExtension(),this.state={},this.defaultState={}}connectViaExtension(e){try{if(e&&e.remote||"undefined"==typeof window||!window.__REDUX_DEVTOOLS_EXTENSION__)return;return window.__REDUX_DEVTOOLS_EXTENSION__.connect(e)}catch(e){console.error(T,e)}}registerAction(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};try{if(!this.remoteDev)return;const s={...this.state,...n};this.remoteDev.send({type:e,payload:t},s),this.state=s}catch(e){console.error(T,e)}}initState(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{if(!this.remoteDev)return;this.remoteDev.init(e),this.state=e,this.defaultState=e}catch(e){console.error(T,e)}}clearState(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const t=n().mapObject(this.state,((t,n)=>e.includes(n)?t:this.defaultState[n]));this.registerAction("CLEAR",void 0,t)}},C={SET:"set",MERGE:"merge",MERGE_COLLECTION:"mergecollection",MULTI_SET:"multiset",CLEAR:"clear"},j={},N={};let R=0;const A={};let D=new Map,_=[],L=[];const U={};let V={};const $=function(){const e={};return e.promise=new Promise((t=>{e.resolve=t})),e}();let q=null,W=[];function F(e,t,n){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0;K.registerAction(u.formatActionName(e,t),n,t?{[t]:s||n}:n)}function G(){return q||(q=new Promise((e=>{setTimeout((()=>{const t=W;W=[],q=null,M((()=>{t.forEach((e=>{e()}))})),e()}),0)})),q)}function B(e){return W.push(e),G()}const z=(e,t,n)=>t(e,n),X=(e,t,s)=>n().reduce(e,((e,n,r)=>(e[r]=z(n,t,s),e)),{});function H(e){if(y.hasCacheForKey(e))return Promise.resolve(y.getValue(e));const t=`get:${e}`;if(y.hasPendingTask(t))return y.getTaskPromise(t);const n=I.getItem(e).then((t=>(y.set(e,t),t))).catch((t=>i(`Unable to get item from persistent storage. Key: ${e} Error: ${t}`)));return y.captureTask(t,n)}function Y(){const e=y.getAllKeys();if(e.length>0)return Promise.resolve(e);const t="getAllKeys";if(y.hasPendingTask(t))return y.getTaskPromise(t);const s=I.getAllKeys().then((e=>(n().each(e,(e=>y.addKey(e))),e)));return y.captureTask(t,s)}function Q(e){return D.has(e)}function J(e,t){return d(t,e)&&t.length>e.length}function Z(e,t){return Q(e)?d(t,e):e===t}function ee(e){return n().some(L,(t=>Z(t,e)))}function te(e){_=n().without(_,e)}function ne(e){!Q(e)&&ee(e)&&(te(e),_.push(e))}function se(e,t){U[e]=n().without(U[e]||[],t),0===U[e].length&&delete U[e]}function re(e){const t=n().filter(y.getAllKeys(),(t=>J(e,t)));return n().reduce(t,((e,t)=>{const n=y.getValue(t);return n?(e[t]=n,e):e}),{})}function ie(t,s){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];const o=n().keys(A);for(let a=0;a<o.length;a++){const c=A[o[a]];if(!c)continue;if(!d(c.key,t))continue;const l=c.key===t,h=J(t,c.key),y=re(t);if(n().isFunction(c.callback)){if(!r)continue;if(l){if(c.waitForCollectionCallback){c.callback(y);continue}const e=n().keys(s);for(let t=0;t<e.length;t++){const n=e[t];c.callback(y[n],n)}continue}if(h){c.callback(y[c.key],c.key);continue}}else if(c.withOnyxInstance){if(!i)continue;if(l){if(c.selector){c.withOnyxInstance.setStateProxy((t=>{const n=t[c.statePropertyName],s=X(y,c.selector,c.withOnyxInstance.state);return(0,e.deepEqual)(n,s)?null:{[c.statePropertyName]:s}}));continue}c.withOnyxInstance.setStateProxy((e=>{const r=n().clone(e[c.statePropertyName]||{}),i=n().keys(s);for(let e=0;e<i.length;e++){const t=i[e];r[t]=y[t]}return b(c,e[c.statePropertyName],r,"keysChanged",t),{[c.statePropertyName]:r}}));continue}if(h){const r=s[c.key];if(n().isUndefined(r))continue;if(c.selector){c.withOnyxInstance.setStateProxy((n=>{const s=n[c.statePropertyName],r=z(y[c.key],c.selector,c.withOnyxInstance.state);return(0,e.deepEqual)(s,r)?null:(b(c,s,r,"keysChanged",t),{[c.statePropertyName]:r})}));continue}c.withOnyxInstance.setStateProxy((e=>{const n=y[c.key],s=e[c.statePropertyName];return u.areObjectsEmpty(n,s)||n===s?null:(b(c,s,n,"keysChanged",t),{[c.statePropertyName]:n})}))}}}}function oe(t,s,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];n().isNull(s)?te(t):ne(t);const a=n().keys(A);for(let c=0;c<a.length;c++){const l=A[a[c]];if(l&&Z(l.key,t)&&(!n().isFunction(r)||r(l)))if(n().isFunction(l.callback)){if(!i)continue;if(Q(l.key)&&l.waitForCollectionCallback){const e=re(l.key);e[t]=s,l.callback(e);continue}l.callback(s,t)}else if(l.withOnyxInstance){if(!o)continue;if(Q(l.key)){if(l.selector){l.withOnyxInstance.setStateProxy((n=>{const r=n[l.statePropertyName],i={[t]:z(s,l.selector,l.withOnyxInstance.state)},o={...r,...i};return(0,e.deepEqual)(r,o)?null:(b(l,r,i,"keyChanged",t),{[l.statePropertyName]:o})}));continue}l.withOnyxInstance.setStateProxy((e=>{const n=e[l.statePropertyName]||{},r={...n,[t]:s};return b(l,n,r,"keyChanged",t),{[l.statePropertyName]:r}}));continue}if(l.selector){l.withOnyxInstance.setStateProxy((t=>{const n=z(t[l.statePropertyName],l.selector,l.withOnyxInstance.state),r=z(s,l.selector,l.withOnyxInstance.state);return(0,e.deepEqual)(n,r)?null:{[l.statePropertyName]:r}}));continue}l.withOnyxInstance.setStateProxy((e=>{const n=e[l.statePropertyName];return u.areObjectsEmpty(s,n)||n===s?null:(b(l,n,s,"keyChanged",t),{[l.statePropertyName]:s})}))}else console.error("Warning: Found a matching subscriber to a key that changed, but no callback or withOnyxInstance could be found.")}}function ae(e,t,s,r){if(A[e.connectionID]){if(e.withOnyxInstance){let n=t;return e.selector&&(n=Q(e.key)?X(t,e.selector,e.withOnyxInstance.state):z(t,e.selector,e.withOnyxInstance.state)),b(e,null,n,"sendDataToConnection"),void(r?B((()=>{e.withOnyxInstance.setWithOnyxState(e.statePropertyName,n)})):e.withOnyxInstance.setWithOnyxState(e.statePropertyName,n))}n().isFunction(e.callback)&&e.callback(t,s)}}function ce(e,t){Promise.all(n().map(e,(e=>H(e)))).then((t=>n().reduce(t,((t,n,s)=>(t[e[s]]=n,t)),{}))).then((e=>ae(t,e,void 0,!0)))}function le(e,t,n){const s=Promise.resolve().then((()=>oe(e,t,n,!0,!1)));return B((()=>oe(e,t,n,!1,!0))),Promise.all([G(),s])}function ue(e,t){const n=Promise.resolve().then((()=>ie(e,t,!0,!1)));return B((()=>ie(e,t,!1,!0))),Promise.all([G(),n])}function he(e){return y.drop(e),le(e,null),I.removeItem(e)}function ye(){return I.getDatabaseSize().then((e=>{let{bytesUsed:t,bytesRemaining:n}=e;i(`Storage Quota Check -- bytesUsed: ${t} bytesRemaining: ${n}`)})).catch((e=>{r(`Unable to get database size. Error: ${e}`)}))}function de(e,t){for(var s=arguments.length,o=new Array(s>2?s-2:0),a=2;a<s;a++)o[a-2]=arguments[a];if(i(`Failed to save to storage. Error: ${e}. onyxMethod: ${t.name}`),e&&d(e.message,"Failed to execute 'put' on 'IDBObjectStore'"))throw r("Attempted to set invalid data set in Onyx. Please ensure all data is serializable."),e;const c=n().find(_,(e=>!U[e]));return c?(i(`Out of storage. Evicting least recently accessed key (${c}) and retrying.`),ye(),he(c).then((()=>t(...o)))):(r("Out of storage. But found no acceptable keys to remove."),ye())}function fe(e,t,s,r){let o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return i(`${s}() called for key: ${e}${n().isObject(t)?` properties: ${n().keys(t).join(",")}`:""}`),r&&!o?y.set(e,t):y.addToAccessedKeys(e),le(e,t,(e=>r||!1===e.initWithStoredValues))}function pe(e){return Boolean(j[e])}function me(e,t){return n().isNull(t)?(he(e),{value:t,wasRemoved:!0}):{value:u.removeNestedNullValues(t),wasRemoved:!1}}function ge(e,t){const{value:n,wasRemoved:s}=me(e,t);pe(e)&&delete j[e];const r=y.hasValueChanged(e,n),i=fe(e,n,"set",r,s);return!r||s?i:I.setItem(e,n).catch((t=>de(t,ge,e,n))).then((()=>(F(C.SET,e,n),i)))}function ve(e){const t=[];return n().forEach(e,((e,n)=>{const{value:s,wasRemoved:r}=me(n,e);r||t.push([n,s])})),t}function be(e){const t=ve(e),s=n().map(t,(e=>{let[t,n]=e;return y.set(t,n),le(t,n)}));return I.multiSet(t).catch((t=>de(t,be,e))).then((()=>(F(C.MULTI_SET,void 0,e),Promise.all(s))))}function ke(e,t,s){const r=n().last(t);return n().isArray(r)?r:n().some(t,n().isObject)?n().reduce(t,((e,t)=>u.fastMerge(e,t,s)),e||{}):r}function Oe(e,t){return n().isUndefined(t)?j[e]?N[e]:Promise.resolve():j[e]?(j[e].push(t),N[e]):(j[e]=[t],N[e]=H(e).then((s=>{if(null!=j[e])try{let r=ke(void 0,j[e],!1);const i=n().includes(j[e],null);delete j[e],delete N[e];const{wasRemoved:o}=me(e,r),a=i?r:ke(s,[r],!0);s||(r=ke(void 0,[r],!0));const c=y.hasValueChanged(e,a),l=fe(e,a,"merge",c,o);return!c||o?l:I.mergeItem(e,r,a).then((()=>(F(C.MERGE,e,t,a),l)))}catch(t){return r(`An error occurred while applying merge for key: ${e}, Error: ${t}`),Promise.resolve()}})),N[e])}function Se(){return I.multiGet(n().keys(V)).then((e=>{const t=n().object(e),s=u.fastMerge(t,V);y.merge(s),n().each(s,((e,t)=>oe(t,e)))}))}function we(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return Y().then((t=>{const s=[],r={},i={};n().each(t,(t=>{const o=n().contains(e,t),a=n().has(V,t);if(!o){const e=y.getValue(t),s=n().get(V,t,null);if(s!==e){y.set(t,s);const e=t.substring(0,t.indexOf("_")+1);e?(r[e]||(r[e]={}),r[e][t]=s):i[t]=s}}o||a||s.push(t)}));const o=[];n().each(i,((e,t)=>{o.push(le(t,e))})),n().each(r,((e,t)=>{o.push(ue(t,e))}));const a=n().pairs(n().omit(V,e));return n().each(s,(e=>y.drop(e))),I.removeItems(s).then((()=>I.multiSet(a))).then((()=>(K.clearState(e),Promise.all(o))))}))}function xe(e,t){if(!n().isObject(t)||n().isArray(t)||n().isEmpty(t))return i("mergeCollection() called with invalid or empty value. Skipping this update."),Promise.resolve();let s=!1;return n().each(t,((t,n)=>{Z(e,n)||(s=!0,r(`Provided collection doesn't have all its data belonging to the same parent. CollectionKey: ${e}, DataKey: ${n}`))})),s?Promise.resolve():Y().then((s=>{const[r,i]=n().chain(t).pick(((e,t)=>!n().isNull(e)||(he(t),!1))).keys().partition((e=>s.includes(e))).value(),o=n().pick(t,r),a=n().pick(t,i),c=ve(o),l=ve(a),u=[];c.length>0&&u.push(I.multiMerge(c)),l.length>0&&u.push(I.multiSet(l));const h=Promise.all(n().map(r,H)).then((()=>(y.merge(t),ue(e,t))));return Promise.all(u).catch((e=>de(e,xe,t))).then((()=>(F(C.MERGE_COLLECTION,void 0,t),h)))}))}function Ee(e){n().each(e,(e=>{let{onyxMethod:t,key:s,value:r}=e;if(!n().contains([C.CLEAR,C.SET,C.MERGE,C.MERGE_COLLECTION,C.MULTI_SET],t))throw new Error(`Invalid onyxMethod ${t} in Onyx update.`);if(t===C.MULTI_SET){if(!n().isObject(r)||n().isArray(r)||n().isFunction(r))throw new Error("Invalid value provided in Onyx multiSet. Onyx multiSet value must be of type object.")}else if(t!==C.CLEAR&&!n().isString(s))throw new Error(`Invalid ${typeof s} key provided in Onyx update. Onyx key must be of type string.`)}));const t=[];let s=Promise.resolve();return n().each(e,(e=>{let{onyxMethod:n,key:r,value:i}=e;switch(n){case C.SET:t.push((()=>ge(r,i)));break;case C.MERGE:t.push((()=>Oe(r,i)));break;case C.MERGE_COLLECTION:t.push((()=>xe(r,i)));break;case C.MULTI_SET:t.push((()=>be(i)));break;case C.CLEAR:s=we()}})),s.then((()=>Promise.all(n().map(t,(e=>e())))))}const Pe={connect:function(e){const t=R++;return A[t]=e,A[t].connectionID=t,!1===e.initWithStoredValues||$.promise.then((()=>function(e){if(ee(e.key)&&(y.removeLeastRecentlyUsedKeys(),e.withOnyxInstance&&!Q(e.key))){if(n().isUndefined(e.canEvict))throw new Error(`Cannot subscribe to safe eviction key '${e.key}' without providing a canEvict value.`);ne(e.key)}}(e))).then((()=>Boolean(e.key)&&"string"==typeof e.key&&!e.key.endsWith("_")&&y.storageKeys.has(e.key)?[e.key]:Y())).then((t=>{const s=n().filter(t,(t=>Z(e.key,t)));if(0===s.length)return e.key&&!Q(e.key)&&y.set(e.key,null),void ae(e,null,void 0,!1);if(n().isFunction(e.callback)){if(Q(e.key)){if(e.waitForCollectionCallback)return void ce(s,e);for(let t=0;t<s.length;t++)H(s[t]).then((n=>ae(e,n,s[t],!0)));return}H(e.key).then((t=>ae(e,t,e.key,!0)))}else{if(e.withOnyxInstance)return Q(e.key)?void ce(s,e):void H(e.key).then((t=>ae(e,t,e.key,!0)));console.error("Warning: Onyx.connect() was found without a callback or withOnyxInstance")}})),t},disconnect:function(e,t){A[e]&&(t&&se(t,e),delete A[e])},set:ge,multiSet:be,merge:Oe,mergeCollection:xe,update:Ee,clear:we,getAllKeys:Y,init:function(){let{keys:e={},initialKeyStates:t={},safeEvictionKeys:s=[],maxCachedKeysCount:r=1e3,captureMetrics:i=!1,shouldSyncMultipleInstances:o=Boolean(c.g.localStorage),debugSetState:a=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};i&&function(){const e=c(378);H=e.decorateWithMetrics(H,"Onyx:get"),ge=e.decorateWithMetrics(ge,"Onyx:set"),be=e.decorateWithMetrics(be,"Onyx:multiSet"),we=e.decorateWithMetrics(we,"Onyx:clear"),Oe=e.decorateWithMetrics(Oe,"Onyx:merge"),xe=e.decorateWithMetrics(xe,"Onyx:mergeCollection"),Y=e.decorateWithMetrics(Y,"Onyx:getAllKeys"),Se=e.decorateWithMetrics(Se,"Onyx:defaults"),Ee=e.decorateWithMetrics(Ee,"Onyx:update"),Pe.set=ge,Pe.multiSet=be,Pe.clear=we,Pe.merge=Oe,Pe.mergeCollection=xe,Pe.update=Ee,Pe.getMetrics=e.getMetrics,Pe.resetMetrics=e.resetMetrics,Pe.printMetrics=e.printMetrics}(),a&&v(!0),r>0&&y.setRecentKeysLimit(r);const l=n().values(e.COLLECTION);D=n().reduce(l,((e,t)=>(e.set(t,!0),e)),new Map),V=t,K.initState(t),L=s,Promise.all([Y().then((e=>{n().each(L,(t=>{n().each(e,(e=>{Z(t,e)&&ne(e)}))}))})),Se()]).then($.resolve),o&&n().isFunction(I.keepInstancesSync)&&I.keepInstancesSync(((e,t)=>{y.set(e,t),oe(e,t)}))},registerLogger:function(e){s=e},addToEvictionBlockList:function(e,t){se(e,t),U[e]||(U[e]=[]),U[e].push(t)},removeFromEvictionBlockList:se,isSafeEvictionKey:ee,METHOD:C,setMemoryOnlyKeys:function(e){I.setMemoryOnlyKeys(e),y.setRecentKeysLimit(1/0)},tryGetCachedValue:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=y.getValue(e);if(Q(e)){const t=y.getAllKeys();if(0===t.length)return;const r=n().filter(t,(t=>t.startsWith(e)));s=n().reduce(r,((e,t)=>{const n=y.getValue(t);return n&&(e[t]=n),e}),{})}if(t.selector){const n=t.withOnyxInstance?t.withOnyxInstance.state:void 0;return Q(e)?X(s,t.selector,n):z(s,t.selector,n)}return s},hasPendingMergeForKey:pe},Ie=Pe;var Me=c(697),Te=c.n(Me),Ke=c(156),Ce=c.n(Ke);function je(){return je=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(e[s]=n[s])}return e},je.apply(this,arguments)}const Ne=["initialValue","allowStaleData"],Re=(e,t)=>n().pick(e,n().keys(t));function Ae(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const s=n().chain(e).omit((e=>!1===e.initWithStoredValues)).keys().value();return r=>{const i=(o=r).displayName||o.name||"Component";var o;class a extends Ce().Component{constructor(r){var i,o,a;super(r),i=this,a=[],(o=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(o="pendingSetStates"))in i?Object.defineProperty(i,o,{value:a,enumerable:!0,configurable:!0,writable:!0}):i[o]=a,this.shouldDelayUpdates=t,this.setWithOnyxState=this.setWithOnyxState.bind(this),this.flushPendingSetStates=this.flushPendingSetStates.bind(this),this.activeConnectionIDs={};const c=n().reduce(e,((e,t,n)=>{const s=f(t.key,r);let i=Ie.tryGetCachedValue(s,t);return!i&&t.initialValue&&(i=t.initialValue),(void 0!==i&&!Ie.hasPendingMergeForKey(s)||t.allowStaleData)&&(e[n]=i),e}),{});c.loading=n().size(c)<s.length,this.tempState=c,this.state=c}componentDidMount(){const t=Re(this.state,e);n().each(e,((e,s)=>{if(n().includes(Ne,s))return;const r=f(e.key,{...this.props,...t});this.connectMappingToOnyx(e,s,r)})),this.checkEvictableKeys()}componentDidUpdate(t,s){const r=s.loading&&!this.state.loading,i=Re(this.state,e),o=Re(s,e);n().each(e,((e,s)=>{if(n().includes(Ne,s))return;const a=r?e.previousKey:f(e.key,{...t,...o}),c=f(e.key,{...this.props,...i});a!==c&&(Ie.disconnect(this.activeConnectionIDs[a],a),delete this.activeConnectionIDs[a],this.connectMappingToOnyx(e,s,c))})),this.checkEvictableKeys()}componentWillUnmount(){n().each(e,(t=>{const n=f(t.key,{...this.props,...Re(this.state,e)});Ie.disconnect(this.activeConnectionIDs[n],n)}))}setStateProxy(e){this.shouldDelayUpdates?this.pendingSetStates.push(e):this.setState(e)}setWithOnyxState(t,r){const i=this.state[t];if(!this.state.loading||!this.tempState){if(i===r||u.areObjectsEmpty(i,r))return;return void this.setStateProxy({[t]:r})}if(this.tempState[t]=r,n().some(s,(e=>n().isUndefined(this.tempState[e]))))return;const o={...this.tempState};delete this.tempState,this.setState((t=>{const s=n().reduce(o,((s,r,i)=>{if("loading"===i)return s;const o=e[i].initialValue;return(n().isUndefined(o)||n().isUndefined(t[i])||t[i]===o)&&n().isUndefined(t[i])?s[i]=r:s[i]=t[i],s}),{});return s.loading=!1,s}))}checkEvictableKeys(){n().each(e,(e=>{if(n().isUndefined(e.canEvict))return;const t=f(e.canEvict,this.props),s=f(e.key,this.props);if(!Ie.isSafeEvictionKey(s))throw new Error(`canEvict can't be used on key '${s}'. This key must explicitly be flagged as safe for removal by adding it to Onyx.init({safeEvictionKeys: []}).`);t?Ie.removeFromEvictionBlockList(s,e.connectionID):Ie.addToEvictionBlockList(s,e.connectionID)}))}connectMappingToOnyx(t,n,s){e[n].previousKey=s,this.activeConnectionIDs[s]=Ie.connect({...t,key:s,statePropertyName:n,withOnyxInstance:this,displayName:i})}flushPendingSetStates(){this.shouldDelayUpdates&&(this.shouldDelayUpdates=!1,this.pendingSetStates.forEach((e=>{this.setState(e)})),this.pendingSetStates=[])}render(){const e=n().omit(this.props,n().isNull);if(this.state.loading)return null;let t=n().omit(this.state,"loading");return t=n().omit(t,n().isNull),Ce().createElement(r,je({markReadyForHydration:this.flushPendingSetStates},e,t,{ref:this.props.forwardedRef}))}}return a.propTypes={forwardedRef:Te().oneOfType([Te().func,Te().shape({current:Te().object})])},a.defaultProps={forwardedRef:void 0},a.displayName=`withOnyx(${i})`,Ce().forwardRef(((e,t)=>{const n=a;return Ce().createElement(n,je({},e,{forwardedRef:t}))}))}}const De=Ie})(),l})()));
|
|
2
2
|
//# sourceMappingURL=web.min.js.map
|