File size: 22,336 Bytes
8a37e0a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 |
diff --git a/dist/cjs/reselect.cjs b/dist/cjs/reselect.cjs
index 0ef3a648e253af4ada8f0a2086d6db9302b8ced9..2614db8c901c5a3be4a80d3ffed3be2cf175bf50 100644
--- a/dist/cjs/reselect.cjs
+++ b/dist/cjs/reselect.cjs
@@ -639,6 +639,8 @@ function weakMapMemoize(func, options = {}) {
return memoized;
}
+weakMapMemoize = lruMemoize
+
// src/createSelectorCreator.ts
function createSelectorCreator(memoizeOrOptions, ...memoizeOptionsFromArgs) {
const createSelectorCreatorOptions = typeof memoizeOrOptions === "function" ? {
diff --git a/dist/reselect.browser.mjs b/dist/reselect.browser.mjs
index e8da6c11a333ef9ddf4cca51adbc405fe8f6265d..8bc64f0c19082c0015155d60c59869a46c9f180e 100644
--- a/dist/reselect.browser.mjs
+++ b/dist/reselect.browser.mjs
@@ -1,2 +1,2 @@
-var oe={inputStabilityCheck:"once",identityFunctionCheck:"once"},re=e=>{Object.assign(oe,e)};var M="NOT_FOUND";function w(e,t=`expected a function, instead received ${typeof e}`){if(typeof e!="function")throw new TypeError(t)}function V(e,t=`expected an object, instead received ${typeof e}`){if(typeof e!="object")throw new TypeError(t)}function ie(e,t="expected all items to be functions, instead received the following types: "){if(!e.every(n=>typeof n=="function")){let n=e.map(c=>typeof c=="function"?`function ${c.name||"unnamed"}()`:typeof c).join(", ");throw new TypeError(`${t}[${n}]`)}}var O=e=>Array.isArray(e)?e:[e];function K(e){let t=Array.isArray(e[0])?e[0]:e;return ie(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}function W(e,t){let n=[],{length:c}=e;for(let s=0;s<c;s++)n.push(e[s].apply(null,t));return n}var G=0,S=null,F=class{revision=G;_value;_lastValue;_isEqual=v;constructor(t,n=v){this._value=this._lastValue=t,this._isEqual=n}get value(){return S?.add(this),this._value}set value(t){this.value!==t&&(this._value=t,this.revision=++G)}};function v(e,t){return e===t}var b=class{_cachedValue;_cachedRevision=-1;_deps=[];hits=0;fn;constructor(t){this.fn=t}clear(){this._cachedValue=void 0,this._cachedRevision=-1,this._deps=[],this.hits=0}get value(){if(this.revision>this._cachedRevision){let{fn:t}=this,n=new Set,c=S;S=n,this._cachedValue=t(),S=c,this.hits++,this._deps=Array.from(n),this._cachedRevision=this.revision}return S?.add(this),this._cachedValue}get revision(){return Math.max(...this._deps.map(t=>t.revision),0)}};function g(e){return e instanceof F||console.warn("Not a valid cell! ",e),e.value}function L(e,t){if(!(e instanceof F))throw new TypeError("setValue must be passed a tracked store created with `createStorage`.");e.value=e._lastValue=t}function $(e,t=v){return new F(e,t)}function Y(e){return w(e,"the first parameter to `createCache` must be a function"),new b(e)}var ce=(e,t)=>!1;function z(){return $(null,ce)}function k(e,t){L(e,t)}var A=e=>{let t=e.collectionTag;t===null&&(t=e.collectionTag=z()),g(t)},h=e=>{let t=e.collectionTag;t!==null&&k(t,null)};var Re=Symbol(),H=0,se=Object.getPrototypeOf({}),I=class{constructor(t){this.value=t;this.value=t,this.tag.value=t}proxy=new Proxy(this,C);tag=z();tags={};children={};collectionTag=null;id=H++},C={get(e,t){function n(){let{value:s}=e,o=Reflect.get(s,t);if(typeof t=="symbol"||t in se)return o;if(typeof o=="object"&&o!==null){let i=e.children[t];return i===void 0&&(i=e.children[t]=E(o)),i.tag&&g(i.tag),i.proxy}else{let i=e.tags[t];return i===void 0&&(i=e.tags[t]=z(),i.value=o),g(i),o}}return n()},ownKeys(e){return A(e),Reflect.ownKeys(e.value)},getOwnPropertyDescriptor(e,t){return Reflect.getOwnPropertyDescriptor(e.value,t)},has(e,t){return Reflect.has(e.value,t)}},N=class{constructor(t){this.value=t;this.value=t,this.tag.value=t}proxy=new Proxy([this],ue);tag=z();tags={};children={};collectionTag=null;id=H++},ue={get([e],t){return t==="length"&&A(e),C.get(e,t)},ownKeys([e]){return C.ownKeys(e)},getOwnPropertyDescriptor([e],t){return C.getOwnPropertyDescriptor(e,t)},has([e],t){return C.has(e,t)}};function E(e){return Array.isArray(e)?new N(e):new I(e)}function D(e,t){let{value:n,tags:c,children:s}=e;if(e.value=t,Array.isArray(n)&&Array.isArray(t)&&n.length!==t.length)h(e);else if(n!==t){let o=0,i=0,r=!1;for(let u in n)o++;for(let u in t)if(i++,!(u in n)){r=!0;break}(r||o!==i)&&h(e)}for(let o in c){let i=n[o],r=t[o];i!==r&&(h(e),k(c[o],r)),typeof r=="object"&&r!==null&&delete c[o]}for(let o in s){let i=s[o],r=t[o];i.value!==r&&(typeof r=="object"&&r!==null?D(i,r):(X(i),delete s[o]))}}function X(e){e.tag&&k(e.tag,null),h(e);for(let t in e.tags)k(e.tags[t],null);for(let t in e.children)X(e.children[t])}function le(e){let t;return{get(n){return t&&e(t.key,n)?t.value:M},put(n,c){t={key:n,value:c}},getEntries(){return t?[t]:[]},clear(){t=void 0}}}function ae(e,t){let n=[];function c(r){let l=n.findIndex(u=>t(r,u.key));if(l>-1){let u=n[l];return l>0&&(n.splice(l,1),n.unshift(u)),u.value}return M}function s(r,l){c(r)===M&&(n.unshift({key:r,value:l}),n.length>e&&n.pop())}function o(){return n}function i(){n=[]}return{get:c,put:s,getEntries:o,clear:i}}var x=(e,t)=>e===t;function j(e){return function(n,c){if(n===null||c===null||n.length!==c.length)return!1;let{length:s}=n;for(let o=0;o<s;o++)if(!e(n[o],c[o]))return!1;return!0}}function pe(e,t){let n=typeof t=="object"?t:{equalityCheck:t},{equalityCheck:c=x,maxSize:s=1,resultEqualityCheck:o}=n,i=j(c),r=0,l=s===1?le(i):ae(s,i);function u(){let a=l.get(arguments);if(a===M){if(a=e.apply(null,arguments),r++,o){let f=l.getEntries().find(p=>o(p.value,a));f&&(a=f.value,r!==0&&r--)}l.put(arguments,a)}return a}return u.clearCache=()=>{l.clear(),u.resetResultsCount()},u.resultsCount=()=>r,u.resetResultsCount=()=>{r=0},u}function me(e){let t=E([]),n=null,c=j(x),s=Y(()=>e.apply(null,t.proxy));function o(){return c(n,arguments)||(D(t,arguments),n=arguments),s.value}return o.clearCache=()=>s.clear(),o}var _=class{constructor(t){this.value=t}deref(){return this.value}},de=typeof WeakRef<"u"?WeakRef:_,fe=0,B=1;function T(){return{s:fe,v:void 0,o:null,p:null}}function R(e,t={}){let n=T(),{resultEqualityCheck:c}=t,s,o=0;function i(){let r=n,{length:l}=arguments;for(let m=0,f=l;m<f;m++){let p=arguments[m];if(typeof p=="function"||typeof p=="object"&&p!==null){let d=r.o;d===null&&(r.o=d=new WeakMap);let y=d.get(p);y===void 0?(r=T(),d.set(p,r)):r=y}else{let d=r.p;d===null&&(r.p=d=new Map);let y=d.get(p);y===void 0?(r=T(),d.set(p,r)):r=y}}let u=r,a;if(r.s===B?a=r.v:(a=e.apply(null,arguments),o++),u.s=B,c){let m=s?.deref()??s;m!=null&&c(m,a)&&(a=m,o!==0&&o--),s=typeof a=="object"&&a!==null||typeof a=="function"?new de(a):a}return u.v=a,a}return i.clearCache=()=>{n=T(),i.resetResultsCount()},i.resultsCount=()=>o,i.resetResultsCount=()=>{o=0},i}function J(e,...t){let n=typeof e=="function"?{memoize:e,memoizeOptions:t}:e;return(...s)=>{let o=0,i=0,r,l={},u=s.pop();typeof u=="object"&&(l=u,u=s.pop()),w(u,`createSelector expects an output function after the inputs, but received: [${typeof u}]`);let a={...n,...l},{memoize:m,memoizeOptions:f=[],argsMemoize:p=R,argsMemoizeOptions:d=[],devModeChecks:y={}}=a,Q=O(f),Z=O(d),q=K(s),P=m(function(){return o++,u.apply(null,arguments)},...Q),Me=!0,ee=p(function(){i++;let ne=W(q,arguments);return r=P.apply(null,ne),r},...Z);return Object.assign(ee,{resultFunc:u,memoizedResultFunc:P,dependencies:q,dependencyRecomputations:()=>i,resetDependencyRecomputations:()=>{i=0},lastResult:()=>r,recomputations:()=>o,resetRecomputations:()=>{o=0},memoize:m,argsMemoize:p})}}var U=J(R);var ye=(e,t=U)=>{V(e,`createStructuredSelector expects first argument to be an object where each property is a selector, instead received a ${typeof e}`);let n=Object.keys(e),c=n.map(o=>e[o]);return t(c,(...o)=>o.reduce((i,r,l)=>(i[n[l]]=r,i),{}))};export{U as createSelector,J as createSelectorCreator,ye as createStructuredSelector,pe as lruMemoize,x as referenceEqualityCheck,re as setGlobalDevModeChecks,me as unstable_autotrackMemoize,R as weakMapMemoize};
+var oe={inputStabilityCheck:"once",identityFunctionCheck:"once"},re=e=>{Object.assign(oe,e)};var M="NOT_FOUND";function w(e,t=`expected a function, instead received ${typeof e}`){if(typeof e!="function")throw new TypeError(t)}function V(e,t=`expected an object, instead received ${typeof e}`){if(typeof e!="object")throw new TypeError(t)}function ie(e,t="expected all items to be functions, instead received the following types: "){if(!e.every(n=>typeof n=="function")){let n=e.map(c=>typeof c=="function"?`function ${c.name||"unnamed"}()`:typeof c).join(", ");throw new TypeError(`${t}[${n}]`)}}var O=e=>Array.isArray(e)?e:[e];function K(e){let t=Array.isArray(e[0])?e[0]:e;return ie(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}function W(e,t){let n=[],{length:c}=e;for(let s=0;s<c;s++)n.push(e[s].apply(null,t));return n}var G=0,S=null,F=class{revision=G;_value;_lastValue;_isEqual=v;constructor(t,n=v){this._value=this._lastValue=t,this._isEqual=n}get value(){return S?.add(this),this._value}set value(t){this.value!==t&&(this._value=t,this.revision=++G)}};function v(e,t){return e===t}var b=class{_cachedValue;_cachedRevision=-1;_deps=[];hits=0;fn;constructor(t){this.fn=t}clear(){this._cachedValue=void 0,this._cachedRevision=-1,this._deps=[],this.hits=0}get value(){if(this.revision>this._cachedRevision){let{fn:t}=this,n=new Set,c=S;S=n,this._cachedValue=t(),S=c,this.hits++,this._deps=Array.from(n),this._cachedRevision=this.revision}return S?.add(this),this._cachedValue}get revision(){return Math.max(...this._deps.map(t=>t.revision),0)}};function g(e){return e instanceof F||console.warn("Not a valid cell! ",e),e.value}function L(e,t){if(!(e instanceof F))throw new TypeError("setValue must be passed a tracked store created with `createStorage`.");e.value=e._lastValue=t}function $(e,t=v){return new F(e,t)}function Y(e){return w(e,"the first parameter to `createCache` must be a function"),new b(e)}var ce=(e,t)=>!1;function z(){return $(null,ce)}function k(e,t){L(e,t)}var A=e=>{let t=e.collectionTag;t===null&&(t=e.collectionTag=z()),g(t)},h=e=>{let t=e.collectionTag;t!==null&&k(t,null)};var Re=Symbol(),H=0,se=Object.getPrototypeOf({}),I=class{constructor(t){this.value=t;this.value=t,this.tag.value=t}proxy=new Proxy(this,C);tag=z();tags={};children={};collectionTag=null;id=H++},C={get(e,t){function n(){let{value:s}=e,o=Reflect.get(s,t);if(typeof t=="symbol"||t in se)return o;if(typeof o=="object"&&o!==null){let i=e.children[t];return i===void 0&&(i=e.children[t]=E(o)),i.tag&&g(i.tag),i.proxy}else{let i=e.tags[t];return i===void 0&&(i=e.tags[t]=z(),i.value=o),g(i),o}}return n()},ownKeys(e){return A(e),Reflect.ownKeys(e.value)},getOwnPropertyDescriptor(e,t){return Reflect.getOwnPropertyDescriptor(e.value,t)},has(e,t){return Reflect.has(e.value,t)}},N=class{constructor(t){this.value=t;this.value=t,this.tag.value=t}proxy=new Proxy([this],ue);tag=z();tags={};children={};collectionTag=null;id=H++},ue={get([e],t){return t==="length"&&A(e),C.get(e,t)},ownKeys([e]){return C.ownKeys(e)},getOwnPropertyDescriptor([e],t){return C.getOwnPropertyDescriptor(e,t)},has([e],t){return C.has(e,t)}};function E(e){return Array.isArray(e)?new N(e):new I(e)}function D(e,t){let{value:n,tags:c,children:s}=e;if(e.value=t,Array.isArray(n)&&Array.isArray(t)&&n.length!==t.length)h(e);else if(n!==t){let o=0,i=0,r=!1;for(let u in n)o++;for(let u in t)if(i++,!(u in n)){r=!0;break}(r||o!==i)&&h(e)}for(let o in c){let i=n[o],r=t[o];i!==r&&(h(e),k(c[o],r)),typeof r=="object"&&r!==null&&delete c[o]}for(let o in s){let i=s[o],r=t[o];i.value!==r&&(typeof r=="object"&&r!==null?D(i,r):(X(i),delete s[o]))}}function X(e){e.tag&&k(e.tag,null),h(e);for(let t in e.tags)k(e.tags[t],null);for(let t in e.children)X(e.children[t])}function le(e){let t;return{get(n){return t&&e(t.key,n)?t.value:M},put(n,c){t={key:n,value:c}},getEntries(){return t?[t]:[]},clear(){t=void 0}}}function ae(e,t){let n=[];function c(r){let l=n.findIndex(u=>t(r,u.key));if(l>-1){let u=n[l];return l>0&&(n.splice(l,1),n.unshift(u)),u.value}return M}function s(r,l){c(r)===M&&(n.unshift({key:r,value:l}),n.length>e&&n.pop())}function o(){return n}function i(){n=[]}return{get:c,put:s,getEntries:o,clear:i}}var x=(e,t)=>e===t;function j(e){return function(n,c){if(n===null||c===null||n.length!==c.length)return!1;let{length:s}=n;for(let o=0;o<s;o++)if(!e(n[o],c[o]))return!1;return!0}}function pe(e,t){let n=typeof t=="object"?t:{equalityCheck:t},{equalityCheck:c=x,maxSize:s=1,resultEqualityCheck:o}=n,i=j(c),r=0,l=s===1?le(i):ae(s,i);function u(){let a=l.get(arguments);if(a===M){if(a=e.apply(null,arguments),r++,o){let f=l.getEntries().find(p=>o(p.value,a));f&&(a=f.value,r!==0&&r--)}l.put(arguments,a)}return a}return u.clearCache=()=>{l.clear(),u.resetResultsCount()},u.resultsCount=()=>r,u.resetResultsCount=()=>{r=0},u}function me(e){let t=E([]),n=null,c=j(x),s=Y(()=>e.apply(null,t.proxy));function o(){return c(n,arguments)||(D(t,arguments),n=arguments),s.value}return o.clearCache=()=>s.clear(),o}var _=class{constructor(t){this.value=t}deref(){return this.value}},de=typeof WeakRef<"u"?WeakRef:_,fe=0,B=1;function T(){return{s:fe,v:void 0,o:null,p:null}}function R(e,t={}){let n=T(),{resultEqualityCheck:c}=t,s,o=0;function i(){let r=n,{length:l}=arguments;for(let m=0,f=l;m<f;m++){let p=arguments[m];if(typeof p=="function"||typeof p=="object"&&p!==null){let d=r.o;d===null&&(r.o=d=new WeakMap);let y=d.get(p);y===void 0?(r=T(),d.set(p,r)):r=y}else{let d=r.p;d===null&&(r.p=d=new Map);let y=d.get(p);y===void 0?(r=T(),d.set(p,r)):r=y}}let u=r,a;if(r.s===B?a=r.v:(a=e.apply(null,arguments),o++),u.s=B,c){let m=s?.deref()??s;m!=null&&c(m,a)&&(a=m,o!==0&&o--),s=typeof a=="object"&&a!==null||typeof a=="function"?new de(a):a}return u.v=a,a}return i.clearCache=()=>{n=T(),i.resetResultsCount()},i.resultsCount=()=>o,i.resetResultsCount=()=>{o=0},i}function J(e,...t){let n=typeof e=="function"?{memoize:e,memoizeOptions:t}:e;return(...s)=>{let o=0,i=0,r,l={},u=s.pop();typeof u=="object"&&(l=u,u=s.pop()),w(u,`createSelector expects an output function after the inputs, but received: [${typeof u}]`);let a={...n,...l},{memoize:m,memoizeOptions:f=[],argsMemoize:p=R,argsMemoizeOptions:d=[],devModeChecks:y={}}=a,Q=O(f),Z=O(d),q=K(s),P=m(function(){return o++,u.apply(null,arguments)},...Q),Me=!0,ee=p(function(){i++;let ne=W(q,arguments);return r=P.apply(null,ne),r},...Z);return Object.assign(ee,{resultFunc:u,memoizedResultFunc:P,dependencies:q,dependencyRecomputations:()=>i,resetDependencyRecomputations:()=>{i=0},lastResult:()=>r,recomputations:()=>o,resetRecomputations:()=>{o=0},memoize:m,argsMemoize:p})}}var U=J(R);var ye=(e,t=U)=>{V(e,`createStructuredSelector expects first argument to be an object where each property is a selector, instead received a ${typeof e}`);let n=Object.keys(e),c=n.map(o=>e[o]);return t(c,(...o)=>o.reduce((i,r,l)=>(i[n[l]]=r,i),{}))};export{U as createSelector,J as createSelectorCreator,ye as createStructuredSelector,pe as lruMemoize,pe as weakMapMemoize,x as referenceEqualityCheck,re as setGlobalDevModeChecks,me as unstable_autotrackMemoize};
//# sourceMappingURL=reselect.browser.mjs.map
\ No newline at end of file
diff --git a/dist/reselect.legacy-esm.js b/dist/reselect.legacy-esm.js
index 9c18982dd0756ccc240f23383b50b893415ba7b3..041426d1db1d1e78cfe35c4e55e38724b2db35dc 100644
--- a/dist/reselect.legacy-esm.js
+++ b/dist/reselect.legacy-esm.js
@@ -625,6 +625,8 @@ function weakMapMemoize(func, options = {}) {
return memoized;
}
+weakMapMemoize = lruMemoize
+
// src/createSelectorCreator.ts
function createSelectorCreator(memoizeOrOptions, ...memoizeOptionsFromArgs) {
const createSelectorCreatorOptions = typeof memoizeOrOptions === "function" ? {
diff --git a/dist/reselect.mjs b/dist/reselect.mjs
index 531dfe6fc16e83dd27dbe90086b5aafea76adb9e..c27aca00d581919325cc595cfa3021cd53c1fa68 100644
--- a/dist/reselect.mjs
+++ b/dist/reselect.mjs
@@ -606,6 +606,8 @@ function weakMapMemoize(func, options = {}) {
return memoized;
}
+weakMapMemoize = lruMemoize
+
// src/createSelectorCreator.ts
function createSelectorCreator(memoizeOrOptions, ...memoizeOptionsFromArgs) {
const createSelectorCreatorOptions = typeof memoizeOrOptions === "function" ? {
diff --git a/src/weakMapMemoize.ts b/src/weakMapMemoize.ts
index f723071db3a8a17f94431bc77cde2dbee026f57f..ddfeb0d7720e5463041d1474f54e58fdbc18fe6d 100644
--- a/src/weakMapMemoize.ts
+++ b/src/weakMapMemoize.ts
@@ -1,6 +1,7 @@
// Original source:
// - https://github.com/facebook/react/blob/0b974418c9a56f6c560298560265dcf4b65784bc/packages/react/src/ReactCache.js
+import { lruMemoize } from '../dist/reselect.mjs'
import type {
AnyFunction,
DefaultMemoizeFields,
@@ -169,97 +170,99 @@ export interface WeakMapMemoizeOptions<Result = any> {
* @public
* @experimental
*/
-export function weakMapMemoize<Func extends AnyFunction>(
- func: Func,
- options: WeakMapMemoizeOptions<ReturnType<Func>> = {}
-) {
- let fnNode = createCacheNode()
- const { resultEqualityCheck } = options
+// export function weakMapMemoize<Func extends AnyFunction>(
+// func: Func,
+// options: WeakMapMemoizeOptions<ReturnType<Func>> = {}
+// ) {
+// let fnNode = createCacheNode()
+// const { resultEqualityCheck } = options
- let lastResult: WeakRef<object> | undefined
+// let lastResult: WeakRef<object> | undefined
- let resultsCount = 0
+// let resultsCount = 0
- function memoized() {
- let cacheNode = fnNode
- const { length } = arguments
- for (let i = 0, l = length; i < l; i++) {
- const arg = arguments[i]
- if (
- typeof arg === 'function' ||
- (typeof arg === 'object' && arg !== null)
- ) {
- // Objects go into a WeakMap
- let objectCache = cacheNode.o
- if (objectCache === null) {
- cacheNode.o = objectCache = new WeakMap()
- }
- const objectNode = objectCache.get(arg)
- if (objectNode === undefined) {
- cacheNode = createCacheNode()
- objectCache.set(arg, cacheNode)
- } else {
- cacheNode = objectNode
- }
- } else {
- // Primitives go into a regular Map
- let primitiveCache = cacheNode.p
- if (primitiveCache === null) {
- cacheNode.p = primitiveCache = new Map()
- }
- const primitiveNode = primitiveCache.get(arg)
- if (primitiveNode === undefined) {
- cacheNode = createCacheNode()
- primitiveCache.set(arg, cacheNode)
- } else {
- cacheNode = primitiveNode
- }
- }
- }
+// function memoized() {
+// let cacheNode = fnNode
+// const { length } = arguments
+// for (let i = 0, l = length; i < l; i++) {
+// const arg = arguments[i]
+// if (
+// typeof arg === 'function' ||
+// (typeof arg === 'object' && arg !== null)
+// ) {
+// // Objects go into a WeakMap
+// let objectCache = cacheNode.o
+// if (objectCache === null) {
+// cacheNode.o = objectCache = new WeakMap()
+// }
+// const objectNode = objectCache.get(arg)
+// if (objectNode === undefined) {
+// cacheNode = createCacheNode()
+// objectCache.set(arg, cacheNode)
+// } else {
+// cacheNode = objectNode
+// }
+// } else {
+// // Primitives go into a regular Map
+// let primitiveCache = cacheNode.p
+// if (primitiveCache === null) {
+// cacheNode.p = primitiveCache = new Map()
+// }
+// const primitiveNode = primitiveCache.get(arg)
+// if (primitiveNode === undefined) {
+// cacheNode = createCacheNode()
+// primitiveCache.set(arg, cacheNode)
+// } else {
+// cacheNode = primitiveNode
+// }
+// }
+// }
- const terminatedNode = cacheNode as unknown as TerminatedCacheNode<any>
+// const terminatedNode = cacheNode as unknown as TerminatedCacheNode<any>
- let result
+// let result
- if (cacheNode.s === TERMINATED) {
- result = cacheNode.v
- } else {
- // Allow errors to propagate
- result = func.apply(null, arguments as unknown as any[])
- resultsCount++
- }
+// if (cacheNode.s === TERMINATED) {
+// result = cacheNode.v
+// } else {
+// // Allow errors to propagate
+// result = func.apply(null, arguments as unknown as any[])
+// resultsCount++
+// }
- terminatedNode.s = TERMINATED
+// terminatedNode.s = TERMINATED
- if (resultEqualityCheck) {
- const lastResultValue = lastResult?.deref() ?? lastResult
- if (
- lastResultValue != null &&
- resultEqualityCheck(lastResultValue as ReturnType<Func>, result)
- ) {
- result = lastResultValue
- resultsCount !== 0 && resultsCount--
- }
+// if (resultEqualityCheck) {
+// const lastResultValue = lastResult?.deref() ?? lastResult
+// if (
+// lastResultValue != null &&
+// resultEqualityCheck(lastResultValue as ReturnType<Func>, result)
+// ) {
+// result = lastResultValue
+// resultsCount !== 0 && resultsCount--
+// }
- const needsWeakRef =
- (typeof result === 'object' && result !== null) ||
- typeof result === 'function'
- lastResult = needsWeakRef ? new Ref(result) : result
- }
- terminatedNode.v = result
- return result
- }
+// const needsWeakRef =
+// (typeof result === 'object' && result !== null) ||
+// typeof result === 'function'
+// lastResult = needsWeakRef ? new Ref(result) : result
+// }
+// terminatedNode.v = result
+// return result
+// }
- memoized.clearCache = () => {
- fnNode = createCacheNode()
- memoized.resetResultsCount()
- }
+// memoized.clearCache = () => {
+// fnNode = createCacheNode()
+// memoized.resetResultsCount()
+// }
- memoized.resultsCount = () => resultsCount
+// memoized.resultsCount = () => resultsCount
- memoized.resetResultsCount = () => {
- resultsCount = 0
- }
+// memoized.resetResultsCount = () => {
+// resultsCount = 0
+// }
- return memoized as Func & Simplify<DefaultMemoizeFields>
-}
+// return memoized as Func & Simplify<DefaultMemoizeFields>
+// }
+
+export const weakMapMemoize = lruMemoize
|