react-native-onyx 1.0.77 → 1.0.78
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/dist/web.development.js +146 -44
- 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.js +107 -36
- package/lib/batch.js +3 -0
- package/lib/batch.native.js +3 -0
- package/package.json +3 -1
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("idb-keyval"),require("lodash/transform"),require("react")):"function"==typeof define&&define.amd?define(["fast-equals","underscore","idb-keyval","lodash/transform","react"],t):"object"==typeof exports?exports["react-native-onyx/web"]=t(require("fast-equals"),require("underscore"),require("idb-keyval"),require("lodash/transform"),require("react")):e["react-native-onyx/web"]=t(e["fast-equals"],e.underscore,e["idb-keyval"],e["lodash/transform"],e.react)}(self,((e,t,n,s,r)=>(()=>{var o={378:(e,t,n)=>{"use strict";function s(e){return e}function r(){}function o(){}function i(){}n.r(t),n.d(t,{decorateWithMetrics:()=>s,getMetrics:()=>r,printMetrics:()=>o,resetMetrics:()=>i})},703:(e,t,n)=>{"use strict";var s=n(414);function r(){}function o(){}o.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,o,i){if(i!==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:o,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=n},407:e=>{"use strict";e.exports=s},156:e=>{"use strict";e.exports=r},952:e=>{"use strict";e.exports=t}},i={};function a(e){var t=i[e];if(void 0!==t)return t.exports;var n=i[e]={exports:{}};return o[e](n,n.exports,a),n.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var c={};return(()=>{"use strict";a.r(c),a.d(c,{default:()=>xe,withOnyx:()=>we});var e=a(746),t=a(952),n=a.n(t);let s=()=>{};function r(e){s({message:`[Onyx] ${e}`,level:"alert"})}function o(e){s({message:`[Onyx] ${e}`,level:"info"})}function i(e){return null!=e&&"object"==typeof e&&"[object RegExp]"!==Object.prototype.toString.call(e)&&"[object Date]"!==Object.prototype.toString.call(e)}const l=function e(t,n){return Array.isArray(n)?n:function(t,n){const s={};if(i(t)){const e=Object.keys(t);for(let n=0;n<e.length;++n){const r=e[n];s[r]=t[r]}}const r=Object.keys(n);for(let o=0;o<r.length;++o){const a=r[o];void 0!==n[a]&&(i(n[a])&&t[a]?s[a]=e(t[a],n[a]):s[a]=n[a])}return s}(t,n)},u=n().negate(n().isUndefined),y=new class{constructor(){this.storageKeys=new Set,this.recentKeys=new Set,this.storageMap={},this.pendingPromises={},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 u(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({},l(this.storageMap,e));const t=this.getAllKeys(),s=n().keys(e);this.storageKeys=new Set([...t,...s]),n().each(s,(e=>this.addToAccessedKeys(e)))}hasPendingTask(e){return u(this.pendingPromises[e])}getTaskPromise(e){return this.pendingPromises[e]}captureTask(e,t){return this.pendingPromises[e]=t.finally((()=>{delete this.pendingPromises[e]})),this.pendingPromises[e]}addToAccessedKeys(e){this.recentKeys.delete(e),this.recentKeys.add(e)}removeLeastRecentlyUsedKeys(){if(this.recentKeys.size<=this.maxRecentKeysSize)return;const e=[...this.recentKeys].slice(-this.maxRecentKeysSize),t=n().keys(this.storageMap),s=n().difference(t,e);n().each(s,this.drop)}setRecentKeysLimit(e){this.maxRecentKeysSize=e}hasValueChanged(t,n){return!(0,e.deepEqual)(this.storageMap[t],n)}};function h(e,t){return n().isString(e)&&n().isString(t)&&e.startsWith(t)}function d(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 f=a(407),p=a.n(f);let m=!1;function g(e){m=e}function v(e,t,s,r,o){if(!m)return;const i={};o&&(i.keyThatChanged=o),n().isObject(s)&&n().isObject(t)?i.difference=function e(t,s){return p()(t,((t,r,o)=>{n().isEqual(r,s[o])||(t[o]=n().isObject(r)&&n().isObject(s[o])?e(r,s[o]):r)}))}(t,s):(i.previousValue=t,i.newValue=s),console.debug(`[Onyx-Debug] ${e.displayName} setState() called. Subscribed to key '${e.key}' (${r})`,i)}var k=a(802);let b;const O=()=>(b||(b=(0,k.createStore)("OnyxDB","keyvaluepairs")),b),w={setItem:(e,t)=>(0,k.set)(e,t,O()),multiGet:e=>(0,k.getMany)(e,O()).then((t=>n().map(t,((t,n)=>[e[n],t])))),multiMerge:e=>O()("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,r)=>{let[o,i]=e;const a=s[r],c=n().isObject(a)?l(a,i):i;return(0,k.promisifyRequest)(t.put(c,o))}));return Promise.all(r)})))),mergeItem:(e,t,n)=>w.multiMerge([[e,n]]),multiSet:e=>(0,k.setMany)(e,O()),clear:()=>(0,k.clear)(O()),setMemoryOnlyKeys:()=>{},getAllKeys:()=>(0,k.keys)(O()),getItem:e=>(0,k.get)(e,O()),removeItem:e=>(0,k.del)(e,O()),removeItems:e=>(0,k.delMany)(e,O()),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,S="SYNC_ONYX";function I(e){a.g.localStorage.setItem(S,e),a.g.localStorage.removeItem(S,e)}const E={...x,keepInstancesSync(e){this.setItem=(e,t)=>x.setItem(e,t).then((()=>I(e))),this.removeItem=e=>x.removeItem(e).then((()=>I(e))),this.removeItems=e=>x.removeItems(e).then((()=>{return t=e,void n().each(t,(e=>{I(e)}));var t})),this.clear=()=>{let e;return x.getAllKeys().then((t=>{e=t})).then((()=>x.clear())).then((()=>{n().each(e,I)}))},a.g.addEventListener("storage",(t=>{if(t.key!==S||!t.newValue)return;const n=t.newValue;x.getItem(n).then((t=>e(n,t)))}))}},P={SET:"set",MERGE:"merge",MERGE_COLLECTION:"mergecollection",MULTI_SET:"multiset",CLEAR:"clear"},M={};let K=0;const T={};let C=new Map,j=[],A=[];const R={};let N={};const L=function(){const e={};return e.promise=new Promise((t=>{e.resolve=t})),e}(),$=(e,t,n)=>t(e,n),q=(e,t,s)=>n().reduce(e,((e,n,r)=>(e[r]=$(n,t,s),e)),{});function W(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=E.getItem(e).then((t=>(y.set(e,t),t))).catch((t=>o(`Unable to get item from persistent storage. Key: ${e} Error: ${t}`)));return y.captureTask(t,n)}function F(){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=E.getAllKeys().then((e=>(n().each(e,(e=>y.addKey(e))),e)));return y.captureTask(t,s)}function D(e){return C.has(e)}function U(e,t){return h(t,e)&&t.length>e.length}function _(e,t){return D(e)?h(t,e):e===t}function V(e){return n().some(A,(t=>_(t,e)))}function B(e){j=n().without(j,e)}function G(e){!D(e)&&V(e)&&(B(e),j.push(e))}function z(e,t){R[e]=n().without(R[e]||[],t),0===R[e].length&&delete R[e]}function Y(e){const t=n().filter(y.getAllKeys(),(t=>U(e,t)));return n().reduce(t,((e,t)=>{const n=y.getValue(t);return n?(e[t]=n,e):e}),{})}function H(t,s){const r=n().keys(T);for(let o=0;o<r.length;o++){const i=T[r[o]];if(!i)continue;if(!h(i.key,t))continue;const a=i.key===t,c=U(t,i.key),l=Y(t);if(n().isFunction(i.callback)){if(a){if(i.waitForCollectionCallback){i.callback(l);continue}const e=n().keys(s);for(let t=0;t<e.length;t++){const n=e[t];i.callback(l[n],n)}continue}if(c){i.callback(l[i.key],i.key);continue}}else if(i.withOnyxInstance){if(a){if(i.selector){i.withOnyxInstance.setState((t=>{const n=t[i.statePropertyName],s=q(l,i.selector,i.withOnyxInstance.state);return(0,e.deepEqual)(n,s)?null:{[i.statePropertyName]:s}}));continue}i.withOnyxInstance.setState((e=>{const r=n().clone(e[i.statePropertyName]||{}),o=n().keys(s);for(let e=0;e<o.length;e++){const t=o[e];r[t]=l[t]}return v(i,e[i.statePropertyName],r,"keysChanged",t),{[i.statePropertyName]:r}}));continue}if(c){const r=s[i.key];if(n().isUndefined(r))continue;if(i.selector){i.withOnyxInstance.setState((n=>{const s=n[i.statePropertyName],r=$(l[i.key],i.selector,i.withOnyxInstance.state);return(0,e.deepEqual)(s,r)?null:(v(i,s,r,"keysChanged",t),{[i.statePropertyName]:r})}));continue}i.withOnyxInstance.setState((e=>{const n=l[i.key],s=e[i.statePropertyName];return n===s?null:(v(i,s,n,"keysChanged",t),{[i.statePropertyName]:n})}))}}}}function Q(t,s,r){n().isNull(s)?B(t):G(t);const o=n().keys(T);for(let i=0;i<o.length;i++){const a=T[o[i]];if(a&&_(a.key,t)&&(!n().isFunction(r)||r(a)))if(n().isFunction(a.callback)){if(D(a.key)&&a.waitForCollectionCallback){const e=Y(a.key);e[t]=s,a.callback(e);continue}a.callback(s,t)}else if(a.withOnyxInstance){if(D(a.key)){if(a.selector){a.withOnyxInstance.setState((n=>{const r=n[a.statePropertyName],o={[t]:$(s,a.selector,a.withOnyxInstance.state)},i={...r,...o};return(0,e.deepEqual)(r,i)?null:(v(a,r,o,"keyChanged",t),{[a.statePropertyName]:i})}));continue}a.withOnyxInstance.setState((e=>{const n=e[a.statePropertyName]||{},r={...n,[t]:s};return v(a,n,r,"keyChanged",t),{[a.statePropertyName]:r}}));continue}if(a.selector){a.withOnyxInstance.setState((t=>{const n=$(t[a.statePropertyName],a.selector,a.withOnyxInstance.state),r=$(s,a.selector,a.withOnyxInstance.state);return(0,e.deepEqual)(n,r)?null:{[a.statePropertyName]:r}}));continue}a.withOnyxInstance.setState((e=>{const n=e[a.statePropertyName];return n===s?null:(v(a,n,s,"keyChanged",t),{[a.statePropertyName]:s})}))}else console.error("Warning: Found a matching subscriber to a key that changed, but no callback or withOnyxInstance could be found.")}}function X(e,t,s){if(T[e.connectionID]){if(e.withOnyxInstance){let n=t;return e.selector&&(n=D(e.key)?q(t,e.selector,e.withOnyxInstance.state):$(t,e.selector,e.withOnyxInstance.state)),v(e,null,n,"sendDataToConnection"),void e.withOnyxInstance.setWithOnyxState(e.statePropertyName,n)}n().isFunction(e.callback)&&e.callback(t,s)}}function J(e,t){Promise.all(n().map(e,(e=>W(e)))).then((t=>n().reduce(t,((t,n,s)=>(t[e[s]]=n,t)),{}))).then((e=>X(t,e)))}function Z(e,t,n){Promise.resolve().then((()=>Q(e,t,n)))}function ee(e){return y.drop(e),Z(e,null),E.removeItem(e)}function te(){return E.getDatabaseSize().then((e=>{let{bytesUsed:t,bytesRemaining:n}=e;o(`Storage Quota Check -- bytesUsed: ${t} bytesRemaining: ${n}`)})).catch((e=>{r(`Unable to get database size. Error: ${e}`)}))}function ne(e,t){for(var s=arguments.length,i=new Array(s>2?s-2:0),a=2;a<s;a++)i[a-2]=arguments[a];if(o(`Failed to save to storage. Error: ${e}. onyxMethod: ${t.name}`),e&&h(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(j,(e=>!R[e]));return c?(o(`Out of storage. Evicting least recently accessed key (${c}) and retrying.`),te(),ee(c).then((()=>t(...i)))):(r("Out of storage. But found no acceptable keys to remove."),te())}function se(e,t,s,r){o(`${r}() called for key: ${e}${n().isObject(t)?` properties: ${n().keys(t).join(",")}`:""}`),s?y.set(e,t):y.addToAccessedKeys(e),Z(e,t,(e=>s||!1===e.initWithStoredValues))}function re(e){return Boolean(M[e])}function oe(e){return n().isArray(e)||!n().isObject(e)?e:n().omit(e,(e=>n().isNull(e)))}function ie(e,t){if(n().isNull(t))return ee(e);re(e)&&r(`Onyx.set() called after Onyx.merge() for key: ${e}. It is recommended to use set() or merge() not both.`);const s=oe(t),o=y.hasValueChanged(e,s);return se(e,s,o,"set"),o?E.setItem(e,s).catch((t=>ne(t,ie,e,s))):Promise.resolve()}function ae(e){return n().map(e,((e,t)=>[t,e]))}function ce(e){const t=ae(e);return n().each(e,((e,t)=>{y.set(t,e),Z(t,e)})),E.multiSet(t).catch((t=>ne(t,ce,e)))}function le(e,t){const s=n().last(t);return n().isArray(e)||n().isArray(s)?s:n().isObject(e)||n().every(t,n().isObject)?n().reduce(t,((e,t)=>l(e,t)),e||{}):s}function ue(e,t){return M[e]?(M[e].push(t),Promise.resolve()):(M[e]=[t],W(e).then((t=>{try{let n=le(void 0,M[e]);delete M[e];const s=oe(le(t,[n]));t||(n=oe(n));const r=y.hasValueChanged(e,s);return se(e,s,r,"merge"),r?E.mergeItem(e,n,s):Promise.resolve()}catch(t){r(`An error occurred while applying merge for key: ${e}, Error: ${t}`)}return Promise.resolve()})))}function ye(){return E.multiGet(n().keys(N)).then((e=>{const t=n().object(e),s=l(t,N);y.merge(s),n().each(s,((e,t)=>Q(t,e)))}))}function he(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return F().then((t=>{const s=[],r={},o={};n().each(t,(t=>{const i=n().contains(e,t),a=n().has(N,t);if(!i){const e=y.getValue(t),s=n().get(N,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):o[t]=s}}i||a||s.push(t)})),n().each(o,((e,t)=>{Z(t,e)})),n().each(r,((e,t)=>{!function(e,t){Promise.resolve().then((()=>H(e,t)))}(t,e)}));const i=n().pairs(n().omit(N,e));return n().each(s,(e=>y.drop(e))),E.removeItems(s).then((()=>E.multiSet(i)))}))}function de(e,t){if(!n().isObject(t)||n().isArray(t)||n().isEmpty(t))return o("mergeCollection() called with invalid or empty value. Skipping this update."),Promise.resolve();let s=!1;return n().each(t,((t,n)=>{_(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():F().then((s=>{const[r,o]=n().chain(t).keys().partition((e=>s.includes(e))).value(),i=n().pick(t,r),a=n().pick(t,o),c=ae(i),l=ae(a),u=[];return c.length>0&&u.push(E.multiMerge(c)),l.length>0&&u.push(E.multiSet(l)),Promise.all(n().map(r,W)).then((()=>{y.merge(t),H(e,t)})),Promise.all(u).catch((e=>ne(e,de,t)))}))}function fe(e){n().each(e,(e=>{let{onyxMethod:t,key:s,value:r}=e;if(!n().contains([P.CLEAR,P.SET,P.MERGE,P.MERGE_COLLECTION,P.MULTI_SET],t))throw new Error(`Invalid onyxMethod ${t} in Onyx update.`);if(t===P.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!==P.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:o}=e;switch(n){case P.SET:t.push((()=>ie(r,o)));break;case P.MERGE:t.push((()=>ue(r,o)));break;case P.MERGE_COLLECTION:t.push((()=>de(r,o)));break;case P.MULTI_SET:t.push((()=>ce(o)));break;case P.CLEAR:s=he()}})),s.then((()=>Promise.all(n().map(t,(e=>e())))))}const pe={connect:function(e){const t=K++;return T[t]=e,T[t].connectionID=t,!1===e.initWithStoredValues||L.promise.then((()=>function(e){if(V(e.key)&&(y.removeLeastRecentlyUsedKeys(),e.withOnyxInstance&&!D(e.key))){if(n().isUndefined(e.canEvict))throw new Error(`Cannot subscribe to safe eviction key '${e.key}' without providing a canEvict value.`);G(e.key)}}(e))).then(F).then((t=>{const s=n().filter(t,(t=>_(e.key,t)));if(0!==s.length)if(n().isFunction(e.callback)){if(D(e.key)){if(e.waitForCollectionCallback)return void J(s,e);for(let t=0;t<s.length;t++)W(s[t]).then((n=>X(e,n,s[t])));return}W(e.key).then((t=>X(e,t,e.key)))}else{if(e.withOnyxInstance)return D(e.key)?void J(s,e):void W(e.key).then((t=>X(e,t,e.key)));console.error("Warning: Onyx.connect() was found without a callback or withOnyxInstance")}else X(e,null)})),t},disconnect:function(e,t){T[e]&&(t&&z(t,e),delete T[e])},set:ie,multiSet:ce,merge:ue,mergeCollection:de,update:fe,clear:he,getAllKeys:F,init:function(){let{keys:e={},initialKeyStates:t={},safeEvictionKeys:s=[],maxCachedKeysCount:r=1e3,captureMetrics:o=!1,shouldSyncMultipleInstances:i=Boolean(a.g.localStorage),debugSetState:c=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o&&function(){const e=a(378);W=e.decorateWithMetrics(W,"Onyx:get"),ie=e.decorateWithMetrics(ie,"Onyx:set"),ce=e.decorateWithMetrics(ce,"Onyx:multiSet"),he=e.decorateWithMetrics(he,"Onyx:clear"),ue=e.decorateWithMetrics(ue,"Onyx:merge"),de=e.decorateWithMetrics(de,"Onyx:mergeCollection"),F=e.decorateWithMetrics(F,"Onyx:getAllKeys"),ye=e.decorateWithMetrics(ye,"Onyx:defaults"),fe=e.decorateWithMetrics(fe,"Onyx:update"),pe.set=ie,pe.multiSet=ce,pe.clear=he,pe.merge=ue,pe.mergeCollection=de,pe.update=fe,pe.getMetrics=e.getMetrics,pe.resetMetrics=e.resetMetrics,pe.printMetrics=e.printMetrics}(),c&&g(!0),r>0&&y.setRecentKeysLimit(r);const l=n().values(e.COLLECTION);C=n().reduce(l,((e,t)=>(e.set(t,!0),e)),new Map),N=t,A=s,Promise.all([F().then((e=>{n().each(A,(t=>{n().each(e,(e=>{_(t,e)&&G(e)}))}))})),ye()]).then(L.resolve),i&&n().isFunction(E.keepInstancesSync)&&E.keepInstancesSync(((e,t)=>{y.set(e,t),Q(e,t)}))},registerLogger:function(e){s=e},addToEvictionBlockList:function(e,t){z(e,t),R[e]||(R[e]=[]),R[e].push(t)},removeFromEvictionBlockList:z,isSafeEvictionKey:V,METHOD:P,setMemoryOnlyKeys:function(e){E.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(D(e)){const t=y.getAllKeys(),r=n().filter(t,(t=>t.startsWith(e))),o=n().reduce(r,((e,t)=>{const n=y.getValue(t);return n&&(e[t]=n),e}),{});if(n().isEmpty(o))return;s=o}if(t.selector){const n=t.withOnyxInstance?t.withOnyxInstance.state:void 0;return D(e)?q(s,t.selector,n):$(s,t.selector,n)}return s},hasPendingMergeForKey:re},me=pe;var ge=a(697),ve=a.n(ge),ke=a(156),be=a.n(ke);function Oe(){return Oe=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},Oe.apply(this,arguments)}function we(e){const t=n().chain(e).omit((e=>!1===e.initWithStoredValues)).keys().value();return s=>{const r=(o=s).displayName||o.name||"Component";var o;class i extends be().Component{constructor(s){super(s),this.setWithOnyxState=this.setWithOnyxState.bind(this),this.activeConnectionIDs={};const r=n().reduce(e,((e,t,n)=>{const r=d(t.key,s),o=me.tryGetCachedValue(r,t);return void 0===o||me.hasPendingMergeForKey(r)||(e[n]=o),e}),{});r.loading=n().size(r)<t.length,this.tempState=r,this.state=r}componentDidMount(){n().each(e,((e,t)=>{this.connectMappingToOnyx(e,t)})),this.checkEvictableKeys()}componentDidUpdate(t){n().each(e,((e,n)=>{const s=d(e.key,t);s!==d(e.key,this.props)&&(me.disconnect(this.activeConnectionIDs[s],s),delete this.activeConnectionIDs[s],this.connectMappingToOnyx(e,n))})),this.checkEvictableKeys()}componentWillUnmount(){n().each(e,(e=>{const t=d(e.key,this.props),n=this.activeConnectionIDs[t];me.disconnect(n,t)}))}setWithOnyxState(e,s){const r=this.state[e];(this.state.loading||r!==s)&&(this.state.loading?(this.tempState[e]=s,n().some(t,(e=>n().isUndefined(this.tempState[e])))||(this.setState((e=>({...n().omit(this.tempState,n().keys(e)),loading:!1}))),delete this.tempState)):this.setState({[e]:s}))}checkEvictableKeys(){n().each(e,(e=>{if(n().isUndefined(e.canEvict))return;const t=d(e.canEvict,this.props),s=d(e.key,this.props);if(!me.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?me.removeFromEvictionBlockList(s,e.connectionID):me.addToEvictionBlockList(s,e.connectionID)}))}connectMappingToOnyx(e,t){const n=d(e.key,this.props);this.activeConnectionIDs[n]=me.connect({...e,key:n,statePropertyName:t,withOnyxInstance:this,displayName:r})}render(){if(this.state.loading)return null;let e=n().omit(this.state,"loading");e=n().omit(e,(e=>n().isNull(e)));const t=n().omit(this.props,(e=>n().isNull(e)));return be().createElement(s,Oe({},t,e,{ref:this.props.forwardedRef}))}}return i.propTypes={forwardedRef:ve().oneOfType([ve().func,ve().shape({current:ve().object})])},i.defaultProps={forwardedRef:void 0},i.displayName=`withOnyx(${r})`,be().forwardRef(((e,t)=>{const n=i;return be().createElement(n,Oe({},e,{forwardedRef:t}))}))}}const xe=me})(),c})()));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("fast-equals"),require("underscore"),require("idb-keyval"),require("lodash/transform"),require("react-dom"),require("react")):"function"==typeof define&&define.amd?define(["fast-equals","underscore","idb-keyval","lodash/transform","react-dom","react"],t):"object"==typeof exports?exports["react-native-onyx/web"]=t(require("fast-equals"),require("underscore"),require("idb-keyval"),require("lodash/transform"),require("react-dom"),require("react")):e["react-native-onyx/web"]=t(e["fast-equals"],e.underscore,e["idb-keyval"],e["lodash/transform"],e["react-dom"],e.react)}(self,((e,t,n,r,s,o)=>(()=>{var i={378:(e,t,n)=>{"use strict";function r(e){return e}function s(){}function o(){}function i(){}n.r(t),n.d(t,{decorateWithMetrics:()=>r,getMetrics:()=>s,printMetrics:()=>o,resetMetrics:()=>i})},703:(e,t,n)=>{"use strict";var r=n(414);function s(){}function o(){}o.resetWarningCache=s,e.exports=function(){function e(e,t,n,s,o,i){if(i!==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:o,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=n},407:e=>{"use strict";e.exports=r},156:e=>{"use strict";e.exports=o},111:e=>{"use strict";e.exports=s},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 i[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:()=>Te,withOnyx:()=>Ke});var e=c(746),t=c(952),n=c.n(t);let r=()=>{};function s(e){r({message:`[Onyx] ${e}`,level:"alert"})}function o(e){r({message:`[Onyx] ${e}`,level:"info"})}function i(e){return null!=e&&"object"==typeof e&&"[object RegExp]"!==Object.prototype.toString.call(e)&&"[object Date]"!==Object.prototype.toString.call(e)}const a=function e(t,n){return Array.isArray(n)?n:function(t,n){const r={};if(i(t)){const e=Object.keys(t);for(let n=0;n<e.length;++n){const s=e[n];r[s]=t[s]}}const s=Object.keys(n);for(let o=0;o<s.length;++o){const a=s[o];void 0!==n[a]&&(i(n[a])&&t[a]?r[a]=e(t[a],n[a]):r[a]=n[a])}return r}(t,n)},u=n().negate(n().isUndefined),y=new class{constructor(){this.storageKeys=new Set,this.recentKeys=new Set,this.storageMap={},this.pendingPromises={},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 u(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({},a(this.storageMap,e));const t=this.getAllKeys(),r=n().keys(e);this.storageKeys=new Set([...t,...r]),n().each(r,(e=>this.addToAccessedKeys(e)))}hasPendingTask(e){return u(this.pendingPromises[e])}getTaskPromise(e){return this.pendingPromises[e]}captureTask(e,t){return this.pendingPromises[e]=t.finally((()=>{delete this.pendingPromises[e]})),this.pendingPromises[e]}addToAccessedKeys(e){this.recentKeys.delete(e),this.recentKeys.add(e)}removeLeastRecentlyUsedKeys(){if(this.recentKeys.size<=this.maxRecentKeysSize)return;const e=[...this.recentKeys].slice(-this.maxRecentKeysSize),t=n().keys(this.storageMap),r=n().difference(t,e);n().each(r,this.drop)}setRecentKeysLimit(e){this.maxRecentKeysSize=e}hasValueChanged(t,n){return!(0,e.deepEqual)(this.storageMap[t],n)}};function h(e,t){return n().isString(e)&&n().isString(t)&&e.startsWith(t)}function d(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 f=c(407),p=c.n(f);let m=!1;function g(e){m=e}function v(e,t,r,s,o){if(!m)return;const i={};o&&(i.keyThatChanged=o),n().isObject(r)&&n().isObject(t)?i.difference=function e(t,r){return p()(t,((t,s,o)=>{n().isEqual(s,r[o])||(t[o]=n().isObject(s)&&n().isObject(r[o])?e(s,r[o]):s)}))}(t,r):(i.previousValue=t,i.newValue=r),console.debug(`[Onyx-Debug] ${e.displayName} setState() called. Subscribed to key '${e.key}' (${s})`,i)}var k=c(802);let b;const O=()=>(b||(b=(0,k.createStore)("OnyxDB","keyvaluepairs")),b),w={setItem:(e,t)=>(0,k.set)(e,t,O()),multiGet:e=>(0,k.getMany)(e,O()).then((t=>n().map(t,((t,n)=>[e[n],t])))),multiMerge:e=>O()("readwrite",(t=>Promise.all(n().map(e,(e=>{let[n]=e;return(0,k.promisifyRequest)(t.get(n))}))).then((r=>{const s=n().map(e,((e,s)=>{let[o,i]=e;const c=r[s],l=n().isObject(c)?a(c,i):i;return(0,k.promisifyRequest)(t.put(l,o))}));return Promise.all(s)})))),mergeItem:(e,t,n)=>w.multiMerge([[e,n]]),multiSet:e=>(0,k.setMany)(e,O()),clear:()=>(0,k.clear)(O()),setMemoryOnlyKeys:()=>{},getAllKeys:()=>(0,k.keys)(O()),getItem:e=>(0,k.get)(e,O()),removeItem:e=>(0,k.del)(e,O()),removeItems:e=>(0,k.delMany)(e,O()),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,S="SYNC_ONYX";function I(e){c.g.localStorage.setItem(S,e),c.g.localStorage.removeItem(S,e)}const E={...x,keepInstancesSync(e){this.setItem=(e,t)=>x.setItem(e,t).then((()=>I(e))),this.removeItem=e=>x.removeItem(e).then((()=>I(e))),this.removeItems=e=>x.removeItems(e).then((()=>{return t=e,void n().each(t,(e=>{I(e)}));var t})),this.clear=()=>{let e;return x.getAllKeys().then((t=>{e=t})).then((()=>x.clear())).then((()=>{n().each(e,I)}))},c.g.addEventListener("storage",(t=>{if(t.key!==S||!t.newValue)return;const n=t.newValue;x.getItem(n).then((t=>e(n,t)))}))}},P=c(111).unstable_batchedUpdates,M={SET:"set",MERGE:"merge",MERGE_COLLECTION:"mergecollection",MULTI_SET:"multiset",CLEAR:"clear"},K={},T={};let C=0;const j={};let A=new Map,R=[],N=[];const L={};let $={};const q=function(){const e={};return e.promise=new Promise((t=>{e.resolve=t})),e}(),W=(e,t,n)=>t(e,n),F=(e,t,r)=>n().reduce(e,((e,n,s)=>(e[s]=W(n,t,r),e)),{});function U(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=E.getItem(e).then((t=>(y.set(e,t),t))).catch((t=>o(`Unable to get item from persistent storage. Key: ${e} Error: ${t}`)));return y.captureTask(t,n)}function _(){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=E.getAllKeys().then((e=>(n().each(e,(e=>y.addKey(e))),e)));return y.captureTask(t,r)}function D(e){return A.has(e)}function V(e,t){return h(t,e)&&t.length>e.length}function B(e,t){return D(e)?h(t,e):e===t}function G(e){return n().some(N,(t=>B(t,e)))}function z(e){R=n().without(R,e)}function Y(e){!D(e)&&G(e)&&(z(e),R.push(e))}function H(e,t){L[e]=n().without(L[e]||[],t),0===L[e].length&&delete L[e]}function Q(e){const t=n().filter(y.getAllKeys(),(t=>V(e,t)));return n().reduce(t,((e,t)=>{const n=y.getValue(t);return n?(e[t]=n,e):e}),{})}function X(t,r){let s=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];const i=n().keys(j);for(let a=0;a<i.length;a++){const c=j[i[a]];if(!c)continue;if(!h(c.key,t))continue;const l=c.key===t,u=V(t,c.key),y=Q(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(u){c.callback(y[c.key],c.key);continue}}else if(c.withOnyxInstance){if(!o)continue;if(l){if(c.selector){c.withOnyxInstance.setState((t=>{const n=t[c.statePropertyName],r=F(y,c.selector,c.withOnyxInstance.state);return(0,e.deepEqual)(n,r)?null:{[c.statePropertyName]:r}}));continue}c.withOnyxInstance.setState((e=>{const s=n().clone(e[c.statePropertyName]||{}),o=n().keys(r);for(let e=0;e<o.length;e++){const t=o[e];s[t]=y[t]}return v(c,e[c.statePropertyName],s,"keysChanged",t),{[c.statePropertyName]:s}}));continue}if(u){const s=r[c.key];if(n().isUndefined(s))continue;if(c.selector){c.withOnyxInstance.setState((n=>{const r=n[c.statePropertyName],s=W(y[c.key],c.selector,c.withOnyxInstance.state);return(0,e.deepEqual)(r,s)?null:(v(c,r,s,"keysChanged",t),{[c.statePropertyName]:s})}));continue}c.withOnyxInstance.setState((e=>{const n=y[c.key],r=e[c.statePropertyName];return n===r?null:(v(c,r,n,"keysChanged",t),{[c.statePropertyName]:n})}))}}}}function J(t,r,s){let o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],i=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];n().isNull(r)?z(t):Y(t);const a=n().keys(j);for(let c=0;c<a.length;c++){const l=j[a[c]];if(l&&B(l.key,t)&&(!n().isFunction(s)||s(l)))if(n().isFunction(l.callback)){if(!o)continue;if(D(l.key)&&l.waitForCollectionCallback){const e=Q(l.key);e[t]=r,l.callback(e);continue}l.callback(r,t)}else if(l.withOnyxInstance){if(!i)continue;if(D(l.key)){if(l.selector){l.withOnyxInstance.setState((n=>{const s=n[l.statePropertyName],o={[t]:W(r,l.selector,l.withOnyxInstance.state)},i={...s,...o};return(0,e.deepEqual)(s,i)?null:(v(l,s,o,"keyChanged",t),{[l.statePropertyName]:i})}));continue}l.withOnyxInstance.setState((e=>{const n=e[l.statePropertyName]||{},s={...n,[t]:r};return v(l,n,s,"keyChanged",t),{[l.statePropertyName]:s}}));continue}if(l.selector){l.withOnyxInstance.setState((t=>{const n=W(t[l.statePropertyName],l.selector,l.withOnyxInstance.state),s=W(r,l.selector,l.withOnyxInstance.state);return(0,e.deepEqual)(n,s)?null:{[l.statePropertyName]:s}}));continue}l.withOnyxInstance.setState((e=>{const n=e[l.statePropertyName];return n===r?null:(v(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 Z(e,t,r){if(j[e.connectionID]){if(e.withOnyxInstance){let n=t;return e.selector&&(n=D(e.key)?F(t,e.selector,e.withOnyxInstance.state):W(t,e.selector,e.withOnyxInstance.state)),v(e,null,n,"sendDataToConnection"),void e.withOnyxInstance.setWithOnyxState(e.statePropertyName,n)}n().isFunction(e.callback)&&e.callback(t,r)}}function ee(e,t){Promise.all(n().map(e,(e=>U(e)))).then((t=>n().reduce(t,((t,n,r)=>(t[e[r]]=n,t)),{}))).then((e=>Z(t,e)))}let te=null,ne=[];function re(){return te||(te=new Promise((e=>{setTimeout((()=>{const t=ne;ne=[],te=null,P((()=>{t.forEach((e=>{e()}))})),e()}),0)})),te)}function se(e){return ne.push(e),re()}function oe(e,t,n){const r=Promise.resolve().then((()=>J(e,t,n,!0,!1)));return se((()=>J(e,t,n,!1,!0))),Promise.all([re(),r])}function ie(e,t){const n=Promise.resolve().then((()=>X(e,t,!0,!1)));return se((()=>X(e,t,!1,!0))),Promise.all([re(),n])}function ae(e){return y.drop(e),oe(e,null),E.removeItem(e)}function ce(){return E.getDatabaseSize().then((e=>{let{bytesUsed:t,bytesRemaining:n}=e;o(`Storage Quota Check -- bytesUsed: ${t} bytesRemaining: ${n}`)})).catch((e=>{s(`Unable to get database size. Error: ${e}`)}))}function le(e,t){for(var r=arguments.length,i=new Array(r>2?r-2:0),a=2;a<r;a++)i[a-2]=arguments[a];if(o(`Failed to save to storage. Error: ${e}. onyxMethod: ${t.name}`),e&&h(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(R,(e=>!L[e]));return c?(o(`Out of storage. Evicting least recently accessed key (${c}) and retrying.`),ce(),ae(c).then((()=>t(...i)))):(s("Out of storage. But found no acceptable keys to remove."),ce())}function ue(e,t,r,s){return o(`${s}() called for key: ${e}${n().isObject(t)?` properties: ${n().keys(t).join(",")}`:""}`),r?y.set(e,t):y.addToAccessedKeys(e),oe(e,t,(e=>r||!1===e.initWithStoredValues))}function ye(e){return Boolean(K[e])}function he(e){return n().isArray(e)||!n().isObject(e)?e:n().omit(e,(e=>n().isNull(e)))}function de(e,t){if(n().isNull(t))return ae(e);ye(e)&&s(`Onyx.set() called after Onyx.merge() for key: ${e}. It is recommended to use set() or merge() not both.`);const r=he(t),o=y.hasValueChanged(e,r),i=ue(e,r,o,"set");return o?E.setItem(e,r).catch((t=>le(t,de,e,r))).then((()=>i)):i}function fe(e){return n().map(e,((e,t)=>[t,e]))}function pe(e){const t=fe(e),r=n().map(e,((e,t)=>(y.set(t,e),oe(t,e))));return E.multiSet(t).catch((t=>le(t,pe,e))).then((()=>Promise.all(r)))}function me(e,t){const r=n().last(t);return n().isArray(e)||n().isArray(r)?r:n().isObject(e)||n().every(t,n().isObject)?n().reduce(t,((e,t)=>a(e,t)),e||{}):r}function ge(e,t){return K[e]?(K[e].push(t),T[e]):(K[e]=[t],T[e]=U(e).then((t=>{try{let n=me(void 0,K[e]);delete K[e],delete T[e];const r=he(me(t,[n]));t||(n=he(n));const s=y.hasValueChanged(e,r),o=ue(e,r,s,"merge");return s?E.mergeItem(e,n,r).then((()=>o)):o}catch(t){return s(`An error occurred while applying merge for key: ${e}, Error: ${t}`),Promise.resolve()}})),T[e])}function ve(){return E.multiGet(n().keys($)).then((e=>{const t=n().object(e),r=a(t,$);y.merge(r),n().each(r,((e,t)=>J(t,e)))}))}function ke(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return _().then((t=>{const r=[],s={},o={};n().each(t,(t=>{const i=n().contains(e,t),a=n().has($,t);if(!i){const e=y.getValue(t),r=n().get($,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):o[t]=r}}i||a||r.push(t)}));const i=[];n().each(o,((e,t)=>{i.push(oe(t,e))})),n().each(s,((e,t)=>{i.push(ie(t,e))}));const a=n().pairs(n().omit($,e));return n().each(r,(e=>y.drop(e))),E.removeItems(r).then((()=>E.multiSet(a))).then((()=>Promise.all(i)))}))}function be(e,t){if(!n().isObject(t)||n().isArray(t)||n().isEmpty(t))return o("mergeCollection() called with invalid or empty value. Skipping this update."),Promise.resolve();let r=!1;return n().each(t,((t,n)=>{B(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():_().then((r=>{const[s,o]=n().chain(t).keys().partition((e=>r.includes(e))).value(),i=n().pick(t,s),a=n().pick(t,o),c=fe(i),l=fe(a),u=[];c.length>0&&u.push(E.multiMerge(c)),l.length>0&&u.push(E.multiSet(l));const h=Promise.all(n().map(s,U)).then((()=>(y.merge(t),ie(e,t))));return Promise.all(u).catch((e=>le(e,be,t))).then((()=>h))}))}function Oe(e){n().each(e,(e=>{let{onyxMethod:t,key:r,value:s}=e;if(!n().contains([M.CLEAR,M.SET,M.MERGE,M.MERGE_COLLECTION,M.MULTI_SET],t))throw new Error(`Invalid onyxMethod ${t} in Onyx update.`);if(t===M.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!==M.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:o}=e;switch(n){case M.SET:t.push((()=>de(s,o)));break;case M.MERGE:t.push((()=>ge(s,o)));break;case M.MERGE_COLLECTION:t.push((()=>be(s,o)));break;case M.MULTI_SET:t.push((()=>pe(o)));break;case M.CLEAR:r=ke()}})),r.then((()=>Promise.all(n().map(t,(e=>e())))))}const we={connect:function(e){const t=C++;return j[t]=e,j[t].connectionID=t,!1===e.initWithStoredValues||q.promise.then((()=>function(e){if(G(e.key)&&(y.removeLeastRecentlyUsedKeys(),e.withOnyxInstance&&!D(e.key))){if(n().isUndefined(e.canEvict))throw new Error(`Cannot subscribe to safe eviction key '${e.key}' without providing a canEvict value.`);Y(e.key)}}(e))).then(_).then((t=>{const r=n().filter(t,(t=>B(e.key,t)));if(0!==r.length)if(n().isFunction(e.callback)){if(D(e.key)){if(e.waitForCollectionCallback)return void ee(r,e);for(let t=0;t<r.length;t++)U(r[t]).then((n=>Z(e,n,r[t])));return}U(e.key).then((t=>Z(e,t,e.key)))}else{if(e.withOnyxInstance)return D(e.key)?void ee(r,e):void U(e.key).then((t=>Z(e,t,e.key)));console.error("Warning: Onyx.connect() was found without a callback or withOnyxInstance")}else Z(e,null)})),t},disconnect:function(e,t){j[e]&&(t&&H(t,e),delete j[e])},set:de,multiSet:pe,merge:ge,mergeCollection:be,update:Oe,clear:ke,getAllKeys:_,init:function(){let{keys:e={},initialKeyStates:t={},safeEvictionKeys:r=[],maxCachedKeysCount:s=1e3,captureMetrics:o=!1,shouldSyncMultipleInstances:i=Boolean(c.g.localStorage),debugSetState:a=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o&&function(){const e=c(378);U=e.decorateWithMetrics(U,"Onyx:get"),de=e.decorateWithMetrics(de,"Onyx:set"),pe=e.decorateWithMetrics(pe,"Onyx:multiSet"),ke=e.decorateWithMetrics(ke,"Onyx:clear"),ge=e.decorateWithMetrics(ge,"Onyx:merge"),be=e.decorateWithMetrics(be,"Onyx:mergeCollection"),_=e.decorateWithMetrics(_,"Onyx:getAllKeys"),ve=e.decorateWithMetrics(ve,"Onyx:defaults"),Oe=e.decorateWithMetrics(Oe,"Onyx:update"),we.set=de,we.multiSet=pe,we.clear=ke,we.merge=ge,we.mergeCollection=be,we.update=Oe,we.getMetrics=e.getMetrics,we.resetMetrics=e.resetMetrics,we.printMetrics=e.printMetrics}(),a&&g(!0),s>0&&y.setRecentKeysLimit(s);const l=n().values(e.COLLECTION);A=n().reduce(l,((e,t)=>(e.set(t,!0),e)),new Map),$=t,N=r,Promise.all([_().then((e=>{n().each(N,(t=>{n().each(e,(e=>{B(t,e)&&Y(e)}))}))})),ve()]).then(q.resolve),i&&n().isFunction(E.keepInstancesSync)&&E.keepInstancesSync(((e,t)=>{y.set(e,t),J(e,t)}))},registerLogger:function(e){r=e},addToEvictionBlockList:function(e,t){H(e,t),L[e]||(L[e]=[]),L[e].push(t)},removeFromEvictionBlockList:H,isSafeEvictionKey:G,METHOD:M,setMemoryOnlyKeys:function(e){E.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(D(e)){const t=y.getAllKeys(),s=n().filter(t,(t=>t.startsWith(e))),o=n().reduce(s,((e,t)=>{const n=y.getValue(t);return n&&(e[t]=n),e}),{});if(n().isEmpty(o))return;r=o}if(t.selector){const n=t.withOnyxInstance?t.withOnyxInstance.state:void 0;return D(e)?F(r,t.selector,n):W(r,t.selector,n)}return r},hasPendingMergeForKey:ye},xe=we;var Se=c(697),Ie=c.n(Se),Ee=c(156),Pe=c.n(Ee);function Me(){return Me=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},Me.apply(this,arguments)}function Ke(e){const t=n().chain(e).omit((e=>!1===e.initWithStoredValues)).keys().value();return r=>{const s=(o=r).displayName||o.name||"Component";var o;class i extends Pe().Component{constructor(r){super(r),this.setWithOnyxState=this.setWithOnyxState.bind(this),this.activeConnectionIDs={};const s=n().reduce(e,((e,t,n)=>{const s=d(t.key,r),o=xe.tryGetCachedValue(s,t);return void 0===o||xe.hasPendingMergeForKey(s)||(e[n]=o),e}),{});s.loading=n().size(s)<t.length,this.tempState=s,this.state=s}componentDidMount(){n().each(e,((e,t)=>{this.connectMappingToOnyx(e,t)})),this.checkEvictableKeys()}componentDidUpdate(t){n().each(e,((e,n)=>{const r=d(e.key,t);r!==d(e.key,this.props)&&(xe.disconnect(this.activeConnectionIDs[r],r),delete this.activeConnectionIDs[r],this.connectMappingToOnyx(e,n))})),this.checkEvictableKeys()}componentWillUnmount(){n().each(e,(e=>{const t=d(e.key,this.props),n=this.activeConnectionIDs[t];xe.disconnect(n,t)}))}setWithOnyxState(e,r){const s=this.state[e];(this.state.loading||s!==r)&&(this.state.loading?(this.tempState[e]=r,n().some(t,(e=>n().isUndefined(this.tempState[e])))||(this.setState((e=>({...n().omit(this.tempState,n().keys(e)),loading:!1}))),delete this.tempState)):this.setState({[e]:r}))}checkEvictableKeys(){n().each(e,(e=>{if(n().isUndefined(e.canEvict))return;const t=d(e.canEvict,this.props),r=d(e.key,this.props);if(!xe.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?xe.removeFromEvictionBlockList(r,e.connectionID):xe.addToEvictionBlockList(r,e.connectionID)}))}connectMappingToOnyx(e,t){const n=d(e.key,this.props);this.activeConnectionIDs[n]=xe.connect({...e,key:n,statePropertyName:t,withOnyxInstance:this,displayName:s})}render(){if(this.state.loading)return null;let e=n().omit(this.state,"loading");e=n().omit(e,(e=>n().isNull(e)));const t=n().omit(this.props,(e=>n().isNull(e)));return Pe().createElement(r,Me({},t,e,{ref:this.props.forwardedRef}))}}return i.propTypes={forwardedRef:Ie().oneOfType([Ie().func,Ie().shape({current:Ie().object})])},i.defaultProps={forwardedRef:void 0},i.displayName=`withOnyx(${s})`,Pe().forwardRef(((e,t)=>{const n=i;return Pe().createElement(n,Me({},e,{forwardedRef:t}))}))}}const Te=xe})(),l})()));
|
|
2
2
|
//# sourceMappingURL=web.min.js.map
|